PageSourceSearch

https://txdzw.com/Content/_Common/Assets/Scripts/pdf.worker.js

js txdzw.com collected 2026-10-04 05:19:29 UTC 1,584,366 bytes, 47,056 lines download raw bytes

vendor: 4,068 bytes, lines 1-100
1/**
2 * @licstart The following is the entire license notice for the
3 * Javascript code in this page
4 *
5 * Copyright 2018 Mozilla Foundation
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 *     http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 *
19 * @licend The above is the entire license notice for the
20 * Javascript code in this page
21 */
22
23(function webpackUniversalModuleDefinition(root, factory) {
24	if(typeof exports === 'object' && typeof module === 'object')
25		module.exports = factory();
26	else if(typeof define === 'function' && define.amd)
27		define("pdfjs-dist/build/pdf.worker", [], factory);
28	else if(typeof exports === 'object')
29		exports["pdfjs-dist/build/pdf.worker"] = factory();
30	else
31		root["pdfjs-dist/build/pdf.worker"] = root.pdfjsWorker = factory();
32})(this, function() {
33return /******/ (function(modules) { // webpackBootstrap
34/******/ 	// The module cache
35/******/ 	var installedModules = {};
36/******/
37/******/ 	// The require function
38/******/ 	function __w_pdfjs_require__(moduleId) {
39/******/
40/******/ 		// Check if module is in cache
41/******/ 		if(installedModules[moduleId]) {
42/******/ 			return installedModules[moduleId].exports;
43/******/ 		}
44/******/ 		// Create a new module (and put it into the cache)
45/******/ 		var module = installedModules[moduleId] = {
46/******/ 			i: moduleId,
47/******/ 			l: false,
48/******/ 			exports: {}
49/******/ 		};
50/******/
51/******/ 		// Execute the module function
52/******/ 		modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);
53/******/
54/******/ 		// Flag the module as loaded
55/******/ 		module.l = true;
56/******/
57/******/ 		// Return the exports of the module
58/******/ 		return module.exports;
59/******/ 	}
60/******/
61/******/
62/******/ 	// expose the modules object (__webpack_modules__)
63/******/ 	__w_pdfjs_require__.m = modules;
64/******/
65/******/ 	// expose the module cache
66/******/ 	__w_pdfjs_require__.c = installedModules;
67/******/
68/******/ 	// define getter function for harmony exports
69/******/ 	__w_pdfjs_require__.d = function(exports, name, getter) {
70/******/ 		if(!__w_pdfjs_require__.o(exports, name)) {
71/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
72/******/ 		}
73/******/ 	};
74/******/
75/******/ 	// define __esModule on exports
76/******/ 	__w_pdfjs_require__.r = function(exports) {
77/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
78/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
79/******/ 		}
80/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
81/******/ 	};
82/******/
83/******/ 	// create a fake namespace object
84/******/ 	// mode & 1: value is a module id, require it
85/******/ 	// mode & 2: merge all properties of value into the ns
86/******/ 	// mode & 4: return value when already ns object
87/******/ 	// mode & 8|1: behave like require
88/******/ 	__w_pdfjs_require__.t = function(value, mode) {
89/******/ 		if(mode & 1) value = __w_pdfjs_require__(value);
90/******/ 		if(mode & 8) return value;
91/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
92/******/ 		var ns = Object.create(null);
93/******/ 		__w_pdfjs_require__.r(ns);
94/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
95/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
96/******/ 		return ns;
97/******/ 	};
98/******/
99/******/ 	// getDefaultExport function for compatibility with non-harmony modules
100/******/ 	__w_pdfjs_require__.n = function(module) {
101/******/ 		var getter = module && module.__esModule ?
102/******/ 			function getDefault() { return module['default']; } :
103/******/ 			function getModuleExports() { return module; };
104/******/ 		__w_pdfjs_require__.d(getter, 'a', getter);
105/******/ 		return getter;
106/******/ 	};
107/******/
108/******/ 	// Object.prototype.hasOwnProperty.call
109/******/ 	__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
110/******/
111/******/ 	// __webpack_public_path__
112/******/ 	__w_pdfjs_require__.p = "";
113/******/
114/******/
115/******/ 	// Load entry module and return exports
116/******/ 	return __w_pdfjs_require__(__w_pdfjs_require__.s = 0);
117/******/ })
118/************************************************************************/
119/******/ ([
120/* 0 */
121/***/ (function(module, exports, __w_pdfjs_require__) {
122
123"use strict";
124
125
126var pdfjsVersion = '2.0.943';
127var pdfjsBuild = 'dc98bf76';
128var pdfjsCoreWorker = __w_pdfjs_require__(1);
129exports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;
130
131/***/ }),
132/* 1 */
133/***/ (function(module, exports, __w_pdfjs_require__) {
134
135"use strict";
136
137
138Object.defineProperty(exports, "__esModule", {
139  value: true
140});
141exports.WorkerMessageHandler = exports.WorkerTask = undefined;
142
143var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
144
145var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
146
147var _util = __w_pdfjs_require__(2);
148
149var _pdf_manager = __w_pdfjs_require__(130);
150
151var _is_node = __w_pdfjs_require__(5);
152
153var _is_node2 = _interopRequireDefault(_is_node);
154
155var _message_handler = __w_pdfjs_require__(172);
156
157var _primitives = __w_pdfjs_require__(138);
158
159function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
160
161var WorkerTask = function WorkerTaskClosure() {
162  function WorkerTask(name) {
163    this.name = name;
164    this.terminated = false;
165    this._capability = (0, _util.createPromiseCapability)();
166  }
167  WorkerTask.prototype = {
168    get finished() {
169      return this._capability.promise;
170    },
171    finish: function finish() {
172      this._capability.resolve();
173    },
174    terminate: function terminate() {
175      this.terminated = true;
176    },
177    ensureNotTerminated: function ensureNotTerminated() {
178      if (this.terminated) {
179        throw new Error('Worker task was terminated');
180      }
181    }
182  };
183  return WorkerTask;
184}();
185;
186var PDFWorkerStream = function PDFWorkerStreamClosure() {
187  function PDFWorkerStream(msgHandler) {
188    this._msgHandler = msgHandler;
189    this._contentLength = null;
190    this._fullRequestReader = null;
191    this._rangeRequestReaders = [];
192  }
193  PDFWorkerStream.prototype = {
194    getFullReader: function getFullReader() {
195      (0, _util.assert)(!this._fullRequestReader);
196      this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);
197      return this._fullRequestReader;
198    },
199    getRangeReader: function getRangeReader(begin, end) {
200      var reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);
201      this._rangeRequestReaders.push(reader);
202      return reader;
203    },
204    cancelAllRequests: function cancelAllRequests(reason) {
205      if (this._fullRequestReader) {
206        this._fullRequestReader.cancel(reason);
207      }
208      var readers = this._rangeRequestReaders.slice(0);
209      readers.forEach(function (reader) {
210        reader.cancel(reason);
211      });
212    }
213  };
214  function PDFWorkerStreamReader(msgHandler) {
215    var _this = this;
216
217    this._msgHandler = msgHandler;
218    this._contentLength = null;
219    this._isRangeSupported = false;
220    this._isStreamingSupported = false;
221    var readableStream = this._msgHandler.sendWithStream('GetReader');
222    this._reader = readableStream.getReader();
223    this._headersReady = this._msgHandler.sendWithPromise('ReaderHeadersReady').then(function (data) {
224      _this._isStreamingSupported = data.isStreamingSupported;
225      _this._isRangeSupported = data.isRangeSupported;
226      _this._contentLength = data.contentLength;
227    });
228  }
229  PDFWorkerStreamReader.prototype = {
230    get headersReady() {
231      return this._headersReady;
232    },
233    get contentLength() {
234      return this._contentLength;
235    },
236    get isStreamingSupported() {
237      return this._isStreamingSupported;
238    },
239    get isRangeSupported() {
240      return this._isRangeSupported;
241    },
242    read: function read() {
243      return this._reader.read().then(function (_ref) {
244        var value = _ref.value,
245            done = _ref.done;
246
247        if (done) {
248          return {
249            value: undefined,
250            done: true
251          };
252        }
253        return {
254          value: value.buffer,
255          done: false
256        };
257      });
258    },
259    cancel: function cancel(reason) {
260      this._reader.cancel(reason);
261    }
262  };
263  function PDFWorkerStreamRangeReader(begin, end, msgHandler) {
264    this._msgHandler = msgHandler;
265    this.onProgress = null;
266    var readableStream = this._msgHandler.sendWithStream('GetRangeReader', {
267      begin: begin,
268      end: end
269    });
270    this._reader = readableStream.getReader();
271  }
272  PDFWorkerStreamRangeReader.prototype = {
273    get isStreamingSupported() {
274      return false;
275    },
276    read: function read() {
277      return this._reader.read().then(function (_ref2) {
278        var value = _ref2.value,
279            done = _ref2.done;
280
281        if (done) {
282          return {
283            value: undefined,
284            done: true
285          };
286        }
287        return {
288          value: value.buffer,
289          done: false
290        };
291      });
292    },
293    cancel: function cancel(reason) {
294      this._reader.cancel(reason);
295    }
296  };
297  return PDFWorkerStream;
298}();
299var WorkerMessageHandler = {
300  setup: function setup(handler, port) {
301    var testMessageProcessed = false;
302    handler.on('test', function wphSetupTest(data) {
303      if (testMessageProcessed) {
304        return;
305      }
306      testMessageProcessed = true;
307      if (!(data instanceof Uint8Array)) {
308        handler.send('test', false);
309        return;
310      }
311      var supportTransfers = data[0] === 255;
312      handler.postMessageTransfers = supportTransfers;
313      var xhr = new XMLHttpRequest();
314      var responseExists = 'response' in xhr;
315      try {
316        xhr.responseType;
317      } catch (e) {
318        responseExists = false;
319      }
320      if (!responseExists) {
321        handler.send('test', false);
322        return;
323      }
324      handler.send('test', {
325        supportTypedArray: true,
326        supportTransfers: supportTransfers
327      });
328    });
329    handler.on('configure', function wphConfigure(data) {
330      (0, _util.setVerbosityLevel)(data.verbosity);
331    });
332    handler.on('GetDocRequest', function wphSetupDoc(data) {
333      return WorkerMessageHandler.createDocumentHandler(data, port);
334    });
335  },
336  createDocumentHandler: function createDocumentHandler(docParams, port) {
337    var pdfManager;
338    var terminated = false;
339    var cancelXHRs = null;
340    var WorkerTasks = [];
341    var apiVersion = docParams.apiVersion;
342    var workerVersion = '2.0.943';
343    if (apiVersion !== workerVersion) {
344      throw new Error('The API version "' + apiVersion + '" does not match ' + ('the Worker version "' + workerVersion + '".'));
345    }
346    var docId = docParams.docId;
347    var docBaseUrl = docParams.docBaseUrl;
348    var workerHandlerName = docParams.docId + '_worker';
349    var handler = new _message_handler.MessageHandler(workerHandlerName, docId, port);
350    handler.postMessageTransfers = docParams.postMessageTransfers;
351    function ensureNotTerminated() {
352      if (terminated) {
353        throw new Error('Worker was terminated');
354      }
355    }
356    function startWorkerTask(task) {
357      WorkerTasks.push(task);
358    }
359    function finishWorkerTask(task) {
360      task.finish();
361      var i = WorkerTasks.indexOf(task);
362      WorkerTasks.splice(i, 1);
363    }
364    function loadDocument(recoveryMode) {
365      var loadDocumentCapability = (0, _util.createPromiseCapability)();
366      var parseSuccess = function parseSuccess() {
367        Promise.all([pdfManager.ensureDoc('numPages'), pdfManager.ensureDoc('fingerprint')]).then(function (_ref3) {
368          var _ref4 = _slicedToArray(_ref3, 2),
369              numPages = _ref4[0],
370              fingerprint = _ref4[1];
371
372          loadDocumentCapability.resolve({
373            numPages: numPages,
374            fingerprint: fingerprint
375          });
376        }, parseFailure);
377      };
378      var parseFailure = function parseFailure(e) {
379        loadDocumentCapability.reject(e);
380      };
381      pdfManager.ensureDoc('checkHeader', []).then(function () {
382        pdfManager.ensureDoc('parseStartXRef', []).then(function () {
383          pdfManager.ensureDoc('parse', [recoveryMode]).then(parseSuccess, parseFailure);
384        }, parseFailure);
385      }, parseFailure);
386      return loadDocumentCapability.promise;
387    }
388    function getPdfManager(data, evaluatorOptions) {
389      var pdfManagerCapability = (0, _util.createPromiseCapability)();
390      var pdfManager;
391      var source = data.source;
392      if (source.data) {
393        try {
394          pdfManager = new _pdf_manager.LocalPdfManager(docId, source.data, source.password, evaluatorOptions, docBaseUrl);
395          pdfManagerCapability.resolve(pdfManager);
396        } catch (ex) {
397          pdfManagerCapability.reject(ex);
398        }
399        return pdfManagerCapability.promise;
400      }
401      var pdfStream,
402          cachedChunks = [];
403      try {
404        pdfStream = new PDFWorkerStream(handler);
405      } catch (ex) {
406        pdfManagerCapability.reject(ex);
407        return pdfManagerCapability.promise;
408      }
409      var fullRequest = pdfStream.getFullReader();
410      fullRequest.headersReady.then(function () {
411        if (!fullRequest.isRangeSupported) {
412          return;
413        }
414        var disableAutoFetch = source.disableAutoFetch || fullRequest.isStreamingSupported;
415        pdfManager = new _pdf_manager.NetworkPdfManager(docId, pdfStream, {
416          msgHandler: handler,
417          url: source.url,
418          password: source.password,
419          length: fullRequest.contentLength,
420          disableAutoFetch: disableAutoFetch,
421          rangeChunkSize: source.rangeChunkSize
422        }, evaluatorOptions, docBaseUrl);
423        for (var i = 0; i < cachedChunks.length; i++) {
424          pdfManager.sendProgressiveData(cachedChunks[i]);
425        }
426        cachedChunks = [];
427        pdfManagerCapability.resolve(pdfManager);
428        cancelXHRs = null;
429      }).catch(function (reason) {
430        pdfManagerCapability.reject(reason);
431        cancelXHRs = null;
432      });
433      var loaded = 0;
434      var flushChunks = function flushChunks() {
435        var pdfFile = (0, _util.arraysToBytes)(cachedChunks);
436        if (source.length && pdfFile.length !== source.length) {
437          (0, _util.warn)('reported HTTP length is different from actual');
438        }
439        try {
440          pdfManager = new _pdf_manager.LocalPdfManager(docId, pdfFile, source.password, evaluatorOptions, docBaseUrl);
441          pdfManagerCapability.resolve(pdfManager);
442        } catch (ex) {
443          pdfManagerCapability.reject(ex);
444        }
445        cachedChunks = [];
446      };
447      var readPromise = new Promise(function (resolve, reject) {
448        var readChunk = function readChunk(chunk) {
449          try {
450            ensureNotTerminated();
451            if (chunk.done) {
452              if (!pdfManager) {
453                flushChunks();
454              }
455              cancelXHRs = null;
456              return;
457            }
458            var data = chunk.value;
459            loaded += (0, _util.arrayByteLength)(data);
460            if (!fullRequest.isStreamingSupported) {
461              handler.send('DocProgress', {
462                loaded: loaded,
463                total: Math.max(loaded, fullRequest.contentLength || 0)
464              });
465            }
466            if (pdfManager) {
467              pdfManager.sendProgressiveData(data);
468            } else {
469              cachedChunks.push(data);
470            }
471            fullRequest.read().then(readChunk, reject);
472          } catch (e) {
473            reject(e);
474          }
475        };
476        fullRequest.read().then(readChunk, reject);
477      });
478      readPromise.catch(function (e) {
479        pdfManagerCapability.reject(e);
480        cancelXHRs = null;
481      });
482      cancelXHRs = function cancelXHRs() {
483        pdfStream.cancelAllRequests('abort');
484      };
485      return pdfManagerCapability.promise;
486    }
487    function setupDoc(data) {
488      function onSuccess(doc) {
489        ensureNotTerminated();
490        handler.send('GetDoc', { pdfInfo: doc });
491      }
492      function onFailure(e) {
493        ensureNotTerminated();
494        if (e instanceof _util.PasswordException) {
495          var task = new WorkerTask('PasswordException: response ' + e.code);
496          startWorkerTask(task);
497          handler.sendWithPromise('PasswordRequest', e).then(function (data) {
498            finishWorkerTask(task);
499            pdfManager.updatePassword(data.password);
500            pdfManagerReady();
501          }).catch(function (boundException) {
502            finishWorkerTask(task);
503            handler.send('PasswordException', boundException);
504          }.bind(null, e));
505        } else if (e instanceof _util.InvalidPDFException) {
506          handler.send('InvalidPDF', e);
507        } else if (e instanceof _util.MissingPDFException) {
508          handler.send('MissingPDF', e);
509        } else if (e instanceof _util.UnexpectedResponseException) {
510          handler.send('UnexpectedResponse', e);
511        } else {
512          handler.send('UnknownError', new _util.UnknownErrorException(e.message, e.toString()));
513        }
514      }
515      function pdfManagerReady() {
516        ensureNotTerminated();
517        loadDocument(false).then(onSuccess, function loadFailure(ex) {
518          ensureNotTerminated();
519          if (!(ex instanceof _util.XRefParseException)) {
520            onFailure(ex);
521            return;
522          }
523          pdfManager.requestLoadedStream();
524          pdfManager.onLoadedStream().then(function () {
525            ensureNotTerminated();
526            loadDocument(true).then(onSuccess, onFailure);
527          });
528        }, onFailure);
529      }
530      ensureNotTerminated();
531      var evaluatorOptions = {
532        forceDataSchema: data.disableCreateObjectURL,
533        maxImageSize: data.maxImageSize,
534        disableFontFace: data.disableFontFace,
535        nativeImageDecoderSupport: data.nativeImageDecoderSupport,
536        ignoreErrors: data.ignoreErrors,
537        isEvalSupported: data.isEvalSupported
538      };
539      getPdfManager(data, evaluatorOptions).then(function (newPdfManager) {
540        if (terminated) {
541          newPdfManager.terminate();
542          throw new Error('Worker was terminated');
543        }
544        pdfManager = newPdfManager;
545        pdfManager.onLoadedStream().then(function (stream) {
546          handler.send('DataLoaded', { length: stream.bytes.byteLength });
547        });
548      }).then(pdfManagerReady, onFailure);
549    }
550    handler.on('GetPage', function wphSetupGetPage(data) {
551      return pdfManager.getPage(data.pageIndex).then(function (page) {
552        return Promise.all([pdfManager.ensure(page, 'rotate'), pdfManager.ensure(page, 'ref'), pdfManager.ensure(page, 'userUnit'), pdfManager.ensure(page, 'view')]).then(function (_ref5) {
553          var _ref6 = _slicedToArray(_ref5, 4),
554              rotate = _ref6[0],
555              ref = _ref6[1],
556              userUnit = _ref6[2],
557              view = _ref6[3];
558
559          return {
560            rotate: rotate,
561            ref: ref,
562            userUnit: userUnit,
563            view: view
564          };
565        });
566      });
567    });
568    handler.on('GetPageIndex', function wphSetupGetPageIndex(data) {
569      var ref = new _primitives.Ref(data.ref.num, data.ref.gen);
570      var catalog = pdfManager.pdfDocument.catalog;
571      return catalog.getPageIndex(ref);
572    });
573    handler.on('GetDestinations', function wphSetupGetDestinations(data) {
574      return pdfManager.ensureCatalog('destinations');
575    });
576    handler.on('GetDestination', function wphSetupGetDestination(data) {
577      return pdfManager.ensureCatalog('getDestination', [data.id]);
578    });
579    handler.on('GetPageLabels', function wphSetupGetPageLabels(data) {
580      return pdfManager.ensureCatalog('pageLabels');
581    });
582    handler.on('GetPageMode', function wphSetupGetPageMode(data) {
583      return pdfManager.ensureCatalog('pageMode');
584    });
585    handler.on('GetAttachments', function wphSetupGetAttachments(data) {
586      return pdfManager.ensureCatalog('attachments');
587    });
588    handler.on('GetJavaScript', function wphSetupGetJavaScript(data) {
589      return pdfManager.ensureCatalog('javaScript');
590    });
591    handler.on('GetOutline', function wphSetupGetOutline(data) {
592      return pdfManager.ensureCatalog('documentOutline');
593    });
594    handler.on('GetPermissions', function (data) {
595      return pdfManager.ensureCatalog('permissions');
596    });
597    handler.on('GetMetadata', function wphSetupGetMetadata(data) {
598      return Promise.all([pdfManager.ensureDoc('documentInfo'), pdfManager.ensureCatalog('metadata')]);
599    });
600    handler.on('GetData', function wphSetupGetData(data) {
601      pdfManager.requestLoadedStream();
602      return pdfManager.onLoadedStream().then(function (stream) {
603        return stream.bytes;
604      });
605    });
606    handler.on('GetStats', function wphSetupGetStats(data) {
607      return pdfManager.pdfDocument.xref.stats;
608    });
609    handler.on('GetAnnotations', function (_ref7) {
610      var pageIndex = _ref7.pageIndex,
611          intent = _ref7.intent;
612
613      return pdfManager.getPage(pageIndex).then(function (page) {
614        return page.getAnnotationsData(intent);
615      });
616    });
617    handler.on('RenderPageRequest', function wphSetupRenderPage(data) {
618      var pageIndex = data.pageIndex;
619      pdfManager.getPage(pageIndex).then(function (page) {
620        var task = new WorkerTask('RenderPageRequest: page ' + pageIndex);
621        startWorkerTask(task);
622        var pageNum = pageIndex + 1;
623        var start = Date.now();
624        page.getOperatorList({
625          handler: handler,
626          task: task,
627          intent: data.intent,
628          renderInteractiveForms: data.renderInteractiveForms
629        }).then(function (operatorList) {
630          finishWorkerTask(task);
631          (0, _util.info)('page=' + pageNum + ' - getOperatorList: time=' + (Date.now() - start) + 'ms, len=' + operatorList.totalLength);
632        }, function (e) {
633          finishWorkerTask(task);
634          if (task.terminated) {
635            return;
636          }
637          handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.unknown });
638          var minimumStackMessage = 'worker.js: while trying to getPage() and getOperatorList()';
639          var wrappedException;
640          if (typeof e === 'string') {
641            wrappedException = {
642              message: e,
643              stack: minimumStackMessage
644            };
645          } else if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object') {
646            wrappedException = {
647              message: e.message || e.toString(),
648              stack: e.stack || minimumStackMessage
649            };
650          } else {
651            wrappedException = {
652              message: 'Unknown exception type: ' + (typeof e === 'undefined' ? 'undefined' : _typeof(e)),
653              stack: minimumStackMessage
654            };
655          }
656          handler.send('PageError', {
657            pageNum: pageNum,
658            error: wrappedException,
659            intent: data.intent
660          });
661        });
662      });
663    }, this);
664    handler.on('GetTextContent', function wphExtractText(data, sink) {
665      var pageIndex = data.pageIndex;
666      sink.onPull = function (desiredSize) {};
667      sink.onCancel = function (reason) {};
668      pdfManager.getPage(pageIndex).then(function (page) {
669        var task = new WorkerTask('GetTextContent: page ' + pageIndex);
670        startWorkerTask(task);
671        var pageNum = pageIndex + 1;
672        var start = Date.now();
673        page.extractTextContent({
674          handler: handler,
675          task: task,
676          sink: sink,
677          normalizeWhitespace: data.normalizeWhitespace,
678          combineTextItems: data.combineTextItems
679        }).then(function () {
680          finishWorkerTask(task);
681          (0, _util.info)('text indexing: page=' + pageNum + ' - time=' + (Date.now() - start) + 'ms');
682          sink.close();
683        }, function (reason) {
684          finishWorkerTask(task);
685          if (task.terminated) {
686            return;
687          }
688          sink.error(reason);
689          throw reason;
690        });
691      });
692    });
693    handler.on('Cleanup', function wphCleanup(data) {
694      return pdfManager.cleanup();
695    });
696    handler.on('Terminate', function wphTerminate(data) {
697      terminated = true;
698      if (pdfManager) {
699        pdfManager.terminate();
700        pdfManager = null;
701      }
702      if (cancelXHRs) {
703        cancelXHRs();
704      }
705      var waitOn = [];
706      WorkerTasks.forEach(function (task) {
707        waitOn.push(task.finished);
708        task.terminate();
709      });
710      return Promise.all(waitOn).then(function () {
711        handler.destroy();
712        handler = null;
713      });
714    });
715    handler.on('Ready', function wphReady(data) {
716      setupDoc(docParams);
717      docParams = null;
718    });
719    return workerHandlerName;
720  },
721  initializeFromPort: function initializeFromPort(port) {
722    var handler = new _message_handler.MessageHandler('worker', 'main', port);
723    WorkerMessageHandler.setup(handler, port);
724    handler.send('ready', null);
725  }
726};
727function isMessagePort(maybePort) {
728  return typeof maybePort.postMessage === 'function' && 'onmessage' in maybePort;
729}
730if (typeof window === 'undefined' && !(0, _is_node2.default)() && typeof self !== 'undefined' && isMessagePort(self)) {
731  WorkerMessageHandler.initializeFromPort(self);
732}
733exports.WorkerTask = WorkerTask;
734exports.WorkerMessageHandler = WorkerMessageHandler;
735
736/***/ }),
737/* 2 */
738/***/ (function(module, exports, __w_pdfjs_require__) {
739
740"use strict";
741
742
743Object.defineProperty(exports, "__esModule", {
744  value: true
745});
746exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.URL = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isSpace = exports.isString = exports.isNum = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.info = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.getInheritableProperty = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.toRomanNumerals = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined;
747
748var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
749
750__w_pdfjs_require__(3);
751
752var _streams_polyfill = __w_pdfjs_require__(126);
753
754var _url_polyfill = __w_pdfjs_require__(128);
755
756var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
757var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
758var NativeImageDecoding = {
759  NONE: 'none',
760  DECODE: 'decode',
761  DISPLAY: 'display'
762};
763var PermissionFlag = {
764  PRINT: 0x04,
765  MODIFY_CONTENTS: 0x08,
766  COPY: 0x10,
767  MODIFY_ANNOTATIONS: 0x20,
768  FILL_INTERACTIVE_FORMS: 0x100,
769  COPY_FOR_ACCESSIBILITY: 0x200,
770  ASSEMBLE: 0x400,
771  PRINT_HIGH_QUALITY: 0x800
772};
773var TextRenderingMode = {
774  FILL: 0,
775  STROKE: 1,
776  FILL_STROKE: 2,
777  INVISIBLE: 3,
778  FILL_ADD_TO_PATH: 4,
779  STROKE_ADD_TO_PATH: 5,
780  FILL_STROKE_ADD_TO_PATH: 6,
781  ADD_TO_PATH: 7,
782  FILL_STROKE_MASK: 3,
783  ADD_TO_PATH_FLAG: 4
784};
785var ImageKind = {
786  GRAYSCALE_1BPP: 1,
787  RGB_24BPP: 2,
788  RGBA_32BPP: 3
789};
790var AnnotationType = {
791  TEXT: 1,
792  LINK: 2,
793  FREETEXT: 3,
794  LINE: 4,
795  SQUARE: 5,
796  CIRCLE: 6,
797  POLYGON: 7,
798  POLYLINE: 8,
799  HIGHLIGHT: 9,
800  UNDERLINE: 10,
801  SQUIGGLY: 11,
802  STRIKEOUT: 12,
803  STAMP: 13,
804  CARET: 14,
805  INK: 15,
806  POPUP: 16,
807  FILEATTACHMENT: 17,
808  SOUND: 18,
809  MOVIE: 19,
810  WIDGET: 20,
811  SCREEN: 21,
812  PRINTERMARK: 22,
813  TRAPNET: 23,
814  WATERMARK: 24,
815  THREED: 25,
816  REDACT: 26
817};
818var AnnotationFlag = {
819  INVISIBLE: 0x01,
820  HIDDEN: 0x02,
821  PRINT: 0x04,
822  NOZOOM: 0x08,
823  NOROTATE: 0x10,
824  NOVIEW: 0x20,
825  READONLY: 0x40,
826  LOCKED: 0x80,
827  TOGGLENOVIEW: 0x100,
828  LOCKEDCONTENTS: 0x200
829};
830var AnnotationFieldFlag = {
831  READONLY: 0x0000001,
832  REQUIRED: 0x0000002,
833  NOEXPORT: 0x0000004,
834  MULTILINE: 0x0001000,
835  PASSWORD: 0x0002000,
836  NOTOGGLETOOFF: 0x0004000,
837  RADIO: 0x0008000,
838  PUSHBUTTON: 0x0010000,
839  COMBO: 0x0020000,
840  EDIT: 0x0040000,
841  SORT: 0x0080000,
842  FILESELECT: 0x0100000,
843  MULTISELECT: 0x0200000,
844  DONOTSPELLCHECK: 0x0400000,
845  DONOTSCROLL: 0x0800000,
846  COMB: 0x1000000,
847  RICHTEXT: 0x2000000,
848  RADIOSINUNISON: 0x2000000,
849  COMMITONSELCHANGE: 0x4000000
850};
851var AnnotationBorderStyleType = {
852  SOLID: 1,
853  DASHED: 2,
854  BEVELED: 3,
855  INSET: 4,
856  UNDERLINE: 5
857};
858var StreamType = {
859  UNKNOWN: 0,
860  FLATE: 1,
861  LZW: 2,
862  DCT: 3,
863  JPX: 4,
864  JBIG: 5,
865  A85: 6,
866  AHX: 7,
867  CCF: 8,
868  RL: 9
869};
870var FontType = {
871  UNKNOWN: 0,
872  TYPE1: 1,
873  TYPE1C: 2,
874  CIDFONTTYPE0: 3,
875  CIDFONTTYPE0C: 4,
876  TRUETYPE: 5,
877  CIDFONTTYPE2: 6,
878  TYPE3: 7,
879  OPENTYPE: 8,
880  TYPE0: 9,
881  MMTYPE1: 10
882};
883var VerbosityLevel = {
884  ERRORS: 0,
885  WARNINGS: 1,
886  INFOS: 5
887};
888var CMapCompressionType = {
889  NONE: 0,
890  BINARY: 1,
891  STREAM: 2
892};
893var OPS = {
894  dependency: 1,
895  setLineWidth: 2,
896  setLineCap: 3,
897  setLineJoin: 4,
898  setMiterLimit: 5,
899  setDash: 6,
900  setRenderingIntent: 7,
901  setFlatness: 8,
902  setGState: 9,
903  save: 10,
904  restore: 11,
905  transform: 12,
906  moveTo: 13,
907  lineTo: 14,
908  curveTo: 15,
909  curveTo2: 16,
910  curveTo3: 17,
911  closePath: 18,
912  rectangle: 19,
913  stroke: 20,
914  closeStroke: 21,
915  fill: 22,
916  eoFill: 23,
917  fillStroke: 24,
918  eoFillStroke: 25,
919  closeFillStroke: 26,
920  closeEOFillStroke: 27,
921  endPath: 28,
922  clip: 29,
923  eoClip: 30,
924  beginText: 31,
925  endText: 32,
926  setCharSpacing: 33,
927  setWordSpacing: 34,
928  setHScale: 35,
929  setLeading: 36,
930  setFont: 37,
931  setTextRenderingMode: 38,
932  setTextRise: 39,
933  moveText: 40,
934  setLeadingMoveText: 41,
935  setTextMatrix: 42,
936  nextLine: 43,
937  showText: 44,
938  showSpacedText: 45,
939  nextLineShowText: 46,
940  nextLineSetSpacingShowText: 47,
941  setCharWidth: 48,
942  setCharWidthAndBounds: 49,
943  setStrokeColorSpace: 50,
944  setFillColorSpace: 51,
945  setStrokeColor: 52,
946  setStrokeColorN: 53,
947  setFillColor: 54,
948  setFillColorN: 55,
949  setStrokeGray: 56,
950  setFillGray: 57,
951  setStrokeRGBColor: 58,
952  setFillRGBColor: 59,
953  setStrokeCMYKColor: 60,
954  setFillCMYKColor: 61,
955  shadingFill: 62,
956  beginInlineImage: 63,
957  beginImageData: 64,
958  endInlineImage: 65,
959  paintXObject: 66,
960  markPoint: 67,
961  markPointProps: 68,
962  beginMarkedContent: 69,
963  beginMarkedContentProps: 70,
964  endMarkedContent: 71,
965  beginCompat: 72,
966  endCompat: 73,
967  paintFormXObjectBegin: 74,
968  paintFormXObjectEnd: 75,
969  beginGroup: 76,
970  endGroup: 77,
971  beginAnnotations: 78,
972  endAnnotations: 79,
973  beginAnnotation: 80,
974  endAnnotation: 81,
975  paintJpegXObject: 82,
976  paintImageMaskXObject: 83,
977  paintImageMaskXObjectGroup: 84,
978  paintImageXObject: 85,
979  paintInlineImageXObject: 86,
980  paintInlineImageXObjectGroup: 87,
981  paintImageXObjectRepeat: 88,
982  paintImageMaskXObjectRepeat: 89,
983  paintSolidColorImageMask: 90,
984  constructPath: 91
985};
986var UNSUPPORTED_FEATURES = {
987  unknown: 'unknown',
988  forms: 'forms',
989  javaScript: 'javaScript',
990  smask: 'smask',
991  shadingPattern: 'shadingPattern',
992  font: 'font'
993};
994var PasswordResponses = {
995  NEED_PASSWORD: 1,
996  INCORRECT_PASSWORD: 2
997};
998var verbosity = VerbosityLevel.WARNINGS;
999function setVerbosityLevel(level) {
1000  if (Number.isInteger(level)) {
1001    verbosity = level;
1002  }
1003}
1004function getVerbosityLevel() {
1005  return verbosity;
1006}
1007function info(msg) {
1008  if (verbosity >= VerbosityLevel.INFOS) {
1009    console.log('Info: ' + msg);
1010  }
1011}
1012function warn(msg) {
1013  if (verbosity >= VerbosityLevel.WARNINGS) {
1014    console.log('Warning: ' + msg);
1015  }
1016}
1017function deprecated(details) {
1018  console.log('Deprecated API usage: ' + details);
1019}
1020function unreachable(msg) {
1021  throw new Error(msg);
1022}
1023function assert(cond, msg) {
1024  if (!cond) {
1025    unreachable(msg);
1026  }
1027}
1028function isSameOrigin(baseUrl, otherUrl) {
1029  try {
1030    var base = new _url_polyfill.URL(baseUrl);
1031    if (!base.origin || base.origin === 'null') {
1032      return false;
1033    }
1034  } catch (e) {
1035    return false;
1036  }
1037  var other = new _url_polyfill.URL(otherUrl, base);
1038  return base.origin === other.origin;
1039}
1040function _isValidProtocol(url) {
1041  if (!url) {
1042    return false;
1043  }
1044  switch (url.protocol) {
1045    case 'http:':
1046    case 'https:':
1047    case 'ftp:':
1048    case 'mailto:':
1049    case 'tel:':
1050      return true;
1051    default:
1052      return false;
1053  }
1054}
1055function createValidAbsoluteUrl(url, baseUrl) {
1056  if (!url) {
1057    return null;
1058  }
1059  try {
1060    var absoluteUrl = baseUrl ? new _url_polyfill.URL(url, baseUrl) : new _url_polyfill.URL(url);
1061    if (_isValidProtocol(absoluteUrl)) {
1062      return absoluteUrl;
1063    }
1064  } catch (ex) {}
1065  return null;
1066}
1067function shadow(obj, prop, value) {
1068  Object.defineProperty(obj, prop, {
1069    value: value,
1070    enumerable: true,
1071    configurable: true,
1072    writable: false
1073  });
1074  return value;
1075}
1076function getLookupTableFactory(initializer) {
1077  var lookup;
1078  return function () {
1079    if (initializer) {
1080      lookup = Object.create(null);
1081      initializer(lookup);
1082      initializer = null;
1083    }
1084    return lookup;
1085  };
1086}
1087var PasswordException = function PasswordExceptionClosure() {
1088  function PasswordException(msg, code) {
1089    this.name = 'PasswordException';
1090    this.message = msg;
1091    this.code = code;
1092  }
1093  PasswordException.prototype = new Error();
1094  PasswordException.constructor = PasswordException;
1095  return PasswordException;
1096}();
1097var UnknownErrorException = function UnknownErrorExceptionClosure() {
1098  function UnknownErrorException(msg, details) {
1099    this.name = 'UnknownErrorException';
1100    this.message = msg;
1101    this.details = details;
1102  }
1103  UnknownErrorException.prototype = new Error();
1104  UnknownErrorException.constructor = UnknownErrorException;
1105  return UnknownErrorException;
1106}();
1107var InvalidPDFException = function InvalidPDFExceptionClosure() {
1108  function InvalidPDFException(msg) {
1109    this.name = 'InvalidPDFException';
1110    this.message = msg;
1111  }
1112  InvalidPDFException.prototype = new Error();
1113  InvalidPDFException.constructor = InvalidPDFException;
1114  return InvalidPDFException;
1115}();
1116var MissingPDFException = function MissingPDFExceptionClosure() {
1117  function MissingPDFException(msg) {
1118    this.name = 'MissingPDFException';
1119    this.message = msg;
1120  }
1121  MissingPDFException.prototype = new Error();
1122  MissingPDFException.constructor = MissingPDFException;
1123  return MissingPDFException;
1124}();
1125var UnexpectedResponseException = function UnexpectedResponseExceptionClosure() {
1126  function UnexpectedResponseException(msg, status) {
1127    this.name = 'UnexpectedResponseException';
1128    this.message = msg;
1129    this.status = status;
1130  }
1131  UnexpectedResponseException.prototype = new Error();
1132  UnexpectedResponseException.constructor = UnexpectedResponseException;
1133  return UnexpectedResponseException;
1134}();
1135var MissingDataException = function MissingDataExceptionClosure() {
1136  function MissingDataException(begin, end) {
1137    this.begin = begin;
1138    this.end = end;
1139    this.message = 'Missing data [' + begin + ', ' + end + ')';
1140  }
1141  MissingDataException.prototype = new Error();
1142  MissingDataException.prototype.name = 'MissingDataException';
1143  MissingDataException.constructor = MissingDataException;
1144  return MissingDataException;
1145}();
1146var XRefParseException = function XRefParseExceptionClosure() {
1147  function XRefParseException(msg) {
1148    this.message = msg;
1149  }
1150  XRefParseException.prototype = new Error();
1151  XRefParseException.prototype.name = 'XRefParseException';
1152  XRefParseException.constructor = XRefParseException;
1153  return XRefParseException;
1154}();
1155var FormatError = function FormatErrorClosure() {
1156  function FormatError(msg) {
1157    this.message = msg;
1158  }
1159  FormatError.prototype = new Error();
1160  FormatError.prototype.name = 'FormatError';
1161  FormatError.constructor = FormatError;
1162  return FormatError;
1163}();
1164var AbortException = function AbortExceptionClosure() {
1165  function AbortException(msg) {
1166    this.name = 'AbortException';
1167    this.message = msg;
1168  }
1169  AbortException.prototype = new Error();
1170  AbortException.constructor = AbortException;
1171  return AbortException;
1172}();
1173var NullCharactersRegExp = /\x00/g;
1174function removeNullCharacters(str) {
1175  if (typeof str !== 'string') {
1176    warn('The argument for removeNullCharacters must be a string.');
1177    return str;
1178  }
1179  return str.replace(NullCharactersRegExp, '');
1180}
1181function bytesToString(bytes) {
1182  assert(bytes !== null && (typeof bytes === 'undefined' ? 'undefined' : _typeof(bytes)) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString');
1183  var length = bytes.length;
1184  var MAX_ARGUMENT_COUNT = 8192;
1185  if (length < MAX_ARGUMENT_COUNT) {
1186    return String.fromCharCode.apply(null, bytes);
1187  }
1188  var strBuf = [];
1189  for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
1190    var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
1191    var chunk = bytes.subarray(i, chunkEnd);
1192    strBuf.push(String.fromCharCode.apply(null, chunk));
1193  }
1194  return strBuf.join('');
1195}
1196function stringToBytes(str) {
1197  assert(typeof str === 'string', 'Invalid argument for stringToBytes');
1198  var length = str.length;
1199  var bytes = new Uint8Array(length);
1200  for (var i = 0; i < length; ++i) {
1201    bytes[i] = str.charCodeAt(i) & 0xFF;
1202  }
1203  return bytes;
1204}
1205function arrayByteLength(arr) {
1206  if (arr.length !== undefined) {
1207    return arr.length;
1208  }
1209  assert(arr.byteLength !== undefined);
1210  return arr.byteLength;
1211}
1212function arraysToBytes(arr) {
1213  if (arr.length === 1 && arr[0] instanceof Uint8Array) {
1214    return arr[0];
1215  }
1216  var resultLength = 0;
1217  var i,
1218      ii = arr.length;
1219  var item, itemLength;
1220  for (i = 0; i < ii; i++) {
1221    item = arr[i];
1222    itemLength = arrayByteLength(item);
1223    resultLength += itemLength;
1224  }
1225  var pos = 0;
1226  var data = new Uint8Array(resultLength);
1227  for (i = 0; i < ii; i++) {
1228    item = arr[i];
1229    if (!(item instanceof Uint8Array)) {
1230      if (typeof item === 'string') {
1231        item = stringToBytes(item);
1232      } else {
1233        item = new Uint8Array(item);
1234      }
1235    }
1236    itemLength = item.byteLength;
1237    data.set(item, pos);
1238    pos += itemLength;
1239  }
1240  return data;
1241}
1242function string32(value) {
1243  return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
1244}
1245function log2(x) {
1246  if (x <= 0) {
1247    return 0;
1248  }
1249  return Math.ceil(Math.log2(x));
1250}
1251function readInt8(data, start) {
1252  return data[start] << 24 >> 24;
1253}
1254function readUint16(data, offset) {
1255  return data[offset] << 8 | data[offset + 1];
1256}
1257function readUint32(data, offset) {
1258  return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;
1259}
1260function isLittleEndian() {
1261  var buffer8 = new Uint8Array(4);
1262  buffer8[0] = 1;
1263  var view32 = new Uint32Array(buffer8.buffer, 0, 1);
1264  return view32[0] === 1;
1265}
1266function isEvalSupported() {
1267  try {
1268    new Function('');
1269    return true;
1270  } catch (e) {
1271    return false;
vendor: 3,744 bytes, lines 1272-1369
1272  }
1273}
1274function getInheritableProperty(_ref) {
1275  var dict = _ref.dict,
1276      key = _ref.key,
1277      _ref$getArray = _ref.getArray,
1278      getArray = _ref$getArray === undefined ? false : _ref$getArray,
1279      _ref$stopWhenFound = _ref.stopWhenFound,
1280      stopWhenFound = _ref$stopWhenFound === undefined ? true : _ref$stopWhenFound;
1281
1282  var LOOP_LIMIT = 100;
1283  var loopCount = 0;
1284  var values = void 0;
1285  while (dict) {
1286    var value = getArray ? dict.getArray(key) : dict.get(key);
1287    if (value !== undefined) {
1288      if (stopWhenFound) {
1289        return value;
1290      }
1291      if (!values) {
1292        values = [];
1293      }
1294      values.push(value);
1295    }
1296    if (++loopCount > LOOP_LIMIT) {
1297      warn('getInheritableProperty: maximum loop count exceeded for "' + key + '"');
1298      break;
1299    }
1300    dict = dict.get('Parent');
1301  }
1302  return values;
1303}
1304var Util = function UtilClosure() {
1305  function Util() {}
1306  var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];
1307  Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
1308    rgbBuf[1] = r;
1309    rgbBuf[3] = g;
1310    rgbBuf[5] = b;
1311    return rgbBuf.join('');
1312  };
1313  Util.transform = function Util_transform(m1, m2) {
1314    return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];
1315  };
1316  Util.applyTransform = function Util_applyTransform(p, m) {
1317    var xt = p[0] * m[0] + p[1] * m[2] + m[4];
1318    var yt = p[0] * m[1] + p[1] * m[3] + m[5];
1319    return [xt, yt];
1320  };
1321  Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {
1322    var d = m[0] * m[3] - m[1] * m[2];
1323    var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
1324    var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
1325    return [xt, yt];
1326  };
1327  Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) {
1328    var p1 = Util.applyTransform(r, m);
1329    var p2 = Util.applyTransform(r.slice(2, 4), m);
1330    var p3 = Util.applyTransform([r[0], r[3]], m);
1331    var p4 = Util.applyTransform([r[2], r[1]], m);
1332    return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];
1333  };
1334  Util.inverseTransform = function Util_inverseTransform(m) {
1335    var d = m[0] * m[3] - m[1] * m[2];
1336    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];
1337  };
1338  Util.apply3dTransform = function Util_apply3dTransform(m, v) {
1339    return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];
1340  };
1341  Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) {
1342    var transpose = [m[0], m[2], m[1], m[3]];
1343    var a = m[0] * transpose[0] + m[1] * transpose[2];
1344    var b = m[0] * transpose[1] + m[1] * transpose[3];
1345    var c = m[2] * transpose[0] + m[3] * transpose[2];
1346    var d = m[2] * transpose[1] + m[3] * transpose[3];
1347    var first = (a + d) / 2;
1348    var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;
1349    var sx = first + second || 1;
1350    var sy = first - second || 1;
1351    return [Math.sqrt(sx), Math.sqrt(sy)];
1352  };
1353  Util.normalizeRect = function Util_normalizeRect(rect) {
1354    var r = rect.slice(0);
1355    if (rect[0] > rect[2]) {
1356      r[0] = rect[2];
1357      r[2] = rect[0];
1358    }
1359    if (rect[1] > rect[3]) {
1360      r[1] = rect[3];
1361      r[3] = rect[1];
1362    }
1363    return r;
1364  };
1365  Util.intersect = function Util_intersect(rect1, rect2) {
1366    function compare(a, b) {
1367      return a - b;
1368    }
1369    var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),
1370        orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),
1371        result = [];
1372    rect1 = Util.normalizeRect(rect1);
1373    rect2 = Util.normalizeRect(rect2);
1374    if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {
1375      result[0] = orderedX[1];
1376      result[2] = orderedX[2];
1377    } else {
1378      return false;
1379    }
1380    if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {
1381      result[1] = orderedY[1];
1382      result[3] = orderedY[2];
1383    } else {
1384      return false;
1385    }
1386    return result;
1387  };
1388  return Util;
1389}();
1390var ROMAN_NUMBER_MAP = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'];
1391function toRomanNumerals(number) {
1392  var lowerCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1393
1394  assert(Number.isInteger(number) && number > 0, 'The number should be a positive integer.');
1395  var pos = void 0,
1396      romanBuf = [];
1397  while (number >= 1000) {
1398    number -= 1000;
1399    romanBuf.push('M');
1400  }
1401  pos = number / 100 | 0;
1402  number %= 100;
1403  romanBuf.push(ROMAN_NUMBER_MAP[pos]);
1404  pos = number / 10 | 0;
1405  number %= 10;
1406  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);
1407  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);
1408  var romanStr = romanBuf.join('');
1409  return lowerCase ? romanStr.toLowerCase() : romanStr;
1410}
1411var PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC];
1412function stringToPDFString(str) {
1413  var i,
1414      n = str.length,
1415      strBuf = [];
1416  if (str[0] === '\xFE' && str[1] === '\xFF') {
1417    for (i = 2; i < n; i += 2) {
1418      strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));
1419    }
1420  } else {
1421    for (i = 0; i < n; ++i) {
1422      var code = PDFStringTranslateTable[str.charCodeAt(i)];
1423      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
1424    }
1425  }
1426  return strBuf.join('');
1427}
1428function stringToUTF8String(str) {
1429  return decodeURIComponent(escape(str));
1430}
1431function utf8StringToString(str) {
1432  return unescape(encodeURIComponent(str));
1433}
1434function isEmptyObj(obj) {
1435  for (var key in obj) {
1436    return false;
1437  }
1438  return true;
1439}
1440function isBool(v) {
1441  return typeof v === 'boolean';
1442}
1443function isNum(v) {
1444  return typeof v === 'number';
1445}
1446function isString(v) {
1447  return typeof v === 'string';
1448}
1449function isArrayBuffer(v) {
1450  return (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object' && v !== null && v.byteLength !== undefined;
1451}
1452function isSpace(ch) {
1453  return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A;
1454}
1455function createPromiseCapability() {
1456  var capability = {};
1457  capability.promise = new Promise(function (resolve, reject) {
1458    capability.resolve = resolve;
1459    capability.reject = reject;
1460  });
1461  return capability;
1462}
1463var createObjectURL = function createObjectURLClosure() {
1464  var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
1465  return function createObjectURL(data, contentType) {
1466    var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
1467
1468    if (!forceDataSchema && _url_polyfill.URL.createObjectURL) {
1469      var blob = new Blob([data], { type: contentType });
1470      return _url_polyfill.URL.createObjectURL(blob);
1471    }
1472    var buffer = 'data:' + contentType + ';base64,';
1473    for (var i = 0, ii = data.length; i < ii; i += 3) {
1474      var b1 = data[i] & 0xFF;
1475      var b2 = data[i + 1] & 0xFF;
1476      var b3 = data[i + 2] & 0xFF;
1477      var d1 = b1 >> 2,
1478          d2 = (b1 & 3) << 4 | b2 >> 4;
1479      var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64;
1480      var d4 = i + 2 < ii ? b3 & 0x3F : 64;
1481      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
1482    }
1483    return buffer;
1484  };
1485}();
1486exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;
1487exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
1488exports.OPS = OPS;
1489exports.VerbosityLevel = VerbosityLevel;
1490exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;
1491exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
1492exports.AnnotationFieldFlag = AnnotationFieldFlag;
1493exports.AnnotationFlag = AnnotationFlag;
1494exports.AnnotationType = AnnotationType;
1495exports.FontType = FontType;
1496exports.ImageKind = ImageKind;
1497exports.CMapCompressionType = CMapCompressionType;
1498exports.AbortException = AbortException;
1499exports.InvalidPDFException = InvalidPDFException;
1500exports.MissingDataException = MissingDataException;
1501exports.MissingPDFException = MissingPDFException;
1502exports.NativeImageDecoding = NativeImageDecoding;
1503exports.PasswordException = PasswordException;
1504exports.PasswordResponses = PasswordResponses;
1505exports.PermissionFlag = PermissionFlag;
1506exports.StreamType = StreamType;
1507exports.TextRenderingMode = TextRenderingMode;
1508exports.UnexpectedResponseException = UnexpectedResponseException;
1509exports.UnknownErrorException = UnknownErrorException;
1510exports.Util = Util;
1511exports.toRomanNumerals = toRomanNumerals;
1512exports.XRefParseException = XRefParseException;
1513exports.FormatError = FormatError;
1514exports.arrayByteLength = arrayByteLength;
1515exports.arraysToBytes = arraysToBytes;
1516exports.assert = assert;
1517exports.bytesToString = bytesToString;
1518exports.createPromiseCapability = createPromiseCapability;
1519exports.createObjectURL = createObjectURL;
1520exports.deprecated = deprecated;
1521exports.getInheritableProperty = getInheritableProperty;
1522exports.getLookupTableFactory = getLookupTableFactory;
1523exports.getVerbosityLevel = getVerbosityLevel;
1524exports.info = info;
1525exports.isArrayBuffer = isArrayBuffer;
1526exports.isBool = isBool;
1527exports.isEmptyObj = isEmptyObj;
1528exports.isNum = isNum;
1529exports.isString = isString;
1530exports.isSpace = isSpace;
1531exports.isSameOrigin = isSameOrigin;
1532exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
1533exports.isLittleEndian = isLittleEndian;
1534exports.isEvalSupported = isEvalSupported;
1535exports.log2 = log2;
1536exports.readInt8 = readInt8;
1537exports.readUint16 = readUint16;
1538exports.readUint32 = readUint32;
1539exports.removeNullCharacters = removeNullCharacters;
1540exports.ReadableStream = _streams_polyfill.ReadableStream;
1541exports.URL = _url_polyfill.URL;
1542exports.setVerbosityLevel = setVerbosityLevel;
1543exports.shadow = shadow;
1544exports.string32 = string32;
1545exports.stringToBytes = stringToBytes;
1546exports.stringToPDFString = stringToPDFString;
1547exports.stringToUTF8String = stringToUTF8String;
1548exports.utf8StringToString = utf8StringToString;
1549exports.warn = warn;
1550exports.unreachable = unreachable;
1551
1552/***/ }),
1553/* 3 */
1554/***/ (function(module, exports, __w_pdfjs_require__) {
1555
1556"use strict";
1557
1558
1559var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1560
1561var globalScope = __w_pdfjs_require__(4);
1562if (!globalScope._pdfjsCompatibilityChecked) {
1563  globalScope._pdfjsCompatibilityChecked = true;
1564  var isNodeJS = __w_pdfjs_require__(5);
1565  var hasDOM = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && (typeof document === 'undefined' ? 'undefined' : _typeof(document)) === 'object';
1566  (function checkNodeBtoa() {
1567    if (globalScope.btoa || !isNodeJS()) {
1568      return;
1569    }
1570    globalScope.btoa = function (chars) {
1571      return Buffer.from(chars, 'binary').toString('base64');
1572    };
1573  })();
1574  (function checkNodeAtob() {
1575    if (globalScope.atob || !isNodeJS()) {
1576      return;
1577    }
1578    globalScope.atob = function (input) {
1579      return Buffer.from(input, 'base64').toString('binary');
1580    };
1581  })();
1582  (function checkCurrentScript() {
1583    if (!hasDOM) {
1584      return;
1585    }
1586    if ('currentScript' in document) {
1587      return;
1588    }
1589    Object.defineProperty(document, 'currentScript', {
1590      get: function get() {
1591        var scripts = document.getElementsByTagName('script');
1592        return scripts[scripts.length - 1];
1593      },
1594
1595      enumerable: true,
1596      configurable: true
1597    });
1598  })();
1599  (function checkChildNodeRemove() {
1600    if (!hasDOM) {
1601      return;
1602    }
1603    if (typeof Element.prototype.remove !== 'undefined') {
1604      return;
1605    }
1606    Element.prototype.remove = function () {
1607      if (this.parentNode) {
1608        this.parentNode.removeChild(this);
1609      }
1610    };
1611  })();
1612  (function checkDOMTokenListToggle() {
1613    if (!hasDOM || isNodeJS()) {
1614      return;
1615    }
1616    var div = document.createElement('div');
1617    if (div.classList.toggle('test', 0) === false) {
1618      return;
1619    }
1620    var originalDOMTokenListToggle = DOMTokenList.prototype.toggle;
1621    DOMTokenList.prototype.toggle = function (token) {
1622      if (arguments.length > 1) {
1623        var force = !!arguments[1];
1624        return this[force ? 'add' : 'remove'](token), force;
1625      }
1626      return originalDOMTokenListToggle(token);
1627    };
1628  })();
1629  (function checkStringIncludes() {
1630    if (String.prototype.includes) {
1631      return;
1632    }
1633    __w_pdfjs_require__(6);
1634  })();
1635  (function checkArrayIncludes() {
1636    if (Array.prototype.includes) {
1637      return;
1638    }
1639    __w_pdfjs_require__(34);
1640  })();
1641  (function checkObjectAssign() {
1642    if (Object.assign) {
1643      return;
1644    }
1645    __w_pdfjs_require__(43);
1646  })();
1647  (function checkMathLog2() {
1648    if (Math.log2) {
1649      return;
1650    }
1651    Math.log2 = __w_pdfjs_require__(53);
1652  })();
1653  (function checkNumberIsNaN() {
1654    if (Number.isNaN) {
1655      return;
1656    }
1657    Number.isNaN = __w_pdfjs_require__(55);
1658  })();
1659  (function checkNumberIsInteger() {
1660    if (Number.isInteger) {
1661      return;
1662    }
1663    Number.isInteger = __w_pdfjs_require__(57);
1664  })();
1665  (function checkPromise() {
1666    if (globalScope.Promise) {
1667      return;
1668    }
1669    globalScope.Promise = __w_pdfjs_require__(60);
1670  })();
1671  (function checkWeakMap() {
1672    if (globalScope.WeakMap) {
1673      return;
1674    }
1675    globalScope.WeakMap = __w_pdfjs_require__(95);
1676  })();
1677  (function checkStringCodePointAt() {
1678    if (String.codePointAt) {
1679      return;
1680    }
1681    String.codePointAt = __w_pdfjs_require__(112);
1682  })();
1683  (function checkStringFromCodePoint() {
1684    if (String.fromCodePoint) {
1685      return;
1686    }
1687    String.fromCodePoint = __w_pdfjs_require__(114);
1688  })();
1689  (function checkSymbol() {
1690    if (globalScope.Symbol) {
1691      return;
1692    }
1693    __w_pdfjs_require__(116);
1694  })();
1695  (function checkObjectValues() {
1696    if (Object.values) {
1697      return;
1698    }
1699    Object.values = __w_pdfjs_require__(123);
1700  })();
1701}
1702
1703/***/ }),
1704/* 4 */
1705/***/ (function(module, exports, __w_pdfjs_require__) {
1706
1707"use strict";
1708
1709
1710module.exports = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : {};
1711
1712/***/ }),
1713/* 5 */
1714/***/ (function(module, exports, __w_pdfjs_require__) {
1715
1716"use strict";
1717
1718
1719var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1720
1721module.exports = function isNodeJS() {
1722  return (typeof process === 'undefined' ? 'undefined' : _typeof(process)) === 'object' && process + '' === '[object process]';
1723};
1724
1725/***/ }),
1726/* 6 */
1727/***/ (function(module, exports, __w_pdfjs_require__) {
1728
1729"use strict";
1730
1731
1732__w_pdfjs_require__(7);
1733module.exports = __w_pdfjs_require__(10).String.includes;
1734
1735/***/ }),
1736/* 7 */
1737/***/ (function(module, exports, __w_pdfjs_require__) {
1738
1739"use strict";
1740
1741
1742var $export = __w_pdfjs_require__(8);
1743var context = __w_pdfjs_require__(26);
1744var INCLUDES = 'includes';
1745$export($export.P + $export.F * __w_pdfjs_require__(33)(INCLUDES), 'String', {
1746  includes: function includes(searchString) {
1747    return !!~context(this, searchString, INCLUDES).indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
1748  }
1749});
1750
1751/***/ }),
1752/* 8 */
1753/***/ (function(module, exports, __w_pdfjs_require__) {
1754
1755"use strict";
1756
1757
1758var global = __w_pdfjs_require__(9);
1759var core = __w_pdfjs_require__(10);
1760var hide = __w_pdfjs_require__(11);
1761var redefine = __w_pdfjs_require__(21);
1762var ctx = __w_pdfjs_require__(24);
1763var PROTOTYPE = 'prototype';
1764var $export = function $export(type, name, source) {
1765  var IS_FORCED = type & $export.F;
1766  var IS_GLOBAL = type & $export.G;
1767  var IS_STATIC = type & $export.S;
1768  var IS_PROTO = type & $export.P;
1769  var IS_BIND = type & $export.B;
1770  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
1771  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
1772  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
1773  var key, own, out, exp;
1774  if (IS_GLOBAL) source = name;
1775  for (key in source) {
1776    own = !IS_FORCED && target && target[key] !== undefined;
1777    out = (own ? target : source)[key];
1778    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
1779    if (target) redefine(target, key, out, type & $export.U);
1780    if (exports[key] != out) hide(exports, key, exp);
1781    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
1782  }
1783};
1784global.core = core;
1785$export.F = 1;
1786$export.G = 2;
1787$export.S = 4;
1788$export.P = 8;
1789$export.B = 16;
1790$export.W = 32;
1791$export.U = 64;
1792$export.R = 128;
1793module.exports = $export;
1794
1795/***/ }),
1796/* 9 */
1797/***/ (function(module, exports, __w_pdfjs_require__) {
1798
1799"use strict";
1800
1801
1802var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
1803if (typeof __g == 'number') __g = global;
1804
1805/***/ }),
1806/* 10 */
1807/***/ (function(module, exports, __w_pdfjs_require__) {
1808
1809"use strict";
1810
1811
1812var core = module.exports = { version: '2.5.7' };
1813if (typeof __e == 'number') __e = core;
1814
1815/***/ }),
1816/* 11 */
1817/***/ (function(module, exports, __w_pdfjs_require__) {
1818
1819"use strict";
1820
1821
1822var dP = __w_pdfjs_require__(12);
1823var createDesc = __w_pdfjs_require__(20);
1824module.exports = __w_pdfjs_require__(16) ? function (object, key, value) {
1825  return dP.f(object, key, createDesc(1, value));
1826} : function (object, key, value) {
1827  object[key] = value;
1828  return object;
1829};
1830
1831/***/ }),
1832/* 12 */
1833/***/ (function(module, exports, __w_pdfjs_require__) {
1834
1835"use strict";
1836
1837
1838var anObject = __w_pdfjs_require__(13);
1839var IE8_DOM_DEFINE = __w_pdfjs_require__(15);
1840var toPrimitive = __w_pdfjs_require__(19);
1841var dP = Object.defineProperty;
1842exports.f = __w_pdfjs_require__(16) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
1843  anObject(O);
1844  P = toPrimitive(P, true);
1845  anObject(Attributes);
1846  if (IE8_DOM_DEFINE) try {
1847    return dP(O, P, Attributes);
1848  } catch (e) {}
1849  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
1850  if ('value' in Attributes) O[P] = Attributes.value;
1851  return O;
1852};
1853
1854/***/ }),
1855/* 13 */
1856/***/ (function(module, exports, __w_pdfjs_require__) {
1857
1858"use strict";
1859
1860
1861var isObject = __w_pdfjs_require__(14);
1862module.exports = function (it) {
1863  if (!isObject(it)) throw TypeError(it + ' is not an object!');
1864  return it;
1865};
1866
1867/***/ }),
1868/* 14 */
1869/***/ (function(module, exports, __w_pdfjs_require__) {
1870
1871"use strict";
1872
1873
1874var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1875
1876module.exports = function (it) {
1877  return (typeof it === 'undefined' ? 'undefined' : _typeof(it)) === 'object' ? it !== null : typeof it === 'function';
1878};
1879
1880/***/ }),
1881/* 15 */
1882/***/ (function(module, exports, __w_pdfjs_require__) {
1883
1884"use strict";
1885
1886
1887module.exports = !__w_pdfjs_require__(16) && !__w_pdfjs_require__(17)(function () {
1888  return Object.defineProperty(__w_pdfjs_require__(18)('div'), 'a', {
1889    get: function get() {
1890      return 7;
1891    }
1892  }).a != 7;
1893});
1894
1895/***/ }),
1896/* 16 */
1897/***/ (function(module, exports, __w_pdfjs_require__) {
1898
1899"use strict";
1900
1901
1902module.exports = !__w_pdfjs_require__(17)(function () {
1903  return Object.defineProperty({}, 'a', {
1904    get: function get() {
1905      return 7;
1906    }
1907  }).a != 7;
1908});
1909
1910/***/ }),
1911/* 17 */
1912/***/ (function(module, exports, __w_pdfjs_require__) {
1913
1914"use strict";
1915
1916
1917module.exports = function (exec) {
1918  try {
1919    return !!exec();
1920  } catch (e) {
1921    return true;
1922  }
1923};
1924
1925/***/ }),
1926/* 18 */
1927/***/ (function(module, exports, __w_pdfjs_require__) {
1928
1929"use strict";
1930
1931
1932var isObject = __w_pdfjs_require__(14);
1933var document = __w_pdfjs_require__(9).document;
1934var is = isObject(document) && isObject(document.createElement);
1935module.exports = function (it) {
1936  return is ? document.createElement(it) : {};
1937};
1938
1939/***/ }),
1940/* 19 */
1941/***/ (function(module, exports, __w_pdfjs_require__) {
1942
1943"use strict";
1944
1945
1946var isObject = __w_pdfjs_require__(14);
1947module.exports = function (it, S) {
1948  if (!isObject(it)) return it;
1949  var fn, val;
1950  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1951  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
1952  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1953  throw TypeError("Can't convert object to primitive value");
1954};
1955
1956/***/ }),
1957/* 20 */
1958/***/ (function(module, exports, __w_pdfjs_require__) {
1959
1960"use strict";
1961
1962
1963module.exports = function (bitmap, value) {
1964  return {
1965    enumerable: !(bitmap & 1),
1966    configurable: !(bitmap & 2),
1967    writable: !(bitmap & 4),
1968    value: value
1969  };
1970};
1971
1972/***/ }),
1973/* 21 */
1974/***/ (function(module, exports, __w_pdfjs_require__) {
1975
1976"use strict";
1977
1978
1979var global = __w_pdfjs_require__(9);
1980var hide = __w_pdfjs_require__(11);
1981var has = __w_pdfjs_require__(22);
1982var SRC = __w_pdfjs_require__(23)('src');
1983var TO_STRING = 'toString';
1984var $toString = Function[TO_STRING];
1985var TPL = ('' + $toString).split(TO_STRING);
1986__w_pdfjs_require__(10).inspectSource = function (it) {
1987  return $toString.call(it);
1988};
1989(module.exports = function (O, key, val, safe) {
1990  var isFunction = typeof val == 'function';
1991  if (isFunction) has(val, 'name') || hide(val, 'name', key);
1992  if (O[key] === val) return;
1993  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
1994  if (O === global) {
1995    O[key] = val;
1996  } else if (!safe) {
1997    delete O[key];
1998    hide(O, key, val);
1999  } else if (O[key]) {
2000    O[key] = val;
2001  } else {
2002    hide(O, key, val);
2003  }
2004})(Function.prototype, TO_STRING, function toString() {
2005  return typeof this == 'function' && this[SRC] || $toString.call(this);
2006});
2007
2008/***/ }),
2009/* 22 */
2010/***/ (function(module, exports, __w_pdfjs_require__) {
2011
2012"use strict";
2013
2014
2015var hasOwnProperty = {}.hasOwnProperty;
2016module.exports = function (it, key) {
2017  return hasOwnProperty.call(it, key);
2018};
2019
2020/***/ }),
2021/* 23 */
2022/***/ (function(module, exports, __w_pdfjs_require__) {
2023
2024"use strict";
2025
2026
2027var id = 0;
2028var px = Math.random();
2029module.exports = function (key) {
2030  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
2031};
2032
2033/***/ }),
2034/* 24 */
2035/***/ (function(module, exports, __w_pdfjs_require__) {
2036
2037"use strict";
2038
2039
2040var aFunction = __w_pdfjs_require__(25);
2041module.exports = function (fn, that, length) {
2042  aFunction(fn);
2043  if (that === undefined) return fn;
2044  switch (length) {
2045    case 1:
2046      return function (a) {
2047        return fn.call(that, a);
2048      };
2049    case 2:
2050      return function (a, b) {
2051        return fn.call(that, a, b);
2052      };
2053    case 3:
2054      return function (a, b, c) {
2055        return fn.call(that, a, b, c);
2056      };
2057  }
2058  return function () {
2059    return fn.apply(that, arguments);
2060  };
2061};
2062
2063/***/ }),
2064/* 25 */
2065/***/ (function(module, exports, __w_pdfjs_require__) {
2066
2067"use strict";
2068
2069
2070module.exports = function (it) {
2071  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
2072  return it;
2073};
2074
2075/***/ }),
2076/* 26 */
2077/***/ (function(module, exports, __w_pdfjs_require__) {
2078
2079"use strict";
2080
2081
2082var isRegExp = __w_pdfjs_require__(27);
2083var defined = __w_pdfjs_require__(32);
2084module.exports = function (that, searchString, NAME) {
2085  if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
2086  return String(defined(that));
2087};
2088
2089/***/ }),
2090/* 27 */
2091/***/ (function(module, exports, __w_pdfjs_require__) {
2092
2093"use strict";
2094
2095
2096var isObject = __w_pdfjs_require__(14);
2097var cof = __w_pdfjs_require__(28);
2098var MATCH = __w_pdfjs_require__(29)('match');
2099module.exports = function (it) {
2100  var isRegExp;
2101  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
2102};
2103
2104/***/ }),
2105/* 28 */
2106/***/ (function(module, exports, __w_pdfjs_require__) {
2107
2108"use strict";
2109
2110
2111var toString = {}.toString;
2112module.exports = function (it) {
2113  return toString.call(it).slice(8, -1);
2114};
2115
2116/***/ }),
2117/* 29 */
2118/***/ (function(module, exports, __w_pdfjs_require__) {
2119
2120"use strict";
2121
2122
2123var store = __w_pdfjs_require__(30)('wks');
2124var uid = __w_pdfjs_require__(23);
2125var _Symbol = __w_pdfjs_require__(9).Symbol;
2126var USE_SYMBOL = typeof _Symbol == 'function';
2127var $exports = module.exports = function (name) {
2128  return store[name] || (store[name] = USE_SYMBOL && _Symbol[name] || (USE_SYMBOL ? _Symbol : uid)('Symbol.' + name));
2129};
2130$exports.store = store;
2131
2132/***/ }),
2133/* 30 */
2134/***/ (function(module, exports, __w_pdfjs_require__) {
2135
2136"use strict";
2137
2138
2139var core = __w_pdfjs_require__(10);
2140var global = __w_pdfjs_require__(9);
2141var SHARED = '__core-js_shared__';
2142var store = global[SHARED] || (global[SHARED] = {});
2143(module.exports = function (key, value) {
2144  return store[key] || (store[key] = value !== undefined ? value : {});
2145})('versions', []).push({
2146  version: core.version,
2147  mode: __w_pdfjs_require__(31) ? 'pure' : 'global',
2148  copyright: '2018 Denis Pushkarev (zloirock.ru)'
2149});
2150
2151/***/ }),
2152/* 31 */
2153/***/ (function(module, exports, __w_pdfjs_require__) {
2154
2155"use strict";
2156
2157
2158module.exports = false;
2159
2160/***/ }),
2161/* 32 */
2162/***/ (function(module, exports, __w_pdfjs_require__) {
2163
2164"use strict";
2165
2166
2167module.exports = function (it) {
2168  if (it == undefined) throw TypeError("Can't call method on  " + it);
2169  return it;
2170};
2171
2172/***/ }),
2173/* 33 */
2174/***/ (function(module, exports, __w_pdfjs_require__) {
2175
2176"use strict";
2177
2178
2179var MATCH = __w_pdfjs_require__(29)('match');
2180module.exports = function (KEY) {
2181  var re = /./;
2182  try {
2183    '/./'[KEY](re);
2184  } catch (e) {
2185    try {
2186      re[MATCH] = false;
2187      return !'/./'[KEY](re);
2188    } catch (f) {}
2189  }
2190  return true;
2191};
2192
2193/***/ }),
2194/* 34 */
2195/***/ (function(module, exports, __w_pdfjs_require__) {
2196
2197"use strict";
2198
2199
2200__w_pdfjs_require__(35);
2201module.exports = __w_pdfjs_require__(10).Array.includes;
2202
2203/***/ }),
2204/* 35 */
2205/***/ (function(module, exports, __w_pdfjs_require__) {
2206
2207"use strict";
2208
2209
2210var $export = __w_pdfjs_require__(8);
2211var $includes = __w_pdfjs_require__(36)(true);
2212$export($export.P, 'Array', {
2213  includes: function includes(el) {
2214    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
2215  }
2216});
2217__w_pdfjs_require__(42)('includes');
2218
2219/***/ }),
2220/* 36 */
2221/***/ (function(module, exports, __w_pdfjs_require__) {
2222
2223"use strict";
2224
2225
2226var toIObject = __w_pdfjs_require__(37);
2227var toLength = __w_pdfjs_require__(39);
2228var toAbsoluteIndex = __w_pdfjs_require__(41);
2229module.exports = function (IS_INCLUDES) {
2230  return function ($this, el, fromIndex) {
2231    var O = toIObject($this);
2232    var length = toLength(O.length);
2233    var index = toAbsoluteIndex(fromIndex, length);
2234    var value;
vendor: 4,535 bytes, lines 2235-2435
2235    if (IS_INCLUDES && el != el) while (length > index) {
2236      value = O[index++];
2237      if (value != value) return true;
2238    } else for (; length > index; index++) {
2239      if (IS_INCLUDES || index in O) {
2240        if (O[index] === el) return IS_INCLUDES || index || 0;
2241      }
2242    }return !IS_INCLUDES && -1;
2243  };
2244};
2245
2246/***/ }),
2247/* 37 */
2248/***/ (function(module, exports, __w_pdfjs_require__) {
2249
2250"use strict";
2251
2252
2253var IObject = __w_pdfjs_require__(38);
2254var defined = __w_pdfjs_require__(32);
2255module.exports = function (it) {
2256  return IObject(defined(it));
2257};
2258
2259/***/ }),
2260/* 38 */
2261/***/ (function(module, exports, __w_pdfjs_require__) {
2262
2263"use strict";
2264
2265
2266var cof = __w_pdfjs_require__(28);
2267module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
2268  return cof(it) == 'String' ? it.split('') : Object(it);
2269};
2270
2271/***/ }),
2272/* 39 */
2273/***/ (function(module, exports, __w_pdfjs_require__) {
2274
2275"use strict";
2276
2277
2278var toInteger = __w_pdfjs_require__(40);
2279var min = Math.min;
2280module.exports = function (it) {
2281  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0;
2282};
2283
2284/***/ }),
2285/* 40 */
2286/***/ (function(module, exports, __w_pdfjs_require__) {
2287
2288"use strict";
2289
2290
2291var ceil = Math.ceil;
2292var floor = Math.floor;
2293module.exports = function (it) {
2294  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
2295};
2296
2297/***/ }),
2298/* 41 */
2299/***/ (function(module, exports, __w_pdfjs_require__) {
2300
2301"use strict";
2302
2303
2304var toInteger = __w_pdfjs_require__(40);
2305var max = Math.max;
2306var min = Math.min;
2307module.exports = function (index, length) {
2308  index = toInteger(index);
2309  return index < 0 ? max(index + length, 0) : min(index, length);
2310};
2311
2312/***/ }),
2313/* 42 */
2314/***/ (function(module, exports, __w_pdfjs_require__) {
2315
2316"use strict";
2317
2318
2319var UNSCOPABLES = __w_pdfjs_require__(29)('unscopables');
2320var ArrayProto = Array.prototype;
2321if (ArrayProto[UNSCOPABLES] == undefined) __w_pdfjs_require__(11)(ArrayProto, UNSCOPABLES, {});
2322module.exports = function (key) {
2323  ArrayProto[UNSCOPABLES][key] = true;
2324};
2325
2326/***/ }),
2327/* 43 */
2328/***/ (function(module, exports, __w_pdfjs_require__) {
2329
2330"use strict";
2331
2332
2333__w_pdfjs_require__(44);
2334module.exports = __w_pdfjs_require__(10).Object.assign;
2335
2336/***/ }),
2337/* 44 */
2338/***/ (function(module, exports, __w_pdfjs_require__) {
2339
2340"use strict";
2341
2342
2343var $export = __w_pdfjs_require__(8);
2344$export($export.S + $export.F, 'Object', { assign: __w_pdfjs_require__(45) });
2345
2346/***/ }),
2347/* 45 */
2348/***/ (function(module, exports, __w_pdfjs_require__) {
2349
2350"use strict";
2351
2352
2353var getKeys = __w_pdfjs_require__(46);
2354var gOPS = __w_pdfjs_require__(50);
2355var pIE = __w_pdfjs_require__(51);
2356var toObject = __w_pdfjs_require__(52);
2357var IObject = __w_pdfjs_require__(38);
2358var $assign = Object.assign;
2359module.exports = !$assign || __w_pdfjs_require__(17)(function () {
2360  var A = {};
2361  var B = {};
2362  var S = Symbol();
2363  var K = 'abcdefghijklmnopqrst';
2364  A[S] = 7;
2365  K.split('').forEach(function (k) {
2366    B[k] = k;
2367  });
2368  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
2369}) ? function assign(target, source) {
2370  var T = toObject(target);
2371  var aLen = arguments.length;
2372  var index = 1;
2373  var getSymbols = gOPS.f;
2374  var isEnum = pIE.f;
2375  while (aLen > index) {
2376    var S = IObject(arguments[index++]);
2377    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
2378    var length = keys.length;
2379    var j = 0;
2380    var key;
2381    while (length > j) {
2382      if (isEnum.call(S, key = keys[j++])) T[key] = S[key];
2383    }
2384  }
2385  return T;
2386} : $assign;
2387
2388/***/ }),
2389/* 46 */
2390/***/ (function(module, exports, __w_pdfjs_require__) {
2391
2392"use strict";
2393
2394
2395var $keys = __w_pdfjs_require__(47);
2396var enumBugKeys = __w_pdfjs_require__(49);
2397module.exports = Object.keys || function keys(O) {
2398  return $keys(O, enumBugKeys);
2399};
2400
2401/***/ }),
2402/* 47 */
2403/***/ (function(module, exports, __w_pdfjs_require__) {
2404
2405"use strict";
2406
2407
2408var has = __w_pdfjs_require__(22);
2409var toIObject = __w_pdfjs_require__(37);
2410var arrayIndexOf = __w_pdfjs_require__(36)(false);
2411var IE_PROTO = __w_pdfjs_require__(48)('IE_PROTO');
2412module.exports = function (object, names) {
2413  var O = toIObject(object);
2414  var i = 0;
2415  var result = [];
2416  var key;
2417  for (key in O) {
2418    if (key != IE_PROTO) has(O, key) && result.push(key);
2419  }while (names.length > i) {
2420    if (has(O, key = names[i++])) {
2421      ~arrayIndexOf(result, key) || result.push(key);
2422    }
2423  }return result;
2424};
2425
2426/***/ }),
2427/* 48 */
2428/***/ (function(module, exports, __w_pdfjs_require__) {
2429
2430"use strict";
2431
2432
2433var shared = __w_pdfjs_require__(30)('keys');
2434var uid = __w_pdfjs_require__(23);
2435module.exports = function (key) {
2436  return shared[key] || (shared[key] = uid(key));
2437};
2438
2439/***/ }),
2440/* 49 */
2441/***/ (function(module, exports, __w_pdfjs_require__) {
2442
2443"use strict";
2444
2445
2446module.exports = 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'.split(',');
2447
2448/***/ }),
2449/* 50 */
2450/***/ (function(module, exports, __w_pdfjs_require__) {
2451
2452"use strict";
2453
2454
2455exports.f = Object.getOwnPropertySymbols;
2456
2457/***/ }),
2458/* 51 */
2459/***/ (function(module, exports, __w_pdfjs_require__) {
2460
2461"use strict";
2462
2463
2464exports.f = {}.propertyIsEnumerable;
2465
2466/***/ }),
2467/* 52 */
2468/***/ (function(module, exports, __w_pdfjs_require__) {
2469
2470"use strict";
2471
2472
2473var defined = __w_pdfjs_require__(32);
2474module.exports = function (it) {
2475  return Object(defined(it));
2476};
2477
2478/***/ }),
2479/* 53 */
2480/***/ (function(module, exports, __w_pdfjs_require__) {
2481
2482"use strict";
2483
2484
2485__w_pdfjs_require__(54);
2486module.exports = __w_pdfjs_require__(10).Math.log2;
2487
2488/***/ }),
2489/* 54 */
2490/***/ (function(module, exports, __w_pdfjs_require__) {
2491
2492"use strict";
2493
2494
2495var $export = __w_pdfjs_require__(8);
2496$export($export.S, 'Math', {
2497  log2: function log2(x) {
2498    return Math.log(x) / Math.LN2;
2499  }
2500});
2501
2502/***/ }),
2503/* 55 */
2504/***/ (function(module, exports, __w_pdfjs_require__) {
2505
2506"use strict";
2507
2508
2509__w_pdfjs_require__(56);
2510module.exports = __w_pdfjs_require__(10).Number.isNaN;
2511
2512/***/ }),
2513/* 56 */
2514/***/ (function(module, exports, __w_pdfjs_require__) {
2515
2516"use strict";
2517
2518
2519var $export = __w_pdfjs_require__(8);
2520$export($export.S, 'Number', {
2521  isNaN: function isNaN(number) {
2522    return number != number;
2523  }
2524});
2525
2526/***/ }),
2527/* 57 */
2528/***/ (function(module, exports, __w_pdfjs_require__) {
2529
2530"use strict";
2531
2532
2533__w_pdfjs_require__(58);
2534module.exports = __w_pdfjs_require__(10).Number.isInteger;
2535
2536/***/ }),
2537/* 58 */
2538/***/ (function(module, exports, __w_pdfjs_require__) {
2539
2540"use strict";
2541
2542
2543var $export = __w_pdfjs_require__(8);
2544$export($export.S, 'Number', { isInteger: __w_pdfjs_require__(59) });
2545
2546/***/ }),
2547/* 59 */
2548/***/ (function(module, exports, __w_pdfjs_require__) {
2549
2550"use strict";
2551
2552
2553var isObject = __w_pdfjs_require__(14);
2554var floor = Math.floor;
2555module.exports = function isInteger(it) {
2556  return !isObject(it) && isFinite(it) && floor(it) === it;
2557};
2558
2559/***/ }),
2560/* 60 */
2561/***/ (function(module, exports, __w_pdfjs_require__) {
2562
2563"use strict";
2564
2565
2566__w_pdfjs_require__(61);
2567__w_pdfjs_require__(63);
2568__w_pdfjs_require__(73);
2569__w_pdfjs_require__(76);
2570__w_pdfjs_require__(93);
2571__w_pdfjs_require__(94);
2572module.exports = __w_pdfjs_require__(10).Promise;
2573
2574/***/ }),
2575/* 61 */
2576/***/ (function(module, exports, __w_pdfjs_require__) {
2577
2578"use strict";
2579
2580
2581var classof = __w_pdfjs_require__(62);
2582var test = {};
2583test[__w_pdfjs_require__(29)('toStringTag')] = 'z';
2584if (test + '' != '[object z]') {
2585  __w_pdfjs_require__(21)(Object.prototype, 'toString', function toString() {
2586    return '[object ' + classof(this) + ']';
2587  }, true);
2588}
2589
2590/***/ }),
2591/* 62 */
2592/***/ (function(module, exports, __w_pdfjs_require__) {
2593
2594"use strict";
2595
2596
2597var cof = __w_pdfjs_require__(28);
2598var TAG = __w_pdfjs_require__(29)('toStringTag');
2599var ARG = cof(function () {
2600  return arguments;
2601}()) == 'Arguments';
2602var tryGet = function tryGet(it, key) {
2603  try {
2604    return it[key];
2605  } catch (e) {}
2606};
2607module.exports = function (it) {
2608  var O, T, B;
2609  return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T : ARG ? cof(O) : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
2610};
2611
2612/***/ }),
2613/* 63 */
2614/***/ (function(module, exports, __w_pdfjs_require__) {
2615
2616"use strict";
2617
2618
2619var $at = __w_pdfjs_require__(64)(true);
2620__w_pdfjs_require__(65)(String, 'String', function (iterated) {
2621  this._t = String(iterated);
2622  this._i = 0;
2623}, function () {
2624  var O = this._t;
2625  var index = this._i;
2626  var point;
2627  if (index >= O.length) return {
2628    value: undefined,
2629    done: true
2630  };
2631  point = $at(O, index);
2632  this._i += point.length;
2633  return {
2634    value: point,
2635    done: false
2636  };
2637});
2638
2639/***/ }),
2640/* 64 */
2641/***/ (function(module, exports, __w_pdfjs_require__) {
2642
2643"use strict";
2644
2645
2646var toInteger = __w_pdfjs_require__(40);
2647var defined = __w_pdfjs_require__(32);
2648module.exports = function (TO_STRING) {
2649  return function (that, pos) {
2650    var s = String(defined(that));
2651    var i = toInteger(pos);
2652    var l = s.length;
2653    var a, b;
2654    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
vendor: 5,714 bytes, lines 2655-2849
2655    a = s.charCodeAt(i);
2656    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
2657  };
2658};
2659
2660/***/ }),
2661/* 65 */
2662/***/ (function(module, exports, __w_pdfjs_require__) {
2663
2664"use strict";
2665
2666
2667var LIBRARY = __w_pdfjs_require__(31);
2668var $export = __w_pdfjs_require__(8);
2669var redefine = __w_pdfjs_require__(21);
2670var hide = __w_pdfjs_require__(11);
2671var Iterators = __w_pdfjs_require__(66);
2672var $iterCreate = __w_pdfjs_require__(67);
2673var setToStringTag = __w_pdfjs_require__(71);
2674var getPrototypeOf = __w_pdfjs_require__(72);
2675var ITERATOR = __w_pdfjs_require__(29)('iterator');
2676var BUGGY = !([].keys && 'next' in [].keys());
2677var FF_ITERATOR = '@@iterator';
2678var KEYS = 'keys';
2679var VALUES = 'values';
2680var returnThis = function returnThis() {
2681  return this;
2682};
2683module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
2684  $iterCreate(Constructor, NAME, next);
2685  var getMethod = function getMethod(kind) {
2686    if (!BUGGY && kind in proto) return proto[kind];
2687    switch (kind) {
2688      case KEYS:
2689        return function keys() {
2690          return new Constructor(this, kind);
2691        };
2692      case VALUES:
2693        return function values() {
2694          return new Constructor(this, kind);
2695        };
2696    }
2697    return function entries() {
2698      return new Constructor(this, kind);
2699    };
2700  };
2701  var TAG = NAME + ' Iterator';
2702  var DEF_VALUES = DEFAULT == VALUES;
2703  var VALUES_BUG = false;
2704  var proto = Base.prototype;
2705  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
2706  var $default = $native || getMethod(DEFAULT);
2707  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
2708  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
2709  var methods, key, IteratorPrototype;
2710  if ($anyNative) {
2711    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
2712    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
2713      setToStringTag(IteratorPrototype, TAG, true);
2714      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
2715    }
2716  }
2717  if (DEF_VALUES && $native && $native.name !== VALUES) {
2718    VALUES_BUG = true;
2719    $default = function values() {
2720      return $native.call(this);
2721    };
2722  }
2723  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
2724    hide(proto, ITERATOR, $default);
2725  }
2726  Iterators[NAME] = $default;
2727  Iterators[TAG] = returnThis;
2728  if (DEFAULT) {
2729    methods = {
2730      values: DEF_VALUES ? $default : getMethod(VALUES),
2731      keys: IS_SET ? $default : getMethod(KEYS),
2732      entries: $entries
2733    };
2734    if (FORCED) for (key in methods) {
2735      if (!(key in proto)) redefine(proto, key, methods[key]);
2736    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
2737  }
2738  return methods;
2739};
2740
2741/***/ }),
2742/* 66 */
2743/***/ (function(module, exports, __w_pdfjs_require__) {
2744
2745"use strict";
2746
2747
2748module.exports = {};
2749
2750/***/ }),
2751/* 67 */
2752/***/ (function(module, exports, __w_pdfjs_require__) {
2753
2754"use strict";
2755
2756
2757var create = __w_pdfjs_require__(68);
2758var descriptor = __w_pdfjs_require__(20);
2759var setToStringTag = __w_pdfjs_require__(71);
2760var IteratorPrototype = {};
2761__w_pdfjs_require__(11)(IteratorPrototype, __w_pdfjs_require__(29)('iterator'), function () {
2762  return this;
2763});
2764module.exports = function (Constructor, NAME, next) {
2765  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
2766  setToStringTag(Constructor, NAME + ' Iterator');
2767};
2768
2769/***/ }),
2770/* 68 */
2771/***/ (function(module, exports, __w_pdfjs_require__) {
2772
2773"use strict";
2774
2775
2776var anObject = __w_pdfjs_require__(13);
2777var dPs = __w_pdfjs_require__(69);
2778var enumBugKeys = __w_pdfjs_require__(49);
2779var IE_PROTO = __w_pdfjs_require__(48)('IE_PROTO');
2780var Empty = function Empty() {};
2781var PROTOTYPE = 'prototype';
2782var _createDict = function createDict() {
2783  var iframe = __w_pdfjs_require__(18)('iframe');
2784  var i = enumBugKeys.length;
2785  var lt = '<';
2786  var gt = '>';
2787  var iframeDocument;
2788  iframe.style.display = 'none';
2789  __w_pdfjs_require__(70).appendChild(iframe);
2790  iframe.src = 'javascript:';
2791  iframeDocument = iframe.contentWindow.document;
2792  iframeDocument.open();
2793  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
2794  iframeDocument.close();
2795  _createDict = iframeDocument.F;
2796  while (i--) {
2797    delete _createDict[PROTOTYPE][enumBugKeys[i]];
2798  }return _createDict();
2799};
2800module.exports = Object.create || function create(O, Properties) {
2801  var result;
2802  if (O !== null) {
2803    Empty[PROTOTYPE] = anObject(O);
2804    result = new Empty();
2805    Empty[PROTOTYPE] = null;
2806    result[IE_PROTO] = O;
2807  } else result = _createDict();
2808  return Properties === undefined ? result : dPs(result, Properties);
2809};
2810
2811/***/ }),
2812/* 69 */
2813/***/ (function(module, exports, __w_pdfjs_require__) {
2814
2815"use strict";
2816
2817
2818var dP = __w_pdfjs_require__(12);
2819var anObject = __w_pdfjs_require__(13);
2820var getKeys = __w_pdfjs_require__(46);
2821module.exports = __w_pdfjs_require__(16) ? Object.defineProperties : function defineProperties(O, Properties) {
2822  anObject(O);
2823  var keys = getKeys(Properties);
2824  var length = keys.length;
2825  var i = 0;
2826  var P;
2827  while (length > i) {
2828    dP.f(O, P = keys[i++], Properties[P]);
2829  }return O;
2830};
2831
2832/***/ }),
2833/* 70 */
2834/***/ (function(module, exports, __w_pdfjs_require__) {
2835
2836"use strict";
2837
2838
2839var document = __w_pdfjs_require__(9).document;
2840module.exports = document && document.documentElement;
2841
2842/***/ }),
2843/* 71 */
2844/***/ (function(module, exports, __w_pdfjs_require__) {
2845
2846"use strict";
2847
2848
2849var def = __w_pdfjs_require__(12).f;
vendor: 5,359 bytes, lines 2850-3035
2850var has = __w_pdfjs_require__(22);
2851var TAG = __w_pdfjs_require__(29)('toStringTag');
2852module.exports = function (it, tag, stat) {
2853  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {
2854    configurable: true,
2855    value: tag
2856  });
2857};
2858
2859/***/ }),
2860/* 72 */
2861/***/ (function(module, exports, __w_pdfjs_require__) {
2862
2863"use strict";
2864
2865
2866var has = __w_pdfjs_require__(22);
2867var toObject = __w_pdfjs_require__(52);
2868var IE_PROTO = __w_pdfjs_require__(48)('IE_PROTO');
2869var ObjectProto = Object.prototype;
2870module.exports = Object.getPrototypeOf || function (O) {
2871  O = toObject(O);
2872  if (has(O, IE_PROTO)) return O[IE_PROTO];
2873  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
2874    return O.constructor.prototype;
2875  }
2876  return O instanceof Object ? ObjectProto : null;
2877};
2878
2879/***/ }),
2880/* 73 */
2881/***/ (function(module, exports, __w_pdfjs_require__) {
2882
2883"use strict";
2884
2885
2886var $iterators = __w_pdfjs_require__(74);
2887var getKeys = __w_pdfjs_require__(46);
2888var redefine = __w_pdfjs_require__(21);
2889var global = __w_pdfjs_require__(9);
2890var hide = __w_pdfjs_require__(11);
2891var Iterators = __w_pdfjs_require__(66);
2892var wks = __w_pdfjs_require__(29);
2893var ITERATOR = wks('iterator');
2894var TO_STRING_TAG = wks('toStringTag');
2895var ArrayValues = Iterators.Array;
2896var DOMIterables = {
2897  CSSRuleList: true,
2898  CSSStyleDeclaration: false,
2899  CSSValueList: false,
2900  ClientRectList: false,
2901  DOMRectList: false,
2902  DOMStringList: false,
2903  DOMTokenList: true,
2904  DataTransferItemList: false,
2905  FileList: false,
2906  HTMLAllCollection: false,
2907  HTMLCollection: false,
2908  HTMLFormElement: false,
2909  HTMLSelectElement: false,
2910  MediaList: true,
2911  MimeTypeArray: false,
2912  NamedNodeMap: false,
2913  NodeList: true,
2914  PaintRequestList: false,
2915  Plugin: false,
2916  PluginArray: false,
2917  SVGLengthList: false,
2918  SVGNumberList: false,
2919  SVGPathSegList: false,
2920  SVGPointList: false,
2921  SVGStringList: false,
2922  SVGTransformList: false,
2923  SourceBufferList: false,
2924  StyleSheetList: true,
2925  TextTrackCueList: false,
2926  TextTrackList: false,
2927  TouchList: false
2928};
2929for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
2930  var NAME = collections[i];
2931  var explicit = DOMIterables[NAME];
2932  var Collection = global[NAME];
2933  var proto = Collection && Collection.prototype;
2934  var key;
2935  if (proto) {
2936    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
2937    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
2938    Iterators[NAME] = ArrayValues;
2939    if (explicit) for (key in $iterators) {
2940      if (!proto[key]) redefine(proto, key, $iterators[key], true);
2941    }
2942  }
2943}
2944
2945/***/ }),
2946/* 74 */
2947/***/ (function(module, exports, __w_pdfjs_require__) {
2948
2949"use strict";
2950
2951
2952var addToUnscopables = __w_pdfjs_require__(42);
2953var step = __w_pdfjs_require__(75);
2954var Iterators = __w_pdfjs_require__(66);
2955var toIObject = __w_pdfjs_require__(37);
2956module.exports = __w_pdfjs_require__(65)(Array, 'Array', function (iterated, kind) {
2957  this._t = toIObject(iterated);
2958  this._i = 0;
2959  this._k = kind;
2960}, function () {
2961  var O = this._t;
2962  var kind = this._k;
2963  var index = this._i++;
2964  if (!O || index >= O.length) {
2965    this._t = undefined;
2966    return step(1);
2967  }
2968  if (kind == 'keys') return step(0, index);
2969  if (kind == 'values') return step(0, O[index]);
2970  return step(0, [index, O[index]]);
2971}, 'values');
2972Iterators.Arguments = Iterators.Array;
2973addToUnscopables('keys');
2974addToUnscopables('values');
2975addToUnscopables('entries');
2976
2977/***/ }),
2978/* 75 */
2979/***/ (function(module, exports, __w_pdfjs_require__) {
2980
2981"use strict";
2982
2983
2984module.exports = function (done, value) {
2985  return {
2986    value: value,
2987    done: !!done
2988  };
2989};
2990
2991/***/ }),
2992/* 76 */
2993/***/ (function(module, exports, __w_pdfjs_require__) {
2994
2995"use strict";
2996
2997
2998var LIBRARY = __w_pdfjs_require__(31);
2999var global = __w_pdfjs_require__(9);
3000var ctx = __w_pdfjs_require__(24);
3001var classof = __w_pdfjs_require__(62);
3002var $export = __w_pdfjs_require__(8);
3003var isObject = __w_pdfjs_require__(14);
3004var aFunction = __w_pdfjs_require__(25);
3005var anInstance = __w_pdfjs_require__(77);
3006var forOf = __w_pdfjs_require__(78);
3007var speciesConstructor = __w_pdfjs_require__(82);
3008var task = __w_pdfjs_require__(83).set;
3009var microtask = __w_pdfjs_require__(85)();
3010var newPromiseCapabilityModule = __w_pdfjs_require__(86);
3011var perform = __w_pdfjs_require__(87);
3012var userAgent = __w_pdfjs_require__(88);
3013var promiseResolve = __w_pdfjs_require__(89);
3014var PROMISE = 'Promise';
3015var TypeError = global.TypeError;
3016var process = global.process;
3017var versions = process && process.versions;
3018var v8 = versions && versions.v8 || '';
3019var $Promise = global[PROMISE];
3020var isNode = classof(process) == 'process';
3021var empty = function empty() {};
3022var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
3023var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
3024var USE_NATIVE = !!function () {
3025  try {
3026    var promise = $Promise.resolve(1);
3027    var FakePromise = (promise.constructor = {})[__w_pdfjs_require__(29)('species')] = function (exec) {
3028      exec(empty, empty);
3029    };
3030    return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise && v8.indexOf('6.6') !== 0 && userAgent.indexOf('Chrome/66') === -1;
3031  } catch (e) {}
3032}();
3033var isThenable = function isThenable(it) {
3034  var then;
3035  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
vendor: 4,103 bytes, lines 3036-3183
3036};
3037var notify = function notify(promise, isReject) {
3038  if (promise._n) return;
3039  promise._n = true;
3040  var chain = promise._c;
3041  microtask(function () {
3042    var value = promise._v;
3043    var ok = promise._s == 1;
3044    var i = 0;
3045    var run = function run(reaction) {
3046      var handler = ok ? reaction.ok : reaction.fail;
3047      var resolve = reaction.resolve;
3048      var reject = reaction.reject;
3049      var domain = reaction.domain;
3050      var result, then, exited;
3051      try {
3052        if (handler) {
3053          if (!ok) {
3054            if (promise._h == 2) onHandleUnhandled(promise);
3055            promise._h = 1;
3056          }
3057          if (handler === true) result = value;else {
3058            if (domain) domain.enter();
3059            result = handler(value);
3060            if (domain) {
3061              domain.exit();
3062              exited = true;
3063            }
3064          }
3065          if (result === reaction.promise) {
3066            reject(TypeError('Promise-chain cycle'));
3067          } else if (then = isThenable(result)) {
3068            then.call(result, resolve, reject);
3069          } else resolve(result);
3070        } else reject(value);
3071      } catch (e) {
3072        if (domain && !exited) domain.exit();
3073        reject(e);
3074      }
3075    };
3076    while (chain.length > i) {
3077      run(chain[i++]);
3078    }promise._c = [];
3079    promise._n = false;
3080    if (isReject && !promise._h) onUnhandled(promise);
3081  });
3082};
3083var onUnhandled = function onUnhandled(promise) {
3084  task.call(global, function () {
3085    var value = promise._v;
3086    var unhandled = isUnhandled(promise);
3087    var result, handler, console;
3088    if (unhandled) {
3089      result = perform(function () {
3090        if (isNode) {
3091          process.emit('unhandledRejection', value, promise);
3092        } else if (handler = global.onunhandledrejection) {
3093          handler({
3094            promise: promise,
3095            reason: value
3096          });
3097        } else if ((console = global.console) && console.error) {
3098          console.error('Unhandled promise rejection', value);
3099        }
3100      });
3101      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
3102    }
3103    promise._a = undefined;
3104    if (unhandled && result.e) throw result.v;
3105  });
3106};
3107var isUnhandled = function isUnhandled(promise) {
3108  return promise._h !== 1 && (promise._a || promise._c).length === 0;
3109};
3110var onHandleUnhandled = function onHandleUnhandled(promise) {
3111  task.call(global, function () {
3112    var handler;
3113    if (isNode) {
3114      process.emit('rejectionHandled', promise);
3115    } else if (handler = global.onrejectionhandled) {
3116      handler({
3117        promise: promise,
3118        reason: promise._v
3119      });
3120    }
3121  });
3122};
3123var $reject = function $reject(value) {
3124  var promise = this;
3125  if (promise._d) return;
3126  promise._d = true;
3127  promise = promise._w || promise;
3128  promise._v = value;
3129  promise._s = 2;
3130  if (!promise._a) promise._a = promise._c.slice();
3131  notify(promise, true);
3132};
3133var $resolve = function $resolve(value) {
3134  var promise = this;
3135  var then;
3136  if (promise._d) return;
3137  promise._d = true;
3138  promise = promise._w || promise;
3139  try {
3140    if (promise === value) throw TypeError("Promise can't be resolved itself");
3141    if (then = isThenable(value)) {
3142      microtask(function () {
3143        var wrapper = {
3144          _w: promise,
3145          _d: false
3146        };
3147        try {
3148          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
3149        } catch (e) {
3150          $reject.call(wrapper, e);
3151        }
3152      });
3153    } else {
3154      promise._v = value;
3155      promise._s = 1;
3156      notify(promise, false);
3157    }
3158  } catch (e) {
3159    $reject.call({
3160      _w: promise,
3161      _d: false
3162    }, e);
3163  }
3164};
3165if (!USE_NATIVE) {
3166  $Promise = function Promise(executor) {
3167    anInstance(this, $Promise, PROMISE, '_h');
3168    aFunction(executor);
3169    Internal.call(this);
3170    try {
3171      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
3172    } catch (err) {
3173      $reject.call(this, err);
3174    }
3175  };
3176  Internal = function Promise(executor) {
3177    this._c = [];
3178    this._a = undefined;
3179    this._s = 0;
3180    this._d = false;
3181    this._v = undefined;
3182    this._h = 0;
3183    this._n = false;
vendor: 5,090 bytes, lines 3184-3343
3184  };
3185  Internal.prototype = __w_pdfjs_require__(90)($Promise.prototype, {
3186    then: function then(onFulfilled, onRejected) {
3187      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
3188      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
3189      reaction.fail = typeof onRejected == 'function' && onRejected;
3190      reaction.domain = isNode ? process.domain : undefined;
3191      this._c.push(reaction);
3192      if (this._a) this._a.push(reaction);
3193      if (this._s) notify(this, false);
3194      return reaction.promise;
3195    },
3196    'catch': function _catch(onRejected) {
3197      return this.then(undefined, onRejected);
3198    }
3199  });
3200  OwnPromiseCapability = function OwnPromiseCapability() {
3201    var promise = new Internal();
3202    this.promise = promise;
3203    this.resolve = ctx($resolve, promise, 1);
3204    this.reject = ctx($reject, promise, 1);
3205  };
3206  newPromiseCapabilityModule.f = newPromiseCapability = function newPromiseCapability(C) {
3207    return C === $Promise || C === Wrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);
3208  };
3209}
3210$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
3211__w_pdfjs_require__(71)($Promise, PROMISE);
3212__w_pdfjs_require__(91)(PROMISE);
3213Wrapper = __w_pdfjs_require__(10)[PROMISE];
3214$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
3215  reject: function reject(r) {
3216    var capability = newPromiseCapability(this);
3217    var $$reject = capability.reject;
3218    $$reject(r);
3219    return capability.promise;
3220  }
3221});
3222$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
3223  resolve: function resolve(x) {
3224    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
3225  }
3226});
3227$export($export.S + $export.F * !(USE_NATIVE && __w_pdfjs_require__(92)(function (iter) {
3228  $Promise.all(iter)['catch'](empty);
3229})), PROMISE, {
3230  all: function all(iterable) {
3231    var C = this;
3232    var capability = newPromiseCapability(C);
3233    var resolve = capability.resolve;
3234    var reject = capability.reject;
3235    var result = perform(function () {
3236      var values = [];
3237      var index = 0;
3238      var remaining = 1;
3239      forOf(iterable, false, function (promise) {
3240        var $index = index++;
3241        var alreadyCalled = false;
3242        values.push(undefined);
3243        remaining++;
3244        C.resolve(promise).then(function (value) {
3245          if (alreadyCalled) return;
3246          alreadyCalled = true;
3247          values[$index] = value;
3248          --remaining || resolve(values);
3249        }, reject);
3250      });
3251      --remaining || resolve(values);
3252    });
3253    if (result.e) reject(result.v);
3254    return capability.promise;
3255  },
3256  race: function race(iterable) {
3257    var C = this;
3258    var capability = newPromiseCapability(C);
3259    var reject = capability.reject;
3260    var result = perform(function () {
3261      forOf(iterable, false, function (promise) {
3262        C.resolve(promise).then(capability.resolve, reject);
3263      });
3264    });
3265    if (result.e) reject(result.v);
3266    return capability.promise;
3267  }
3268});
3269
3270/***/ }),
3271/* 77 */
3272/***/ (function(module, exports, __w_pdfjs_require__) {
3273
3274"use strict";
3275
3276
3277module.exports = function (it, Constructor, name, forbiddenField) {
3278  if (!(it instanceof Constructor) || forbiddenField !== undefined && forbiddenField in it) {
3279    throw TypeError(name + ': incorrect invocation!');
3280  }
3281  return it;
3282};
3283
3284/***/ }),
3285/* 78 */
3286/***/ (function(module, exports, __w_pdfjs_require__) {
3287
3288"use strict";
3289
3290
3291var ctx = __w_pdfjs_require__(24);
3292var call = __w_pdfjs_require__(79);
3293var isArrayIter = __w_pdfjs_require__(80);
3294var anObject = __w_pdfjs_require__(13);
3295var toLength = __w_pdfjs_require__(39);
3296var getIterFn = __w_pdfjs_require__(81);
3297var BREAK = {};
3298var RETURN = {};
3299var _exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
3300  var iterFn = ITERATOR ? function () {
3301    return iterable;
3302  } : getIterFn(iterable);
3303  var f = ctx(fn, that, entries ? 2 : 1);
3304  var index = 0;
3305  var length, step, iterator, result;
3306  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
3307  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
3308    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
3309    if (result === BREAK || result === RETURN) return result;
3310  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
3311    result = call(iterator, f, step.value, entries);
3312    if (result === BREAK || result === RETURN) return result;
3313  }
3314};
3315_exports.BREAK = BREAK;
3316_exports.RETURN = RETURN;
3317
3318/***/ }),
3319/* 79 */
3320/***/ (function(module, exports, __w_pdfjs_require__) {
3321
3322"use strict";
3323
3324
3325var anObject = __w_pdfjs_require__(13);
3326module.exports = function (iterator, fn, value, entries) {
3327  try {
3328    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
3329  } catch (e) {
3330    var ret = iterator['return'];
3331    if (ret !== undefined) anObject(ret.call(iterator));
3332    throw e;
3333  }
3334};
3335
3336/***/ }),
3337/* 80 */
3338/***/ (function(module, exports, __w_pdfjs_require__) {
3339
3340"use strict";
3341
3342
3343var Iterators = __w_pdfjs_require__(66);
vendor: 4,481 bytes, lines 3344-3507
3344var ITERATOR = __w_pdfjs_require__(29)('iterator');
3345var ArrayProto = Array.prototype;
3346module.exports = function (it) {
3347  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
3348};
3349
3350/***/ }),
3351/* 81 */
3352/***/ (function(module, exports, __w_pdfjs_require__) {
3353
3354"use strict";
3355
3356
3357var classof = __w_pdfjs_require__(62);
3358var ITERATOR = __w_pdfjs_require__(29)('iterator');
3359var Iterators = __w_pdfjs_require__(66);
3360module.exports = __w_pdfjs_require__(10).getIteratorMethod = function (it) {
3361  if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];
3362};
3363
3364/***/ }),
3365/* 82 */
3366/***/ (function(module, exports, __w_pdfjs_require__) {
3367
3368"use strict";
3369
3370
3371var anObject = __w_pdfjs_require__(13);
3372var aFunction = __w_pdfjs_require__(25);
3373var SPECIES = __w_pdfjs_require__(29)('species');
3374module.exports = function (O, D) {
3375  var C = anObject(O).constructor;
3376  var S;
3377  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
3378};
3379
3380/***/ }),
3381/* 83 */
3382/***/ (function(module, exports, __w_pdfjs_require__) {
3383
3384"use strict";
3385
3386
3387var ctx = __w_pdfjs_require__(24);
3388var invoke = __w_pdfjs_require__(84);
3389var html = __w_pdfjs_require__(70);
3390var cel = __w_pdfjs_require__(18);
3391var global = __w_pdfjs_require__(9);
3392var process = global.process;
3393var setTask = global.setImmediate;
3394var clearTask = global.clearImmediate;
3395var MessageChannel = global.MessageChannel;
3396var Dispatch = global.Dispatch;
3397var counter = 0;
3398var queue = {};
3399var ONREADYSTATECHANGE = 'onreadystatechange';
3400var defer, channel, port;
3401var run = function run() {
3402  var id = +this;
3403  if (queue.hasOwnProperty(id)) {
3404    var fn = queue[id];
3405    delete queue[id];
3406    fn();
3407  }
3408};
3409var listener = function listener(event) {
3410  run.call(event.data);
3411};
3412if (!setTask || !clearTask) {
3413  setTask = function setImmediate(fn) {
3414    var args = [];
3415    var i = 1;
3416    while (arguments.length > i) {
3417      args.push(arguments[i++]);
3418    }queue[++counter] = function () {
3419      invoke(typeof fn == 'function' ? fn : Function(fn), args);
3420    };
3421    defer(counter);
3422    return counter;
3423  };
3424  clearTask = function clearImmediate(id) {
3425    delete queue[id];
3426  };
3427  if (__w_pdfjs_require__(28)(process) == 'process') {
3428    defer = function defer(id) {
3429      process.nextTick(ctx(run, id, 1));
3430    };
3431  } else if (Dispatch && Dispatch.now) {
3432    defer = function defer(id) {
3433      Dispatch.now(ctx(run, id, 1));
3434    };
3435  } else if (MessageChannel) {
3436    channel = new MessageChannel();
3437    port = channel.port2;
3438    channel.port1.onmessage = listener;
3439    defer = ctx(port.postMessage, port, 1);
3440  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
3441    defer = function defer(id) {
3442      global.postMessage(id + '', '*');
3443    };
3444    global.addEventListener('message', listener, false);
3445  } else if (ONREADYSTATECHANGE in cel('script')) {
3446    defer = function defer(id) {
3447      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
3448        html.removeChild(this);
3449        run.call(id);
3450      };
3451    };
3452  } else {
3453    defer = function defer(id) {
3454      setTimeout(ctx(run, id, 1), 0);
3455    };
3456  }
3457}
3458module.exports = {
3459  set: setTask,
3460  clear: clearTask
3461};
3462
3463/***/ }),
3464/* 84 */
3465/***/ (function(module, exports, __w_pdfjs_require__) {
3466
3467"use strict";
3468
3469
3470module.exports = function (fn, args, that) {
3471  var un = that === undefined;
3472  switch (args.length) {
3473    case 0:
3474      return un ? fn() : fn.call(that);
3475    case 1:
3476      return un ? fn(args[0]) : fn.call(that, args[0]);
3477    case 2:
3478      return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]);
3479    case 3:
3480      return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]);
3481    case 4:
3482      return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]);
3483  }
3484  return fn.apply(that, args);
3485};
3486
3487/***/ }),
3488/* 85 */
3489/***/ (function(module, exports, __w_pdfjs_require__) {
3490
3491"use strict";
3492
3493
3494var global = __w_pdfjs_require__(9);
3495var macrotask = __w_pdfjs_require__(83).set;
3496var Observer = global.MutationObserver || global.WebKitMutationObserver;
3497var process = global.process;
3498var Promise = global.Promise;
3499var isNode = __w_pdfjs_require__(28)(process) == 'process';
3500module.exports = function () {
3501  var head, last, notify;
3502  var flush = function flush() {
3503    var parent, fn;
3504    if (isNode && (parent = process.domain)) parent.exit();
3505    while (head) {
3506      fn = head.fn;
3507      head = head.next;
vendor: 4,841 bytes, lines 3508-3730
3508      try {
3509        fn();
3510      } catch (e) {
3511        if (head) notify();else last = undefined;
3512        throw e;
3513      }
3514    }
3515    last = undefined;
3516    if (parent) parent.enter();
3517  };
3518  if (isNode) {
3519    notify = function notify() {
3520      process.nextTick(flush);
3521    };
3522  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
3523    var toggle = true;
3524    var node = document.createTextNode('');
3525    new Observer(flush).observe(node, { characterData: true });
3526    notify = function notify() {
3527      node.data = toggle = !toggle;
3528    };
3529  } else if (Promise && Promise.resolve) {
3530    var promise = Promise.resolve(undefined);
3531    notify = function notify() {
3532      promise.then(flush);
3533    };
3534  } else {
3535    notify = function notify() {
3536      macrotask.call(global, flush);
3537    };
3538  }
3539  return function (fn) {
3540    var task = {
3541      fn: fn,
3542      next: undefined
3543    };
3544    if (last) last.next = task;
3545    if (!head) {
3546      head = task;
3547      notify();
3548    }
3549    last = task;
3550  };
3551};
3552
3553/***/ }),
3554/* 86 */
3555/***/ (function(module, exports, __w_pdfjs_require__) {
3556
3557"use strict";
3558
3559
3560var aFunction = __w_pdfjs_require__(25);
3561function PromiseCapability(C) {
3562  var resolve, reject;
3563  this.promise = new C(function ($$resolve, $$reject) {
3564    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
3565    resolve = $$resolve;
3566    reject = $$reject;
3567  });
3568  this.resolve = aFunction(resolve);
3569  this.reject = aFunction(reject);
3570}
3571module.exports.f = function (C) {
3572  return new PromiseCapability(C);
3573};
3574
3575/***/ }),
3576/* 87 */
3577/***/ (function(module, exports, __w_pdfjs_require__) {
3578
3579"use strict";
3580
3581
3582module.exports = function (exec) {
3583  try {
3584    return {
3585      e: false,
3586      v: exec()
3587    };
3588  } catch (e) {
3589    return {
3590      e: true,
3591      v: e
3592    };
3593  }
3594};
3595
3596/***/ }),
3597/* 88 */
3598/***/ (function(module, exports, __w_pdfjs_require__) {
3599
3600"use strict";
3601
3602
3603var global = __w_pdfjs_require__(9);
3604var navigator = global.navigator;
3605module.exports = navigator && navigator.userAgent || '';
3606
3607/***/ }),
3608/* 89 */
3609/***/ (function(module, exports, __w_pdfjs_require__) {
3610
3611"use strict";
3612
3613
3614var anObject = __w_pdfjs_require__(13);
3615var isObject = __w_pdfjs_require__(14);
3616var newPromiseCapability = __w_pdfjs_require__(86);
3617module.exports = function (C, x) {
3618  anObject(C);
3619  if (isObject(x) && x.constructor === C) return x;
3620  var promiseCapability = newPromiseCapability.f(C);
3621  var resolve = promiseCapability.resolve;
3622  resolve(x);
3623  return promiseCapability.promise;
3624};
3625
3626/***/ }),
3627/* 90 */
3628/***/ (function(module, exports, __w_pdfjs_require__) {
3629
3630"use strict";
3631
3632
3633var redefine = __w_pdfjs_require__(21);
3634module.exports = function (target, src, safe) {
3635  for (var key in src) {
3636    redefine(target, key, src[key], safe);
3637  }return target;
3638};
3639
3640/***/ }),
3641/* 91 */
3642/***/ (function(module, exports, __w_pdfjs_require__) {
3643
3644"use strict";
3645
3646
3647var global = __w_pdfjs_require__(9);
3648var dP = __w_pdfjs_require__(12);
3649var DESCRIPTORS = __w_pdfjs_require__(16);
3650var SPECIES = __w_pdfjs_require__(29)('species');
3651module.exports = function (KEY) {
3652  var C = global[KEY];
3653  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
3654    configurable: true,
3655    get: function get() {
3656      return this;
3657    }
3658  });
3659};
3660
3661/***/ }),
3662/* 92 */
3663/***/ (function(module, exports, __w_pdfjs_require__) {
3664
3665"use strict";
3666
3667
3668var ITERATOR = __w_pdfjs_require__(29)('iterator');
3669var SAFE_CLOSING = false;
3670try {
3671  var riter = [7][ITERATOR]();
3672  riter['return'] = function () {
3673    SAFE_CLOSING = true;
3674  };
3675  Array.from(riter, function () {
3676    throw 2;
3677  });
3678} catch (e) {}
3679module.exports = function (exec, skipClosing) {
3680  if (!skipClosing && !SAFE_CLOSING) return false;
3681  var safe = false;
3682  try {
3683    var arr = [7];
3684    var iter = arr[ITERATOR]();
3685    iter.next = function () {
3686      return { done: safe = true };
3687    };
3688    arr[ITERATOR] = function () {
3689      return iter;
3690    };
3691    exec(arr);
3692  } catch (e) {}
3693  return safe;
3694};
3695
3696/***/ }),
3697/* 93 */
3698/***/ (function(module, exports, __w_pdfjs_require__) {
3699
3700"use strict";
3701
3702
3703var $export = __w_pdfjs_require__(8);
3704var core = __w_pdfjs_require__(10);
3705var global = __w_pdfjs_require__(9);
3706var speciesConstructor = __w_pdfjs_require__(82);
3707var promiseResolve = __w_pdfjs_require__(89);
3708$export($export.P + $export.R, 'Promise', {
3709  'finally': function _finally(onFinally) {
3710    var C = speciesConstructor(this, core.Promise || global.Promise);
3711    var isFunction = typeof onFinally == 'function';
3712    return this.then(isFunction ? function (x) {
3713      return promiseResolve(C, onFinally()).then(function () {
3714        return x;
3715      });
3716    } : onFinally, isFunction ? function (e) {
3717      return promiseResolve(C, onFinally()).then(function () {
3718        throw e;
3719      });
3720    } : onFinally);
3721  }
3722});
3723
3724/***/ }),
3725/* 94 */
3726/***/ (function(module, exports, __w_pdfjs_require__) {
3727
3728"use strict";
3729
3730
vendor: 9,590 bytes, lines 3731-4072
3731var $export = __w_pdfjs_require__(8);
3732var newPromiseCapability = __w_pdfjs_require__(86);
3733var perform = __w_pdfjs_require__(87);
3734$export($export.S, 'Promise', {
3735  'try': function _try(callbackfn) {
3736    var promiseCapability = newPromiseCapability.f(this);
3737    var result = perform(callbackfn);
3738    (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
3739    return promiseCapability.promise;
3740  }
3741});
3742
3743/***/ }),
3744/* 95 */
3745/***/ (function(module, exports, __w_pdfjs_require__) {
3746
3747"use strict";
3748
3749
3750__w_pdfjs_require__(61);
3751__w_pdfjs_require__(73);
3752__w_pdfjs_require__(96);
3753__w_pdfjs_require__(108);
3754__w_pdfjs_require__(110);
3755module.exports = __w_pdfjs_require__(10).WeakMap;
3756
3757/***/ }),
3758/* 96 */
3759/***/ (function(module, exports, __w_pdfjs_require__) {
3760
3761"use strict";
3762
3763
3764var each = __w_pdfjs_require__(97)(0);
3765var redefine = __w_pdfjs_require__(21);
3766var meta = __w_pdfjs_require__(101);
3767var assign = __w_pdfjs_require__(45);
3768var weak = __w_pdfjs_require__(102);
3769var isObject = __w_pdfjs_require__(14);
3770var fails = __w_pdfjs_require__(17);
3771var validate = __w_pdfjs_require__(103);
3772var WEAK_MAP = 'WeakMap';
3773var getWeak = meta.getWeak;
3774var isExtensible = Object.isExtensible;
3775var uncaughtFrozenStore = weak.ufstore;
3776var tmp = {};
3777var InternalMap;
3778var wrapper = function wrapper(get) {
3779  return function WeakMap() {
3780    return get(this, arguments.length > 0 ? arguments[0] : undefined);
3781  };
3782};
3783var methods = {
3784  get: function get(key) {
3785    if (isObject(key)) {
3786      var data = getWeak(key);
3787      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
3788      return data ? data[this._i] : undefined;
3789    }
3790  },
3791  set: function set(key, value) {
3792    return weak.def(validate(this, WEAK_MAP), key, value);
3793  }
3794};
3795var $WeakMap = module.exports = __w_pdfjs_require__(104)(WEAK_MAP, wrapper, methods, weak, true, true);
3796if (fails(function () {
3797  return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7;
3798})) {
3799  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
3800  assign(InternalMap.prototype, methods);
3801  meta.NEED = true;
3802  each(['delete', 'has', 'get', 'set'], function (key) {
3803    var proto = $WeakMap.prototype;
3804    var method = proto[key];
3805    redefine(proto, key, function (a, b) {
3806      if (isObject(a) && !isExtensible(a)) {
3807        if (!this._f) this._f = new InternalMap();
3808        var result = this._f[key](a, b);
3809        return key == 'set' ? this : result;
3810      }
3811      return method.call(this, a, b);
3812    });
3813  });
3814}
3815
3816/***/ }),
3817/* 97 */
3818/***/ (function(module, exports, __w_pdfjs_require__) {
3819
3820"use strict";
3821
3822
3823var ctx = __w_pdfjs_require__(24);
3824var IObject = __w_pdfjs_require__(38);
3825var toObject = __w_pdfjs_require__(52);
3826var toLength = __w_pdfjs_require__(39);
3827var asc = __w_pdfjs_require__(98);
3828module.exports = function (TYPE, $create) {
3829  var IS_MAP = TYPE == 1;
3830  var IS_FILTER = TYPE == 2;
3831  var IS_SOME = TYPE == 3;
3832  var IS_EVERY = TYPE == 4;
3833  var IS_FIND_INDEX = TYPE == 6;
3834  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
3835  var create = $create || asc;
3836  return function ($this, callbackfn, that) {
3837    var O = toObject($this);
3838    var self = IObject(O);
3839    var f = ctx(callbackfn, that, 3);
3840    var length = toLength(self.length);
3841    var index = 0;
3842    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
3843    var val, res;
3844    for (; length > index; index++) {
3845      if (NO_HOLES || index in self) {
3846        val = self[index];
3847        res = f(val, index, O);
3848        if (TYPE) {
3849          if (IS_MAP) result[index] = res;else if (res) switch (TYPE) {
3850            case 3:
3851              return true;
3852            case 5:
3853              return val;
3854            case 6:
3855              return index;
3856            case 2:
3857              result.push(val);
3858          } else if (IS_EVERY) return false;
3859        }
3860      }
3861    }return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
3862  };
3863};
3864
3865/***/ }),
3866/* 98 */
3867/***/ (function(module, exports, __w_pdfjs_require__) {
3868
3869"use strict";
3870
3871
3872var speciesConstructor = __w_pdfjs_require__(99);
3873module.exports = function (original, length) {
3874  return new (speciesConstructor(original))(length);
3875};
3876
3877/***/ }),
3878/* 99 */
3879/***/ (function(module, exports, __w_pdfjs_require__) {
3880
3881"use strict";
3882
3883
3884var isObject = __w_pdfjs_require__(14);
3885var isArray = __w_pdfjs_require__(100);
3886var SPECIES = __w_pdfjs_require__(29)('species');
3887module.exports = function (original) {
3888  var C;
3889  if (isArray(original)) {
3890    C = original.constructor;
3891    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
3892    if (isObject(C)) {
3893      C = C[SPECIES];
3894      if (C === null) C = undefined;
3895    }
3896  }
3897  return C === undefined ? Array : C;
3898};
3899
3900/***/ }),
3901/* 100 */
3902/***/ (function(module, exports, __w_pdfjs_require__) {
3903
3904"use strict";
3905
3906
3907var cof = __w_pdfjs_require__(28);
3908module.exports = Array.isArray || function isArray(arg) {
3909  return cof(arg) == 'Array';
3910};
3911
3912/***/ }),
3913/* 101 */
3914/***/ (function(module, exports, __w_pdfjs_require__) {
3915
3916"use strict";
3917
3918
3919var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
3920
3921var META = __w_pdfjs_require__(23)('meta');
3922var isObject = __w_pdfjs_require__(14);
3923var has = __w_pdfjs_require__(22);
3924var setDesc = __w_pdfjs_require__(12).f;
3925var id = 0;
3926var isExtensible = Object.isExtensible || function () {
3927  return true;
3928};
3929var FREEZE = !__w_pdfjs_require__(17)(function () {
3930  return isExtensible(Object.preventExtensions({}));
3931});
3932var setMeta = function setMeta(it) {
3933  setDesc(it, META, {
3934    value: {
3935      i: 'O' + ++id,
3936      w: {}
3937    }
3938  });
3939};
3940var fastKey = function fastKey(it, create) {
3941  if (!isObject(it)) return (typeof it === 'undefined' ? 'undefined' : _typeof(it)) == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
3942  if (!has(it, META)) {
3943    if (!isExtensible(it)) return 'F';
3944    if (!create) return 'E';
3945    setMeta(it);
3946  }
3947  return it[META].i;
3948};
3949var getWeak = function getWeak(it, create) {
3950  if (!has(it, META)) {
3951    if (!isExtensible(it)) return true;
3952    if (!create) return false;
3953    setMeta(it);
3954  }
3955  return it[META].w;
3956};
3957var onFreeze = function onFreeze(it) {
3958  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
3959  return it;
3960};
3961var meta = module.exports = {
3962  KEY: META,
3963  NEED: false,
3964  fastKey: fastKey,
3965  getWeak: getWeak,
3966  onFreeze: onFreeze
3967};
3968
3969/***/ }),
3970/* 102 */
3971/***/ (function(module, exports, __w_pdfjs_require__) {
3972
3973"use strict";
3974
3975
3976var redefineAll = __w_pdfjs_require__(90);
3977var getWeak = __w_pdfjs_require__(101).getWeak;
3978var anObject = __w_pdfjs_require__(13);
3979var isObject = __w_pdfjs_require__(14);
3980var anInstance = __w_pdfjs_require__(77);
3981var forOf = __w_pdfjs_require__(78);
3982var createArrayMethod = __w_pdfjs_require__(97);
3983var $has = __w_pdfjs_require__(22);
3984var validate = __w_pdfjs_require__(103);
3985var arrayFind = createArrayMethod(5);
3986var arrayFindIndex = createArrayMethod(6);
3987var id = 0;
3988var uncaughtFrozenStore = function uncaughtFrozenStore(that) {
3989  return that._l || (that._l = new UncaughtFrozenStore());
3990};
3991var UncaughtFrozenStore = function UncaughtFrozenStore() {
3992  this.a = [];
3993};
3994var findUncaughtFrozen = function findUncaughtFrozen(store, key) {
3995  return arrayFind(store.a, function (it) {
3996    return it[0] === key;
3997  });
3998};
3999UncaughtFrozenStore.prototype = {
4000  get: function get(key) {
4001    var entry = findUncaughtFrozen(this, key);
4002    if (entry) return entry[1];
4003  },
4004  has: function has(key) {
4005    return !!findUncaughtFrozen(this, key);
4006  },
4007  set: function set(key, value) {
4008    var entry = findUncaughtFrozen(this, key);
4009    if (entry) entry[1] = value;else this.a.push([key, value]);
4010  },
4011  'delete': function _delete(key) {
4012    var index = arrayFindIndex(this.a, function (it) {
4013      return it[0] === key;
4014    });
4015    if (~index) this.a.splice(index, 1);
4016    return !!~index;
4017  }
4018};
4019module.exports = {
4020  getConstructor: function getConstructor(wrapper, NAME, IS_MAP, ADDER) {
4021    var C = wrapper(function (that, iterable) {
4022      anInstance(that, C, NAME, '_i');
4023      that._t = NAME;
4024      that._i = id++;
4025      that._l = undefined;
4026      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
4027    });
4028    redefineAll(C.prototype, {
4029      'delete': function _delete(key) {
4030        if (!isObject(key)) return false;
4031        var data = getWeak(key);
4032        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
4033        return data && $has(data, this._i) && delete data[this._i];
4034      },
4035      has: function has(key) {
4036        if (!isObject(key)) return false;
4037        var data = getWeak(key);
4038        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
4039        return data && $has(data, this._i);
4040      }
4041    });
4042    return C;
4043  },
4044  def: function def(that, key, value) {
4045    var data = getWeak(anObject(key), true);
4046    if (data === true) uncaughtFrozenStore(that).set(key, value);else data[that._i] = value;
4047    return that;
4048  },
4049  ufstore: uncaughtFrozenStore
4050};
4051
4052/***/ }),
4053/* 103 */
4054/***/ (function(module, exports, __w_pdfjs_require__) {
4055
4056"use strict";
4057
4058
4059var isObject = __w_pdfjs_require__(14);
4060module.exports = function (it, TYPE) {
4061  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
4062  return it;
4063};
4064
4065/***/ }),
4066/* 104 */
4067/***/ (function(module, exports, __w_pdfjs_require__) {
4068
4069"use strict";
4070
4071
4072var global = __w_pdfjs_require__(9);
vendor: 4,976 bytes, lines 4073-4240
4073var $export = __w_pdfjs_require__(8);
4074var redefine = __w_pdfjs_require__(21);
4075var redefineAll = __w_pdfjs_require__(90);
4076var meta = __w_pdfjs_require__(101);
4077var forOf = __w_pdfjs_require__(78);
4078var anInstance = __w_pdfjs_require__(77);
4079var isObject = __w_pdfjs_require__(14);
4080var fails = __w_pdfjs_require__(17);
4081var $iterDetect = __w_pdfjs_require__(92);
4082var setToStringTag = __w_pdfjs_require__(71);
4083var inheritIfRequired = __w_pdfjs_require__(105);
4084module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
4085  var Base = global[NAME];
4086  var C = Base;
4087  var ADDER = IS_MAP ? 'set' : 'add';
4088  var proto = C && C.prototype;
4089  var O = {};
4090  var fixMethod = function fixMethod(KEY) {
4091    var fn = proto[KEY];
4092    redefine(proto, KEY, KEY == 'delete' ? function (a) {
4093      return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
4094    } : KEY == 'has' ? function has(a) {
4095      return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
4096    } : KEY == 'get' ? function get(a) {
4097      return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
4098    } : KEY == 'add' ? function add(a) {
4099      fn.call(this, a === 0 ? 0 : a);
4100      return this;
4101    } : function set(a, b) {
4102      fn.call(this, a === 0 ? 0 : a, b);
4103      return this;
4104    });
4105  };
4106  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
4107    new C().entries().next();
4108  }))) {
4109    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
4110    redefineAll(C.prototype, methods);
4111    meta.NEED = true;
4112  } else {
4113    var instance = new C();
4114    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
4115    var THROWS_ON_PRIMITIVES = fails(function () {
4116      instance.has(1);
4117    });
4118    var ACCEPT_ITERABLES = $iterDetect(function (iter) {
4119      new C(iter);
4120    });
4121    var BUGGY_ZERO = !IS_WEAK && fails(function () {
4122      var $instance = new C();
4123      var index = 5;
4124      while (index--) {
4125        $instance[ADDER](index, index);
4126      }return !$instance.has(-0);
4127    });
4128    if (!ACCEPT_ITERABLES) {
4129      C = wrapper(function (target, iterable) {
4130        anInstance(target, C, NAME);
4131        var that = inheritIfRequired(new Base(), target, C);
4132        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
4133        return that;
4134      });
4135      C.prototype = proto;
4136      proto.constructor = C;
4137    }
4138    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
4139      fixMethod('delete');
4140      fixMethod('has');
4141      IS_MAP && fixMethod('get');
4142    }
4143    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
4144    if (IS_WEAK && proto.clear) delete proto.clear;
4145  }
4146  setToStringTag(C, NAME);
4147  O[NAME] = C;
4148  $export($export.G + $export.W + $export.F * (C != Base), O);
4149  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
4150  return C;
4151};
4152
4153/***/ }),
4154/* 105 */
4155/***/ (function(module, exports, __w_pdfjs_require__) {
4156
4157"use strict";
4158
4159
4160var isObject = __w_pdfjs_require__(14);
4161var setPrototypeOf = __w_pdfjs_require__(106).set;
4162module.exports = function (that, target, C) {
4163  var S = target.constructor;
4164  var P;
4165  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
4166    setPrototypeOf(that, P);
4167  }
4168  return that;
4169};
4170
4171/***/ }),
4172/* 106 */
4173/***/ (function(module, exports, __w_pdfjs_require__) {
4174
4175"use strict";
4176
4177
4178var isObject = __w_pdfjs_require__(14);
4179var anObject = __w_pdfjs_require__(13);
4180var check = function check(O, proto) {
4181  anObject(O);
4182  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
4183};
4184module.exports = {
4185  set: Object.setPrototypeOf || ('__proto__' in {} ? function (test, buggy, set) {
4186    try {
4187      set = __w_pdfjs_require__(24)(Function.call, __w_pdfjs_require__(107).f(Object.prototype, '__proto__').set, 2);
4188      set(test, []);
4189      buggy = !(test instanceof Array);
4190    } catch (e) {
4191      buggy = true;
4192    }
4193    return function setPrototypeOf(O, proto) {
4194      check(O, proto);
4195      if (buggy) O.__proto__ = proto;else set(O, proto);
4196      return O;
4197    };
4198  }({}, false) : undefined),
4199  check: check
4200};
4201
4202/***/ }),
4203/* 107 */
4204/***/ (function(module, exports, __w_pdfjs_require__) {
4205
4206"use strict";
4207
4208
4209var pIE = __w_pdfjs_require__(51);
4210var createDesc = __w_pdfjs_require__(20);
4211var toIObject = __w_pdfjs_require__(37);
4212var toPrimitive = __w_pdfjs_require__(19);
4213var has = __w_pdfjs_require__(22);
4214var IE8_DOM_DEFINE = __w_pdfjs_require__(15);
4215var gOPD = Object.getOwnPropertyDescriptor;
4216exports.f = __w_pdfjs_require__(16) ? gOPD : function getOwnPropertyDescriptor(O, P) {
4217  O = toIObject(O);
4218  P = toPrimitive(P, true);
4219  if (IE8_DOM_DEFINE) try {
4220    return gOPD(O, P);
4221  } catch (e) {}
4222  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
4223};
4224
4225/***/ }),
4226/* 108 */
4227/***/ (function(module, exports, __w_pdfjs_require__) {
4228
4229"use strict";
4230
4231
4232__w_pdfjs_require__(109)('WeakMap');
4233
4234/***/ }),
4235/* 109 */
4236/***/ (function(module, exports, __w_pdfjs_require__) {
4237
4238"use strict";
4239
4240
4241var $export = __w_pdfjs_require__(8);
4242module.exports = function (COLLECTION) {
4243  $export($export.S, COLLECTION, {
4244    of: function of() {
4245      var length = arguments.length;
4246      var A = new Array(length);
4247      while (length--) {
4248        A[length] = arguments[length];
4249      }return new this(A);
4250    }
4251  });
4252};
4253
4254/***/ }),
4255/* 110 */
4256/***/ (function(module, exports, __w_pdfjs_require__) {
4257
4258"use strict";
4259
4260
4261__w_pdfjs_require__(111)('WeakMap');
4262
4263/***/ }),
4264/* 111 */
4265/***/ (function(module, exports, __w_pdfjs_require__) {
4266
4267"use strict";
4268
4269
4270var $export = __w_pdfjs_require__(8);
4271var aFunction = __w_pdfjs_require__(25);
4272var ctx = __w_pdfjs_require__(24);
4273var forOf = __w_pdfjs_require__(78);
4274module.exports = function (COLLECTION) {
4275  $export($export.S, COLLECTION, {
4276    from: function from(source) {
4277      var mapFn = arguments[1];
4278      var mapping, A, n, cb;
4279      aFunction(this);
4280      mapping = mapFn !== undefined;
4281      if (mapping) aFunction(mapFn);
4282      if (source == undefined) return new this();
4283      A = [];
4284      if (mapping) {
4285        n = 0;
4286        cb = ctx(mapFn, arguments[2], 2);
4287        forOf(source, false, function (nextItem) {
4288          A.push(cb(nextItem, n++));
4289        });
4290      } else {
4291        forOf(source, false, A.push, A);
4292      }
4293      return new this(A);
4294    }
4295  });
4296};
4297
4298/***/ }),
4299/* 112 */
4300/***/ (function(module, exports, __w_pdfjs_require__) {
4301
4302"use strict";
4303
4304
4305__w_pdfjs_require__(113);
4306module.exports = __w_pdfjs_require__(10).String.codePointAt;
4307
4308/***/ }),
4309/* 113 */
4310/***/ (function(module, exports, __w_pdfjs_require__) {
4311
4312"use strict";
4313
4314
4315var $export = __w_pdfjs_require__(8);
4316var $at = __w_pdfjs_require__(64)(false);
4317$export($export.P, 'String', {
4318  codePointAt: function codePointAt(pos) {
4319    return $at(this, pos);
4320  }
4321});
4322
4323/***/ }),
4324/* 114 */
4325/***/ (function(module, exports, __w_pdfjs_require__) {
4326
4327"use strict";
4328
4329
4330__w_pdfjs_require__(115);
4331module.exports = __w_pdfjs_require__(10).String.fromCodePoint;
4332
4333/***/ }),
4334/* 115 */
4335/***/ (function(module, exports, __w_pdfjs_require__) {
4336
4337"use strict";
4338
4339
4340var $export = __w_pdfjs_require__(8);
4341var toAbsoluteIndex = __w_pdfjs_require__(41);
4342var fromCharCode = String.fromCharCode;
4343var $fromCodePoint = String.fromCodePoint;
4344$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
4345  fromCodePoint: function fromCodePoint(x) {
4346    var res = [];
4347    var aLen = arguments.length;
4348    var i = 0;
4349    var code;
4350    while (aLen > i) {
4351      code = +arguments[i++];
4352      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
4353      res.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00));
4354    }
4355    return res.join('');
4356  }
4357});
4358
4359/***/ }),
4360/* 116 */
4361/***/ (function(module, exports, __w_pdfjs_require__) {
4362
4363"use strict";
4364
4365
4366__w_pdfjs_require__(117);
4367__w_pdfjs_require__(61);
4368module.exports = __w_pdfjs_require__(10).Symbol;
4369
4370/***/ }),
4371/* 117 */
4372/***/ (function(module, exports, __w_pdfjs_require__) {
4373
4374"use strict";
4375
4376
4377var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
4378
4379var global = __w_pdfjs_require__(9);
4380var has = __w_pdfjs_require__(22);
4381var DESCRIPTORS = __w_pdfjs_require__(16);
4382var $export = __w_pdfjs_require__(8);
4383var redefine = __w_pdfjs_require__(21);
4384var META = __w_pdfjs_require__(101).KEY;
4385var $fails = __w_pdfjs_require__(17);
4386var shared = __w_pdfjs_require__(30);
4387var setToStringTag = __w_pdfjs_require__(71);
4388var uid = __w_pdfjs_require__(23);
4389var wks = __w_pdfjs_require__(29);
4390var wksExt = __w_pdfjs_require__(118);
4391var wksDefine = __w_pdfjs_require__(119);
4392var enumKeys = __w_pdfjs_require__(120);
4393var isArray = __w_pdfjs_require__(100);
4394var anObject = __w_pdfjs_require__(13);
4395var isObject = __w_pdfjs_require__(14);
4396var toIObject = __w_pdfjs_require__(37);
4397var toPrimitive = __w_pdfjs_require__(19);
4398var createDesc = __w_pdfjs_require__(20);
4399var _create = __w_pdfjs_require__(68);
4400var gOPNExt = __w_pdfjs_require__(121);
4401var $GOPD = __w_pdfjs_require__(107);
4402var $DP = __w_pdfjs_require__(12);
4403var $keys = __w_pdfjs_require__(46);
4404var gOPD = $GOPD.f;
4405var dP = $DP.f;
4406var gOPN = gOPNExt.f;
4407var $Symbol = global.Symbol;
4408var $JSON = global.JSON;
4409var _stringify = $JSON && $JSON.stringify;
4410var PROTOTYPE = 'prototype';
4411var HIDDEN = wks('_hidden');
4412var TO_PRIMITIVE = wks('toPrimitive');
4413var isEnum = {}.propertyIsEnumerable;
4414var SymbolRegistry = shared('symbol-registry');
4415var AllSymbols = shared('symbols');
vendor: 9,273 bytes, lines 4416-4696
4416var OPSymbols = shared('op-symbols');
4417var ObjectProto = Object[PROTOTYPE];
4418var USE_NATIVE = typeof $Symbol == 'function';
4419var QObject = global.QObject;
4420var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
4421var setSymbolDesc = DESCRIPTORS && $fails(function () {
4422  return _create(dP({}, 'a', {
4423    get: function get() {
4424      return dP(this, 'a', { value: 7 }).a;
4425    }
4426  })).a != 7;
4427}) ? function (it, key, D) {
4428  var protoDesc = gOPD(ObjectProto, key);
4429  if (protoDesc) delete ObjectProto[key];
4430  dP(it, key, D);
4431  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
4432} : dP;
4433var wrap = function wrap(tag) {
4434  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
4435  sym._k = tag;
4436  return sym;
4437};
4438var isSymbol = USE_NATIVE && _typeof($Symbol.iterator) == 'symbol' ? function (it) {
4439  return (typeof it === 'undefined' ? 'undefined' : _typeof(it)) == 'symbol';
4440} : function (it) {
4441  return it instanceof $Symbol;
4442};
4443var $defineProperty = function defineProperty(it, key, D) {
4444  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
4445  anObject(it);
4446  key = toPrimitive(key, true);
4447  anObject(D);
4448  if (has(AllSymbols, key)) {
4449    if (!D.enumerable) {
4450      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
4451      it[HIDDEN][key] = true;
4452    } else {
4453      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
4454      D = _create(D, { enumerable: createDesc(0, false) });
4455    }
4456    return setSymbolDesc(it, key, D);
4457  }
4458  return dP(it, key, D);
4459};
4460var $defineProperties = function defineProperties(it, P) {
4461  anObject(it);
4462  var keys = enumKeys(P = toIObject(P));
4463  var i = 0;
4464  var l = keys.length;
4465  var key;
4466  while (l > i) {
4467    $defineProperty(it, key = keys[i++], P[key]);
4468  }return it;
4469};
4470var $create = function create(it, P) {
4471  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
4472};
4473var $propertyIsEnumerable = function propertyIsEnumerable(key) {
4474  var E = isEnum.call(this, key = toPrimitive(key, true));
4475  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
4476  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
4477};
4478var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
4479  it = toIObject(it);
4480  key = toPrimitive(key, true);
4481  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
4482  var D = gOPD(it, key);
4483  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
4484  return D;
4485};
4486var $getOwnPropertyNames = function getOwnPropertyNames(it) {
4487  var names = gOPN(toIObject(it));
4488  var result = [];
4489  var i = 0;
4490  var key;
4491  while (names.length > i) {
4492    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
4493  }
4494  return result;
4495};
4496var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
4497  var IS_OP = it === ObjectProto;
4498  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
4499  var result = [];
4500  var i = 0;
4501  var key;
4502  while (names.length > i) {
4503    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
4504  }
4505  return result;
4506};
4507if (!USE_NATIVE) {
4508  $Symbol = function _Symbol() {
4509    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
4510    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
4511    var $set = function $set(value) {
4512      if (this === ObjectProto) $set.call(OPSymbols, value);
4513      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
4514      setSymbolDesc(this, tag, createDesc(1, value));
4515    };
4516    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, {
4517      configurable: true,
4518      set: $set
4519    });
4520    return wrap(tag);
4521  };
4522  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
4523    return this._k;
4524  });
4525  $GOPD.f = $getOwnPropertyDescriptor;
4526  $DP.f = $defineProperty;
4527  __w_pdfjs_require__(122).f = gOPNExt.f = $getOwnPropertyNames;
4528  __w_pdfjs_require__(51).f = $propertyIsEnumerable;
4529  __w_pdfjs_require__(50).f = $getOwnPropertySymbols;
4530  if (DESCRIPTORS && !__w_pdfjs_require__(31)) {
4531    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
4532  }
4533  wksExt.f = function (name) {
4534    return wrap(wks(name));
4535  };
4536}
4537$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });
4538for (var es6Symbols = 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'.split(','), j = 0; es6Symbols.length > j;) {
4539  wks(es6Symbols[j++]);
4540}for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) {
4541  wksDefine(wellKnownSymbols[k++]);
4542}$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
4543  'for': function _for(key) {
4544    return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);
4545  },
4546  keyFor: function keyFor(sym) {
4547    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
4548    for (var key in SymbolRegistry) {
4549      if (SymbolRegistry[key] === sym) return key;
4550    }
4551  },
4552  useSetter: function useSetter() {
4553    setter = true;
4554  },
4555  useSimple: function useSimple() {
4556    setter = false;
4557  }
4558});
4559$export($export.S + $export.F * !USE_NATIVE, 'Object', {
4560  create: $create,
4561  defineProperty: $defineProperty,
4562  defineProperties: $defineProperties,
4563  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
4564  getOwnPropertyNames: $getOwnPropertyNames,
4565  getOwnPropertySymbols: $getOwnPropertySymbols
4566});
4567$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
4568  var S = $Symbol();
4569  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
4570})), 'JSON', {
4571  stringify: function stringify(it) {
4572    var args = [it];
4573    var i = 1;
4574    var replacer, $replacer;
4575    while (arguments.length > i) {
4576      args.push(arguments[i++]);
4577    }$replacer = replacer = args[1];
4578    if (!isObject(replacer) && it === undefined || isSymbol(it)) return;
4579    if (!isArray(replacer)) replacer = function replacer(key, value) {
4580      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
4581      if (!isSymbol(value)) return value;
4582    };
4583    args[1] = replacer;
4584    return _stringify.apply($JSON, args);
4585  }
4586});
4587$Symbol[PROTOTYPE][TO_PRIMITIVE] || __w_pdfjs_require__(11)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
4588setToStringTag($Symbol, 'Symbol');
4589setToStringTag(Math, 'Math', true);
4590setToStringTag(global.JSON, 'JSON', true);
4591
4592/***/ }),
4593/* 118 */
4594/***/ (function(module, exports, __w_pdfjs_require__) {
4595
4596"use strict";
4597
4598
4599exports.f = __w_pdfjs_require__(29);
4600
4601/***/ }),
4602/* 119 */
4603/***/ (function(module, exports, __w_pdfjs_require__) {
4604
4605"use strict";
4606
4607
4608var global = __w_pdfjs_require__(9);
4609var core = __w_pdfjs_require__(10);
4610var LIBRARY = __w_pdfjs_require__(31);
4611var wksExt = __w_pdfjs_require__(118);
4612var defineProperty = __w_pdfjs_require__(12).f;
4613module.exports = function (name) {
4614  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
4615  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
4616};
4617
4618/***/ }),
4619/* 120 */
4620/***/ (function(module, exports, __w_pdfjs_require__) {
4621
4622"use strict";
4623
4624
4625var getKeys = __w_pdfjs_require__(46);
4626var gOPS = __w_pdfjs_require__(50);
4627var pIE = __w_pdfjs_require__(51);
4628module.exports = function (it) {
4629  var result = getKeys(it);
4630  var getSymbols = gOPS.f;
4631  if (getSymbols) {
4632    var symbols = getSymbols(it);
4633    var isEnum = pIE.f;
4634    var i = 0;
4635    var key;
4636    while (symbols.length > i) {
4637      if (isEnum.call(it, key = symbols[i++])) result.push(key);
4638    }
4639  }
4640  return result;
4641};
4642
4643/***/ }),
4644/* 121 */
4645/***/ (function(module, exports, __w_pdfjs_require__) {
4646
4647"use strict";
4648
4649
4650var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
4651
4652var toIObject = __w_pdfjs_require__(37);
4653var gOPN = __w_pdfjs_require__(122).f;
4654var toString = {}.toString;
4655var windowNames = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
4656var getWindowNames = function getWindowNames(it) {
4657  try {
4658    return gOPN(it);
4659  } catch (e) {
4660    return windowNames.slice();
4661  }
4662};
4663module.exports.f = function getOwnPropertyNames(it) {
4664  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
4665};
4666
4667/***/ }),
4668/* 122 */
4669/***/ (function(module, exports, __w_pdfjs_require__) {
4670
4671"use strict";
4672
4673
4674var $keys = __w_pdfjs_require__(47);
4675var hiddenKeys = __w_pdfjs_require__(49).concat('length', 'prototype');
4676exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
4677  return $keys(O, hiddenKeys);
4678};
4679
4680/***/ }),
4681/* 123 */
4682/***/ (function(module, exports, __w_pdfjs_require__) {
4683
4684"use strict";
4685
4686
4687__w_pdfjs_require__(124);
4688module.exports = __w_pdfjs_require__(10).Object.values;
4689
4690/***/ }),
4691/* 124 */
4692/***/ (function(module, exports, __w_pdfjs_require__) {
4693
4694"use strict";
4695
4696
4697var $export = __w_pdfjs_require__(8);
4698var $values = __w_pdfjs_require__(125)(false);
4699$export($export.S, 'Object', {
4700  values: function values(it) {
4701    return $values(it);
4702  }
4703});
4704
4705/***/ }),
4706/* 125 */
4707/***/ (function(module, exports, __w_pdfjs_require__) {
4708
4709"use strict";
4710
4711
4712var getKeys = __w_pdfjs_require__(46);
4713var toIObject = __w_pdfjs_require__(37);
4714var isEnum = __w_pdfjs_require__(51).f;
4715module.exports = function (isEntries) {
4716  return function (it) {
4717    var O = toIObject(it);
4718    var keys = getKeys(O);
4719    var length = keys.length;
4720    var i = 0;
4721    var result = [];
4722    var key;
4723    while (length > i) {
4724      if (isEnum.call(O, key = keys[i++])) {
4725        result.push(isEntries ? [key, O[key]] : O[key]);
4726      }
4727    }return result;
4728  };
4729};
4730
4731/***/ }),
4732/* 126 */
4733/***/ (function(module, exports, __w_pdfjs_require__) {
4734
4735"use strict";
4736
4737
4738var isReadableStreamSupported = false;
4739if (typeof ReadableStream !== 'undefined') {
4740  try {
4741    new ReadableStream({
4742      start: function start(controller) {
4743        controller.close();
4744      }
4745    });
4746    isReadableStreamSupported = true;
4747  } catch (e) {}
4748}
4749if (isReadableStreamSupported) {
4750  exports.ReadableStream = ReadableStream;
4751} else {
4752  exports.ReadableStream = __w_pdfjs_require__(127).ReadableStream;
4753}
4754
4755/***/ }),
4756/* 127 */
4757/***/ (function(module, exports, __w_pdfjs_require__) {
4758
4759"use strict";
4760
4761
4762var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
4763
4764(function (e, a) {
4765  for (var i in a) {
4766    e[i] = a[i];
4767  }
4768})(exports, function (modules) {
4769  var installedModules = {};
4770  function __w_pdfjs_require__(moduleId) {
4771    if (installedModules[moduleId]) return installedModules[moduleId].exports;
4772    var module = installedModules[moduleId] = {
4773      i: moduleId,
4774      l: false,
4775      exports: {}
4776    };
4777    modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);
4778    module.l = true;
4779    return module.exports;
4780  }
4781  __w_pdfjs_require__.m = modules;
4782  __w_pdfjs_require__.c = installedModules;
4783  __w_pdfjs_require__.i = function (value) {
4784    return value;
4785  };
4786  __w_pdfjs_require__.d = function (exports, name, getter) {
4787    if (!__w_pdfjs_require__.o(exports, name)) {
4788      Object.defineProperty(exports, name, {
4789        configurable: false,
4790        enumerable: true,
4791        get: getter
4792      });
4793    }
4794  };
4795  __w_pdfjs_require__.n = function (module) {
4796    var getter = module && module.__esModule ? function getDefault() {
4797      return module['default'];
4798    } : function getModuleExports() {
4799      return module;
4800    };
4801    __w_pdfjs_require__.d(getter, 'a', getter);
4802    return getter;
4803  };
4804  __w_pdfjs_require__.o = function (object, property) {
4805    return Object.prototype.hasOwnProperty.call(object, property);
4806  };
4807  __w_pdfjs_require__.p = "";
4808  return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);
4809}([function (module, exports, __w_pdfjs_require__) {
4810  "use strict";
4811
4812  var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) {
4813    return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj);
4814  } : function (obj) {
4815    return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj);
4816  };
4817  var _require = __w_pdfjs_require__(1),
4818      assert = _require.assert;
4819  function IsPropertyKey(argument) {
4820    return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';
4821  }
4822  exports.typeIsObject = function (x) {
4823    return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';
4824  };
4825  exports.createDataProperty = function (o, p, v) {
4826    assert(exports.typeIsObject(o));
4827    Object.defineProperty(o, p, {
4828      value: v,
4829      writable: true,
4830      enumerable: true,
4831      configurable: true
4832    });
4833  };
4834  exports.createArrayFromList = function (elements) {
4835    return elements.slice();
4836  };
4837  exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {
4838    new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);
4839  };
4840  exports.CreateIterResultObject = function (value, done) {
4841    assert(typeof done === 'boolean');
4842    var obj = {};
4843    Object.defineProperty(obj, 'value', {
4844      value: value,
4845      enumerable: true,
4846      writable: true,
4847      configurable: true
4848    });
4849    Object.defineProperty(obj, 'done', {
4850      value: done,
4851      enumerable: true,
4852      writable: true,
4853      configurable: true
4854    });
4855    return obj;
4856  };
4857  exports.IsFiniteNonNegativeNumber = function (v) {
4858    if (Number.isNaN(v)) {
4859      return false;
4860    }
4861    if (v === Infinity) {
4862      return false;
4863    }
4864    if (v < 0) {
4865      return false;
4866    }
4867    return true;
4868  };
4869  function Call(F, V, args) {
4870    if (typeof F !== 'function') {
4871      throw new TypeError('Argument is not a function');
4872    }
4873    return Function.prototype.apply.call(F, V, args);
4874  }
4875  exports.InvokeOrNoop = function (O, P, args) {
4876    assert(O !== undefined);
4877    assert(IsPropertyKey(P));
4878    assert(Array.isArray(args));
4879    var method = O[P];
4880    if (method === undefined) {
4881      return undefined;
4882    }
4883    return Call(method, O, args);
4884  };
4885  exports.PromiseInvokeOrNoop = function (O, P, args) {
4886    assert(O !== undefined);
4887    assert(IsPropertyKey(P));
4888    assert(Array.isArray(args));
4889    try {
4890      return Promise.resolve(exports.InvokeOrNoop(O, P, args));
4891    } catch (returnValueE) {
4892      return Promise.reject(returnValueE);
4893    }
4894  };
4895  exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {
4896    assert(O !== undefined);
4897    assert(IsPropertyKey(P));
4898    assert(Array.isArray(args));
4899    assert(Array.isArray(argsF));
4900    var method = void 0;
4901    try {
4902      method = O[P];
4903    } catch (methodE) {
4904      return Promise.reject(methodE);
4905    }
4906    if (method === undefined) {
4907      return F.apply(null, argsF);
4908    }
4909    try {
4910      return Promise.resolve(Call(method, O, args));
4911    } catch (e) {
4912      return Promise.reject(e);
4913    }
4914  };
4915  exports.TransferArrayBuffer = function (O) {
4916    return O.slice();
4917  };
4918  exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {
4919    highWaterMark = Number(highWaterMark);
4920    if (Number.isNaN(highWaterMark) || highWaterMark < 0) {
4921      throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');
4922    }
4923    return highWaterMark;
4924  };
4925  exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {
4926    if (size !== undefined && typeof size !== 'function') {
4927      throw new TypeError('size property of a queuing strategy must be a function');
4928    }
4929    highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);
4930    return {
4931      size: size,
4932      highWaterMark: highWaterMark
4933    };
4934  };
4935}, function (module, exports, __w_pdfjs_require__) {
4936  "use strict";
4937
4938  function rethrowAssertionErrorRejection(e) {
4939    if (e && e.constructor === AssertionError) {
4940      setTimeout(function () {
4941        throw e;
4942      }, 0);
4943    }
4944  }
4945  function AssertionError(message) {
4946    this.name = 'AssertionError';
4947    this.message = message || '';
4948    this.stack = new Error().stack;
4949  }
4950  AssertionError.prototype = Object.create(Error.prototype);
4951  AssertionError.prototype.constructor = AssertionError;
4952  function assert(value, message) {
4953    if (!value) {
4954      throw new AssertionError(message);
4955    }
4956  }
4957  module.exports = {
4958    rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,
4959    AssertionError: AssertionError,
4960    assert: assert
4961  };
4962}, function (module, exports, __w_pdfjs_require__) {
4963  "use strict";
4964
4965  var _createClass = function () {
4966    function defineProperties(target, props) {
4967      for (var i = 0; i < props.length; i++) {
4968        var descriptor = props[i];
4969        descriptor.enumerable = descriptor.enumerable || false;
4970        descriptor.configurable = true;
4971        if ("value" in descriptor) descriptor.writable = true;
4972        Object.defineProperty(target, descriptor.key, descriptor);
4973      }
4974    }
4975    return function (Constructor, protoProps, staticProps) {
4976      if (protoProps) defineProperties(Constructor.prototype, protoProps);
4977      if (staticProps) defineProperties(Constructor, staticProps);
4978      return Constructor;
4979    };
4980  }();
4981  function _classCallCheck(instance, Constructor) {
4982    if (!(instance instanceof Constructor)) {
4983      throw new TypeError("Cannot call a class as a function");
4984    }
4985  }
4986  var _require = __w_pdfjs_require__(0),
4987      InvokeOrNoop = _require.InvokeOrNoop,
4988      PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,
4989      ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,
4990      typeIsObject = _require.typeIsObject;
4991  var _require2 = __w_pdfjs_require__(1),
4992      assert = _require2.assert,
4993      rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;
4994  var _require3 = __w_pdfjs_require__(3),
4995      DequeueValue = _require3.DequeueValue,
4996      EnqueueValueWithSize = _require3.EnqueueValueWithSize,
4997      PeekQueueValue = _require3.PeekQueueValue,
4998      ResetQueue = _require3.ResetQueue;
4999  var WritableStream = function () {
5000    function WritableStream() {
5001      var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5002      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
5003          size = _ref.size,
5004          _ref$highWaterMark = _ref.highWaterMark,
5005          highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;
5006      _classCallCheck(this, WritableStream);
5007      this._state = 'writable';
5008      this._storedError = undefined;
5009      this._writer = undefined;
5010      this._writableStreamController = undefined;
5011      this._writeRequests = [];
5012      this._inFlightWriteRequest = undefined;
5013      this._closeRequest = undefined;
5014      this._inFlightCloseRequest = undefined;
5015      this._pendingAbortRequest = undefined;
5016      this._backpressure = false;
5017      var type = underlyingSink.type;
5018      if (type !== undefined) {
5019        throw new RangeError('Invalid type is specified');
5020      }
5021      this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);
5022      this._writableStreamController.__startSteps();
5023    }
5024    _createClass(WritableStream, [{
5025      key: 'abort',
5026      value: function abort(reason) {
5027        if (IsWritableStream(this) === false) {
5028          return Promise.reject(streamBrandCheckException('abort'));
5029        }
5030        if (IsWritableStreamLocked(this) === true) {
5031          return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));
5032        }
5033        return WritableStreamAbort(this, reason);
5034      }
5035    }, {
5036      key: 'getWriter',
5037      value: function getWriter() {
5038        if (IsWritableStream(this) === false) {
5039          throw streamBrandCheckException('getWriter');
5040        }
5041        return AcquireWritableStreamDefaultWriter(this);
5042      }
5043    }, {
5044      key: 'locked',
5045      get: function get() {
5046        if (IsWritableStream(this) === false) {
5047          throw streamBrandCheckException('locked');
5048        }
5049        return IsWritableStreamLocked(this);
5050      }
5051    }]);
5052    return WritableStream;
5053  }();
5054  module.exports = {
5055    AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,
5056    IsWritableStream: IsWritableStream,
5057    IsWritableStreamLocked: IsWritableStreamLocked,
5058    WritableStream: WritableStream,
5059    WritableStreamAbort: WritableStreamAbort,
5060    WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,
5061    WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,
5062    WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,
5063    WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,
5064    WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight
5065  };
5066  function AcquireWritableStreamDefaultWriter(stream) {
5067    return new WritableStreamDefaultWriter(stream);
5068  }
5069  function IsWritableStream(x) {
5070    if (!typeIsObject(x)) {
5071      return false;
5072    }
5073    if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {
5074      return false;
5075    }
5076    return true;
5077  }
5078  function IsWritableStreamLocked(stream) {
5079    assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');
5080    if (stream._writer === undefined) {
5081      return false;
5082    }
5083    return true;
5084  }
5085  function WritableStreamAbort(stream, reason) {
5086    var state = stream._state;
5087    if (state === 'closed') {
5088      return Promise.resolve(undefined);
5089    }
5090    if (state === 'errored') {
5091      return Promise.reject(stream._storedError);
5092    }
5093    var error = new TypeError('Requested to abort');
5094    if (stream._pendingAbortRequest !== undefined) {
5095      return Promise.reject(error);
5096    }
5097    assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');
5098    var wasAlreadyErroring = false;
5099    if (state === 'erroring') {
5100      wasAlreadyErroring = true;
5101      reason = undefined;
5102    }
5103    var promise = new Promise(function (resolve, reject) {
5104      stream._pendingAbortRequest = {
5105        _resolve: resolve,
5106        _reject: reject,
5107        _reason: reason,
5108        _wasAlreadyErroring: wasAlreadyErroring
5109      };
5110    });
5111    if (wasAlreadyErroring === false) {
5112      WritableStreamStartErroring(stream, error);
5113    }
5114    return promise;
5115  }
5116  function WritableStreamAddWriteRequest(stream) {
5117    assert(IsWritableStreamLocked(stream) === true);
5118    assert(stream._state === 'writable');
5119    var promise = new Promise(function (resolve, reject) {
5120      var writeRequest = {
5121        _resolve: resolve,
5122        _reject: reject
5123      };
5124      stream._writeRequests.push(writeRequest);
5125    });
5126    return promise;
5127  }
5128  function WritableStreamDealWithRejection(stream, error) {
5129    var state = stream._state;
5130    if (state === 'writable') {
5131      WritableStreamStartErroring(stream, error);
5132      return;
5133    }
5134    assert(state === 'erroring');
5135    WritableStreamFinishErroring(stream);
5136  }
5137  function WritableStreamStartErroring(stream, reason) {
5138    assert(stream._storedError === undefined, 'stream._storedError === undefined');
5139    assert(stream._state === 'writable', 'state must be writable');
5140    var controller = stream._writableStreamController;
5141    assert(controller !== undefined, 'controller must not be undefined');
5142    stream._state = 'erroring';
5143    stream._storedError = reason;
5144    var writer = stream._writer;
5145    if (writer !== undefined) {
5146      WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);
5147    }
5148    if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {
5149      WritableStreamFinishErroring(stream);
5150    }
5151  }
5152  function WritableStreamFinishErroring(stream) {
5153    assert(stream._state === 'erroring', 'stream._state === erroring');
5154    assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');
5155    stream._state = 'errored';
5156    stream._writableStreamController.__errorSteps();
5157    var storedError = stream._storedError;
5158    for (var i = 0; i < stream._writeRequests.length; i++) {
5159      var writeRequest = stream._writeRequests[i];
5160      writeRequest._reject(storedError);
5161    }
5162    stream._writeRequests = [];
5163    if (stream._pendingAbortRequest === undefined) {
5164      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
5165      return;
5166    }
5167    var abortRequest = stream._pendingAbortRequest;
5168    stream._pendingAbortRequest = undefined;
5169    if (abortRequest._wasAlreadyErroring === true) {
5170      abortRequest._reject(storedError);
5171      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
5172      return;
5173    }
5174    var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);
5175    promise.then(function () {
5176      abortRequest._resolve();
5177      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
5178    }, function (reason) {
5179      abortRequest._reject(reason);
5180      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
5181    });
5182  }
5183  function WritableStreamFinishInFlightWrite(stream) {
5184    assert(stream._inFlightWriteRequest !== undefined);
5185    stream._inFlightWriteRequest._resolve(undefined);
5186    stream._inFlightWriteRequest = undefined;
5187  }
5188  function WritableStreamFinishInFlightWriteWithError(stream, error) {
5189    assert(stream._inFlightWriteRequest !== undefined);
5190    stream._inFlightWriteRequest._reject(error);
5191    stream._inFlightWriteRequest = undefined;
5192    assert(stream._state === 'writable' || stream._state === 'erroring');
5193    WritableStreamDealWithRejection(stream, error);
5194  }
5195  function WritableStreamFinishInFlightClose(stream) {
5196    assert(stream._inFlightCloseRequest !== undefined);
5197    stream._inFlightCloseRequest._resolve(undefined);
5198    stream._inFlightCloseRequest = undefined;
5199    var state = stream._state;
5200    assert(state === 'writable' || state === 'erroring');
5201    if (state === 'erroring') {
5202      stream._storedError = undefined;
5203      if (stream._pendingAbortRequest !== undefined) {
5204        stream._pendingAbortRequest._resolve();
5205        stream._pendingAbortRequest = undefined;
5206      }
5207    }
5208    stream._state = 'closed';
5209    var writer = stream._writer;
5210    if (writer !== undefined) {
5211      defaultWriterClosedPromiseResolve(writer);
5212    }
5213    assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');
5214    assert(stream._storedError === undefined, 'stream._storedError === undefined');
5215  }
5216  function WritableStreamFinishInFlightCloseWithError(stream, error) {
5217    assert(stream._inFlightCloseRequest !== undefined);
5218    stream._inFlightCloseRequest._reject(error);
5219    stream._inFlightCloseRequest = undefined;
5220    assert(stream._state === 'writable' || stream._state === 'erroring');
5221    if (stream._pendingAbortRequest !== undefined) {
5222      stream._pendingAbortRequest._reject(error);
5223      stream._pendingAbortRequest = undefined;
5224    }
5225    WritableStreamDealWithRejection(stream, error);
5226  }
5227  function WritableStreamCloseQueuedOrInFlight(stream) {
5228    if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {
5229      return false;
5230    }
5231    return true;
5232  }
5233  function WritableStreamHasOperationMarkedInFlight(stream) {
5234    if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {
5235      return false;
5236    }
5237    return true;
5238  }
5239  function WritableStreamMarkCloseRequestInFlight(stream) {
5240    assert(stream._inFlightCloseRequest === undefined);
5241    assert(stream._closeRequest !== undefined);
5242    stream._inFlightCloseRequest = stream._closeRequest;
5243    stream._closeRequest = undefined;
5244  }
5245  function WritableStreamMarkFirstWriteRequestInFlight(stream) {
5246    assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');
5247    assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');
5248    stream._inFlightWriteRequest = stream._writeRequests.shift();
5249  }
5250  function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {
5251    assert(stream._state === 'errored', '_stream_.[[state]] is `"errored"`');
5252    if (stream._closeRequest !== undefined) {
5253      assert(stream._inFlightCloseRequest === undefined);
5254      stream._closeRequest._reject(stream._storedError);
5255      stream._closeRequest = undefined;
5256    }
5257    var writer = stream._writer;
5258    if (writer !== undefined) {
5259      defaultWriterClosedPromiseReject(writer, stream._storedError);
5260      writer._closedPromise.catch(function () {});
5261    }
5262  }
5263  function WritableStreamUpdateBackpressure(stream, backpressure) {
5264    assert(stream._state === 'writable');
5265    assert(WritableStreamCloseQueuedOrInFlight(stream) === false);
5266    var writer = stream._writer;
5267    if (writer !== undefined && backpressure !== stream._backpressure) {
5268      if (backpressure === true) {
5269        defaultWriterReadyPromiseReset(writer);
5270      } else {
5271        assert(backpressure === false);
5272        defaultWriterReadyPromiseResolve(writer);
5273      }
5274    }
5275    stream._backpressure = backpressure;
5276  }
5277  var WritableStreamDefaultWriter = function () {
5278    function WritableStreamDefaultWriter(stream) {
5279      _classCallCheck(this, WritableStreamDefaultWriter);
5280      if (IsWritableStream(stream) === false) {
5281        throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');
5282      }
5283      if (IsWritableStreamLocked(stream) === true) {
5284        throw new TypeError('This stream has already been locked for exclusive writing by another writer');
5285      }
5286      this._ownerWritableStream = stream;
5287      stream._writer = this;
5288      var state = stream._state;
5289      if (state === 'writable') {
5290        if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {
5291          defaultWriterReadyPromiseInitialize(this);
5292        } else {
5293          defaultWriterReadyPromiseInitializeAsResolved(this);
5294        }
5295        defaultWriterClosedPromiseInitialize(this);
5296      } else if (state === 'erroring') {
5297        defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);
5298        this._readyPromise.catch(function () {});
5299        defaultWriterClosedPromiseInitialize(this);
5300      } else if (state === 'closed') {
5301        defaultWriterReadyPromiseInitializeAsResolved(this);
5302        defaultWriterClosedPromiseInitializeAsResolved(this);
5303      } else {
5304        assert(state === 'errored', 'state must be errored');
5305        var storedError = stream._storedError;
5306        defaultWriterReadyPromiseInitializeAsRejected(this, storedError);
5307        this._readyPromise.catch(function () {});
5308        defaultWriterClosedPromiseInitializeAsRejected(this, storedError);
5309        this._closedPromise.catch(function () {});
5310      }
5311    }
5312    _createClass(WritableStreamDefaultWriter, [{
5313      key: 'abort',
5314      value: function abort(reason) {
5315        if (IsWritableStreamDefaultWriter(this) === false) {
5316          return Promise.reject(defaultWriterBrandCheckException('abort'));
5317        }
5318        if (this._ownerWritableStream === undefined) {
5319          return Promise.reject(defaultWriterLockException('abort'));
5320        }
5321        return WritableStreamDefaultWriterAbort(this, reason);
5322      }
5323    }, {
5324      key: 'close',
5325      value: function close() {
5326        if (IsWritableStreamDefaultWriter(this) === false) {
5327          return Promise.reject(defaultWriterBrandCheckException('close'));
5328        }
5329        var stream = this._ownerWritableStream;
5330        if (stream === undefined) {
5331          return Promise.reject(defaultWriterLockException('close'));
5332        }
5333        if (WritableStreamCloseQueuedOrInFlight(stream) === true) {
5334          return Promise.reject(new TypeError('cannot close an already-closing stream'));
5335        }
5336        return WritableStreamDefaultWriterClose(this);
5337      }
5338    }, {
5339      key: 'releaseLock',
5340      value: function releaseLock() {
5341        if (IsWritableStreamDefaultWriter(this) === false) {
5342          throw defaultWriterBrandCheckException('releaseLock');
5343        }
5344        var stream = this._ownerWritableStream;
5345        if (stream === undefined) {
5346          return;
5347        }
5348        assert(stream._writer !== undefined);
5349        WritableStreamDefaultWriterRelease(this);
5350      }
5351    }, {
5352      key: 'write',
5353      value: function write(chunk) {
5354        if (IsWritableStreamDefaultWriter(this) === false) {
5355          return Promise.reject(defaultWriterBrandCheckException('write'));
5356        }
5357        if (this._ownerWritableStream === undefined) {
5358          return Promise.reject(defaultWriterLockException('write to'));
5359        }
5360        return WritableStreamDefaultWriterWrite(this, chunk);
5361      }
5362    }, {
5363      key: 'closed',
5364      get: function get() {
5365        if (IsWritableStreamDefaultWriter(this) === false) {
5366          return Promise.reject(defaultWriterBrandCheckException('closed'));
5367        }
5368        return this._closedPromise;
5369      }
5370    }, {
5371      key: 'desiredSize',
5372      get: function get() {
5373        if (IsWritableStreamDefaultWriter(this) === false) {
5374          throw defaultWriterBrandCheckException('desiredSize');
5375        }
5376        if (this._ownerWritableStream === undefined) {
5377          throw defaultWriterLockException('desiredSize');
5378        }
5379        return WritableStreamDefaultWriterGetDesiredSize(this);
5380      }
5381    }, {
5382      key: 'ready',
5383      get: function get() {
5384        if (IsWritableStreamDefaultWriter(this) === false) {
5385          return Promise.reject(defaultWriterBrandCheckException('ready'));
5386        }
5387        return this._readyPromise;
5388      }
5389    }]);
5390    return WritableStreamDefaultWriter;
5391  }();
5392  function IsWritableStreamDefaultWriter(x) {
5393    if (!typeIsObject(x)) {
5394      return false;
5395    }
5396    if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {
5397      return false;
5398    }
5399    return true;
5400  }
5401  function WritableStreamDefaultWriterAbort(writer, reason) {
5402    var stream = writer._ownerWritableStream;
5403    assert(stream !== undefined);
5404    return WritableStreamAbort(stream, reason);
5405  }
5406  function WritableStreamDefaultWriterClose(writer) {
5407    var stream = writer._ownerWritableStream;
5408    assert(stream !== undefined);
5409    var state = stream._state;
5410    if (state === 'closed' || state === 'errored') {
5411      return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));
5412    }
5413    assert(state === 'writable' || state === 'erroring');
5414    assert(WritableStreamCloseQueuedOrInFlight(stream) === false);
5415    var promise = new Promise(function (resolve, reject) {
5416      var closeRequest = {
5417        _resolve: resolve,
5418        _reject: reject
5419      };
5420      stream._closeRequest = closeRequest;
5421    });
5422    if (stream._backpressure === true && state === 'writable') {
5423      defaultWriterReadyPromiseResolve(writer);
5424    }
5425    WritableStreamDefaultControllerClose(stream._writableStreamController);
5426    return promise;
5427  }
5428  function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {
5429    var stream = writer._ownerWritableStream;
5430    assert(stream !== undefined);
5431    var state = stream._state;
5432    if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {
5433      return Promise.resolve();
5434    }
5435    if (state === 'errored') {
5436      return Promise.reject(stream._storedError);
5437    }
5438    assert(state === 'writable' || state === 'erroring');
5439    return WritableStreamDefaultWriterClose(writer);
5440  }
5441  function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {
5442    if (writer._closedPromiseState === 'pending') {
5443      defaultWriterClosedPromiseReject(writer, error);
5444    } else {
5445      defaultWriterClosedPromiseResetToRejected(writer, error);
5446    }
5447    writer._closedPromise.catch(function () {});
5448  }
5449  function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {
5450    if (writer._readyPromiseState === 'pending') {
5451      defaultWriterReadyPromiseReject(writer, error);
5452    } else {
5453      defaultWriterReadyPromiseResetToRejected(writer, error);
5454    }
5455    writer._readyPromise.catch(function () {});
5456  }
5457  function WritableStreamDefaultWriterGetDesiredSize(writer) {
5458    var stream = writer._ownerWritableStream;
5459    var state = stream._state;
5460    if (state === 'errored' || state === 'erroring') {
5461      return null;
5462    }
5463    if (state === 'closed') {
5464      return 0;
5465    }
5466    return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);
5467  }
5468  function WritableStreamDefaultWriterRelease(writer) {
5469    var stream = writer._ownerWritableStream;
5470    assert(stream !== undefined);
5471    assert(stream._writer === writer);
5472    var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\'s closedness');
5473    WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);
5474    WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);
5475    stream._writer = undefined;
5476    writer._ownerWritableStream = undefined;
5477  }
5478  function WritableStreamDefaultWriterWrite(writer, chunk) {
5479    var stream = writer._ownerWritableStream;
5480    assert(stream !== undefined);
5481    var controller = stream._writableStreamController;
5482    var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);
5483    if (stream !== writer._ownerWritableStream) {
5484      return Promise.reject(defaultWriterLockException('write to'));
5485    }
5486    var state = stream._state;
5487    if (state === 'errored') {
5488      return Promise.reject(stream._storedError);
5489    }
5490    if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {
5491      return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));
5492    }
5493    if (state === 'erroring') {
5494      return Promise.reject(stream._storedError);
5495    }
5496    assert(state === 'writable');
5497    var promise = WritableStreamAddWriteRequest(stream);
5498    WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);
5499    return promise;
5500  }
5501  var WritableStreamDefaultController = function () {
5502    function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {
5503      _classCallCheck(this, WritableStreamDefaultController);
5504      if (IsWritableStream(stream) === false) {
5505        throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');
5506      }
5507      if (stream._writableStreamController !== undefined) {
5508        throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');
5509      }
5510      this._controlledWritableStream = stream;
5511      this._underlyingSink = underlyingSink;
5512      this._queue = undefined;
5513      this._queueTotalSize = undefined;
5514      ResetQueue(this);
5515      this._started = false;
5516      var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
5517      this._strategySize = normalizedStrategy.size;
5518      this._strategyHWM = normalizedStrategy.highWaterMark;
5519      var backpressure = WritableStreamDefaultControllerGetBackpressure(this);
5520      WritableStreamUpdateBackpressure(stream, backpressure);
5521    }
5522    _createClass(WritableStreamDefaultController, [{
5523      key: 'error',
5524      value: function error(e) {
5525        if (IsWritableStreamDefaultController(this) === false) {
5526          throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');
5527        }
5528        var state = this._controlledWritableStream._state;
5529        if (state !== 'writable') {
5530          return;
5531        }
5532        WritableStreamDefaultControllerError(this, e);
5533      }
5534    }, {
5535      key: '__abortSteps',
5536      value: function __abortSteps(reason) {
5537        return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);
5538      }
5539    }, {
5540      key: '__errorSteps',
5541      value: function __errorSteps() {
5542        ResetQueue(this);
5543      }
5544    }, {
5545      key: '__startSteps',
5546      value: function __startSteps() {
5547        var _this = this;
5548        var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);
5549        var stream = this._controlledWritableStream;
5550        Promise.resolve(startResult).then(function () {
5551          assert(stream._state === 'writable' || stream._state === 'erroring');
5552          _this._started = true;
5553          WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);
5554        }, function (r) {
5555          assert(stream._state === 'writable' || stream._state === 'erroring');
5556          _this._started = true;
5557          WritableStreamDealWithRejection(stream, r);
5558        }).catch(rethrowAssertionErrorRejection);
5559      }
5560    }]);
5561    return WritableStreamDefaultController;
5562  }();
5563  function WritableStreamDefaultControllerClose(controller) {
5564    EnqueueValueWithSize(controller, 'close', 0);
5565    WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
5566  }
5567  function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {
5568    var strategySize = controller._strategySize;
5569    if (strategySize === undefined) {
5570      return 1;
5571    }
5572    try {
5573      return strategySize(chunk);
5574    } catch (chunkSizeE) {
5575      WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);
5576      return 1;
5577    }
5578  }
5579  function WritableStreamDefaultControllerGetDesiredSize(controller) {
5580    return controller._strategyHWM - controller._queueTotalSize;
5581  }
5582  function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {
5583    var writeRecord = { chunk: chunk };
5584    try {
5585      EnqueueValueWithSize(controller, writeRecord, chunkSize);
5586    } catch (enqueueE) {
5587      WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);
5588      return;
5589    }
5590    var stream = controller._controlledWritableStream;
5591    if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {
5592      var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
5593      WritableStreamUpdateBackpressure(stream, backpressure);
5594    }
5595    WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
5596  }
5597  function IsWritableStreamDefaultController(x) {
5598    if (!typeIsObject(x)) {
5599      return false;
5600    }
5601    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {
5602      return false;
5603    }
5604    return true;
5605  }
5606  function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {
5607    var stream = controller._controlledWritableStream;
5608    if (controller._started === false) {
5609      return;
5610    }
5611    if (stream._inFlightWriteRequest !== undefined) {
5612      return;
5613    }
5614    var state = stream._state;
5615    if (state === 'closed' || state === 'errored') {
5616      return;
5617    }
5618    if (state === 'erroring') {
5619      WritableStreamFinishErroring(stream);
5620      return;
5621    }
5622    if (controller._queue.length === 0) {
5623      return;
5624    }
5625    var writeRecord = PeekQueueValue(controller);
5626    if (writeRecord === 'close') {
5627      WritableStreamDefaultControllerProcessClose(controller);
5628    } else {
5629      WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);
5630    }
5631  }
5632  function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {
5633    if (controller._controlledWritableStream._state === 'writable') {
5634      WritableStreamDefaultControllerError(controller, error);
5635    }
5636  }
5637  function WritableStreamDefaultControllerProcessClose(controller) {
5638    var stream = controller._controlledWritableStream;
5639    WritableStreamMarkCloseRequestInFlight(stream);
5640    DequeueValue(controller);
5641    assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');
5642    var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);
5643    sinkClosePromise.then(function () {
5644      WritableStreamFinishInFlightClose(stream);
5645    }, function (reason) {
5646      WritableStreamFinishInFlightCloseWithError(stream, reason);
5647    }).catch(rethrowAssertionErrorRejection);
5648  }
5649  function WritableStreamDefaultControllerProcessWrite(controller, chunk) {
5650    var stream = controller._controlledWritableStream;
5651    WritableStreamMarkFirstWriteRequestInFlight(stream);
5652    var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);
5653    sinkWritePromise.then(function () {
5654      WritableStreamFinishInFlightWrite(stream);
5655      var state = stream._state;
5656      assert(state === 'writable' || state === 'erroring');
5657      DequeueValue(controller);
5658      if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {
5659        var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
5660        WritableStreamUpdateBackpressure(stream, backpressure);
5661      }
5662      WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
5663    }, function (reason) {
5664      WritableStreamFinishInFlightWriteWithError(stream, reason);
5665    }).catch(rethrowAssertionErrorRejection);
5666  }
5667  function WritableStreamDefaultControllerGetBackpressure(controller) {
5668    var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);
5669    return desiredSize <= 0;
5670  }
5671  function WritableStreamDefaultControllerError(controller, error) {
5672    var stream = controller._controlledWritableStream;
5673    assert(stream._state === 'writable');
5674    WritableStreamStartErroring(stream, error);
5675  }
5676  function streamBrandCheckException(name) {
5677    return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');
5678  }
5679  function defaultWriterBrandCheckException(name) {
5680    return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');
5681  }
5682  function defaultWriterLockException(name) {
5683    return new TypeError('Cannot ' + name + ' a stream using a released writer');
5684  }
5685  function defaultWriterClosedPromiseInitialize(writer) {
5686    writer._closedPromise = new Promise(function (resolve, reject) {
5687      writer._closedPromise_resolve = resolve;
5688      writer._closedPromise_reject = reject;
5689      writer._closedPromiseState = 'pending';
5690    });
5691  }
5692  function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {
5693    writer._closedPromise = Promise.reject(reason);
5694    writer._closedPromise_resolve = undefined;
5695    writer._closedPromise_reject = undefined;
5696    writer._closedPromiseState = 'rejected';
5697  }
5698  function defaultWriterClosedPromiseInitializeAsResolved(writer) {
5699    writer._closedPromise = Promise.resolve(undefined);
5700    writer._closedPromise_resolve = undefined;
5701    writer._closedPromise_reject = undefined;
5702    writer._closedPromiseState = 'resolved';
5703  }
5704  function defaultWriterClosedPromiseReject(writer, reason) {
5705    assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');
5706    assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');
5707    assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');
5708    writer._closedPromise_reject(reason);
5709    writer._closedPromise_resolve = undefined;
5710    writer._closedPromise_reject = undefined;
5711    writer._closedPromiseState = 'rejected';
5712  }
5713  function defaultWriterClosedPromiseResetToRejected(writer, reason) {
5714    assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');
5715    assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');
5716    assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');
5717    writer._closedPromise = Promise.reject(reason);
5718    writer._closedPromiseState = 'rejected';
5719  }
5720  function defaultWriterClosedPromiseResolve(writer) {
5721    assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');
5722    assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');
5723    assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');
5724    writer._closedPromise_resolve(undefined);
5725    writer._closedPromise_resolve = undefined;
5726    writer._closedPromise_reject = undefined;
5727    writer._closedPromiseState = 'resolved';
5728  }
5729  function defaultWriterReadyPromiseInitialize(writer) {
5730    writer._readyPromise = new Promise(function (resolve, reject) {
5731      writer._readyPromise_resolve = resolve;
5732      writer._readyPromise_reject = reject;
5733    });
5734    writer._readyPromiseState = 'pending';
5735  }
5736  function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {
5737    writer._readyPromise = Promise.reject(reason);
5738    writer._readyPromise_resolve = undefined;
5739    writer._readyPromise_reject = undefined;
5740    writer._readyPromiseState = 'rejected';
5741  }
5742  function defaultWriterReadyPromiseInitializeAsResolved(writer) {
5743    writer._readyPromise = Promise.resolve(undefined);
5744    writer._readyPromise_resolve = undefined;
5745    writer._readyPromise_reject = undefined;
5746    writer._readyPromiseState = 'fulfilled';
5747  }
5748  function defaultWriterReadyPromiseReject(writer, reason) {
5749    assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');
5750    assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');
5751    writer._readyPromise_reject(reason);
5752    writer._readyPromise_resolve = undefined;
5753    writer._readyPromise_reject = undefined;
5754    writer._readyPromiseState = 'rejected';
5755  }
5756  function defaultWriterReadyPromiseReset(writer) {
5757    assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');
5758    assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');
5759    writer._readyPromise = new Promise(function (resolve, reject) {
5760      writer._readyPromise_resolve = resolve;
5761      writer._readyPromise_reject = reject;
5762    });
5763    writer._readyPromiseState = 'pending';
5764  }
5765  function defaultWriterReadyPromiseResetToRejected(writer, reason) {
5766    assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');
5767    assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');
5768    writer._readyPromise = Promise.reject(reason);
5769    writer._readyPromiseState = 'rejected';
5770  }
5771  function defaultWriterReadyPromiseResolve(writer) {
5772    assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');
5773    assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');
5774    writer._readyPromise_resolve(undefined);
5775    writer._readyPromise_resolve = undefined;
5776    writer._readyPromise_reject = undefined;
5777    writer._readyPromiseState = 'fulfilled';
5778  }
5779}, function (module, exports, __w_pdfjs_require__) {
5780  "use strict";
5781
5782  var _require = __w_pdfjs_require__(0),
5783      IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;
5784  var _require2 = __w_pdfjs_require__(1),
5785      assert = _require2.assert;
5786  exports.DequeueValue = function (container) {
5787    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');
5788    assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');
5789    var pair = container._queue.shift();
5790    container._queueTotalSize -= pair.size;
5791    if (container._queueTotalSize < 0) {
5792      container._queueTotalSize = 0;
5793    }
5794    return pair.value;
5795  };
5796  exports.EnqueueValueWithSize = function (container, value, size) {
5797    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');
5798    size = Number(size);
5799    if (!IsFiniteNonNegativeNumber(size)) {
5800      throw new RangeError('Size must be a finite, non-NaN, non-negative number.');
5801    }
5802    container._queue.push({
5803      value: value,
5804      size: size
5805    });
5806    container._queueTotalSize += size;
5807  };
5808  exports.PeekQueueValue = function (container) {
5809    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');
5810    assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');
5811    var pair = container._queue[0];
5812    return pair.value;
5813  };
5814  exports.ResetQueue = function (container) {
5815    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');
5816    container._queue = [];
5817    container._queueTotalSize = 0;
5818  };
5819}, function (module, exports, __w_pdfjs_require__) {
5820  "use strict";
5821
5822  var _createClass = function () {
5823    function defineProperties(target, props) {
5824      for (var i = 0; i < props.length; i++) {
5825        var descriptor = props[i];
5826        descriptor.enumerable = descriptor.enumerable || false;
5827        descriptor.configurable = true;
5828        if ("value" in descriptor) descriptor.writable = true;
5829        Object.defineProperty(target, descriptor.key, descriptor);
5830      }
5831    }
5832    return function (Constructor, protoProps, staticProps) {
5833      if (protoProps) defineProperties(Constructor.prototype, protoProps);
5834      if (staticProps) defineProperties(Constructor, staticProps);
5835      return Constructor;
5836    };
5837  }();
5838  function _classCallCheck(instance, Constructor) {
5839    if (!(instance instanceof Constructor)) {
5840      throw new TypeError("Cannot call a class as a function");
5841    }
5842  }
5843  var _require = __w_pdfjs_require__(0),
5844      ArrayBufferCopy = _require.ArrayBufferCopy,
5845      CreateIterResultObject = _require.CreateIterResultObject,
5846      IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,
5847      InvokeOrNoop = _require.InvokeOrNoop,
5848      PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,
5849      TransferArrayBuffer = _require.TransferArrayBuffer,
5850      ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,
5851      ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;
5852  var _require2 = __w_pdfjs_require__(0),
5853      createArrayFromList = _require2.createArrayFromList,
5854      createDataProperty = _require2.createDataProperty,
5855      typeIsObject = _require2.typeIsObject;
5856  var _require3 = __w_pdfjs_require__(1),
5857      assert = _require3.assert,
5858      rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;
5859  var _require4 = __w_pdfjs_require__(3),
5860      DequeueValue = _require4.DequeueValue,
5861      EnqueueValueWithSize = _require4.EnqueueValueWithSize,
5862      ResetQueue = _require4.ResetQueue;
5863  var _require5 = __w_pdfjs_require__(2),
5864      AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,
5865      IsWritableStream = _require5.IsWritableStream,
5866      IsWritableStreamLocked = _require5.IsWritableStreamLocked,
5867      WritableStreamAbort = _require5.WritableStreamAbort,
5868      WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,
5869      WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,
5870      WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,
5871      WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;
5872  var ReadableStream = function () {
5873    function ReadableStream() {
5874      var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5875      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
5876          size = _ref.size,
5877          highWaterMark = _ref.highWaterMark;
5878      _classCallCheck(this, ReadableStream);
5879      this._state = 'readable';
5880      this._reader = undefined;
5881      this._storedError = undefined;
5882      this._disturbed = false;
5883      this._readableStreamController = undefined;
5884      var type = underlyingSource.type;
5885      var typeString = String(type);
5886      if (typeString === 'bytes') {
5887        if (highWaterMark === undefined) {
5888          highWaterMark = 0;
5889        }
5890        this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);
5891      } else if (type === undefined) {
5892        if (highWaterMark === undefined) {
5893          highWaterMark = 1;
5894        }
5895        this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);
5896      } else {
5897        throw new RangeError('Invalid type is specified');
5898      }
5899    }
5900    _createClass(ReadableStream, [{
5901      key: 'cancel',
5902      value: function cancel(reason) {
5903        if (IsReadableStream(this) === false) {
5904          return Promise.reject(streamBrandCheckException('cancel'));
5905        }
5906        if (IsReadableStreamLocked(this) === true) {
5907          return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));
5908        }
5909        return ReadableStreamCancel(this, reason);
5910      }
5911    }, {
5912      key: 'getReader',
5913      value: function getReader() {
5914        var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
5915            mode = _ref2.mode;
5916        if (IsReadableStream(this) === false) {
5917          throw streamBrandCheckException('getReader');
5918        }
5919        if (mode === undefined) {
5920          return AcquireReadableStreamDefaultReader(this);
5921        }
5922        mode = String(mode);
5923        if (mode === 'byob') {
5924          return AcquireReadableStreamBYOBReader(this);
5925        }
5926        throw new RangeError('Invalid mode is specified');
5927      }
5928    }, {
5929      key: 'pipeThrough',
5930      value: function pipeThrough(_ref3, options) {
5931        var writable = _ref3.writable,
5932            readable = _ref3.readable;
5933        var promise = this.pipeTo(writable, options);
5934        ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);
5935        return readable;
5936      }
5937    }, {
5938      key: 'pipeTo',
5939      value: function pipeTo(dest) {
5940        var _this = this;
5941        var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
5942            preventClose = _ref4.preventClose,
5943            preventAbort = _ref4.preventAbort,
5944            preventCancel = _ref4.preventCancel;
5945        if (IsReadableStream(this) === false) {
5946          return Promise.reject(streamBrandCheckException('pipeTo'));
5947        }
5948        if (IsWritableStream(dest) === false) {
5949          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\'s first argument must be a WritableStream'));
5950        }
5951        preventClose = Boolean(preventClose);
5952        preventAbort = Boolean(preventAbort);
5953        preventCancel = Boolean(preventCancel);
5954        if (IsReadableStreamLocked(this) === true) {
5955          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));
5956        }
5957        if (IsWritableStreamLocked(dest) === true) {
5958          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));
5959        }
5960        var reader = AcquireReadableStreamDefaultReader(this);
5961        var writer = AcquireWritableStreamDefaultWriter(dest);
5962        var shuttingDown = false;
5963        var currentWrite = Promise.resolve();
5964        return new Promise(function (resolve, reject) {
5965          function pipeLoop() {
5966            currentWrite = Promise.resolve();
5967            if (shuttingDown === true) {
5968              return Promise.resolve();
5969            }
5970            return writer._readyPromise.then(function () {
5971              return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {
5972                var value = _ref5.value,
5973                    done = _ref5.done;
5974                if (done === true) {
5975                  return;
5976                }
5977                currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {});
5978              });
5979            }).then(pipeLoop);
5980          }
5981          isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {
5982            if (preventAbort === false) {
5983              shutdownWithAction(function () {
5984                return WritableStreamAbort(dest, storedError);
5985              }, true, storedError);
5986            } else {
5987              shutdown(true, storedError);
5988            }
5989          });
5990          isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {
5991            if (preventCancel === false) {
5992              shutdownWithAction(function () {
5993                return ReadableStreamCancel(_this, storedError);
5994              }, true, storedError);
5995            } else {
5996              shutdown(true, storedError);
5997            }
5998          });
5999          isOrBecomesClosed(_this, reader._closedPromise, function () {
6000            if (preventClose === false) {
6001              shutdownWithAction(function () {
6002                return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);
6003              });
6004            } else {
6005              shutdown();
6006            }
6007          });
6008          if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {
6009            var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');
6010            if (preventCancel === false) {
6011              shutdownWithAction(function () {
6012                return ReadableStreamCancel(_this, destClosed);
6013              }, true, destClosed);
6014            } else {
6015              shutdown(true, destClosed);
6016            }
6017          }
6018          pipeLoop().catch(function (err) {
6019            currentWrite = Promise.resolve();
6020            rethrowAssertionErrorRejection(err);
6021          });
6022          function waitForWritesToFinish() {
6023            var oldCurrentWrite = currentWrite;
6024            return currentWrite.then(function () {
6025              return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;
6026            });
6027          }
6028          function isOrBecomesErrored(stream, promise, action) {
6029            if (stream._state === 'errored') {
6030              action(stream._storedError);
6031            } else {
6032              promise.catch(action).catch(rethrowAssertionErrorRejection);
6033            }
6034          }
6035          function isOrBecomesClosed(stream, promise, action) {
6036            if (stream._state === 'closed') {
6037              action();
6038            } else {
6039              promise.then(action).catch(rethrowAssertionErrorRejection);
6040            }
6041          }
6042          function shutdownWithAction(action, originalIsError, originalError) {
6043            if (shuttingDown === true) {
6044              return;
6045            }
6046            shuttingDown = true;
6047            if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {
6048              waitForWritesToFinish().then(doTheRest);
6049            } else {
6050              doTheRest();
6051            }
6052            function doTheRest() {
6053              action().then(function () {
6054                return finalize(originalIsError, originalError);
6055              }, function (newError) {
6056                return finalize(true, newError);
6057              }).catch(rethrowAssertionErrorRejection);
6058            }
6059          }
6060          function shutdown(isError, error) {
6061            if (shuttingDown === true) {
6062              return;
6063            }
6064            shuttingDown = true;
6065            if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {
6066              waitForWritesToFinish().then(function () {
6067                return finalize(isError, error);
6068              }).catch(rethrowAssertionErrorRejection);
6069            } else {
6070              finalize(isError, error);
6071            }
6072          }
6073          function finalize(isError, error) {
6074            WritableStreamDefaultWriterRelease(writer);
6075            ReadableStreamReaderGenericRelease(reader);
6076            if (isError) {
6077              reject(error);
6078            } else {
6079              resolve(undefined);
6080            }
6081          }
6082        });
6083      }
6084    }, {
6085      key: 'tee',
6086      value: function tee() {
6087        if (IsReadableStream(this) === false) {
6088          throw streamBrandCheckException('tee');
6089        }
6090        var branches = ReadableStreamTee(this, false);
6091        return createArrayFromList(branches);
6092      }
6093    }, {
6094      key: 'locked',
6095      get: function get() {
6096        if (IsReadableStream(this) === false) {
6097          throw streamBrandCheckException('locked');
6098        }
6099        return IsReadableStreamLocked(this);
6100      }
6101    }]);
6102    return ReadableStream;
6103  }();
6104  module.exports = {
6105    ReadableStream: ReadableStream,
6106    IsReadableStreamDisturbed: IsReadableStreamDisturbed,
6107    ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,
6108    ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,
6109    ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,
6110    ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize
6111  };
6112  function AcquireReadableStreamBYOBReader(stream) {
6113    return new ReadableStreamBYOBReader(stream);
6114  }
6115  function AcquireReadableStreamDefaultReader(stream) {
6116    return new ReadableStreamDefaultReader(stream);
6117  }
6118  function IsReadableStream(x) {
6119    if (!typeIsObject(x)) {
6120      return false;
6121    }
6122    if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {
6123      return false;
6124    }
6125    return true;
6126  }
6127  function IsReadableStreamDisturbed(stream) {
6128    assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');
6129    return stream._disturbed;
6130  }
6131  function IsReadableStreamLocked(stream) {
6132    assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');
6133    if (stream._reader === undefined) {
6134      return false;
6135    }
6136    return true;
6137  }
6138  function ReadableStreamTee(stream, cloneForBranch2) {
6139    assert(IsReadableStream(stream) === true);
6140    assert(typeof cloneForBranch2 === 'boolean');
6141    var reader = AcquireReadableStreamDefaultReader(stream);
6142    var teeState = {
6143      closedOrErrored: false,
6144      canceled1: false,
6145      canceled2: false,
6146      reason1: undefined,
6147      reason2: undefined
6148    };
6149    teeState.promise = new Promise(function (resolve) {
6150      teeState._resolve = resolve;
6151    });
6152    var pull = create_ReadableStreamTeePullFunction();
6153    pull._reader = reader;
6154    pull._teeState = teeState;
6155    pull._cloneForBranch2 = cloneForBranch2;
6156    var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();
6157    cancel1._stream = stream;
6158    cancel1._teeState = teeState;
6159    var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();
6160    cancel2._stream = stream;
6161    cancel2._teeState = teeState;
6162    var underlyingSource1 = Object.create(Object.prototype);
6163    createDataProperty(underlyingSource1, 'pull', pull);
6164    createDataProperty(underlyingSource1, 'cancel', cancel1);
6165    var branch1Stream = new ReadableStream(underlyingSource1);
6166    var underlyingSource2 = Object.create(Object.prototype);
6167    createDataProperty(underlyingSource2, 'pull', pull);
6168    createDataProperty(underlyingSource2, 'cancel', cancel2);
6169    var branch2Stream = new ReadableStream(underlyingSource2);
6170    pull._branch1 = branch1Stream._readableStreamController;
6171    pull._branch2 = branch2Stream._readableStreamController;
6172    reader._closedPromise.catch(function (r) {
6173      if (teeState.closedOrErrored === true) {
6174        return;
6175      }
6176      ReadableStreamDefaultControllerError(pull._branch1, r);
6177      ReadableStreamDefaultControllerError(pull._branch2, r);
6178      teeState.closedOrErrored = true;
6179    });
6180    return [branch1Stream, branch2Stream];
6181  }
6182  function create_ReadableStreamTeePullFunction() {
6183    function f() {
6184      var reader = f._reader,
6185          branch1 = f._branch1,
6186          branch2 = f._branch2,
6187          teeState = f._teeState;
6188      return ReadableStreamDefaultReaderRead(reader).then(function (result) {
6189        assert(typeIsObject(result));
6190        var value = result.value;
6191        var done = result.done;
6192        assert(typeof done === 'boolean');
6193        if (done === true && teeState.closedOrErrored === false) {
6194          if (teeState.canceled1 === false) {
6195            ReadableStreamDefaultControllerClose(branch1);
6196          }
6197          if (teeState.canceled2 === false) {
6198            ReadableStreamDefaultControllerClose(branch2);
6199          }
6200          teeState.closedOrErrored = true;
6201        }
6202        if (teeState.closedOrErrored === true) {
6203          return;
6204        }
6205        var value1 = value;
6206        var value2 = value;
6207        if (teeState.canceled1 === false) {
6208          ReadableStreamDefaultControllerEnqueue(branch1, value1);
6209        }
6210        if (teeState.canceled2 === false) {
6211          ReadableStreamDefaultControllerEnqueue(branch2, value2);
6212        }
6213      });
6214    }
6215    return f;
6216  }
6217  function create_ReadableStreamTeeBranch1CancelFunction() {
6218    function f(reason) {
6219      var stream = f._stream,
6220          teeState = f._teeState;
6221      teeState.canceled1 = true;
6222      teeState.reason1 = reason;
6223      if (teeState.canceled2 === true) {
6224        var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);
6225        var cancelResult = ReadableStreamCancel(stream, compositeReason);
6226        teeState._resolve(cancelResult);
6227      }
6228      return teeState.promise;
6229    }
6230    return f;
6231  }
6232  function create_ReadableStreamTeeBranch2CancelFunction() {
6233    function f(reason) {
6234      var stream = f._stream,
6235          teeState = f._teeState;
6236      teeState.canceled2 = true;
6237      teeState.reason2 = reason;
6238      if (teeState.canceled1 === true) {
6239        var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);
6240        var cancelResult = ReadableStreamCancel(stream, compositeReason);
6241        teeState._resolve(cancelResult);
6242      }
6243      return teeState.promise;
6244    }
6245    return f;
6246  }
6247  function ReadableStreamAddReadIntoRequest(stream) {
6248    assert(IsReadableStreamBYOBReader(stream._reader) === true);
6249    assert(stream._state === 'readable' || stream._state === 'closed');
6250    var promise = new Promise(function (resolve, reject) {
6251      var readIntoRequest = {
6252        _resolve: resolve,
6253        _reject: reject
6254      };
6255      stream._reader._readIntoRequests.push(readIntoRequest);
6256    });
6257    return promise;
6258  }
6259  function ReadableStreamAddReadRequest(stream) {
6260    assert(IsReadableStreamDefaultReader(stream._reader) === true);
6261    assert(stream._state === 'readable');
6262    var promise = new Promise(function (resolve, reject) {
6263      var readRequest = {
6264        _resolve: resolve,
6265        _reject: reject
6266      };
6267      stream._reader._readRequests.push(readRequest);
6268    });
6269    return promise;
6270  }
6271  function ReadableStreamCancel(stream, reason) {
6272    stream._disturbed = true;
6273    if (stream._state === 'closed') {
6274      return Promise.resolve(undefined);
6275    }
6276    if (stream._state === 'errored') {
6277      return Promise.reject(stream._storedError);
6278    }
6279    ReadableStreamClose(stream);
6280    var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);
6281    return sourceCancelPromise.then(function () {
6282      return undefined;
6283    });
6284  }
6285  function ReadableStreamClose(stream) {
6286    assert(stream._state === 'readable');
6287    stream._state = 'closed';
6288    var reader = stream._reader;
6289    if (reader === undefined) {
6290      return undefined;
6291    }
6292    if (IsReadableStreamDefaultReader(reader) === true) {
6293      for (var i = 0; i < reader._readRequests.length; i++) {
6294        var _resolve = reader._readRequests[i]._resolve;
6295        _resolve(CreateIterResultObject(undefined, true));
6296      }
6297      reader._readRequests = [];
6298    }
6299    defaultReaderClosedPromiseResolve(reader);
6300    return undefined;
6301  }
6302  function ReadableStreamError(stream, e) {
6303    assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');
6304    assert(stream._state === 'readable', 'state must be readable');
6305    stream._state = 'errored';
6306    stream._storedError = e;
6307    var reader = stream._reader;
6308    if (reader === undefined) {
6309      return undefined;
6310    }
6311    if (IsReadableStreamDefaultReader(reader) === true) {
6312      for (var i = 0; i < reader._readRequests.length; i++) {
6313        var readRequest = reader._readRequests[i];
6314        readRequest._reject(e);
6315      }
6316      reader._readRequests = [];
6317    } else {
6318      assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');
6319      for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {
6320        var readIntoRequest = reader._readIntoRequests[_i];
6321        readIntoRequest._reject(e);
6322      }
6323      reader._readIntoRequests = [];
6324    }
6325    defaultReaderClosedPromiseReject(reader, e);
6326    reader._closedPromise.catch(function () {});
6327  }
6328  function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {
6329    var reader = stream._reader;
6330    assert(reader._readIntoRequests.length > 0);
6331    var readIntoRequest = reader._readIntoRequests.shift();
6332    readIntoRequest._resolve(CreateIterResultObject(chunk, done));
6333  }
6334  function ReadableStreamFulfillReadRequest(stream, chunk, done) {
6335    var reader = stream._reader;
6336    assert(reader._readRequests.length > 0);
6337    var readRequest = reader._readRequests.shift();
6338    readRequest._resolve(CreateIterResultObject(chunk, done));
6339  }
6340  function ReadableStreamGetNumReadIntoRequests(stream) {
6341    return stream._reader._readIntoRequests.length;
6342  }
6343  function ReadableStreamGetNumReadRequests(stream) {
6344    return stream._reader._readRequests.length;
6345  }
6346  function ReadableStreamHasBYOBReader(stream) {
6347    var reader = stream._reader;
6348    if (reader === undefined) {
6349      return false;
6350    }
6351    if (IsReadableStreamBYOBReader(reader) === false) {
6352      return false;
6353    }
6354    return true;
6355  }
6356  function ReadableStreamHasDefaultReader(stream) {
6357    var reader = stream._reader;
6358    if (reader === undefined) {
6359      return false;
6360    }
6361    if (IsReadableStreamDefaultReader(reader) === false) {
6362      return false;
6363    }
6364    return true;
6365  }
6366  var ReadableStreamDefaultReader = function () {
6367    function ReadableStreamDefaultReader(stream) {
6368      _classCallCheck(this, ReadableStreamDefaultReader);
6369      if (IsReadableStream(stream) === false) {
6370        throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');
6371      }
6372      if (IsReadableStreamLocked(stream) === true) {
6373        throw new TypeError('This stream has already been locked for exclusive reading by another reader');
6374      }
6375      ReadableStreamReaderGenericInitialize(this, stream);
6376      this._readRequests = [];
6377    }
6378    _createClass(ReadableStreamDefaultReader, [{
6379      key: 'cancel',
6380      value: function cancel(reason) {
6381        if (IsReadableStreamDefaultReader(this) === false) {
6382          return Promise.reject(defaultReaderBrandCheckException('cancel'));
6383        }
6384        if (this._ownerReadableStream === undefined) {
6385          return Promise.reject(readerLockException('cancel'));
6386        }
6387        return ReadableStreamReaderGenericCancel(this, reason);
6388      }
6389    }, {
6390      key: 'read',
6391      value: function read() {
6392        if (IsReadableStreamDefaultReader(this) === false) {
6393          return Promise.reject(defaultReaderBrandCheckException('read'));
6394        }
6395        if (this._ownerReadableStream === undefined) {
6396          return Promise.reject(readerLockException('read from'));
6397        }
6398        return ReadableStreamDefaultReaderRead(this);
6399      }
6400    }, {
6401      key: 'releaseLock',
6402      value: function releaseLock() {
6403        if (IsReadableStreamDefaultReader(this) === false) {
6404          throw defaultReaderBrandCheckException('releaseLock');
6405        }
6406        if (this._ownerReadableStream === undefined) {
6407          return;
6408        }
6409        if (this._readRequests.length > 0) {
6410          throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');
6411        }
6412        ReadableStreamReaderGenericRelease(this);
6413      }
6414    }, {
6415      key: 'closed',
6416      get: function get() {
6417        if (IsReadableStreamDefaultReader(this) === false) {
6418          return Promise.reject(defaultReaderBrandCheckException('closed'));
6419        }
6420        return this._closedPromise;
6421      }
6422    }]);
6423    return ReadableStreamDefaultReader;
6424  }();
6425  var ReadableStreamBYOBReader = function () {
6426    function ReadableStreamBYOBReader(stream) {
6427      _classCallCheck(this, ReadableStreamBYOBReader);
6428      if (!IsReadableStream(stream)) {
6429        throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');
6430      }
6431      if (IsReadableByteStreamController(stream._readableStreamController) === false) {
6432        throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');
6433      }
6434      if (IsReadableStreamLocked(stream)) {
6435        throw new TypeError('This stream has already been locked for exclusive reading by another reader');
6436      }
6437      ReadableStreamReaderGenericInitialize(this, stream);
6438      this._readIntoRequests = [];
6439    }
6440    _createClass(ReadableStreamBYOBReader, [{
6441      key: 'cancel',
6442      value: function cancel(reason) {
6443        if (!IsReadableStreamBYOBReader(this)) {
6444          return Promise.reject(byobReaderBrandCheckException('cancel'));
6445        }
6446        if (this._ownerReadableStream === undefined) {
6447          return Promise.reject(readerLockException('cancel'));
6448        }
6449        return ReadableStreamReaderGenericCancel(this, reason);
6450      }
6451    }, {
6452      key: 'read',
6453      value: function read(view) {
6454        if (!IsReadableStreamBYOBReader(this)) {
6455          return Promise.reject(byobReaderBrandCheckException('read'));
6456        }
6457        if (this._ownerReadableStream === undefined) {
6458          return Promise.reject(readerLockException('read from'));
6459        }
6460        if (!ArrayBuffer.isView(view)) {
6461          return Promise.reject(new TypeError('view must be an array buffer view'));
6462        }
6463        if (view.byteLength === 0) {
6464          return Promise.reject(new TypeError('view must have non-zero byteLength'));
6465        }
6466        return ReadableStreamBYOBReaderRead(this, view);
6467      }
6468    }, {
6469      key: 'releaseLock',
6470      value: function releaseLock() {
6471        if (!IsReadableStreamBYOBReader(this)) {
6472          throw byobReaderBrandCheckException('releaseLock');
6473        }
6474        if (this._ownerReadableStream === undefined) {
6475          return;
6476        }
6477        if (this._readIntoRequests.length > 0) {
6478          throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');
6479        }
6480        ReadableStreamReaderGenericRelease(this);
6481      }
6482    }, {
6483      key: 'closed',
6484      get: function get() {
6485        if (!IsReadableStreamBYOBReader(this)) {
6486          return Promise.reject(byobReaderBrandCheckException('closed'));
6487        }
6488        return this._closedPromise;
6489      }
6490    }]);
6491    return ReadableStreamBYOBReader;
6492  }();
6493  function IsReadableStreamBYOBReader(x) {
6494    if (!typeIsObject(x)) {
6495      return false;
6496    }
6497    if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {
6498      return false;
6499    }
6500    return true;
6501  }
6502  function IsReadableStreamDefaultReader(x) {
6503    if (!typeIsObject(x)) {
6504      return false;
6505    }
6506    if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {
6507      return false;
6508    }
6509    return true;
6510  }
6511  function ReadableStreamReaderGenericInitialize(reader, stream) {
6512    reader._ownerReadableStream = stream;
6513    stream._reader = reader;
6514    if (stream._state === 'readable') {
6515      defaultReaderClosedPromiseInitialize(reader);
6516    } else if (stream._state === 'closed') {
6517      defaultReaderClosedPromiseInitializeAsResolved(reader);
6518    } else {
6519      assert(stream._state === 'errored', 'state must be errored');
6520      defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);
6521      reader._closedPromise.catch(function () {});
6522    }
6523  }
6524  function ReadableStreamReaderGenericCancel(reader, reason) {
6525    var stream = reader._ownerReadableStream;
6526    assert(stream !== undefined);
6527    return ReadableStreamCancel(stream, reason);
6528  }
6529  function ReadableStreamReaderGenericRelease(reader) {
6530    assert(reader._ownerReadableStream !== undefined);
6531    assert(reader._ownerReadableStream._reader === reader);
6532    if (reader._ownerReadableStream._state === 'readable') {
6533      defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness'));
6534    } else {
6535      defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness'));
6536    }
6537    reader._closedPromise.catch(function () {});
6538    reader._ownerReadableStream._reader = undefined;
6539    reader._ownerReadableStream = undefined;
6540  }
6541  function ReadableStreamBYOBReaderRead(reader, view) {
6542    var stream = reader._ownerReadableStream;
6543    assert(stream !== undefined);
6544    stream._disturbed = true;
6545    if (stream._state === 'errored') {
6546      return Promise.reject(stream._storedError);
6547    }
6548    return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);
6549  }
6550  function ReadableStreamDefaultReaderRead(reader) {
6551    var stream = reader._ownerReadableStream;
6552    assert(stream !== undefined);
6553    stream._disturbed = true;
6554    if (stream._state === 'closed') {
6555      return Promise.resolve(CreateIterResultObject(undefined, true));
6556    }
6557    if (stream._state === 'errored') {
6558      return Promise.reject(stream._storedError);
6559    }
6560    assert(stream._state === 'readable');
6561    return stream._readableStreamController.__pullSteps();
6562  }
6563  var ReadableStreamDefaultController = function () {
6564    function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {
6565      _classCallCheck(this, ReadableStreamDefaultController);
6566      if (IsReadableStream(stream) === false) {
6567        throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');
6568      }
6569      if (stream._readableStreamController !== undefined) {
6570        throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');
6571      }
6572      this._controlledReadableStream = stream;
6573      this._underlyingSource = underlyingSource;
6574      this._queue = undefined;
6575      this._queueTotalSize = undefined;
6576      ResetQueue(this);
6577      this._started = false;
6578      this._closeRequested = false;
6579      this._pullAgain = false;
6580      this._pulling = false;
6581      var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
6582      this._strategySize = normalizedStrategy.size;
6583      this._strategyHWM = normalizedStrategy.highWaterMark;
6584      var controller = this;
6585      var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);
6586      Promise.resolve(startResult).then(function () {
6587        controller._started = true;
6588        assert(controller._pulling === false);
6589        assert(controller._pullAgain === false);
6590        ReadableStreamDefaultControllerCallPullIfNeeded(controller);
6591      }, function (r) {
6592        ReadableStreamDefaultControllerErrorIfNeeded(controller, r);
6593      }).catch(rethrowAssertionErrorRejection);
6594    }
6595    _createClass(ReadableStreamDefaultController, [{
6596      key: 'close',
6597      value: function close() {
6598        if (IsReadableStreamDefaultController(this) === false) {
6599          throw defaultControllerBrandCheckException('close');
6600        }
6601        if (this._closeRequested === true) {
6602          throw new TypeError('The stream has already been closed; do not close it again!');
6603        }
6604        var state = this._controlledReadableStream._state;
6605        if (state !== 'readable') {
6606          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');
6607        }
6608        ReadableStreamDefaultControllerClose(this);
6609      }
6610    }, {
6611      key: 'enqueue',
6612      value: function enqueue(chunk) {
6613        if (IsReadableStreamDefaultController(this) === false) {
6614          throw defaultControllerBrandCheckException('enqueue');
6615        }
6616        if (this._closeRequested === true) {
6617          throw new TypeError('stream is closed or draining');
6618        }
6619        var state = this._controlledReadableStream._state;
6620        if (state !== 'readable') {
6621          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');
6622        }
6623        return ReadableStreamDefaultControllerEnqueue(this, chunk);
6624      }
6625    }, {
6626      key: 'error',
6627      value: function error(e) {
6628        if (IsReadableStreamDefaultController(this) === false) {
6629          throw defaultControllerBrandCheckException('error');
6630        }
6631        var stream = this._controlledReadableStream;
6632        if (stream._state !== 'readable') {
6633          throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');
6634        }
6635        ReadableStreamDefaultControllerError(this, e);
6636      }
6637    }, {
6638      key: '__cancelSteps',
6639      value: function __cancelSteps(reason) {
6640        ResetQueue(this);
6641        return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);
6642      }
6643    }, {
6644      key: '__pullSteps',
6645      value: function __pullSteps() {
6646        var stream = this._controlledReadableStream;
6647        if (this._queue.length > 0) {
6648          var chunk = DequeueValue(this);
6649          if (this._closeRequested === true && this._queue.length === 0) {
6650            ReadableStreamClose(stream);
6651          } else {
6652            ReadableStreamDefaultControllerCallPullIfNeeded(this);
6653          }
6654          return Promise.resolve(CreateIterResultObject(chunk, false));
6655        }
6656        var pendingPromise = ReadableStreamAddReadRequest(stream);
6657        ReadableStreamDefaultControllerCallPullIfNeeded(this);
6658        return pendingPromise;
6659      }
6660    }, {
6661      key: 'desiredSize',
6662      get: function get() {
6663        if (IsReadableStreamDefaultController(this) === false) {
6664          throw defaultControllerBrandCheckException('desiredSize');
6665        }
6666        return ReadableStreamDefaultControllerGetDesiredSize(this);
6667      }
6668    }]);
6669    return ReadableStreamDefaultController;
6670  }();
6671  function IsReadableStreamDefaultController(x) {
6672    if (!typeIsObject(x)) {
6673      return false;
6674    }
6675    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {
6676      return false;
6677    }
6678    return true;
6679  }
6680  function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {
6681    var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);
6682    if (shouldPull === false) {
6683      return undefined;
6684    }
6685    if (controller._pulling === true) {
6686      controller._pullAgain = true;
6687      return undefined;
6688    }
6689    assert(controller._pullAgain === false);
6690    controller._pulling = true;
6691    var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);
6692    pullPromise.then(function () {
6693      controller._pulling = false;
6694      if (controller._pullAgain === true) {
6695        controller._pullAgain = false;
6696        return ReadableStreamDefaultControllerCallPullIfNeeded(controller);
6697      }
6698      return undefined;
6699    }, function (e) {
6700      ReadableStreamDefaultControllerErrorIfNeeded(controller, e);
6701    }).catch(rethrowAssertionErrorRejection);
6702    return undefined;
6703  }
6704  function ReadableStreamDefaultControllerShouldCallPull(controller) {
6705    var stream = controller._controlledReadableStream;
6706    if (stream._state === 'closed' || stream._state === 'errored') {
6707      return false;
6708    }
6709    if (controller._closeRequested === true) {
6710      return false;
6711    }
6712    if (controller._started === false) {
6713      return false;
6714    }
6715    if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
6716      return true;
6717    }
6718    var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);
6719    if (desiredSize > 0) {
6720      return true;
6721    }
6722    return false;
6723  }
6724  function ReadableStreamDefaultControllerClose(controller) {
6725    var stream = controller._controlledReadableStream;
6726    assert(controller._closeRequested === false);
6727    assert(stream._state === 'readable');
6728    controller._closeRequested = true;
6729    if (controller._queue.length === 0) {
6730      ReadableStreamClose(stream);
6731    }
6732  }
6733  function ReadableStreamDefaultControllerEnqueue(controller, chunk) {
6734    var stream = controller._controlledReadableStream;
6735    assert(controller._closeRequested === false);
6736    assert(stream._state === 'readable');
6737    if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
6738      ReadableStreamFulfillReadRequest(stream, chunk, false);
6739    } else {
6740      var chunkSize = 1;
6741      if (controller._strategySize !== undefined) {
6742        var strategySize = controller._strategySize;
6743        try {
6744          chunkSize = strategySize(chunk);
6745        } catch (chunkSizeE) {
6746          ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);
6747          throw chunkSizeE;
6748        }
6749      }
6750      try {
6751        EnqueueValueWithSize(controller, chunk, chunkSize);
6752      } catch (enqueueE) {
6753        ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);
6754        throw enqueueE;
6755      }
6756    }
6757    ReadableStreamDefaultControllerCallPullIfNeeded(controller);
6758    return undefined;
6759  }
6760  function ReadableStreamDefaultControllerError(controller, e) {
6761    var stream = controller._controlledReadableStream;
6762    assert(stream._state === 'readable');
6763    ResetQueue(controller);
6764    ReadableStreamError(stream, e);
6765  }
6766  function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {
6767    if (controller._controlledReadableStream._state === 'readable') {
6768      ReadableStreamDefaultControllerError(controller, e);
6769    }
6770  }
6771  function ReadableStreamDefaultControllerGetDesiredSize(controller) {
6772    var stream = controller._controlledReadableStream;
6773    var state = stream._state;
6774    if (state === 'errored') {
6775      return null;
6776    }
6777    if (state === 'closed') {
6778      return 0;
6779    }
6780    return controller._strategyHWM - controller._queueTotalSize;
6781  }
6782  var ReadableStreamBYOBRequest = function () {
6783    function ReadableStreamBYOBRequest(controller, view) {
6784      _classCallCheck(this, ReadableStreamBYOBRequest);
6785      this._associatedReadableByteStreamController = controller;
6786      this._view = view;
6787    }
6788    _createClass(ReadableStreamBYOBRequest, [{
6789      key: 'respond',
6790      value: function respond(bytesWritten) {
6791        if (IsReadableStreamBYOBRequest(this) === false) {
6792          throw byobRequestBrandCheckException('respond');
6793        }
6794        if (this._associatedReadableByteStreamController === undefined) {
6795          throw new TypeError('This BYOB request has been invalidated');
6796        }
6797        ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);
6798      }
6799    }, {
6800      key: 'respondWithNewView',
6801      value: function respondWithNewView(view) {
6802        if (IsReadableStreamBYOBRequest(this) === false) {
6803          throw byobRequestBrandCheckException('respond');
6804        }
6805        if (this._associatedReadableByteStreamController === undefined) {
6806          throw new TypeError('This BYOB request has been invalidated');
6807        }
6808        if (!ArrayBuffer.isView(view)) {
6809          throw new TypeError('You can only respond with array buffer views');
6810        }
6811        ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);
6812      }
6813    }, {
6814      key: 'view',
6815      get: function get() {
6816        return this._view;
6817      }
6818    }]);
6819    return ReadableStreamBYOBRequest;
6820  }();
6821  var ReadableByteStreamController = function () {
6822    function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {
6823      _classCallCheck(this, ReadableByteStreamController);
6824      if (IsReadableStream(stream) === false) {
6825        throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');
6826      }
6827      if (stream._readableStreamController !== undefined) {
6828        throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');
6829      }
6830      this._controlledReadableStream = stream;
6831      this._underlyingByteSource = underlyingByteSource;
6832      this._pullAgain = false;
6833      this._pulling = false;
6834      ReadableByteStreamControllerClearPendingPullIntos(this);
6835      this._queue = this._queueTotalSize = undefined;
6836      ResetQueue(this);
6837      this._closeRequested = false;
6838      this._started = false;
6839      this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);
6840      var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;
6841      if (autoAllocateChunkSize !== undefined) {
6842        if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {
6843          throw new RangeError('autoAllocateChunkSize must be a positive integer');
6844        }
6845      }
6846      this._autoAllocateChunkSize = autoAllocateChunkSize;
6847      this._pendingPullIntos = [];
6848      var controller = this;
6849      var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);
6850      Promise.resolve(startResult).then(function () {
6851        controller._started = true;
6852        assert(controller._pulling === false);
6853        assert(controller._pullAgain === false);
6854        ReadableByteStreamControllerCallPullIfNeeded(controller);
6855      }, function (r) {
6856        if (stream._state === 'readable') {
6857          ReadableByteStreamControllerError(controller, r);
6858        }
6859      }).catch(rethrowAssertionErrorRejection);
6860    }
6861    _createClass(ReadableByteStreamController, [{
6862      key: 'close',
6863      value: function close() {
6864        if (IsReadableByteStreamController(this) === false) {
6865          throw byteStreamControllerBrandCheckException('close');
6866        }
6867        if (this._closeRequested === true) {
6868          throw new TypeError('The stream has already been closed; do not close it again!');
6869        }
6870        var state = this._controlledReadableStream._state;
6871        if (state !== 'readable') {
6872          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');
6873        }
6874        ReadableByteStreamControllerClose(this);
6875      }
6876    }, {
6877      key: 'enqueue',
6878      value: function enqueue(chunk) {
6879        if (IsReadableByteStreamController(this) === false) {
6880          throw byteStreamControllerBrandCheckException('enqueue');
6881        }
6882        if (this._closeRequested === true) {
6883          throw new TypeError('stream is closed or draining');
6884        }
6885        var state = this._controlledReadableStream._state;
6886        if (state !== 'readable') {
6887          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');
6888        }
6889        if (!ArrayBuffer.isView(chunk)) {
6890          throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');
6891        }
6892        ReadableByteStreamControllerEnqueue(this, chunk);
6893      }
6894    }, {
6895      key: 'error',
6896      value: function error(e) {
6897        if (IsReadableByteStreamController(this) === false) {
6898          throw byteStreamControllerBrandCheckException('error');
6899        }
6900        var stream = this._controlledReadableStream;
6901        if (stream._state !== 'readable') {
6902          throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');
6903        }
6904        ReadableByteStreamControllerError(this, e);
6905      }
6906    }, {
6907      key: '__cancelSteps',
6908      value: function __cancelSteps(reason) {
6909        if (this._pendingPullIntos.length > 0) {
6910          var firstDescriptor = this._pendingPullIntos[0];
6911          firstDescriptor.bytesFilled = 0;
6912        }
6913        ResetQueue(this);
6914        return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);
6915      }
6916    }, {
6917      key: '__pullSteps',
6918      value: function __pullSteps() {
6919        var stream = this._controlledReadableStream;
6920        assert(ReadableStreamHasDefaultReader(stream) === true);
6921        if (this._queueTotalSize > 0) {
6922          assert(ReadableStreamGetNumReadRequests(stream) === 0);
6923          var entry = this._queue.shift();
6924          this._queueTotalSize -= entry.byteLength;
6925          ReadableByteStreamControllerHandleQueueDrain(this);
6926          var view = void 0;
6927          try {
6928            view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);
6929          } catch (viewE) {
6930            return Promise.reject(viewE);
6931          }
6932          return Promise.resolve(CreateIterResultObject(view, false));
6933        }
6934        var autoAllocateChunkSize = this._autoAllocateChunkSize;
6935        if (autoAllocateChunkSize !== undefined) {
6936          var buffer = void 0;
6937          try {
6938            buffer = new ArrayBuffer(autoAllocateChunkSize);
6939          } catch (bufferE) {
6940            return Promise.reject(bufferE);
6941          }
6942          var pullIntoDescriptor = {
6943            buffer: buffer,
6944            byteOffset: 0,
6945            byteLength: autoAllocateChunkSize,
6946            bytesFilled: 0,
6947            elementSize: 1,
6948            ctor: Uint8Array,
6949            readerType: 'default'
6950          };
6951          this._pendingPullIntos.push(pullIntoDescriptor);
6952        }
6953        var promise = ReadableStreamAddReadRequest(stream);
6954        ReadableByteStreamControllerCallPullIfNeeded(this);
6955        return promise;
6956      }
6957    }, {
6958      key: 'byobRequest',
6959      get: function get() {
6960        if (IsReadableByteStreamController(this) === false) {
6961          throw byteStreamControllerBrandCheckException('byobRequest');
6962        }
6963        if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {
6964          var firstDescriptor = this._pendingPullIntos[0];
6965          var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);
6966          this._byobRequest = new ReadableStreamBYOBRequest(this, view);
6967        }
6968        return this._byobRequest;
6969      }
6970    }, {
6971      key: 'desiredSize',
6972      get: function get() {
6973        if (IsReadableByteStreamController(this) === false) {
6974          throw byteStreamControllerBrandCheckException('desiredSize');
6975        }
6976        return ReadableByteStreamControllerGetDesiredSize(this);
6977      }
6978    }]);
6979    return ReadableByteStreamController;
6980  }();
6981  function IsReadableByteStreamController(x) {
6982    if (!typeIsObject(x)) {
6983      return false;
6984    }
6985    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {
6986      return false;
6987    }
6988    return true;
6989  }
6990  function IsReadableStreamBYOBRequest(x) {
6991    if (!typeIsObject(x)) {
6992      return false;
6993    }
6994    if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {
6995      return false;
6996    }
6997    return true;
6998  }
6999  function ReadableByteStreamControllerCallPullIfNeeded(controller) {
7000    var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);
7001    if (shouldPull === false) {
7002      return undefined;
7003    }
7004    if (controller._pulling === true) {
7005      controller._pullAgain = true;
7006      return undefined;
7007    }
7008    assert(controller._pullAgain === false);
7009    controller._pulling = true;
7010    var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);
7011    pullPromise.then(function () {
7012      controller._pulling = false;
7013      if (controller._pullAgain === true) {
7014        controller._pullAgain = false;
7015        ReadableByteStreamControllerCallPullIfNeeded(controller);
7016      }
7017    }, function (e) {
7018      if (controller._controlledReadableStream._state === 'readable') {
7019        ReadableByteStreamControllerError(controller, e);
7020      }
7021    }).catch(rethrowAssertionErrorRejection);
7022    return undefined;
7023  }
7024  function ReadableByteStreamControllerClearPendingPullIntos(controller) {
7025    ReadableByteStreamControllerInvalidateBYOBRequest(controller);
7026    controller._pendingPullIntos = [];
7027  }
7028  function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {
7029    assert(stream._state !== 'errored', 'state must not be errored');
7030    var done = false;
7031    if (stream._state === 'closed') {
7032      assert(pullIntoDescriptor.bytesFilled === 0);
7033      done = true;
7034    }
7035    var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
7036    if (pullIntoDescriptor.readerType === 'default') {
7037      ReadableStreamFulfillReadRequest(stream, filledView, done);
7038    } else {
7039      assert(pullIntoDescriptor.readerType === 'byob');
7040      ReadableStreamFulfillReadIntoRequest(stream, filledView, done);
7041    }
7042  }
7043  function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {
7044    var bytesFilled = pullIntoDescriptor.bytesFilled;
7045    var elementSize = pullIntoDescriptor.elementSize;
7046    assert(bytesFilled <= pullIntoDescriptor.byteLength);
7047    assert(bytesFilled % elementSize === 0);
7048    return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);
7049  }
7050  function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {
7051    controller._queue.push({
7052      buffer: buffer,
7053      byteOffset: byteOffset,
7054      byteLength: byteLength
7055    });
7056    controller._queueTotalSize += byteLength;
7057  }
7058  function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {
7059    var elementSize = pullIntoDescriptor.elementSize;
7060    var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;
7061    var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);
7062    var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;
7063    var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;
7064    var totalBytesToCopyRemaining = maxBytesToCopy;
7065    var ready = false;
7066    if (maxAlignedBytes > currentAlignedBytes) {
7067      totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;
7068      ready = true;
7069    }
7070    var queue = controller._queue;
7071    while (totalBytesToCopyRemaining > 0) {
7072      var headOfQueue = queue[0];
7073      var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);
7074      var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
7075      ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);
7076      if (headOfQueue.byteLength === bytesToCopy) {
7077        queue.shift();
7078      } else {
7079        headOfQueue.byteOffset += bytesToCopy;
7080        headOfQueue.byteLength -= bytesToCopy;
7081      }
7082      controller._queueTotalSize -= bytesToCopy;
7083      ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);
7084      totalBytesToCopyRemaining -= bytesToCopy;
7085    }
7086    if (ready === false) {
7087      assert(controller._queueTotalSize === 0, 'queue must be empty');
7088      assert(pullIntoDescriptor.bytesFilled > 0);
7089      assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);
7090    }
7091    return ready;
7092  }
7093  function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {
7094    assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);
7095    ReadableByteStreamControllerInvalidateBYOBRequest(controller);
7096    pullIntoDescriptor.bytesFilled += size;
7097  }
7098  function ReadableByteStreamControllerHandleQueueDrain(controller) {
7099    assert(controller._controlledReadableStream._state === 'readable');
7100    if (controller._queueTotalSize === 0 && controller._closeRequested === true) {
7101      ReadableStreamClose(controller._controlledReadableStream);
7102    } else {
7103      ReadableByteStreamControllerCallPullIfNeeded(controller);
7104    }
7105  }
7106  function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {
7107    if (controller._byobRequest === undefined) {
7108      return;
7109    }
7110    controller._byobRequest._associatedReadableByteStreamController = undefined;
7111    controller._byobRequest._view = undefined;
7112    controller._byobRequest = undefined;
7113  }
7114  function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {
7115    assert(controller._closeRequested === false);
7116    while (controller._pendingPullIntos.length > 0) {
7117      if (controller._queueTotalSize === 0) {
7118        return;
7119      }
7120      var pullIntoDescriptor = controller._pendingPullIntos[0];
7121      if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {
7122        ReadableByteStreamControllerShiftPendingPullInto(controller);
7123        ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);
7124      }
7125    }
7126  }
7127  function ReadableByteStreamControllerPullInto(controller, view) {
7128    var stream = controller._controlledReadableStream;
7129    var elementSize = 1;
7130    if (view.constructor !== DataView) {
7131      elementSize = view.constructor.BYTES_PER_ELEMENT;
7132    }
7133    var ctor = view.constructor;
7134    var pullIntoDescriptor = {
7135      buffer: view.buffer,
7136      byteOffset: view.byteOffset,
7137      byteLength: view.byteLength,
7138      bytesFilled: 0,
7139      elementSize: elementSize,
7140      ctor: ctor,
7141      readerType: 'byob'
7142    };
7143    if (controller._pendingPullIntos.length > 0) {
7144      pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
7145      controller._pendingPullIntos.push(pullIntoDescriptor);
7146      return ReadableStreamAddReadIntoRequest(stream);
7147    }
7148    if (stream._state === 'closed') {
7149      var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);
7150      return Promise.resolve(CreateIterResultObject(emptyView, true));
7151    }
7152    if (controller._queueTotalSize > 0) {
7153      if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {
7154        var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
7155        ReadableByteStreamControllerHandleQueueDrain(controller);
7156        return Promise.resolve(CreateIterResultObject(filledView, false));
7157      }
7158      if (controller._closeRequested === true) {
7159        var e = new TypeError('Insufficient bytes to fill elements in the given buffer');
7160        ReadableByteStreamControllerError(controller, e);
7161        return Promise.reject(e);
7162      }
7163    }
7164    pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
7165    controller._pendingPullIntos.push(pullIntoDescriptor);
7166    var promise = ReadableStreamAddReadIntoRequest(stream);
7167    ReadableByteStreamControllerCallPullIfNeeded(controller);
7168    return promise;
7169  }
7170  function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {
7171    firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);
7172    assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');
7173    var stream = controller._controlledReadableStream;
7174    if (ReadableStreamHasBYOBReader(stream) === true) {
7175      while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {
7176        var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);
7177        ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);
7178      }
7179    }
7180  }
7181  function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {
7182    if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {
7183      throw new RangeError('bytesWritten out of range');
7184    }
7185    ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);
7186    if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {
7187      return;
7188    }
7189    ReadableByteStreamControllerShiftPendingPullInto(controller);
7190    var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;
7191    if (remainderSize > 0) {
7192      var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
7193      var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);
7194      ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);
7195    }
7196    pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
7197    pullIntoDescriptor.bytesFilled -= remainderSize;
7198    ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);
7199    ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
7200  }
7201  function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {
7202    var firstDescriptor = controller._pendingPullIntos[0];
7203    var stream = controller._controlledReadableStream;
7204    if (stream._state === 'closed') {
7205      if (bytesWritten !== 0) {
7206        throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');
7207      }
7208      ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);
7209    } else {
7210      assert(stream._state === 'readable');
7211      ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);
7212    }
7213  }
7214  function ReadableByteStreamControllerShiftPendingPullInto(controller) {
7215    var descriptor = controller._pendingPullIntos.shift();
7216    ReadableByteStreamControllerInvalidateBYOBRequest(controller);
7217    return descriptor;
7218  }
7219  function ReadableByteStreamControllerShouldCallPull(controller) {
7220    var stream = controller._controlledReadableStream;
7221    if (stream._state !== 'readable') {
7222      return false;
7223    }
7224    if (controller._closeRequested === true) {
7225      return false;
7226    }
7227    if (controller._started === false) {
7228      return false;
7229    }
7230    if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
7231      return true;
7232    }
7233    if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {
7234      return true;
7235    }
7236    if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {
7237      return true;
7238    }
7239    return false;
7240  }
7241  function ReadableByteStreamControllerClose(controller) {
7242    var stream = controller._controlledReadableStream;
7243    assert(controller._closeRequested === false);
7244    assert(stream._state === 'readable');
7245    if (controller._queueTotalSize > 0) {
7246      controller._closeRequested = true;
7247      return;
7248    }
7249    if (controller._pendingPullIntos.length > 0) {
7250      var firstPendingPullInto = controller._pendingPullIntos[0];
7251      if (firstPendingPullInto.bytesFilled > 0) {
7252        var e = new TypeError('Insufficient bytes to fill elements in the given buffer');
7253        ReadableByteStreamControllerError(controller, e);
7254        throw e;
7255      }
7256    }
7257    ReadableStreamClose(stream);
7258  }
7259  function ReadableByteStreamControllerEnqueue(controller, chunk) {
7260    var stream = controller._controlledReadableStream;
7261    assert(controller._closeRequested === false);
7262    assert(stream._state === 'readable');
7263    var buffer = chunk.buffer;
7264    var byteOffset = chunk.byteOffset;
7265    var byteLength = chunk.byteLength;
7266    var transferredBuffer = TransferArrayBuffer(buffer);
7267    if (ReadableStreamHasDefaultReader(stream) === true) {
7268      if (ReadableStreamGetNumReadRequests(stream) === 0) {
7269        ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
7270      } else {
7271        assert(controller._queue.length === 0);
7272        var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);
7273        ReadableStreamFulfillReadRequest(stream, transferredView, false);
7274      }
7275    } else if (ReadableStreamHasBYOBReader(stream) === true) {
7276      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
7277      ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
7278    } else {
7279      assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');
7280      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
7281    }
7282  }
7283  function ReadableByteStreamControllerError(controller, e) {
7284    var stream = controller._controlledReadableStream;
7285    assert(stream._state === 'readable');
7286    ReadableByteStreamControllerClearPendingPullIntos(controller);
7287    ResetQueue(controller);
7288    ReadableStreamError(stream, e);
7289  }
7290  function ReadableByteStreamControllerGetDesiredSize(controller) {
7291    var stream = controller._controlledReadableStream;
7292    var state = stream._state;
7293    if (state === 'errored') {
7294      return null;
7295    }
7296    if (state === 'closed') {
7297      return 0;
7298    }
7299    return controller._strategyHWM - controller._queueTotalSize;
7300  }
7301  function ReadableByteStreamControllerRespond(controller, bytesWritten) {
7302    bytesWritten = Number(bytesWritten);
7303    if (IsFiniteNonNegativeNumber(bytesWritten) === false) {
7304      throw new RangeError('bytesWritten must be a finite');
7305    }
7306    assert(controller._pendingPullIntos.length > 0);
7307    ReadableByteStreamControllerRespondInternal(controller, bytesWritten);
7308  }
7309  function ReadableByteStreamControllerRespondWithNewView(controller, view) {
7310    assert(controller._pendingPullIntos.length > 0);
7311    var firstDescriptor = controller._pendingPullIntos[0];
7312    if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {
7313      throw new RangeError('The region specified by view does not match byobRequest');
7314    }
7315    if (firstDescriptor.byteLength !== view.byteLength) {
7316      throw new RangeError('The buffer of view has different capacity than byobRequest');
7317    }
7318    firstDescriptor.buffer = view.buffer;
7319    ReadableByteStreamControllerRespondInternal(controller, view.byteLength);
7320  }
7321  function streamBrandCheckException(name) {
7322    return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');
7323  }
7324  function readerLockException(name) {
7325    return new TypeError('Cannot ' + name + ' a stream using a released reader');
7326  }
7327  function defaultReaderBrandCheckException(name) {
7328    return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');
7329  }
7330  function defaultReaderClosedPromiseInitialize(reader) {
7331    reader._closedPromise = new Promise(function (resolve, reject) {
7332      reader._closedPromise_resolve = resolve;
7333      reader._closedPromise_reject = reject;
7334    });
7335  }
7336  function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {
7337    reader._closedPromise = Promise.reject(reason);
7338    reader._closedPromise_resolve = undefined;
7339    reader._closedPromise_reject = undefined;
7340  }
7341  function defaultReaderClosedPromiseInitializeAsResolved(reader) {
7342    reader._closedPromise = Promise.resolve(undefined);
7343    reader._closedPromise_resolve = undefined;
7344    reader._closedPromise_reject = undefined;
7345  }
7346  function defaultReaderClosedPromiseReject(reader, reason) {
7347    assert(reader._closedPromise_resolve !== undefined);
7348    assert(reader._closedPromise_reject !== undefined);
7349    reader._closedPromise_reject(reason);
7350    reader._closedPromise_resolve = undefined;
7351    reader._closedPromise_reject = undefined;
7352  }
7353  function defaultReaderClosedPromiseResetToRejected(reader, reason) {
7354    assert(reader._closedPromise_resolve === undefined);
7355    assert(reader._closedPromise_reject === undefined);
7356    reader._closedPromise = Promise.reject(reason);
7357  }
7358  function defaultReaderClosedPromiseResolve(reader) {
7359    assert(reader._closedPromise_resolve !== undefined);
7360    assert(reader._closedPromise_reject !== undefined);
7361    reader._closedPromise_resolve(undefined);
7362    reader._closedPromise_resolve = undefined;
7363    reader._closedPromise_reject = undefined;
7364  }
7365  function byobReaderBrandCheckException(name) {
7366    return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');
7367  }
7368  function defaultControllerBrandCheckException(name) {
7369    return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');
7370  }
7371  function byobRequestBrandCheckException(name) {
7372    return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');
7373  }
7374  function byteStreamControllerBrandCheckException(name) {
7375    return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');
7376  }
7377  function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {
7378    try {
7379      Promise.prototype.then.call(promise, undefined, function () {});
7380    } catch (e) {}
7381  }
7382}, function (module, exports, __w_pdfjs_require__) {
7383  "use strict";
7384
7385  var transformStream = __w_pdfjs_require__(6);
7386  var readableStream = __w_pdfjs_require__(4);
7387  var writableStream = __w_pdfjs_require__(2);
7388  exports.TransformStream = transformStream.TransformStream;
7389  exports.ReadableStream = readableStream.ReadableStream;
7390  exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;
7391  exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;
7392  exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;
7393  exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;
7394  exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;
7395  exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;
7396  exports.IsWritableStream = writableStream.IsWritableStream;
7397  exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;
7398  exports.WritableStream = writableStream.WritableStream;
7399  exports.WritableStreamAbort = writableStream.WritableStreamAbort;
7400  exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;
7401  exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;
7402  exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;
7403  exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;
7404}, function (module, exports, __w_pdfjs_require__) {
7405  "use strict";
7406
7407  var _createClass = function () {
7408    function defineProperties(target, props) {
7409      for (var i = 0; i < props.length; i++) {
7410        var descriptor = props[i];
7411        descriptor.enumerable = descriptor.enumerable || false;
7412        descriptor.configurable = true;
7413        if ("value" in descriptor) descriptor.writable = true;
7414        Object.defineProperty(target, descriptor.key, descriptor);
7415      }
7416    }
7417    return function (Constructor, protoProps, staticProps) {
7418      if (protoProps) defineProperties(Constructor.prototype, protoProps);
7419      if (staticProps) defineProperties(Constructor, staticProps);
7420      return Constructor;
7421    };
7422  }();
7423  function _classCallCheck(instance, Constructor) {
7424    if (!(instance instanceof Constructor)) {
7425      throw new TypeError("Cannot call a class as a function");
7426    }
7427  }
7428  var _require = __w_pdfjs_require__(1),
7429      assert = _require.assert;
7430  var _require2 = __w_pdfjs_require__(0),
7431      InvokeOrNoop = _require2.InvokeOrNoop,
7432      PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,
7433      PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,
7434      typeIsObject = _require2.typeIsObject;
7435  var _require3 = __w_pdfjs_require__(4),
7436      ReadableStream = _require3.ReadableStream,
7437      ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,
7438      ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,
7439      ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,
7440      ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;
7441  var _require4 = __w_pdfjs_require__(2),
7442      WritableStream = _require4.WritableStream,
7443      WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;
7444  function TransformStreamCloseReadable(transformStream) {
7445    if (transformStream._errored === true) {
7446      throw new TypeError('TransformStream is already errored');
7447    }
7448    if (transformStream._readableClosed === true) {
7449      throw new TypeError('Readable side is already closed');
7450    }
7451    TransformStreamCloseReadableInternal(transformStream);
7452  }
7453  function TransformStreamEnqueueToReadable(transformStream, chunk) {
7454    if (transformStream._errored === true) {
7455      throw new TypeError('TransformStream is already errored');
7456    }
7457    if (transformStream._readableClosed === true) {
7458      throw new TypeError('Readable side is already closed');
7459    }
7460    var controller = transformStream._readableController;
7461    try {
7462      ReadableStreamDefaultControllerEnqueue(controller, chunk);
7463    } catch (e) {
7464      transformStream._readableClosed = true;
7465      TransformStreamErrorIfNeeded(transformStream, e);
7466      throw transformStream._storedError;
7467    }
7468    var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);
7469    var maybeBackpressure = desiredSize <= 0;
7470    if (maybeBackpressure === true && transformStream._backpressure === false) {
7471      TransformStreamSetBackpressure(transformStream, true);
7472    }
7473  }
7474  function TransformStreamError(transformStream, e) {
7475    if (transformStream._errored === true) {
7476      throw new TypeError('TransformStream is already errored');
7477    }
7478    TransformStreamErrorInternal(transformStream, e);
7479  }
7480  function TransformStreamCloseReadableInternal(transformStream) {
7481    assert(transformStream._errored === false);
7482    assert(transformStream._readableClosed === false);
7483    try {
7484      ReadableStreamDefaultControllerClose(transformStream._readableController);
7485    } catch (e) {
7486      assert(false);
7487    }
7488    transformStream._readableClosed = true;
7489  }
7490  function TransformStreamErrorIfNeeded(transformStream, e) {
7491    if (transformStream._errored === false) {
7492      TransformStreamErrorInternal(transformStream, e);
7493    }
7494  }
7495  function TransformStreamErrorInternal(transformStream, e) {
7496    assert(transformStream._errored === false);
7497    transformStream._errored = true;
7498    transformStream._storedError = e;
7499    if (transformStream._writableDone === false) {
7500      WritableStreamDefaultControllerError(transformStream._writableController, e);
7501    }
7502    if (transformStream._readableClosed === false) {
7503      ReadableStreamDefaultControllerError(transformStream._readableController, e);
7504    }
7505  }
7506  function TransformStreamReadableReadyPromise(transformStream) {
7507    assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
7508    if (transformStream._backpressure === false) {
7509      return Promise.resolve();
7510    }
7511    assert(transformStream._backpressure === true, '_backpressure should have been initialized');
7512    return transformStream._backpressureChangePromise;
7513  }
7514  function TransformStreamSetBackpressure(transformStream, backpressure) {
7515    assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');
7516    if (transformStream._backpressureChangePromise !== undefined) {
7517      transformStream._backpressureChangePromise_resolve(backpressure);
7518    }
7519    transformStream._backpressureChangePromise = new Promise(function (resolve) {
7520      transformStream._backpressureChangePromise_resolve = resolve;
7521    });
7522    transformStream._backpressureChangePromise.then(function (resolution) {
7523      assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');
7524    });
7525    transformStream._backpressure = backpressure;
7526  }
7527  function TransformStreamDefaultTransform(chunk, transformStreamController) {
7528    var transformStream = transformStreamController._controlledTransformStream;
7529    TransformStreamEnqueueToReadable(transformStream, chunk);
7530    return Promise.resolve();
7531  }
7532  function TransformStreamTransform(transformStream, chunk) {
7533    assert(transformStream._errored === false);
7534    assert(transformStream._transforming === false);
7535    assert(transformStream._backpressure === false);
7536    transformStream._transforming = true;
7537    var transformer = transformStream._transformer;
7538    var controller = transformStream._transformStreamController;
7539    var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);
7540    return transformPromise.then(function () {
7541      transformStream._transforming = false;
7542      return TransformStreamReadableReadyPromise(transformStream);
7543    }, function (e) {
7544      TransformStreamErrorIfNeeded(transformStream, e);
7545      return Promise.reject(e);
7546    });
7547  }
7548  function IsTransformStreamDefaultController(x) {
7549    if (!typeIsObject(x)) {
7550      return false;
7551    }
7552    if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {
7553      return false;
7554    }
7555    return true;
7556  }
7557  function IsTransformStream(x) {
7558    if (!typeIsObject(x)) {
7559      return false;
7560    }
7561    if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {
7562      return false;
7563    }
7564    return true;
7565  }
7566  var TransformStreamSink = function () {
7567    function TransformStreamSink(transformStream, startPromise) {
7568      _classCallCheck(this, TransformStreamSink);
7569      this._transformStream = transformStream;
7570      this._startPromise = startPromise;
7571    }
7572    _createClass(TransformStreamSink, [{
7573      key: 'start',
7574      value: function start(c) {
7575        var transformStream = this._transformStream;
7576        transformStream._writableController = c;
7577        return this._startPromise.then(function () {
7578          return TransformStreamReadableReadyPromise(transformStream);
7579        });
7580      }
7581    }, {
7582      key: 'write',
7583      value: function write(chunk) {
7584        var transformStream = this._transformStream;
7585        return TransformStreamTransform(transformStream, chunk);
7586      }
7587    }, {
7588      key: 'abort',
7589      value: function abort() {
7590        var transformStream = this._transformStream;
7591        transformStream._writableDone = true;
7592        TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));
7593      }
7594    }, {
7595      key: 'close',
7596      value: function close() {
7597        var transformStream = this._transformStream;
7598        assert(transformStream._transforming === false);
7599        transformStream._writableDone = true;
7600        var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);
7601        return flushPromise.then(function () {
7602          if (transformStream._errored === true) {
7603            return Promise.reject(transformStream._storedError);
7604          }
7605          if (transformStream._readableClosed === false) {
7606            TransformStreamCloseReadableInternal(transformStream);
7607          }
7608          return Promise.resolve();
7609        }).catch(function (r) {
7610          TransformStreamErrorIfNeeded(transformStream, r);
7611          return Promise.reject(transformStream._storedError);
7612        });
7613      }
7614    }]);
7615    return TransformStreamSink;
7616  }();
7617  var TransformStreamSource = function () {
7618    function TransformStreamSource(transformStream, startPromise) {
7619      _classCallCheck(this, TransformStreamSource);
7620      this._transformStream = transformStream;
7621      this._startPromise = startPromise;
7622    }
7623    _createClass(TransformStreamSource, [{
7624      key: 'start',
7625      value: function start(c) {
7626        var transformStream = this._transformStream;
7627        transformStream._readableController = c;
7628        return this._startPromise.then(function () {
7629          assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
7630          if (transformStream._backpressure === true) {
7631            return Promise.resolve();
7632          }
7633          assert(transformStream._backpressure === false, '_backpressure should have been initialized');
7634          return transformStream._backpressureChangePromise;
7635        });
7636      }
7637    }, {
7638      key: 'pull',
7639      value: function pull() {
7640        var transformStream = this._transformStream;
7641        assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');
7642        assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
7643        TransformStreamSetBackpressure(transformStream, false);
7644        return transformStream._backpressureChangePromise;
7645      }
7646    }, {
7647      key: 'cancel',
7648      value: function cancel() {
7649        var transformStream = this._transformStream;
7650        transformStream._readableClosed = true;
7651        TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));
7652      }
7653    }]);
7654    return TransformStreamSource;
7655  }();
7656  var TransformStreamDefaultController = function () {
7657    function TransformStreamDefaultController(transformStream) {
7658      _classCallCheck(this, TransformStreamDefaultController);
7659      if (IsTransformStream(transformStream) === false) {
7660        throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');
7661      }
7662      if (transformStream._transformStreamController !== undefined) {
7663        throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');
7664      }
7665      this._controlledTransformStream = transformStream;
7666    }
7667    _createClass(TransformStreamDefaultController, [{
7668      key: 'enqueue',
7669      value: function enqueue(chunk) {
7670        if (IsTransformStreamDefaultController(this) === false) {
7671          throw defaultControllerBrandCheckException('enqueue');
7672        }
7673        TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);
7674      }
7675    }, {
7676      key: 'close',
7677      value: function close() {
7678        if (IsTransformStreamDefaultController(this) === false) {
7679          throw defaultControllerBrandCheckException('close');
7680        }
7681        TransformStreamCloseReadable(this._controlledTransformStream);
7682      }
7683    }, {
7684      key: 'error',
7685      value: function error(reason) {
7686        if (IsTransformStreamDefaultController(this) === false) {
7687          throw defaultControllerBrandCheckException('error');
7688        }
7689        TransformStreamError(this._controlledTransformStream, reason);
7690      }
7691    }, {
7692      key: 'desiredSize',
7693      get: function get() {
7694        if (IsTransformStreamDefaultController(this) === false) {
7695          throw defaultControllerBrandCheckException('desiredSize');
7696        }
7697        var transformStream = this._controlledTransformStream;
7698        var readableController = transformStream._readableController;
7699        return ReadableStreamDefaultControllerGetDesiredSize(readableController);
7700      }
7701    }]);
7702    return TransformStreamDefaultController;
7703  }();
7704  var TransformStream = function () {
7705    function TransformStream() {
7706      var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7707      _classCallCheck(this, TransformStream);
7708      this._transformer = transformer;
7709      var readableStrategy = transformer.readableStrategy,
7710          writableStrategy = transformer.writableStrategy;
7711      this._transforming = false;
7712      this._errored = false;
7713      this._storedError = undefined;
7714      this._writableController = undefined;
7715      this._readableController = undefined;
7716      this._transformStreamController = undefined;
7717      this._writableDone = false;
7718      this._readableClosed = false;
7719      this._backpressure = undefined;
7720      this._backpressureChangePromise = undefined;
7721      this._backpressureChangePromise_resolve = undefined;
7722      this._transformStreamController = new TransformStreamDefaultController(this);
7723      var startPromise_resolve = void 0;
7724      var startPromise = new Promise(function (resolve) {
7725        startPromise_resolve = resolve;
7726      });
7727      var source = new TransformStreamSource(this, startPromise);
7728      this._readable = new ReadableStream(source, readableStrategy);
7729      var sink = new TransformStreamSink(this, startPromise);
7730      this._writable = new WritableStream(sink, writableStrategy);
7731      assert(this._writableController !== undefined);
7732      assert(this._readableController !== undefined);
7733      var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);
7734      TransformStreamSetBackpressure(this, desiredSize <= 0);
7735      var transformStream = this;
7736      var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);
7737      startPromise_resolve(startResult);
7738      startPromise.catch(function (e) {
7739        if (transformStream._errored === false) {
7740          transformStream._errored = true;
7741          transformStream._storedError = e;
7742        }
7743      });
7744    }
7745    _createClass(TransformStream, [{
7746      key: 'readable',
7747      get: function get() {
7748        if (IsTransformStream(this) === false) {
7749          throw streamBrandCheckException('readable');
7750        }
7751        return this._readable;
7752      }
7753    }, {
7754      key: 'writable',
7755      get: function get() {
7756        if (IsTransformStream(this) === false) {
7757          throw streamBrandCheckException('writable');
7758        }
7759        return this._writable;
7760      }
7761    }]);
7762    return TransformStream;
7763  }();
7764  module.exports = { TransformStream: TransformStream };
7765  function defaultControllerBrandCheckException(name) {
7766    return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');
7767  }
7768  function streamBrandCheckException(name) {
7769    return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');
7770  }
7771}, function (module, exports, __w_pdfjs_require__) {
7772  module.exports = __w_pdfjs_require__(5);
7773}]));
7774
7775/***/ }),
7776/* 128 */
7777/***/ (function(module, exports, __w_pdfjs_require__) {
7778
7779"use strict";
7780
7781
7782var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
7783
7784{
7785  var isURLSupported = false;
7786  try {
7787    if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) {
7788      var u = new URL('b', 'http://a');
7789      u.pathname = 'c%20d';
7790      isURLSupported = u.href === 'http://a/c%20d';
7791    }
7792  } catch (ex) {}
7793  if (isURLSupported) {
7794    exports.URL = URL;
7795  } else {
7796    var PolyfillURL = __w_pdfjs_require__(129).URL;
7797    var OriginalURL = __w_pdfjs_require__(4).URL;
7798    if (OriginalURL) {
7799      PolyfillURL.createObjectURL = function (blob) {
7800        return OriginalURL.createObjectURL.apply(OriginalURL, arguments);
7801      };
7802      PolyfillURL.revokeObjectURL = function (url) {
7803        OriginalURL.revokeObjectURL(url);
7804      };
7805    }
7806    exports.URL = PolyfillURL;
7807  }
7808}
7809
7810/***/ }),
7811/* 129 */
7812/***/ (function(module, exports, __w_pdfjs_require__) {
7813
7814"use strict";
7815
7816
7817(function URLConstructorClosure() {
7818  'use strict';
7819
7820  var relative = Object.create(null);
7821  relative['ftp'] = 21;
7822  relative['file'] = 0;
7823  relative['gopher'] = 70;
7824  relative['http'] = 80;
7825  relative['https'] = 443;
7826  relative['ws'] = 80;
7827  relative['wss'] = 443;
7828  var relativePathDotMapping = Object.create(null);
7829  relativePathDotMapping['%2e'] = '.';
7830  relativePathDotMapping['.%2e'] = '..';
7831  relativePathDotMapping['%2e.'] = '..';
7832  relativePathDotMapping['%2e%2e'] = '..';
7833  function isRelativeScheme(scheme) {
7834    return relative[scheme] !== undefined;
7835  }
7836  function invalid() {
7837    clear.call(this);
7838    this._isInvalid = true;
7839  }
7840  function IDNAToASCII(h) {
7841    if (h === '') {
7842      invalid.call(this);
7843    }
7844    return h.toLowerCase();
7845  }
7846  function percentEscape(c) {
7847    var unicode = c.charCodeAt(0);
7848    if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) {
7849      return c;
7850    }
7851    return encodeURIComponent(c);
7852  }
7853  function percentEscapeQuery(c) {
7854    var unicode = c.charCodeAt(0);
7855    if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) {
7856      return c;
7857    }
7858    return encodeURIComponent(c);
7859  }
7860  var EOF,
7861      ALPHA = /[a-zA-Z]/,
7862      ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/;
7863  function parse(input, stateOverride, base) {
7864    function err(message) {
7865      errors.push(message);
7866    }
7867    var state = stateOverride || 'scheme start',
7868        cursor = 0,
7869        buffer = '',
7870        seenAt = false,
7871        seenBracket = false,
7872        errors = [];
7873    loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) {
7874      var c = input[cursor];
7875      switch (state) {
7876        case 'scheme start':
7877          if (c && ALPHA.test(c)) {
7878            buffer += c.toLowerCase();
7879            state = 'scheme';
7880          } else if (!stateOverride) {
7881            buffer = '';
7882            state = 'no scheme';
7883            continue;
7884          } else {
7885            err('Invalid scheme.');
7886            break loop;
7887          }
7888          break;
7889        case 'scheme':
7890          if (c && ALPHANUMERIC.test(c)) {
7891            buffer += c.toLowerCase();
7892          } else if (c === ':') {
7893            this._scheme = buffer;
7894            buffer = '';
7895            if (stateOverride) {
7896              break loop;
7897            }
7898            if (isRelativeScheme(this._scheme)) {
7899              this._isRelative = true;
7900            }
7901            if (this._scheme === 'file') {
7902              state = 'relative';
7903            } else if (this._isRelative && base && base._scheme === this._scheme) {
7904              state = 'relative or authority';
7905            } else if (this._isRelative) {
7906              state = 'authority first slash';
7907            } else {
7908              state = 'scheme data';
7909            }
7910          } else if (!stateOverride) {
7911            buffer = '';
7912            cursor = 0;
7913            state = 'no scheme';
7914            continue;
7915          } else if (c === EOF) {
7916            break loop;
7917          } else {
7918            err('Code point not allowed in scheme: ' + c);
7919            break loop;
7920          }
7921          break;
7922        case 'scheme data':
7923          if (c === '?') {
7924            this._query = '?';
7925            state = 'query';
7926          } else if (c === '#') {
7927            this._fragment = '#';
7928            state = 'fragment';
7929          } else {
7930            if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
7931              this._schemeData += percentEscape(c);
7932            }
7933          }
7934          break;
7935        case 'no scheme':
7936          if (!base || !isRelativeScheme(base._scheme)) {
7937            err('Missing scheme.');
7938            invalid.call(this);
7939          } else {
7940            state = 'relative';
7941            continue;
7942          }
7943          break;
7944        case 'relative or authority':
7945          if (c === '/' && input[cursor + 1] === '/') {
7946            state = 'authority ignore slashes';
7947          } else {
7948            err('Expected /, got: ' + c);
7949            state = 'relative';
7950            continue;
7951          }
7952          break;
7953        case 'relative':
7954          this._isRelative = true;
7955          if (this._scheme !== 'file') {
7956            this._scheme = base._scheme;
7957          }
7958          if (c === EOF) {
7959            this._host = base._host;
7960            this._port = base._port;
7961            this._path = base._path.slice();
7962            this._query = base._query;
7963            this._username = base._username;
7964            this._password = base._password;
7965            break loop;
7966          } else if (c === '/' || c === '\\') {
7967            if (c === '\\') {
7968              err('\\ is an invalid code point.');
7969            }
7970            state = 'relative slash';
7971          } else if (c === '?') {
7972            this._host = base._host;
7973            this._port = base._port;
7974            this._path = base._path.slice();
7975            this._query = '?';
7976            this._username = base._username;
7977            this._password = base._password;
7978            state = 'query';
7979          } else if (c === '#') {
7980            this._host = base._host;
7981            this._port = base._port;
7982            this._path = base._path.slice();
7983            this._query = base._query;
7984            this._fragment = '#';
7985            this._username = base._username;
7986            this._password = base._password;
7987            state = 'fragment';
7988          } else {
7989            var nextC = input[cursor + 1];
7990            var nextNextC = input[cursor + 2];
7991            if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\' && nextNextC !== '?' && nextNextC !== '#') {
7992              this._host = base._host;
7993              this._port = base._port;
7994              this._username = base._username;
7995              this._password = base._password;
7996              this._path = base._path.slice();
7997              this._path.pop();
7998            }
7999            state = 'relative path';
8000            continue;
8001          }
8002          break;
8003        case 'relative slash':
8004          if (c === '/' || c === '\\') {
8005            if (c === '\\') {
8006              err('\\ is an invalid code point.');
8007            }
8008            if (this._scheme === 'file') {
8009              state = 'file host';
8010            } else {
8011              state = 'authority ignore slashes';
8012            }
8013          } else {
8014            if (this._scheme !== 'file') {
8015              this._host = base._host;
8016              this._port = base._port;
8017              this._username = base._username;
8018              this._password = base._password;
8019            }
8020            state = 'relative path';
8021            continue;
8022          }
8023          break;
8024        case 'authority first slash':
8025          if (c === '/') {
8026            state = 'authority second slash';
8027          } else {
8028            err('Expected \'/\', got: ' + c);
8029            state = 'authority ignore slashes';
8030            continue;
8031          }
8032          break;
8033        case 'authority second slash':
8034          state = 'authority ignore slashes';
8035          if (c !== '/') {
8036            err('Expected \'/\', got: ' + c);
8037            continue;
8038          }
8039          break;
8040        case 'authority ignore slashes':
8041          if (c !== '/' && c !== '\\') {
8042            state = 'authority';
8043            continue;
8044          } else {
8045            err('Expected authority, got: ' + c);
8046          }
8047          break;
8048        case 'authority':
8049          if (c === '@') {
8050            if (seenAt) {
8051              err('@ already seen.');
8052              buffer += '%40';
8053            }
8054            seenAt = true;
8055            for (var i = 0; i < buffer.length; i++) {
8056              var cp = buffer[i];
8057              if (cp === '\t' || cp === '\n' || cp === '\r') {
8058                err('Invalid whitespace in authority.');
8059                continue;
8060              }
8061              if (cp === ':' && this._password === null) {
8062                this._password = '';
8063                continue;
8064              }
8065              var tempC = percentEscape(cp);
8066              if (this._password !== null) {
8067                this._password += tempC;
8068              } else {
8069                this._username += tempC;
8070              }
8071            }
8072            buffer = '';
8073          } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
8074            cursor -= buffer.length;
8075            buffer = '';
8076            state = 'host';
8077            continue;
8078          } else {
8079            buffer += c;
8080          }
8081          break;
8082        case 'file host':
8083          if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
8084            if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) {
8085              state = 'relative path';
8086            } else if (buffer.length === 0) {
8087              state = 'relative path start';
8088            } else {
8089              this._host = IDNAToASCII.call(this, buffer);
8090              buffer = '';
8091              state = 'relative path start';
8092            }
8093            continue;
8094          } else if (c === '\t' || c === '\n' || c === '\r') {
8095            err('Invalid whitespace in file host.');
8096          } else {
8097            buffer += c;
8098          }
8099          break;
8100        case 'host':
8101        case 'hostname':
8102          if (c === ':' && !seenBracket) {
8103            this._host = IDNAToASCII.call(this, buffer);
8104            buffer = '';
8105            state = 'port';
8106            if (stateOverride === 'hostname') {
8107              break loop;
8108            }
8109          } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
8110            this._host = IDNAToASCII.call(this, buffer);
8111            buffer = '';
8112            state = 'relative path start';
8113            if (stateOverride) {
8114              break loop;
8115            }
8116            continue;
8117          } else if (c !== '\t' && c !== '\n' && c !== '\r') {
8118            if (c === '[') {
8119              seenBracket = true;
8120            } else if (c === ']') {
8121              seenBracket = false;
8122            }
8123            buffer += c;
8124          } else {
8125            err('Invalid code point in host/hostname: ' + c);
8126          }
8127          break;
8128        case 'port':
8129          if (/[0-9]/.test(c)) {
8130            buffer += c;
8131          } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#' || stateOverride) {
8132            if (buffer !== '') {
8133              var temp = parseInt(buffer, 10);
8134              if (temp !== relative[this._scheme]) {
8135                this._port = temp + '';
8136              }
8137              buffer = '';
8138            }
8139            if (stateOverride) {
8140              break loop;
8141            }
8142            state = 'relative path start';
8143            continue;
8144          } else if (c === '\t' || c === '\n' || c === '\r') {
8145            err('Invalid code point in port: ' + c);
8146          } else {
8147            invalid.call(this);
8148          }
8149          break;
8150        case 'relative path start':
8151          if (c === '\\') {
8152            err('\'\\\' not allowed in path.');
8153          }
8154          state = 'relative path';
8155          if (c !== '/' && c !== '\\') {
8156            continue;
8157          }
8158          break;
8159        case 'relative path':
8160          if (c === EOF || c === '/' || c === '\\' || !stateOverride && (c === '?' || c === '#')) {
8161            if (c === '\\') {
8162              err('\\ not allowed in relative path.');
8163            }
8164            var tmp;
8165            if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {
8166              buffer = tmp;
8167            }
8168            if (buffer === '..') {
8169              this._path.pop();
8170              if (c !== '/' && c !== '\\') {
8171                this._path.push('');
8172              }
8173            } else if (buffer === '.' && c !== '/' && c !== '\\') {
8174              this._path.push('');
8175            } else if (buffer !== '.') {
8176              if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') {
8177                buffer = buffer[0] + ':';
8178              }
8179              this._path.push(buffer);
8180            }
8181            buffer = '';
8182            if (c === '?') {
8183              this._query = '?';
8184              state = 'query';
8185            } else if (c === '#') {
8186              this._fragment = '#';
8187              state = 'fragment';
8188            }
8189          } else if (c !== '\t' && c !== '\n' && c !== '\r') {
8190            buffer += percentEscape(c);
8191          }
8192          break;
8193        case 'query':
8194          if (!stateOverride && c === '#') {
8195            this._fragment = '#';
8196            state = 'fragment';
8197          } else if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
8198            this._query += percentEscapeQuery(c);
8199          }
8200          break;
8201        case 'fragment':
8202          if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
8203            this._fragment += c;
8204          }
8205          break;
8206      }
8207      cursor++;
8208    }
8209  }
8210  function clear() {
8211    this._scheme = '';
8212    this._schemeData = '';
8213    this._username = '';
8214    this._password = null;
8215    this._host = '';
8216    this._port = '';
8217    this._path = [];
8218    this._query = '';
8219    this._fragment = '';
8220    this._isInvalid = false;
8221    this._isRelative = false;
8222  }
8223  function JURL(url, base) {
8224    if (base !== undefined && !(base instanceof JURL)) {
8225      base = new JURL(String(base));
8226    }
8227    this._url = url;
8228    clear.call(this);
8229    var input = url.replace(/^[ \t\n\f]+|[ \t\n\f]+$/g, '');
8230    parse.call(this, input, null, base);
8231  }
8232  JURL.prototype = {
8233    toString: function toString() {
8234      return this.href;
8235    },
8236
8237    get href() {
8238      if (this._isInvalid) {
8239        return this._url;
8240      }
8241      var authority = '';
8242      if (this._username !== '' || this._password !== null) {
8243        authority = this._username + (this._password !== null ? ':' + this._password : '') + '@';
8244      }
8245      return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment;
8246    },
8247    set href(value) {
8248      clear.call(this);
8249      parse.call(this, value);
8250    },
8251    get protocol() {
8252      return this._scheme + ':';
8253    },
8254    set protocol(value) {
8255      if (this._isInvalid) {
8256        return;
8257      }
8258      parse.call(this, value + ':', 'scheme start');
8259    },
8260    get host() {
8261      return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host;
8262    },
8263    set host(value) {
8264      if (this._isInvalid || !this._isRelative) {
8265        return;
8266      }
8267      parse.call(this, value, 'host');
8268    },
8269    get hostname() {
8270      return this._host;
8271    },
8272    set hostname(value) {
8273      if (this._isInvalid || !this._isRelative) {
8274        return;
8275      }
8276      parse.call(this, value, 'hostname');
8277    },
8278    get port() {
8279      return this._port;
8280    },
8281    set port(value) {
8282      if (this._isInvalid || !this._isRelative) {
8283        return;
8284      }
8285      parse.call(this, value, 'port');
8286    },
8287    get pathname() {
8288      return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData;
8289    },
8290    set pathname(value) {
8291      if (this._isInvalid || !this._isRelative) {
8292        return;
8293      }
8294      this._path = [];
8295      parse.call(this, value, 'relative path start');
8296    },
8297    get search() {
8298      return this._isInvalid || !this._query || this._query === '?' ? '' : this._query;
8299    },
8300    set search(value) {
8301      if (this._isInvalid || !this._isRelative) {
8302        return;
8303      }
8304      this._query = '?';
8305      if (value[0] === '?') {
8306        value = value.slice(1);
8307      }
8308      parse.call(this, value, 'query');
8309    },
8310    get hash() {
8311      return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment;
8312    },
8313    set hash(value) {
8314      if (this._isInvalid) {
8315        return;
8316      }
8317      this._fragment = '#';
8318      if (value[0] === '#') {
8319        value = value.slice(1);
8320      }
8321      parse.call(this, value, 'fragment');
8322    },
8323    get origin() {
8324      var host;
8325      if (this._isInvalid || !this._scheme) {
8326        return '';
8327      }
8328      switch (this._scheme) {
8329        case 'data':
8330        case 'file':
8331        case 'javascript':
8332        case 'mailto':
8333          return 'null';
8334        case 'blob':
8335          try {
8336            return new JURL(this._schemeData).origin || 'null';
8337          } catch (_) {}
8338          return 'null';
8339      }
8340      host = this.host;
8341      if (!host) {
8342        return '';
8343      }
8344      return this._scheme + '://' + host;
8345    }
8346  };
8347  exports.URL = JURL;
8348})();
8349
8350/***/ }),
8351/* 130 */
8352/***/ (function(module, exports, __w_pdfjs_require__) {
8353
8354"use strict";
8355
8356
8357Object.defineProperty(exports, "__esModule", {
8358  value: true
8359});
8360exports.NetworkPdfManager = exports.LocalPdfManager = undefined;
8361
8362var _regenerator = __w_pdfjs_require__(131);
8363
8364var _regenerator2 = _interopRequireDefault(_regenerator);
8365
8366var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8367
8368var _util = __w_pdfjs_require__(2);
8369
8370var _chunked_stream = __w_pdfjs_require__(135);
8371
8372var _document = __w_pdfjs_require__(136);
8373
8374var _stream = __w_pdfjs_require__(140);
8375
8376function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8377
8378function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
8379
8380function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { c
8380onstructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
8381
8382function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
8383
8384function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8385
8386var BasePdfManager = function () {
8387  function BasePdfManager() {
8388    _classCallCheck(this, BasePdfManager);
8389
8390    if (this.constructor === BasePdfManager) {
8391      (0, _util.unreachable)('Cannot initialize BasePdfManager.');
8392    }
8393  }
8394
8395  _createClass(BasePdfManager, [{
8396    key: 'onLoadedStream',
8397    value: function onLoadedStream() {
8398      (0, _util.unreachable)('Abstract method `onLoadedStream` called');
8399    }
8400  }, {
8401    key: 'ensureDoc',
8402    value: function ensureDoc(prop, args) {
8403      return this.ensure(this.pdfDocument, prop, args);
8404    }
8405  }, {
8406    key: 'ensureXRef',
8407    value: function ensureXRef(prop, args) {
8408      return this.ensure(this.pdfDocument.xref, prop, args);
8409    }
8410  }, {
8411    key: 'ensureCatalog',
8412    value: function ensureCatalog(prop, args) {
8413      return this.ensure(this.pdfDocument.catalog, prop, args);
8414    }
8415  }, {
8416    key: 'getPage',
8417    value: function getPage(pageIndex) {
8418      return this.pdfDocument.getPage(pageIndex);
8419    }
8420  }, {
8421    key: 'cleanup',
8422    value: function cleanup() {
8423      return this.pdfDocument.cleanup();
8424    }
8425  }, {
8426    key: 'ensure',
8427    value: function () {
8428      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(obj, prop, args) {
8429        return _regenerator2.default.wrap(function _callee$(_context) {
8430          while (1) {
8431            switch (_context.prev = _context.next) {
8432              case 0:
8433                (0, _util.unreachable)('Abstract method `ensure` called');
8434
8435              case 1:
8436              case 'end':
8437                return _context.stop();
8438            }
8439          }
8440        }, _callee, this);
8441      }));
8442
8443      function ensure(_x, _x2, _x3) {
8444        return _ref.apply(this, arguments);
8445      }
8446
8447      return ensure;
8448    }()
8449  }, {
8450    key: 'requestRange',
8451    value: function requestRange(begin, end) {
8452      (0, _util.unreachable)('Abstract method `requestRange` called');
8453    }
8454  }, {
8455    key: 'requestLoadedStream',
8456    value: function requestLoadedStream() {
8457      (0, _util.unreachable)('Abstract method `requestLoadedStream` called');
8458    }
8459  }, {
8460    key: 'sendProgressiveData',
8461    value: function sendProgressiveData(chunk) {
8462      (0, _util.unreachable)('Abstract method `sendProgressiveData` called');
8463    }
8464  }, {
8465    key: 'updatePassword',
8466    value: function updatePassword(password) {
8467      this._password = password;
8468    }
8469  }, {
8470    key: 'terminate',
8471    value: function terminate() {
8472      (0, _util.unreachable)('Abstract method `terminate` called');
8473    }
8474  }, {
8475    key: 'docId',
8476    get: function get() {
8477      return this._docId;
8478    }
8479  }, {
8480    key: 'password',
8481    get: function get() {
8482      return this._password;
8483    }
8484  }, {
8485    key: 'docBaseUrl',
8486    get: function get() {
8487      var docBaseUrl = null;
8488      if (this._docBaseUrl) {
8489        var absoluteUrl = (0, _util.createValidAbsoluteUrl)(this._docBaseUrl);
8490        if (absoluteUrl) {
8491          docBaseUrl = absoluteUrl.href;
8492        } else {
8493          (0, _util.warn)('Invalid absolute docBaseUrl: "' + this._docBaseUrl + '".');
8494        }
8495      }
8496      return (0, _util.shadow)(this, 'docBaseUrl', docBaseUrl);
8497    }
8498  }]);
8499
8500  return BasePdfManager;
8501}();
8502
8503var LocalPdfManager = function (_BasePdfManager) {
8504  _inherits(LocalPdfManager, _BasePdfManager);
8505
8506  function LocalPdfManager(docId, data, password, evaluatorOptions, docBaseUrl) {
8507    _classCallCheck(this, LocalPdfManager);
8508
8509    var _this = _possibleConstructorReturn(this, (LocalPdfManager.__proto__ || Object.getPrototypeOf(LocalPdfManager)).call(this));
8510
8511    _this._docId = docId;
8512    _this._password = password;
8513    _this._docBaseUrl = docBaseUrl;
8514    _this.evaluatorOptions = evaluatorOptions;
8515    var stream = new _stream.Stream(data);
8516    _this.pdfDocument = new _document.PDFDocument(_this, stream);
8517    _this._loadedStreamPromise = Promise.resolve(stream);
8518    return _this;
8519  }
8520
8521  _createClass(LocalPdfManager, [{
8522    key: 'ensure',
8523    value: function () {
8524      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(obj, prop, args) {
8525        var value;
8526        return _regenerator2.default.wrap(function _callee2$(_context2) {
8527          while (1) {
8528            switch (_context2.prev = _context2.next) {
8529              case 0:
8530                value = obj[prop];
8531
8532                if (!(typeof value === 'function')) {
8533                  _context2.next = 3;
8534                  break;
8535                }
8536
8537                return _context2.abrupt('return', value.apply(obj, args));
8538
8539              case 3:
8540                return _context2.abrupt('return', value);
8541
8542              case 4:
8543              case 'end':
8544                return _context2.stop();
8545            }
8546          }
8547        }, _callee2, this);
8548      }));
8549
8550      function ensure(_x4, _x5, _x6) {
8551        return _ref2.apply(this, arguments);
8552      }
8553
8554      return ensure;
8555    }()
8556  }, {
8557    key: 'requestRange',
8558    value: function requestRange(begin, end) {
8559      return Promise.resolve();
8560    }
8561  }, {
8562    key: 'requestLoadedStream',
8563    value: function requestLoadedStream() {}
8564  }, {
8565    key: 'onLoadedStream',
8566    value: function onLoadedStream() {
8567      return this._loadedStreamPromise;
8568    }
8569  }, {
8570    key: 'terminate',
8571    value: function terminate() {}
8572  }]);
8573
8574  return LocalPdfManager;
8575}(BasePdfManager);
8576
8577var NetworkPdfManager = function (_BasePdfManager2) {
8578  _inherits(NetworkPdfManager, _BasePdfManager2);
8579
8580  function NetworkPdfManager(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) {
8581    _classCallCheck(this, NetworkPdfManager);
8582
8583    var _this2 = _possibleConstructorReturn(this, (NetworkPdfManager.__proto__ || Object.getPrototypeOf(NetworkPdfManager)).call(this));
8584
8585    _this2._docId = docId;
8586    _this2._password = args.password;
8587    _this2._docBaseUrl = docBaseUrl;
8588    _this2.msgHandler = args.msgHandler;
8589    _this2.evaluatorOptions = evaluatorOptions;
8590    _this2.streamManager = new _chunked_stream.ChunkedStreamManager(pdfNetworkStream, {
8591      msgHandler: args.msgHandler,
8592      url: args.url,
8593      length: args.length,
8594      disableAutoFetch: args.disableAutoFetch,
8595      rangeChunkSize: args.rangeChunkSize
8596    });
8597    _this2.pdfDocument = new _document.PDFDocument(_this2, _this2.streamManager.getStream());
8598    return _this2;
8599  }
8600
8601  _createClass(NetworkPdfManager, [{
8602    key: 'ensure',
8603    value: function () {
8604      var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3(
8604obj, prop, args) {
8605        var value;
8606        return _regenerator2.default.wrap(function _callee3$(_context3) {
8607          while (1) {
8608            switch (_context3.prev = _context3.next) {
8609              case 0:
8610                _context3.prev = 0;
8611                value = obj[prop];
8612
8613                if (!(typeof value === 'function')) {
8614                  _context3.next = 4;
8615                  break;
8616                }
8617
8618                return _context3.abrupt('return', value.apply(obj, args));
8619
8620              case 4:
8621                return _context3.abrupt('return', value);
8622
8623              case 7:
8624                _context3.prev = 7;
8625                _context3.t0 = _context3['catch'](0);
8626
8627                if (_context3.t0 instanceof _util.MissingDataException) {
8628                  _context3.next = 11;
8629                  break;
8630                }
8631
8632                throw _context3.t0;
8633
8634              case 11:
8635                _context3.next = 13;
8636                return this.requestRange(_context3.t0.begin, _context3.t0.end);
8637
8638              case 13:
8639                return _context3.abrupt('return', this.ensure(obj, prop, args));
8640
8641              case 14:
8642              case 'end':
8643                return _context3.stop();
8644            }
8645          }
8646        }, _callee3, this, [[0, 7]]);
8647      }));
8648
8649      function ensure(_x7, _x8, _x9) {
8650        return _ref3.apply(this, arguments);
8651      }
8652
8653      return ensure;
8654    }()
8655  }, {
8656    key: 'requestRange',
8657    value: function requestRange(begin, end) {
8658      return this.streamManager.requestRange(begin, end);
8659    }
8660  }, {
8661    key: 'requestLoadedStream',
8662    value: function requestLoadedStream() {
8663      this.streamManager.requestAllChunks();
8664    }
8665  }, {
8666    key: 'sendProgressiveData',
8667    value: function sendProgressiveData(chunk) {
8668      this.streamManager.onReceiveData({ chunk: chunk });
8669    }
8670  }, {
8671    key: 'onLoadedStream',
8672    value: function onLoadedStream() {
8673      return this.streamManager.onLoadedStream();
8674    }
8675  }, {
8676    key: 'terminate',
8677    value: function terminate() {
8678      this.streamManager.abort();
8679    }
8680  }]);
8681
8682  return NetworkPdfManager;
8683}(BasePdfManager);
8684
8685exports.LocalPdfManager = LocalPdfManager;
8686exports.NetworkPdfManager = NetworkPdfManager;
8687
8688/***/ }),
8689/* 131 */
8690/***/ (function(module, exports, __w_pdfjs_require__) {
8691
8692"use strict";
8693
8694
8695module.exports = __w_pdfjs_require__(132);
8696
8697/***/ }),
8698/* 132 */
8699/***/ (function(module, exports, __w_pdfjs_require__) {
8700
8701"use strict";
8702
8703
8704var g = function () {
8705  return this;
8706}() || Function("return this")();
8707var hadRuntime = g.regeneratorRuntime && Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0;
8708var oldRuntime = hadRuntime && g.regeneratorRuntime;
8709g.regeneratorRuntime = undefined;
8710module.exports = __w_pdfjs_require__(133);
8711if (hadRuntime) {
8712  g.regeneratorRuntime = oldRuntime;
8713} else {
8714  try {
8715    delete g.regeneratorRuntime;
8716  } catch (e) {
8717    g.regeneratorRuntime = undefined;
8718  }
8719}
8720
8721/***/ }),
8722/* 133 */
8723/***/ (function(module, exports, __w_pdfjs_require__) {
8724
8725"use strict";
8726/* WEBPACK VAR INJECTION */(function(module) {
8727
8728var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
8729
8730!function (global) {
8731  "use strict";
8732
8733  var Op = Object.prototype;
8734  var hasOwn = Op.hasOwnProperty;
8735  var undefined;
8736  var $Symbol = typeof Symbol === "function" ? Symbol : {};
8737  var iteratorSymbol = $Symbol.iterator || "@@iterator";
8738  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
8739  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
8740  var inModule = ( false ? undefined : _typeof(module)) === "object";
8741  var runtime = global.regeneratorRuntime;
8742  if (runtime) {
8743    if (inModule) {
8744      module.exports = runtime;
8745    }
8746    return;
8747  }
8748  runtime = global.regeneratorRuntime = inModule ? module.exports : {};
8749  function wrap(innerFn, outerFn, self, tryLocsList) {
8750    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
8751    var generator = Object.create(protoGenerator.prototype);
8752    var context = new Context(tryLocsList || []);
8753    generator._invoke = makeInvokeMethod(innerFn, self, context);
8754    return generator;
8755  }
8756  runtime.wrap = wrap;
8757  function tryCatch(fn, obj, arg) {
8758    try {
8759      return {
8760        type: "normal",
8761        arg: fn.call(obj, arg)
8762      };
8763    } catch (err) {
8764      return {
8765        type: "throw",
8766        arg: err
8767      };
8768    }
8769  }
8770  var GenStateSuspendedStart = "suspendedStart";
8771  var GenStateSuspendedYield = "suspendedYield";
8772  var GenStateExecuting = "executing";
8773  var GenStateCompleted = "completed";
8774  var ContinueSentinel = {};
8775  function Generator() {}
8776  function GeneratorFunction() {}
8777  function GeneratorFunctionPrototype() {}
8778  var IteratorPrototype = {};
8779  IteratorPrototype[iteratorSymbol] = function () {
8780    return this;
8781  };
8782  var getProto = Object.getPrototypeOf;
8783  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
8784  if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
8785    IteratorPrototype = NativeIteratorPrototype;
8786  }
8787  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
8788  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
8789  GeneratorFunctionPrototype.constructor = GeneratorFunction;
8790  GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction";
8791  function defineIteratorMethods(prototype) {
8792    ["next", "throw", "return"].forEach(function (method) {
8793      prototype[method] = function (arg) {
8794        return this._invoke(method, arg);
8795      };
8796    });
8797  }
8798  runtime.isGeneratorFunction = function (genFun) {
8799    var ctor = typeof genFun === "function" && genFun.constructor;
8800    return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === "GeneratorFunction" : false;
vendor: 6,424 bytes, lines 8801-8999
8801  };
8802  runtime.mark = function (genFun) {
8803    if (Object.setPrototypeOf) {
8804      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
8805    } else {
8806      genFun.__proto__ = GeneratorFunctionPrototype;
8807      if (!(toStringTagSymbol in genFun)) {
8808        genFun[toStringTagSymbol] = "GeneratorFunction";
8809      }
8810    }
8811    genFun.prototype = Object.create(Gp);
8812    return genFun;
8813  };
8814  runtime.awrap = function (arg) {
8815    return { __await: arg };
8816  };
8817  function AsyncIterator(generator) {
8818    function invoke(method, arg, resolve, reject) {
8819      var record = tryCatch(generator[method], generator, arg);
8820      if (record.type === "throw") {
8821        reject(record.arg);
8822      } else {
8823        var result = record.arg;
8824        var value = result.value;
8825        if (value && (typeof value === "undefined" ? "undefined" : _typeof(value)) === "object" && hasOwn.call(value, "__await")) {
8826          return Promise.resolve(value.__await).then(function (value) {
8827            invoke("next", value, resolve, reject);
8828          }, function (err) {
8829            invoke("throw", err, resolve, reject);
8830          });
8831        }
8832        return Promise.resolve(value).then(function (unwrapped) {
8833          result.value = unwrapped;
8834          resolve(result);
8835        }, reject);
8836      }
8837    }
8838    var previousPromise;
8839    function enqueue(method, arg) {
8840      function callInvokeWithMethodAndArg() {
8841        return new Promise(function (resolve, reject) {
8842          invoke(method, arg, resolve, reject);
8843        });
8844      }
8845      return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
8846    }
8847    this._invoke = enqueue;
8848  }
8849  defineIteratorMethods(AsyncIterator.prototype);
8850  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
8851    return this;
8852  };
8853  runtime.AsyncIterator = AsyncIterator;
8854  runtime.async = function (innerFn, outerFn, self, tryLocsList) {
8855    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
8856    return runtime.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
8857      return result.done ? result.value : iter.next();
8858    });
8859  };
8860  function makeInvokeMethod(innerFn, self, context) {
8861    var state = GenStateSuspendedStart;
8862    return function invoke(method, arg) {
8863      if (state === GenStateExecuting) {
8864        throw new Error("Generator is already running");
8865      }
8866      if (state === GenStateCompleted) {
8867        if (method === "throw") {
8868          throw arg;
8869        }
8870        return doneResult();
8871      }
8872      context.method = method;
8873      context.arg = arg;
8874      while (true) {
8875        var delegate = context.delegate;
8876        if (delegate) {
8877          var delegateResult = maybeInvokeDelegate(delegate, context);
8878          if (delegateResult) {
8879            if (delegateResult === ContinueSentinel) continue;
8880            return delegateResult;
8881          }
8882        }
8883        if (context.method === "next") {
8884          context.sent = context._sent = context.arg;
8885        } else if (context.method === "throw") {
8886          if (state === GenStateSuspendedStart) {
8887            state = GenStateCompleted;
8888            throw context.arg;
8889          }
8890          context.dispatchException(context.arg);
8891        } else if (context.method === "return") {
8892          context.abrupt("return", context.arg);
8893        }
8894        state = GenStateExecuting;
8895        var record = tryCatch(innerFn, self, context);
8896        if (record.type === "normal") {
8897          state = context.done ? GenStateCompleted : GenStateSuspendedYield;
8898          if (record.arg === ContinueSentinel) {
8899            continue;
8900          }
8901          return {
8902            value: record.arg,
8903            done: context.done
8904          };
8905        } else if (record.type === "throw") {
8906          state = GenStateCompleted;
8907          context.method = "throw";
8908          context.arg = record.arg;
8909        }
8910      }
8911    };
8912  }
8913  function maybeInvokeDelegate(delegate, context) {
8914    var method = delegate.iterator[context.method];
8915    if (method === undefined) {
8916      context.delegate = null;
8917      if (context.method === "throw") {
8918        if (delegate.iterator.return) {
8919          context.method = "return";
8920          context.arg = undefined;
8921          maybeInvokeDelegate(delegate, context);
8922          if (context.method === "throw") {
8923            return ContinueSentinel;
8924          }
8925        }
8926        context.method = "throw";
8927        context.arg = new TypeError("The iterator does not provide a 'throw' method");
8928      }
8929      return ContinueSentinel;
8930    }
8931    var record = tryCatch(method, delegate.iterator, context.arg);
8932    if (record.type === "throw") {
8933      context.method = "throw";
8934      context.arg = record.arg;
8935      context.delegate = null;
8936      return ContinueSentinel;
8937    }
8938    var info = record.arg;
8939    if (!info) {
8940      context.method = "throw";
8941      context.arg = new TypeError("iterator result is not an object");
8942      context.delegate = null;
8943      return ContinueSentinel;
8944    }
8945    if (info.done) {
8946      context[delegate.resultName] = info.value;
8947      context.next = delegate.nextLoc;
8948      if (context.method !== "return") {
8949        context.method = "next";
8950        context.arg = undefined;
8951      }
8952    } else {
8953      return info;
8954    }
8955    context.delegate = null;
8956    return ContinueSentinel;
8957  }
8958  defineIteratorMethods(Gp);
8959  Gp[toStringTagSymbol] = "Generator";
8960  Gp[iteratorSymbol] = function () {
8961    return this;
8962  };
8963  Gp.toString = function () {
8964    return "[object Generator]";
8965  };
8966  function pushTryEntry(locs) {
8967    var entry = { tryLoc: locs[0] };
8968    if (1 in locs) {
8969      entry.catchLoc = locs[1];
8970    }
8971    if (2 in locs) {
8972      entry.finallyLoc = locs[2];
8973      entry.afterLoc = locs[3];
8974    }
8975    this.tryEntries.push(entry);
8976  }
8977  function resetTryEntry(entry) {
8978    var record = entry.completion || {};
8979    record.type = "normal";
8980    delete record.arg;
8981    entry.completion = record;
8982  }
8983  function Context(tryLocsList) {
8984    this.tryEntries = [{ tryLoc: "root" }];
8985    tryLocsList.forEach(pushTryEntry, this);
8986    this.reset(true);
8987  }
8988  runtime.keys = function (object) {
8989    var keys = [];
8990    for (var key in object) {
8991      keys.push(key);
8992    }
8993    keys.reverse();
8994    return function next() {
8995      while (keys.length) {
8996        var key = keys.pop();
8997        if (key in object) {
8998          next.value = key;
8999          next.done = false;
vendor: 4,115 bytes, lines 9000-9136
9000          return next;
9001        }
9002      }
9003      next.done = true;
9004      return next;
9005    };
9006  };
9007  function values(iterable) {
9008    if (iterable) {
9009      var iteratorMethod = iterable[iteratorSymbol];
9010      if (iteratorMethod) {
9011        return iteratorMethod.call(iterable);
9012      }
9013      if (typeof iterable.next === "function") {
9014        return iterable;
9015      }
9016      if (!isNaN(iterable.length)) {
9017        var i = -1,
9018            next = function next() {
9019          while (++i < iterable.length) {
9020            if (hasOwn.call(iterable, i)) {
9021              next.value = iterable[i];
9022              next.done = false;
9023              return next;
9024            }
9025          }
9026          next.value = undefined;
9027          next.done = true;
9028          return next;
9029        };
9030        return next.next = next;
9031      }
9032    }
9033    return { next: doneResult };
9034  }
9035  runtime.values = values;
9036  function doneResult() {
9037    return {
9038      value: undefined,
9039      done: true
9040    };
9041  }
9042  Context.prototype = {
9043    constructor: Context,
9044    reset: function reset(skipTempReset) {
9045      this.prev = 0;
9046      this.next = 0;
9047      this.sent = this._sent = undefined;
9048      this.done = false;
9049      this.delegate = null;
9050      this.method = "next";
9051      this.arg = undefined;
9052      this.tryEntries.forEach(resetTryEntry);
9053      if (!skipTempReset) {
9054        for (var name in this) {
9055          if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
9056            this[name] = undefined;
9057          }
9058        }
9059      }
9060    },
9061    stop: function stop() {
9062      this.done = true;
9063      var rootEntry = this.tryEntries[0];
9064      var rootRecord = rootEntry.completion;
9065      if (rootRecord.type === "throw") {
9066        throw rootRecord.arg;
9067      }
9068      return this.rval;
9069    },
9070    dispatchException: function dispatchException(exception) {
9071      if (this.done) {
9072        throw exception;
9073      }
9074      var context = this;
9075      function handle(loc, caught) {
9076        record.type = "throw";
9077        record.arg = exception;
9078        context.next = loc;
9079        if (caught) {
9080          context.method = "next";
9081          context.arg = undefined;
9082        }
9083        return !!caught;
9084      }
9085      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
9086        var entry = this.tryEntries[i];
9087        var record = entry.completion;
9088        if (entry.tryLoc === "root") {
9089          return handle("end");
9090        }
9091        if (entry.tryLoc <= this.prev) {
9092          var hasCatch = hasOwn.call(entry, "catchLoc");
9093          var hasFinally = hasOwn.call(entry, "finallyLoc");
9094          if (hasCatch && hasFinally) {
9095            if (this.prev < entry.catchLoc) {
9096              return handle(entry.catchLoc, true);
9097            } else if (this.prev < entry.finallyLoc) {
9098              return handle(entry.finallyLoc);
9099            }
9100          } else if (hasCatch) {
9101            if (this.prev < entry.catchLoc) {
9102              return handle(entry.catchLoc, true);
9103            }
9104          } else if (hasFinally) {
9105            if (this.prev < entry.finallyLoc) {
9106              return handle(entry.finallyLoc);
9107            }
9108          } else {
9109            throw new Error("try statement without catch or finally");
9110          }
9111        }
9112      }
9113    },
9114    abrupt: function abrupt(type, arg) {
9115      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
9116        var entry = this.tryEntries[i];
9117        if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
9118          var finallyEntry = entry;
9119          break;
9120        }
9121      }
9122      if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
9123        finallyEntry = null;
9124      }
9125      var record = finallyEntry ? finallyEntry.completion : {};
9126      record.type = type;
9127      record.arg = arg;
9128      if (finallyEntry) {
9129        this.method = "next";
9130        this.next = finallyEntry.finallyLoc;
9131        return ContinueSentinel;
9132      }
9133      return this.complete(record);
9134    },
9135    complete: function complete(record, afterLoc) {
9136      if (record.type === "throw") {
9137        throw record.arg;
9138      }
9139      if (record.type === "break" || record.type === "continue") {
9140        this.next = record.arg;
9141      } else if (record.type === "return") {
9142        this.rval = this.arg = record.arg;
9143        this.method = "return";
9144        this.next = "end";
9145      } else if (record.type === "normal" && afterLoc) {
9146        this.next = afterLoc;
9147      }
9148      return ContinueSentinel;
9149    },
9150    finish: function finish(finallyLoc) {
9151      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
9152        var entry = this.tryEntries[i];
9153        if (entry.finallyLoc === finallyLoc) {
9154          this.complete(entry.completion, entry.afterLoc);
9155          resetTryEntry(entry);
9156          return ContinueSentinel;
9157        }
9158      }
9159    },
9160    "catch": function _catch(tryLoc) {
9161      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
9162        var entry = this.tryEntries[i];
9163        if (entry.tryLoc === tryLoc) {
9164          var record = entry.completion;
9165          if (record.type === "throw") {
9166            var thrown = record.arg;
9167            resetTryEntry(entry);
9168          }
9169          return thrown;
9170        }
9171      }
9172      throw new Error("illegal catch attempt");
9173    },
9174    delegateYield: function delegateYield(iterable, resultName, nextLoc) {
9175      this.delegate = {
9176        iterator: values(iterable),
9177        resultName: resultName,
9178        nextLoc: nextLoc
9179      };
9180      if (this.method === "next") {
9181        this.arg = undefined;
9182      }
9183      return ContinueSentinel;
9184    }
9185  };
9186}(function () {
9187  return this;
9188}() || Function("return this")());
9189/* WEBPACK VAR INJECTION */}.call(this, __w_pdfjs_require__(134)(module)))
9190
9191/***/ }),
9192/* 134 */
9193/***/ (function(module, exports, __w_pdfjs_require__) {
9194
9195"use strict";
9196
9197
9198module.exports = function (module) {
9199  if (!module.webpackPolyfill) {
9200    module.deprecate = function () {};
9201    module.paths = [];
9202    if (!module.children) module.children = [];
9203    Object.defineProperty(module, "loaded", {
9204      enumerable: true,
9205      get: function get() {
9206        return module.l;
9207      }
9208    });
9209    Object.defineProperty(module, "id", {
9210      enumerable: true,
9211      get: function get() {
9212        return module.i;
9213      }
9214    });
9215    module.webpackPolyfill = 1;
9216  }
9217  return module;
9218};
9219
9220/***/ }),
9221/* 135 */
9222/***/ (function(module, exports, __w_pdfjs_require__) {
9223
9224"use strict";
9225
9226
9227Object.defineProperty(exports, "__esModule", {
9228  value: true
9229});
9230exports.ChunkedStreamManager = exports.ChunkedStream = undefined;
9231
9232var _util = __w_pdfjs_require__(2);
9233
9234var ChunkedStream = function ChunkedStreamClosure() {
9235  function ChunkedStream(length, chunkSize, manager) {
9236    this.bytes = new Uint8Array(length);
9237    this.start = 0;
9238    this.pos = 0;
9239    this.end = length;
9240    this.chunkSize = chunkSize;
9241    this.loadedChunks = [];
9242    this.numChunksLoaded = 0;
9243    this.numChunks = Math.ceil(length / chunkSize);
9244    this.manager = manager;
9245    this.progressiveDataLength = 0;
9246    this.lastSuccessfulEnsureByteChunk = -1;
9247  }
9248  ChunkedStream.prototype = {
9249    getMissingChunks: function ChunkedStream_getMissingChunks() {
9250      var chunks = [];
9251      for (var chunk = 0, n = this.numChunks; chunk < n; ++chunk) {
9252        if (!this.loadedChunks[chunk]) {
9253          chunks.push(chunk);
9254        }
9255      }
9256      return chunks;
9257    },
9258    getBaseStreams: function ChunkedStream_getBaseStreams() {
9259      return [this];
9260    },
9261    allChunksLoaded: function ChunkedStream_allChunksLoaded() {
9262      return this.numChunksLoaded === this.numChunks;
9263    },
9264    onReceiveData: function ChunkedStream_onReceiveData(begin, chunk) {
9265      var end = begin + chunk.byteLength;
9266      if (begin % this.chunkSize !== 0) {
9267        throw new Error('Bad begin offset: ' + begin);
9268      }
9269      var length = this.bytes.length;
9270      if (end % this.chunkSize !== 0 && end !== length) {
9271        throw new Error('Bad end offset: ' + end);
9272      }
9273      this.bytes.set(new Uint8Array(chunk), begin);
9274      var chunkSize = this.chunkSize;
9275      var beginChunk = Math.floor(begin / chunkSize);
9276      var endChunk = Math.floor((end - 1) / chunkSize) + 1;
9277      var curChunk;
9278      for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) {
9279        if (!this.loadedChunks[curChunk]) {
9280          this.loadedChunks[curChunk] = true;
9281          ++this.numChunksLoaded;
9282        }
9283      }
9284    },
9285    onReceiveProgressiveData: function ChunkedStream_onReceiveProgressiveData(data) {
9286      var position = this.progressiveDataLength;
9287      var beginChunk = Math.floor(position / this.chunkSize);
9288      this.bytes.set(new Uint8Array(data), position);
9289      position += data.byteLength;
9290      this.progressiveDataLength = position;
9291      var endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize);
9292      var curChunk;
9293      for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) {
9294        if (!this.loadedChunks[curChunk]) {
9295          this.loadedChunks[curChunk] = true;
9296          ++this.numChunksLoaded;
9297        }
9298      }
9299    },
9300    ensureByte: function ChunkedStream_ensureByte(pos) {
9301      var chunk = Math.floor(pos / this.chunkSize);
9302      if (chunk === this.lastSuccessfulEnsureByteChunk) {
9303        return;
9304      }
9305      if (!this.loadedChunks[chunk]) {
9306        throw new _util.MissingDataException(pos, pos + 1);
9307      }
9308      this.lastSuccessfulEnsureByteChunk = chunk;
9309    },
9310    ensureRange: function ChunkedStream_ensureRange(begin, end) {
9311      if (begin >= end) {
9312        return;
9313      }
9314      if (end <= this.progressiveDataLength) {
9315        return;
9316      }
9317      var chunkSize = this.chunkSize;
9318      var beginChunk = Math.floor(begin / chunkSize);
9319      var endChunk = Math.floor((end - 1) / chunkSize) + 1;
9320      for (var chunk = beginChunk; chunk < endChunk; ++chunk) {
9321        if (!this.loadedChunks[chunk]) {
9322          throw new _util.MissingDataException(begin, end);
9323        }
9324      }
9325    },
9326    nextEmptyChunk: function ChunkedStream_nextEmptyChunk(beginChunk) {
9327      var chunk,
9328          numChunks = this.numChunks;
9329      for (var i = 0; i < numChunks; ++i) {
9330        chunk = (beginChunk + i) % numChunks;
9331        if (!this.loadedChunks[chunk]) {
9332          return chunk;
9333        }
9334      }
9335      return null;
9336    },
9337    hasChunk: function ChunkedStream_hasChunk(chunk) {
9338      return !!this.loadedChunks[chunk];
9339    },
9340    get length() {
9341      return this.end - this.start;
9342    },
9343    get isEmpty() {
9344      return this.length === 0;
9345    },
9346    getByte: function ChunkedStream_getByte() {
9347      var pos = this.pos;
9348      if (pos >= this.end) {
9349        return -1;
9350      }
9351      this.ensureByte(pos);
9352      return this.bytes[this.pos++];
9353    },
9354    getUint16: function ChunkedStream_getUint16() {
9355      var b0 = this.getByte();
9356      var b1 = this.getByte();
9357      if (b0 === -1 || b1 === -1) {
9358        return -1;
9359      }
9360      return (b0 << 8) + b1;
9361    },
9362    getInt32: function ChunkedStream_getInt32() {
9363      var b0 = this.getByte();
9364      var b1 = this.getByte();
9365      var b2 = this.getByte();
9366      var b3 = this.getByte();
9367      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
9368    },
9369    getBytes: function getBytes(length) {
9370      var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
9371
9372      var bytes = this.bytes;
9373      var pos = this.pos;
9374      var strEnd = this.end;
9375      if (!length) {
9376        this.ensureRange(pos, strEnd);
9377        var _subarray = bytes.subarray(pos, strEnd);
9378        return forceClamped ? new Uint8ClampedArray(_subarray) : _subarray;
9379      }
9380      var end = pos + length;
9381      if (end > strEnd) {
9382        end = strEnd;
9383      }
9384      this.ensureRange(pos, end);
9385      this.pos = end;
9386      var subarray = bytes.subarray(pos, end);
9387      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;
9388    },
9389
9390    peekByte: function ChunkedStream_peekByte() {
9391      var peekedByte = this.getByte();
9392      this.pos--;
9393      return peekedByte;
9394    },
9395    peekBytes: function peekBytes(length) {
9396      var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
9397
9398      var bytes = this.getBytes(length, forceClamped);
9399      this.pos -= bytes.length;
9400      return bytes;
9401    },
9402
9403    getByteRange: function ChunkedStream_getBytes(begin, end) {
9404      this.ensureRange(begin, end);
9405      return this.bytes.subarray(begin, end);
9406    },
9407    skip: function ChunkedStream_skip(n) {
9408      if (!n) {
9409        n = 1;
9410      }
9411      this.pos += n;
9412    },
9413    reset: function ChunkedStream_reset() {
9414      this.pos = this.start;
9415    },
9416    moveStart: function ChunkedStream_moveStart() {
9417      this.start = this.pos;
9418    },
9419    makeSubStream: function ChunkedStream_makeSubStream(start, length, dict) {
9420      this.ensureRange(start, start + length);
9421      function ChunkedStreamSubstream() {}
9422      ChunkedStreamSubstream.prototype = Object.create(this);
9423      ChunkedStreamSubstream.prototype.getMissingChunks = function () {
9424        var chunkSize = this.chunkSize;
9425        var beginChunk = Math.floor(this.start / chunkSize);
9426        var endChunk = Math.floor((this.end - 1) / chunkSize) + 1;
9427        var missingChunks = [];
9428        for (var chunk = beginChunk; chunk < endChunk; ++chunk) {
9429          if (!this.loadedChunks[chunk]) {
9430            missingChunks.push(chunk);
9431          }
9432        }
9433        return missingChunks;
9434      };
9435      var subStream = new ChunkedStreamSubstream();
9436      subStream.pos = subStream.start = start;
9437      subStream.end = start + length || this.end;
9438      subStream.dict = dict;
9439      return subStream;
9440    }
9441  };
9442  return ChunkedStream;
9443}();
9444var ChunkedStreamManager = function ChunkedStreamManagerClosure() {
9445  function ChunkedStreamManager(pdfNetworkStream, args) {
9446    var chunkSize = args.rangeChunkSize;
9447    var length = args.length;
9448    this.stream = new ChunkedStream(length, chunkSize, this);
9449    this.length = length;
9450    this.chunkSize = chunkSize;
9451    this.pdfNetworkStream = pdfNetworkStream;
9452    this.url = args.url;
9453    this.disableAutoFetch = args.disableAutoFetch;
9454    this.msgHandler = args.msgHandler;
9455    this.currRequestId = 0;
9456    this.chunksNeededByRequest = Object.create(null);
9457    this.requestsByChunk = Object.create(null);
9458    this.promisesByRequest = Object.create(null);
9459    this.progressiveDataLength = 0;
9460    this.aborted = false;
9461    this._loadedStreamCapability = (0, _util.createPromiseCapability)();
9462  }
9463  ChunkedStreamManager.prototype = {
9464    onLoadedStream: function ChunkedStreamManager_getLoadedStream() {
9465      return this._loadedStreamCapability.promise;
9466    },
9467    sendRequest: function ChunkedStreamManager_sendRequest(begin, end) {
9468      var _this = this;
9469
9470      var rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);
9471      if (!rangeReader.isStreamingSupported) {
9472        rangeReader.onProgress = this.onProgress.bind(this);
9473      }
9474      var chunks = [],
9475          loaded = 0;
9476      var manager = this;
9477      var promise = new Promise(function (resolve, reject) {
9478        var readChunk = function readChunk(chunk) {
9479          try {
9480            if (!chunk.done) {
9481              var data = chunk.value;
9482              chunks.push(data);
9483              loaded += (0, _util.arrayByteLength)(data);
9484              if (rangeReader.isStreamingSupported) {
9485                manager.onProgress({ loaded: loaded });
9486              }
9487              rangeReader.read().then(readChunk, reject);
9488              return;
9489            }
9490            var chunkData = (0, _util.arraysToBytes)(chunks);
9491            chunks = null;
9492            resolve(chunkData);
9493          } catch (e) {
9494            reject(e);
9495          }
9496        };
9497        rangeReader.read().then(readChunk, reject);
9498      });
9499      promise.then(function (data) {
9500        if (_this.aborted) {
9501          return;
9502        }
9503        _this.onReceiveData({
9504          chunk: data,
9505          begin: begin
9506        });
9507      });
9508    },
9509    requestAllChunks: function ChunkedStreamManager_requestAllChunks() {
9510      var missingChunks = this.stream.getMissingChunks();
9511      this._requestChunks(missingChunks);
9512      return this._loadedStreamCapability.promise;
9513    },
9514    _requestChunks: function ChunkedStreamManager_requestChunks(chunks) {
9515      var requestId = this.currRequestId++;
9516      var i, ii;
9517      var chunksNeeded = Object.create(null);
9518      this.chunksNeededByRequest[requestId] = chunksNeeded;
9519      for (i = 0, ii = chunks.length; i < ii; i++) {
9520        if (!this.stream.hasChunk(chunks[i])) {
9521          chunksNeeded[chunks[i]] = true;
9522        }
9523      }
9524      if ((0, _util.isEmptyObj)(chunksNeeded)) {
9525        return Promise.resolve();
9526      }
9527      var capability = (0, _util.createPromiseCapability)();
9528      this.promisesByRequest[requestId] = capability;
9529      var chunksToRequest = [];
9530      for (var chunk in chunksNeeded) {
9531        chunk = chunk | 0;
9532        if (!(chunk in this.requestsByChunk)) {
9533          this.requestsByChunk[chunk] = [];
9534          chunksToRequest.push(chunk);
9535        }
9536        this.requestsByChunk[chunk].push(requestId);
9537      }
9538      if (!chunksToRequest.length) {
9539        return capability.promise;
9540      }
9541      var groupedChunksToRequest = this.groupChunks(chunksToRequest);
9542      for (i = 0; i < groupedChunksToRequest.length; ++i) {
9543        var groupedChunk = groupedChunksToRequest[i];
9544        var begin = groupedChunk.beginChunk * this.chunkSize;
9545        var end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);
9546        this.sendRequest(begin, end);
9547      }
9548      return capability.promise;
9549    },
9550    getStream: function ChunkedStreamManager_getStream() {
9551      return this.stream;
9552    },
9553    requestRange: function ChunkedStreamManager_requestRange(begin, end) {
9554      end = Math.min(end, this.length);
9555      var beginChunk = this.getBeginChunk(begin);
9556      var endChunk = this.getEndChunk(end);
9557      var chunks = [];
9558      for (var chunk = beginChunk; chunk < endChunk; ++chunk) {
9559        chunks.push(chunk);
9560      }
9561      return this._requestChunks(chunks);
9562    },
9563    requestRanges: function ChunkedStreamManager_requestRanges(ranges) {
9564      ranges = ranges || [];
9565      var chunksToRequest = [];
9566      for (var i = 0; i < ranges.length; i++) {
9567        var beginChunk = this.getBeginChunk(ranges[i].begin);
9568        var endChunk = this.getEndChunk(ranges[i].end);
9569        for (var chunk = beginChunk; chunk < endChunk; ++chunk) {
9570          if (!chunksToRequest.includes(chunk)) {
9571            chunksToRequest.push(chunk);
9572          }
9573        }
9574      }
9575      chunksToRequest.sort(function (a, b) {
9576        return a - b;
9577      });
9578      return this._requestChunks(chunksToRequest);
9579    },
9580    groupChunks: function ChunkedStreamManager_groupChunks(chunks) {
9581      var groupedChunks = [];
9582      var beginChunk = -1;
9583      var prevChunk = -1;
9584      for (var i = 0; i < chunks.length; ++i) {
9585        var chunk = chunks[i];
9586        if (beginChunk < 0) {
9587          beginChunk = chunk;
9588        }
9589        if (prevChunk >= 0 && prevChunk + 1 !== chunk) {
9590          groupedChunks.push({
9591            beginChunk: beginChunk,
9592            endChunk: prevChunk + 1
9593          });
9594          beginChunk = chunk;
9595        }
9596        if (i + 1 === chunks.length) {
9597          groupedChunks.push({
9598            beginChunk: beginChunk,
9599            endChunk: chunk + 1
9600          });
9601        }
9602        prevChunk = chunk;
9603      }
9604      return groupedChunks;
9605    },
9606    onProgress: function ChunkedStreamManager_onProgress(args) {
9607      var bytesLoaded = this.stream.numChunksLoaded * this.chunkSize + args.loaded;
9608      this.msgHandler.send('DocProgress', {
9609        loaded: bytesLoaded,
9610        total: this.length
9611      });
9612    },
9613    onReceiveData: function ChunkedStreamManager_onReceiveData(args) {
9614      var chunk = args.chunk;
9615      var isProgressive = args.begin === undefined;
9616      var begin = isProgressive ? this.progressiveDataLength : args.begin;
9617      var end = begin + chunk.byteLength;
9618      var beginChunk = Math.floor(begin / this.chunkSize);
9619      var endChunk = end < this.length ? Math.floor(end / this.chunkSize) : Math.ceil(end / this.chunkSize);
9620      if (isProgressive) {
9621        this.stream.onReceiveProgressiveData(chunk);
9622        this.progressiveDataLength = end;
9623      } else {
9624        this.stream.onReceiveData(begin, chunk);
9625      }
9626      if (this.stream.allChunksLoaded()) {
9627        this._loadedStreamCapability.resolve(this.stream);
9628      }
9629      var loadedRequests = [];
9630      var i, requestId;
9631      for (chunk = beginChunk; chunk < endChunk; ++chunk) {
9632        var requestIds = this.requestsByChunk[chunk] || [];
9633        delete this.requestsByChunk[chunk];
9634        for (i = 0; i < requestIds.length; ++i) {
9635          requestId = requestIds[i];
9636          var chunksNeeded = this.chunksNeededByRequest[requestId];
9637          if (chunk in chunksNeeded) {
9638            delete chunksNeeded[chunk];
9639          }
9640          if (!(0, _util.isEmptyObj)(chunksNeeded)) {
9641            continue;
9642          }
9643          loadedRequests.push(requestId);
9644        }
9645      }
9646      if (!this.disableAutoFetch && (0, _util.isEmptyObj)(this.requestsByChunk)) {
9647        var nextEmptyChunk;
9648        if (this.stream.numChunksLoaded === 1) {
9649          var lastChunk = this.stream.numChunks - 1;
9650          if (!this.stream.hasChunk(lastChunk)) {
9651            nextEmptyChunk = lastChunk;
9652          }
9653        } else {
9654          nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);
9655        }
9656        if (Number.isInteger(nextEmptyChunk)) {
9657          this._requestChunks([nextEmptyChunk]);
9658        }
9659      }
9660      for (i = 0; i < loadedRequests.length; ++i) {
9661        requestId = loadedRequests[i];
9662        var capability = this.promisesByRequest[requestId];
9663        delete this.promisesByRequest[requestId];
9664        capability.resolve();
9665      }
9666      this.msgHandler.send('DocProgress', {
9667        loaded: this.stream.numChunksLoaded * this.chunkSize,
9668        total: this.length
9669      });
9670    },
9671    onError: function ChunkedStreamManager_onError(err) {
9672      this._loadedStreamCapability.reject(err);
9673    },
9674    getBeginChunk: function ChunkedStreamManager_getBeginChunk(begin) {
9675      var chunk = Math.floor(begin / this.chunkSize);
9676      return chunk;
9677    },
9678    getEndChunk: function ChunkedStreamManager_getEndChunk(end) {
9679      var chunk = Math.floor((end - 1) / this.chunkSize) + 1;
9680      return chunk;
9681    },
9682    abort: function ChunkedStreamManager_abort() {
9683      this.aborted = true;
9684      if (this.pdfNetworkStream) {
9685        this.pdfNetworkStream.cancelAllRequests('abort');
9686      }
9687      for (var requestId in this.promisesByRequest) {
9688        var capability = this.promisesByRequest[requestId];
9689        capability.reject(new Error('Request was aborted'));
9690      }
9691    }
9692  };
9693  return ChunkedStreamManager;
9694}();
9695exports.ChunkedStream = ChunkedStream;
9696exports.ChunkedStreamManager = ChunkedStreamManager;
9697
9698/***/ }),
9699/* 136 */
9700/***/ (function(module, exports, __w_pdfjs_require__) {
9701
9702"use strict";
9703
9704
9705Object.defineProperty(exports, "__esModule", {
9706  value: true
9707});
9708exports.PDFDocument = exports.Page = undefined;
9709
9710var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
9711
9712var _util = __w_pdfjs_require__(2);
9713
9714var _obj = __w_pdfjs_require__(137);
9715
9716var _primitives = __w_pdfjs_require__(138);
9717
9718var _stream = __w_pdfjs_require__(140);
9719
9720var _annotation = __w_pdfjs_require__(152);
9721
9722var _crypto = __w_pdfjs_require__(150);
9723
9724var _parser = __w_pdfjs_require__(139);
9725
9726var _operator_list = __w_pdfjs_require__(153);
9727
9728var _evaluator = __w_pdfjs_require__(154);
9729
9730var _function = __w_pdfjs_require__(168);
9731
9732var Page = function PageClosure() {
9733  var DEFAULT_USER_UNIT = 1.0;
9734  var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];
9735  function isAnnotationRenderable(annotation, intent) {
9736    return intent === 'display' && annotation.viewable || intent === 'print' && annotation.printable;
9737  }
9738  function Page(_ref) {
9739    var pdfManager = _ref.pdfManager,
9740        xref = _ref.xref,
9741        pageIndex = _ref.pageIndex,
9742        pageDict = _ref.pageDict,
9743        ref = _ref.ref,
9744        fontCache = _ref.fontCache,
9745        builtInCMapCache = _ref.builtInCMapCache,
9746        pdfFunctionFactory = _ref.pdfFunctionFactory;
9747
9748    this.pdfManager = pdfManager;
9749    this.pageIndex = pageIndex;
9750    this.pageDict = pageDict;
9751    this.xref = xref;
9752    this.ref = ref;
9753    this.fontCache = fontCache;
9754    this.builtInCMapCache = builtInCMapCache;
9755    this.pdfFunctionFactory = pdfFunctionFactory;
9756    this.evaluatorOptions = pdfManager.evaluatorOptions;
9757    this.resourcesPromise = null;
9758    var uniquePrefix = 'p' + this.pageIndex + '_';
9759    var idCounters = { obj: 0 };
9760    this.idFactory = {
9761      createObjId: function createObjId() {
9762        return uniquePrefix + ++idCounters.obj;
9763      }
9764    };
9765  }
9766  Page.prototype = {
9767    _getInheritableProperty: function _getInheritableProperty(key) {
9768      var getArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
9769
9770      var value = (0, _util.getInheritableProperty)({
9771        dict: this.pageDict,
9772        key: key,
9773        getArray: getArray,
9774        stopWhenFound: false
9775      });
9776      if (!Array.isArray(value)) {
9777        return value;
9778      }
9779      if (value.length === 1 || !(0, _primitives.isDict)(value[0])) {
9780        return value[0];
9781      }
9782      return _primitives.Dict.merge(this.xref, value);
9783    },
9784
9785    get content() {
9786      return this.pageDict.get('Contents');
9787    },
9788    get resources() {
9789      return (0, _util.shadow)(this, 'resources', this._getInheritableProperty('Resources') || _primitives.Dict.empty);
9790    },
9791    get mediaBox() {
9792      var mediaBox = this._getInheritableProperty('MediaBox', true);
9793      if (!Array.isArray(mediaBox) || mediaBox.length !== 4) {
9794        return (0, _util.shadow)(this, 'mediaBox', LETTER_SIZE_MEDIABOX);
9795      }
9796      return (0, _util.shadow)(this, 'mediaBox', mediaBox);
9797    },
9798    get cropBox() {
9799      var cropBox = this._getInheritableProperty('CropBox', true);
9800      if (!Array.isArray(cropBox) || cropBox.length !== 4) {
9801        return (0, _util.shadow)(this, 'cropBox', this.mediaBox);
9802      }
9803      return (0, _util.shadow)(this, 'cropBox', cropBox);
9804    },
9805    get userUnit() {
9806      var obj = this.pageDict.get('UserUnit');
9807      if (!(0, _util.isNum)(obj) || obj <= 0) {
9808        obj = DEFAULT_USER_UNIT;
9809      }
9810      return (0, _util.shadow)(this, 'userUnit', obj);
9811    },
9812    get view() {
9813      var mediaBox = this.mediaBox,
9814          cropBox = this.cropBox;
9815      if (mediaBox === cropBox) {
9816        return (0, _util.shadow)(this, 'view', mediaBox);
9817      }
9818      var intersection = _util.Util.intersect(cropBox, mediaBox);
9819      return (0, _util.shadow)(this, 'view', intersection || mediaBox);
9820    },
9821    get rotate() {
9822      var rotate = this._getInheritableProperty('Rotate') || 0;
9823      if (rotate % 90 !== 0) {
9824        rotate = 0;
9825      } else if (rotate >= 360) {
9826        rotate = rotate % 360;
9827      } else if (rotate < 0) {
9828        rotate = (rotate % 360 + 360) % 360;
9829      }
9830      return (0, _util.shadow)(this, 'rotate', rotate);
9831    },
9832    getContentStream: function Page_getContentStream() {
9833      var content = this.content;
9834      var stream;
9835      if (Array.isArray(content)) {
9836        var xref = this.xref;
9837        var i,
9838            n = content.length;
9839        var streams = [];
9840        for (i = 0; i < n; ++i) {
9841          streams.push(xref.fetchIfRef(content[i]));
9842        }
9843        stream = new _stream.StreamsSequenceStream(streams);
9844      } else if ((0, _primitives.isStream)(content)) {
9845        stream = content;
9846      } else {
9847        stream = new _stream.NullStream();
9848      }
9849      return stream;
9850    },
9851    loadResources: function Page_loadResources(keys) {
9852      var _this = this;
9853
9854      if (!this.resourcesPromise) {
9855        this.resourcesPromise = this.pdfManager.ensure(this, 'resources');
9856      }
9857      return this.resourcesPromise.then(function () {
9858        var objectLoader = new _obj.ObjectLoader(_this.resources, keys, _this.xref);
9859        return objectLoader.load();
9860      });
9861    },
9862    getOperatorList: function getOperatorList(_ref2) {
9863      var _this2 = this;
9864
9865      var handler = _ref2.handler,
9866          task = _ref2.task,
9867          intent = _ref2.intent,
9868          renderInteractiveForms = _ref2.renderInteractiveForms;
9869
9870      var contentStreamPromise = this.pdfManager.ensure(this, 'getContentStream');
9871      var resourcesPromise = this.loadResources(['ExtGState', 'ColorSpace', 'Pattern', 'Shading', 'XObject', 'Font']);
9872      var partialEvaluator = new _evaluator.PartialEvaluator({
9873        pdfManager: this.pdfManager,
9874        xref: this.xref,
9875        handler: handler,
9876        pageIndex: this.pageIndex,
9877        idFactory: this.idFactory,
9878        fontCache: this.fontCache,
9879        builtInCMapCache: this.builtInCMapCache,
9880        options: this.evaluatorOptions,
9881        pdfFunctionFactory: this.pdfFunctionFactory
9882      });
9883      var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);
9884      var pageListPromise = dataPromises.then(function (_ref3) {
9885        var _ref4 = _slicedToArray(_ref3, 1),
9886            contentStream = _ref4[0];
9887
9888        var opList = new _operator_list.OperatorList(intent, handler, _this2.pageIndex);
9889        handler.send('StartRenderPage', {
9890          transparency: partialEvaluator.hasBlendModes(_this2.resources),
9891          pageIndex: _this2.pageIndex,
9892          intent: intent
9893        });
9894        return partialEvaluator.getOperatorList({
9895          stream: contentStream,
9896          task: task,
9897          resources: _this2.resources,
9898          operatorList: opList
9899        }).then(function () {
9900          return opList;
9901        });
9902      });
9903      return Promise.all([pageListPromise, this._parsedAnnotations]).then(function (_ref5) {
9904        var _ref6 = _slicedToArray(_ref5, 2),
9905            pageOpList = _ref6[0],
9906            annotations = _ref6[1];
9907
9908        if (annotations.length === 0) {
9909          pageOpList.flush(true);
9910          return pageOpList;
9911        }
9912        var i,
9913            ii,
9914            opListPromises = [];
9915        for (i = 0, ii = annotations.length; i < ii; i++) {
9916          if (isAnnotationRenderable(annotations[i], intent)) {
9917            opListPromises.push(annotations[i].getOperatorList(partialEvaluator, task, renderInteractiveForms));
9918          }
9919        }
9920        return Promise.all(opListPromises).then(function (opLists) {
9921          pageOpList.addOp(_util.OPS.beginAnnotations, []);
9922          for (i = 0, ii = opLists.length; i < ii; i++) {
9923            pageOpList.addOpList(opLists[i]);
9924          }
9925          pageOpList.addOp(_util.OPS.endAnnotations, []);
9926          pageOpList.flush(true);
9927          return pageOpList;
9928        });
9929      });
9930    },
9931    extractTextContent: function extractTextContent(_ref7) {
9932      var _this3 = this;
9933
9934      var handler = _ref7.handler,
9935          task = _ref7.task,
9936          normalizeWhitespace = _ref7.normalizeWhitespace,
9937          sink = _ref7.sink,
9938          combineTextItems = _ref7.combineTextItems;
9939
9940      var contentStreamPromise = this.pdfManager.ensure(this, 'getContentStream');
9941      var resourcesPromise = this.loadResources(['ExtGState', 'XObject', 'Font']);
9942      var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);
9943      return dataPromises.then(function (_ref8) {
9944        var _ref9 = _slicedToArray(_ref8, 1),
9945            contentStream = _ref9[0];
9946
9947        var partialEvaluator = new _evaluator.PartialEvaluator({
9948          pdfManager: _this3.pdfManager,
9949          xref: _this3.xref,
9950          handler: handler,
9951          pageIndex: _this3.pageIndex,
9952          idFactory: _this3.idFactory,
9953          fontCache: _this3.fontCache,
9954          builtInCMapCache: _this3.builtInCMapCache,
9955          options: _this3.evaluatorOptions,
9956          pdfFunctionFactory: _this3.pdfFunctionFactory
9957        });
9958        return partialEvaluator.getTextContent({
9959          stream: contentStream,
9960          task: task,
9961          resources: _this3.resources,
9962          normalizeWhitespace: normalizeWhitespace,
9963          combineTextItems: combineTextItems,
9964          sink: sink
9965        });
9966      });
9967    },
9968    getAnnotationsData: function getAnnotationsData(intent) {
9969      return this._parsedAnnotations.then(function (annotations) {
9970        var annotationsData = [];
9971        for (var i = 0, ii = annotations.length; i < ii; i++) {
9972          if (!intent || isAnnotationRenderable(annotations[i], intent)) {
9973            annotationsData.push(annotations[i].data);
9974          }
9975        }
9976        return annotationsData;
9977      });
9978    },
9979
9980    get annotations() {
9981      return (0, _util.shadow)(this, 'annotations', this._getInheritableProperty('Annots') || []);
9982    },
9983    get _parsedAnnotations() {
9984      var _this4 = this;
9985
9986      var parsedAnnotations = this.pdfManager.ensure(this, 'annotations').then(function () {
9987        var annotationRefs = _this4.annotations;
9988        var annotationPromises = [];
9989        for (var i = 0, ii = annotationRefs.length; i < ii; i++) {
9990          annotationPromises.push(_annotation.AnnotationFactory.create(_this4.xref, annotationRefs[i], _this4.pdfManager, _this4.idFactory));
9991        }
9992        return Promise.all(annotationPromises).then(function (annotations) {
9993          return annotations.filter(function isDefined(annotation) {
9994            return !!annotation;
9995          });
9996        }, function (reason) {
9997          (0, _util.warn)('_parsedAnnotations: "' + reason + '".');
9998          return [];
9999        });
10000      });
10001      return (0, _util.shadow)(this, '_parsedAnnotations', parsedAnnotations);
10002    }
10003  };
10004  return Page;
10005}();
10006var PDFDocument = function PDFDocumentClosure() {
10007  var FINGERPRINT_FIRST_BYTES = 1024;
10008  var EMPTY_FINGERPRINT = '\x00\x00\x00\x00\x00\x00\x00' + '\x00\x00\x00\x00\x00\x00\x00\x00\x00';
10009  function PDFDocument(pdfManager, arg) {
10010    var stream;
10011    if ((0, _primitives.isStream)(arg)) {
10012      stream = arg;
10013    } else if ((0, _util.isArrayBuffer)(arg)) {
10014      stream = new _stream.Stream(arg);
10015    } else {
10016      throw new Error('PDFDocument: Unknown argument type');
10017    }
10018    if (stream.length <= 0) {
10019      throw new Error('PDFDocument: stream must have data');
10020    }
10021    this.pdfManager = pdfManager;
10022    this.stream = stream;
10023    this.xref = new _obj.XRef(stream, pdfManager);
10024    var evaluatorOptions = pdfManager.evaluatorOptions;
10025    this.pdfFunctionFactory = new _function.PDFFunctionFactory({
10026      xref: this.xref,
10027      isEvalSupported: evaluatorOptions.isEvalSupported
10028    });
10029    this._pagePromises = [];
10030  }
10031  function find(stream, needle, limit, backwards) {
10032    var pos = stream.pos;
10033    var end = stream.end;
10034    var strBuf = [];
10035    if (pos + limit > end) {
10036      limit = end - pos;
10037    }
10038    for (var n = 0; n < limit; ++n) {
10039      strBuf.push(String.fromCharCode(stream.getByte()));
10040    }
10041    var str = strBuf.join('');
10042    stream.pos = pos;
10043    var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle);
10044    if (index === -1) {
10045      return false;
10046    }
10047    stream.pos += index;
10048    return true;
10049  }
10050  var DocumentInfoValidators = {
10051    Title: _util.isString,
10052    Author: _util.isString,
10053    Subject: _util.isString,
10054    Keywords: _util.isString,
10055    Creator: _util.isString,
10056    Producer: _util.isString,
10057    CreationDate: _util.isString,
10058    ModDate: _util.isString,
10059    Trapped: _primitives.isName
10060  };
10061  PDFDocument.prototype = {
10062    parse: function PDFDocument_parse(recoveryMode) {
10063      this.setup(recoveryMode);
10064      var version = this.catalog.catDict.get('Version');
10065      if ((0, _primitives.isName)(version)) {
10066        this.pdfFormatVersion = version.name;
10067      }
10068      try {
10069        this.acroForm = this.catalog.catDict.get('AcroForm');
10070        if (this.acroForm) {
10071          this.xfa = this.acroForm.get('XFA');
10072          var fields = this.acroForm.get('Fields');
10073          if ((!fields || !Array.isArray(fields) || fields.length === 0) && !this.xfa) {
10074            this.acroForm = null;
10075          }
10076        }
10077      } catch (ex) {
10078        if (ex instanceof _util.MissingDataException) {
10079          throw ex;
10080        }
10081        (0, _util.info)('Something wrong with AcroForm entry');
10082        this.acroForm = null;
10083      }
10084    },
10085    get linearization() {
10086      var linearization = null;
10087      try {
10088        linearization = _parser.Linearization.create(this.stream);
10089      } catch (err) {
10090        if (err instanceof _util.MissingDataException) {
10091          throw err;
10092        }
10093        (0, _util.info)(err);
10094      }
10095      return (0, _util.shadow)(this, 'linearization', linearization);
10096    },
10097    get startXRef() {
10098      var stream = this.stream;
10099      var startXRef = 0;
10100      var linearization = this.linearization;
10101      if (linearization) {
10102        stream.reset();
10103        if (find(stream, 'endobj', 1024)) {
10104          startXRef = stream.pos + 6;
10105        }
10106      } else {
10107        var step = 1024;
10108        var found = false,
10109            pos = stream.end;
10110        while (!found && pos > 0) {
10111          pos -= step - 'startxref'.length;
10112          if (pos < 0) {
10113            pos = 0;
10114          }
10115          stream.pos = pos;
10116          found = find(stream, 'startxref', step, true);
10117        }
10118        if (found) {
10119          stream.skip(9);
10120          var ch;
10121          do {
10122            ch = stream.getByte();
10123          } while ((0, _util.isSpace)(ch));
10124          var str = '';
10125          while (ch >= 0x20 && ch <= 0x39) {
10126            str += String.fromCharCode(ch);
10127            ch = stream.getByte();
10128          }
10129          startXRef = parseInt(str, 10);
10130          if (isNaN(startXRef)) {
10131            startXRef = 0;
10132          }
10133        }
10134      }
10135      return (0, _util.shadow)(this, 'startXRef', startXRef);
10136    },
10137    checkHeader: function PDFDocument_checkHeader() {
10138      var stream = this.stream;
10139      stream.reset();
10140      if (find(stream, '%PDF-', 1024)) {
10141        stream.moveStart();
10142        var MAX_VERSION_LENGTH = 12;
10143        var version = '',
10144            ch;
10145        while ((ch = stream.getByte()) > 0x20) {
10146          if (version.length >= MAX_VERSION_LENGTH) {
10147            break;
10148          }
10149          version += String.fromCharCode(ch);
10150        }
10151        if (!this.pdfFormatVersion) {
10152          this.pdfFormatVersion = version.substring(5);
10153        }
10154        return;
10155      }
10156    },
10157    parseStartXRef: function PDFDocument_parseStartXRef() {
10158      var startXRef = this.startXRef;
10159      this.xref.setStartXRef(startXRef);
10160    },
10161    setup: function PDFDocument_setup(recoveryMode) {
10162      this.xref.parse(recoveryMode);
10163      this.catalog = new _obj.Catalog(this.pdfManager, this.xref);
10164    },
10165    get numPages() {
10166      var linearization = this.linearization;
10167      var num = linearization ? linearization.numPages : this.catalog.numPages;
10168      return (0, _util.shadow)(this, 'numPages', num);
10169    },
10170    get documentInfo() {
10171      var docInfo = {
10172        PDFFormatVersion: this.pdfFormatVersion,
10173        IsLinearized: !!this.linearization,
10174        IsAcroFormPresent: !!this.acroForm,
10175        IsXFAPresent: !!this.xfa
10176      };
10177      var infoDict = void 0;
10178      try {
10179        infoDict = this.xref.trailer.get('Info');
10180      } catch (err) {
10181        if (err instanceof _util.MissingDataException) {
10182          throw err;
10183        }
10184        (0, _util.info)('The document information dictionary is invali
10184d.');
10185      }
10186      if ((0, _primitives.isDict)(infoDict)) {
10187        for (var key in DocumentInfoValidators) {
10188          if (infoDict.has(key)) {
10189            var value = infoDict.get(key);
10190            if (DocumentInfoValidators[key](value)) {
10191              docInfo[key] = typeof value !== 'string' ? value : (0, _util.stringToPDFString)(value);
10192            } else {
10193              (0, _util.info)('Bad value in document info for "' + key + '"');
10194            }
10195          }
10196        }
10197      }
10198      return (0, _util.shadow)(this, 'documentInfo', docInfo);
10199    },
10200    get fingerprint() {
10201      var xref = this.xref,
10202          hash,
10203          fileID = '';
10204      var idArray = xref.trailer.get('ID');
10205      if (Array.isArray(idArray) && idArray[0] && (0, _util.isString)(idArray[0]) && idArray[0] !== EMPTY_FINGERPRINT) {
10206        hash = (0, _util.stringToBytes)(idArray[0]);
10207      } else {
10208        if (this.stream.ensureRange) {
10209          this.stream.ensureRange(0, Math.min(FINGERPRINT_FIRST_BYTES, this.stream.end));
10210        }
10211        hash = (0, _crypto.calculateMD5)(this.stream.bytes.subarray(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);
10212      }
10213      for (var i = 0, n = hash.length; i < n; i++) {
10214        var hex = hash[i].toString(16);
10215        fileID += hex.length === 1 ? '0' + hex : hex;
10216      }
10217      return (0, _util.shadow)(this, 'fingerprint', fileID);
10218    },
10219    _getLinearizationPage: function _getLinearizationPage(pageIndex) {
10220      var catalog = this.catalog,
10221          linearization = this.linearization;
10222
10223      (0, _util.assert)(linearization && linearization.pageFirst === pageIndex);
10224      var ref = new _primitives.Ref(linearization.objectNumberFirst, 0);
10225      return this.xref.fetchAsync(ref).then(function (obj) {
10226        if ((0, _primitives.isDict)(obj, 'Page') || (0, _primitives.isDict)(obj) && !obj.has('Type') && obj.has('Contents')) {
10227          if (ref && !catalog.pageKidsCountCache.has(ref)) {
10228            catalog.pageKidsCountCache.put(ref, 1);
10229          }
10230          return [obj, ref];
10231        }
10232        throw new _util.FormatError('The Linearization dictionary doesn\'t point ' + 'to a valid Page dictionary.');
10233      }).catch(function (reason) {
10234        (0, _util.info)(reason);
10235        return catalog.getPageDict(pageIndex);
10236      });
10237    },
10238    getPage: function getPage(pageIndex) {
10239      var _this5 = this;
10240
10241      if (this._pagePromises[pageIndex] !== undefined) {
10242        return this._pagePromises[pageIndex];
10243      }
10244      var catalog = this.catalog,
10245          linearization = this.linearization;
10246
10247      var promise = linearization && linearization.pageFirst === pageIndex ? this._getLinearizationPage(pageIndex) : catalog.getPageDict(pageIndex);
10248      return this._pagePromises[pageIndex] = promise.then(function (_ref10) {
10249        var _ref11 = _slicedToArray(_ref10, 2),
10250            pageDict = _ref11[0],
10251            ref = _ref11[1];
10252
10253        return new Page({
10254          pdfManager: _this5.pdfManager,
10255          xref: _this5.xref,
10256          pageIndex: pageIndex,
10257          pageDict: pageDict,
10258          ref: ref,
10259          fontCache: catalog.fontCache,
10260          builtInCMapCache: catalog.builtInCMapCache,
10261          pdfFunctionFactory: _this5.pdfFunctionFactory
10262        });
10263      });
10264    },
10265
10266    cleanup: function PDFDocument_cleanup() {
10267      return this.catalog.cleanup();
10268    }
10269  };
10270  return PDFDocument;
10271}();
10272exports.Page = Page;
10273exports.PDFDocument = PDFDocument;
10274
10275/***/ }),
10276/* 137 */
10277/***/ (function(module, exports, __w_pdfjs_require__) {
10278
10279"use strict";
10280
10281
10282Object.defineProperty(exports, "__esModule", {
10283  value: true
10284});
10285exports.FileSpec = exports.XRef = exports.ObjectLoader = exports.Catalog = undefined;
10286
10287var _regenerator = __w_pdfjs_require__(131);
10288
10289var _regenerator2 = _interopRequireDefault(_regenerator);
10290
10291var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); }
10291 else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
10292
10293var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
10294
10295var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
10296
10297var _util = __w_pdfjs_require__(2);
10298
10299var _primitives = __w_pdfjs_require__(138);
10300
10301var _parser = __w_pdfjs_require__(139);
10302
10303var _chunked_stream = __w_pdfjs_require__(135);
10304
10305var _crypto = __w_pdfjs_require__(150);
10306
10307var _colorspace = __w_pdfjs_require__(151);
10308
10309function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10310
10311function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
10312
10313function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
10314
10315function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
10316
10317function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10318
10319function fetchDestination(dest) {
10320  return (0, _primitives.isDict)(dest) ? dest.get('D') : dest;
10321}
10322
10323var Catalog = function () {
10324  function Catalog(pdfManager, xref) {
10325    _classCallCheck(this, Catalog);
10326
10327    this.pdfManager = pdfManager;
10328    this.xref = xref;
10329    this.catDict = xref.getCatalogObj();
10330    if (!(0, _primitives.isDict)(this.catDict)) {
10331      throw new _util.FormatError('Catalog object is not a dictionary.');
10332    }
10333    this.fontCache = new _primitives.RefSetCache();
10334    this.builtInCMapCache = new Map();
10335    this.pageKidsCountCache = new _primitives.RefSetCache();
10336  }
10337
10338  _createClass(Catalog, [{
10339    key: '_readDocumentOutline',
10340    value: function _readDocumentOutline() {
10341      var obj = this.catDict.get('Outlines');
10342      if (!(0, _primitives.isDict)(obj)) {
10343        return null;
10344      }
10345      obj = obj.getRaw('First');
10346      if (!(0, _primitives.isRef)(obj)) {
10347        return null;
10348      }
10349      var root = { items: [] };
10350      var queue = [{
10351        obj: obj,
10352        parent: root
10353      }];
10354      var processed = new _primitives.RefSet();
10355      processed.put(obj);
10356      var xref = this.xref,
10357          blackColor = new Uint8ClampedArray(3);
10358      while (queue.length > 0) {
10359        var i = queue.shift();
10360        var outlineDict = xref.fetchIfRef(i.obj);
10361        if (outlineDict === null) {
10362          continue;
10363        }
10364        if (!outlineDict.has('Title')) {
10365          throw new _util.FormatError('Invalid outline item encountered.');
10366        }
10367        var data = {
10368          url: null,
10369          dest: null
10370        };
10371        Catalog.parseDestDictionary({
10372          destDict: outlineDict,
10373          resultObj: data,
10374          docBaseUrl: this.pdfManager.docBaseUrl
10375        });
10376        var title = outlineDict.get('Title');
10377        var flags = outlineDict.get('F') || 0;
10378        var color = outlineDict.getArray('C');
10379        var rgbColor = blackColor;
10380        if (Array.isArray(color) && color.length === 3 && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) {
10381          rgbColor = _colorspace.ColorSpace.singletons.rgb.getRgb(color, 0);
10382        }
10383        var outlineItem = {
10384          dest: data.dest,
10385          url: data.url,
10386          unsafeUrl: data.unsafeUrl,
10387          newWindow: data.newWindow,
10388          title: (0, _util.stringToPDFString)(title),
10389          color: rgbColor,
10390          count: outlineDict.get('Count'),
10391          bold: !!(flags & 2),
10392          italic: !!(flags & 1),
10393          items: []
10394        };
10395        i.parent.items.push(outlineItem);
10396        obj = outlineDict.getRaw('First');
10397        if ((0, _primitives.isRef)(obj) && !processed.has(obj)) {
10398          queue.push({
10399            obj: obj,
10400            parent: outlineItem
10401          });
10402          processed.put(obj);
10403        }
10404        obj = outlineDict.getRaw('Next');
10405        if ((0, _primitives.isRef)(obj) && !processed.has(obj)) {
10406          queue.push({
10407            obj: obj,
10408            parent: i.parent
10409          });
10410          processed.put(obj);
10411        }
10412      }
10413      return root.items.length > 0 ? root.items : null;
10414    }
10415  }, {
10416    key: '_readPermissions',
10417    value: function _readPermissions() {
10418      var encrypt = this.xref.trailer.get('Encrypt');
10419      if (!(0, _primitives.isDict)(encrypt)) {
10420        return null;
10421      }
10422      var flags = encrypt.get('P');
10423      if (!(0, _util.isNum)(flags)) {
10424        return null;
10425      }
10426      flags += Math.pow(2, 32);
10427      var permissions = [];
10428      for (var key in _util.PermissionFlag) {
10429        var value = _util.PermissionFlag[key];
10430        if (flags & value) {
10431          permissions.push(value);
10432        }
10433      }
10434      return permissions;
10435    }
10436  }, {
10437    key: 'getDestination',
10438    value: function getDestination(destinationId) {
10439      var obj = this._readDests();
10440      if (obj instanceof NameTree || obj instanceof _primitives.Dict) {
10441        return fetchDestination(obj.get(destinationId) || null);
10442      }
10443      return null;
10444    }
10445  }, {
10446    key: '_readDests',
10447    value: function _readDests() {
10448      var obj = this.catDict.get('Names');
10449      if (obj && obj.has('Dests')) {
10450        return new NameTree(obj.getRaw('Dests'), this.xref);
10451      } else if (this.catDict.has('Dests')) {
10452        return this.catDict.get('Dests');
10453      }
10454    }
10455  }, {
10456    key: '_readPageLabels',
10457    value: function _readPageLabels() {
10458      var obj = this.catDict.getRaw('PageLabels');
10459      if (!obj) {
10460        return null;
10461      }
10462      var pageLabels = new Array(this.numPages);
10463      var style = null,
10464          prefix = '';
10465      var numberTree = new NumberTree(obj, this.xref);
10466      var nums = numberTree.getAll();
10467      var currentLabel = '',
10468          currentIndex = 1;
10469      for (var i = 0, ii = this.numPages; i < ii; i++) {
10470        if (i in nums) {
10471          var labelDict = nums[i];
10472          if (!(0, _primitives.isDict)(labelDict)) {
10473            throw new _util.FormatError('PageLabel is not a dictionary.');
10474          }
10475          if (labelDict.has('Type') && !(0, _primitives.isName)(labelDict.get('Type'), 'PageLabel')) {
10476            throw new _util.FormatError('Invalid type in PageLabel dictionary.');
10477          }
10478          if (labelDict.has('S')) {
10479            var s = labelDict.get('S');
10480            if (!(0, _primitives.isName)(s)) {
10481              throw new _util.FormatError('Invalid style in PageLabel dictionary.');
10482            }
10483            style = s.name;
10484          } else {
10485            style = null;
10486          }
10487          if (labelDict.has('P')) {
10488            var p = labelDict.get('P');
10489            if (!(0, _util.isString)(p)) {
10490              throw new _util.FormatError('Invalid prefix in PageLabel dictionary.');
10491            }
10492            prefix = (0, _util.stringToPDFString)(p);
10493          } else {
10494            prefix = '';
10495          }
10496          if (labelDict.has('St')) {
10497            var st = labelDict.get('St');
10498            if (!(Number.isInteger(st) && st >= 1)) {
10499              throw new _util.FormatError('Invalid start in PageLabel dictionary.');
10500            }
10501            currentIndex = st;
10502          } else {
10503            currentIndex = 1;
10504          }
10505        }
10506        switch (style) {
10507          case 'D':
10508            currentLabel = currentIndex;
10509            break;
10510          case 'R':
10511          case 'r':
10512            currentLabel = (0, _util.toRomanNumerals)(currentIndex, style === 'r');
10513            break;
10514          case 'A':
10515          case 'a':
10516            var LIMIT = 26;
10517            var A_UPPER_CASE = 0x41,
10518                A_LOWER_CASE = 0x61;
10519            var baseCharCode = style === 'a' ? A_LOWER_CASE : A_UPPER_CASE;
10520            var letterIndex = currentIndex - 1;
10521            var character = String.fromCharCode(baseCharCode + letterIndex % LIMIT);
10522            var charBuf = [];
10523            for (var j = 0, jj = letterIndex / LIMIT | 0; j <= jj; j++) {
10524              charBuf.push(character);
10525            }
10526            currentLabel = charBuf.join('');
10527            break;
10528          default:
10529            if (style) {
10530              throw new _util.FormatError('Invalid style "' + style + '" in PageLabel dictionary.');
10531            }
10532            currentLabel = '';
10533        }
10534        pageLabels[i] = prefix + currentLabel;
10535        currentIndex++;
10536      }
10537      return pageLabels;
10538    }
10539  }, {
10540    key: 'cleanup',
10541    value: function cleanup() {
10542      var _this = this;
10543
10544      this.pageKidsCountCache.clear();
10545      var promises = [];
10546      this.fontCache.forEach(function (promise) {
10547        promises.push(promise);
10548      });
10549      return Promise.all(promises).then(function (translatedFonts) {
10550        for (var i = 0, ii = translatedFonts.length; i < ii; i++) {
10551          var font = translatedFonts[i].dict;
10552          delete font.translated;
10553        }
10554        _this.fontCache.clear();
10555        _this.builtInCMapCache.clear();
10556      });
10557    }
10558  }, {
10559    key: 'getPageDict',
10560    value: function getPageDict(pageIndex) {
10561      var capability = (0, _util.createPromiseCapability)();
10562      var nodesToVisit = [this.catDict.getRaw('Pages')];
10563      var xref = this.xref,
10564          pageKidsCountCache = this.pageKidsCountCache;
10565      var count = void 0,
10566          currentPageIndex = 0;
10567      function next() {
10568        var _loop = function _loop() {
10569          var currentNode = nodesToVisit.pop();
10570          if ((0, _primitives.isRef)(currentNode)) {
10571            count = pageKidsCountCache.get(currentNode);
10572            if (count > 0 && currentPageIndex + count < pageIndex) {
10573              currentPageIndex += count;
10574              return 'continue';
10575            }
10576            xref.fetchAsync(currentNode).then(function (obj) {
10577              if ((0, _primitives.isDict)(obj, 'Page') || (0, _primitives.isDict)(obj) && !obj.has('Kids')) {
10578                if (pageIndex === currentPageIndex) {
10579                  if (currentNode && !pageKidsCountCache.has(currentNode)) {
10580                    pageKidsCountCache.put(currentNode, 1);
10581                  }
10582                  capability.resolve([obj, currentNode]);
10583                } else {
10584                  currentPageIndex++;
10585                  next();
10586                }
10587                return;
10588              }
10589              nodesToVisit.push(obj);
10590              next();
10591            }, capability.reject);
10592            return {
10593              v: void 0
10594            };
10595          }
10596          if (!(0, _primitives.isDict)(currentNode)) {
10597            capability.reject(new _util.FormatError('Page dictionary kid reference points to wrong type of object.'));
10598            return {
10599              v: void 0
10600            };
10601          }
10602          count = currentNode.get('Count');
10603          if (Number.isInteger(count) && count >= 0) {
10604            var objId = currentNode.objId;
10605            if (objId && !pageKidsCountCache.has(objId)) {
10606              pageKidsCountCache.put(objId, count);
10607            }
10608            if (currentPageIndex + count <= pageIndex) {
10609              currentPageIndex += count;
10610              return 'continue';
10611            }
10612          }
10613          var kids = currentNode.get('Kids');
10614          if (!Array.isArray(kids)) {
10615            if ((0, _primitives.isName)(currentNode.get('Type'), 'Page') || !currentNode.has('Type') && currentNode.has('Contents')) {
10616              if (currentPageIndex === pageIndex) {
10617                capability.resolve([currentNode, null]);
10618                return {
10619                  v: void 0
10620                };
10621              }
10622              currentPageIndex++;
10623              return 'continue';
10624            }
10625            capability.reject(new _util.FormatError('Page dictionary kids object is not an array.'));
10626            return {
10627              v: void 0
10628            };
10629          }
10630          for (var last = kids.length - 1; last >= 0; last--) {
10631            nodesToVisit.push(kids[last]);
10632          }
10633        };
10634
10635        while (nodesToVisit.length) {
10636          var _ret = _loop();
10637
10638          switch (_ret) {
10639            case 'continue':
10640              continue;
10641
10642            default:
10643              if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
10644          }
10645        }
10646        capability.reject(new Error('Page index ' + pageIndex + ' not found.'));
10647      }
10648      next();
10649      return capability.promise;
10650    }
10651  }, {
10652    key: 'getPageIndex',
10653    value: function getPageIndex(pageRef) {
10654      var xref = this.xref;
10655      function pagesBeforeRef(kidRef) {
10656        var total = 0,
10657            parentRef = void 0;
10658        return xref.fetchAsync(kidRef).then(function (node) {
10659          if ((0, _primitives.isRefsEqual)(kidRef, pageRef) && !(0, _primitives.isDict)(node, 'Page') && !((0, _primitives.isDict)(node) && !node.has('Type') && node.has('Contents'))) {
10660            throw new _util.FormatError('The reference does not point to a /Page dictionary.');
10661          }
10662          if (!node) {
10663            return null;
10664          }
10665          if (!(0, _primitives.isDict)(node)) {
10666            throw new _util.FormatError('Node must be a dictionary.');
10667          }
10668          parentRef = node.getRaw('Parent');
10669          return node.getAsync('Parent');
10670        }).then(function (parent) {
10671          if (!parent) {
10672            return null;
10673          }
10674          if (!(0, _primitives.isDict)(parent)) {
10675            throw new _util.FormatError('Parent must be a dictionary.');
10676          }
10677          return parent.getAsync('Kids');
10678        }).then(function (kids) {
10679          if (!kids) {
10680            return null;
10681          }
10682          var kidPromises = [];
10683          var found = false;
10684          for (var i = 0, ii = kids.length; i < ii; i++) {
10685            var kid = kids[i];
10686            if (!(0, _primitives.isRef)(kid)) {
10687              throw new _util.FormatError('Kid must be a reference.');
10688            }
10689            if ((0, _primitives.isRefsEqual)(kid, kidRef)) {
10690              found = true;
10691              break;
10692            }
10693            kidPromises.push(xref.fetchAsync(kid).then(function (kid) {
10694              if (!(0, _primitives.isDict)(kid)) {
10695                throw new _util.FormatError('Kid node must be a dictionary.');
10696              }
10697              if (kid.has('Count')) {
10698                total += kid.get('Count');
10699              } else {
10700                total++;
10701              }
10702            }));
10703          }
10704          if (!found) {
10705            throw new _util.FormatError('Kid reference not found in parent\'s kids.');
10706          }
10707          return Promise.all(kidPromises).then(function () {
10708            return [total, parentRef];
10709          });
10710        });
10711      }
10712      var total = 0;
10713      function next(ref) {
10714        return pagesBeforeRef(ref).then(function (args) {
10715          if (!args) {
10716            return total;
10717          }
10718
10719          var _args = _slicedToArray(args, 2),
10720              count = _args[0],
10721              parentRef = _args[1];
10722
10723          total += count;
10724          return next(parentRef);
10725        });
10726      }
10727      return next(pageRef);
10728    }
10729  }, {
10730    key: 'metadata',
10731    get: function get() {
10732      var streamRef = this.catDict.getRaw('Metadata');
10733      if (!(0, _primitives.isRef)(streamRef)) {
10734        return (0, _util.shadow)(this, 'metadata', null);
10735      }
10736      var suppressEncryption = !(this.xref.encrypt && this.xref.encrypt.encryptMetadata);
10737      var stream = this.xref.fetch(streamRef, suppressEncryption);
10738      var metadata = void 0;
10739      if (stream && (0, _primitives.isDict)(stream.dict)) {
10740        var type = stream.dict.get('Type');
10741        var subtype = stream.dict.get('Subtype');
10742        if ((0, _primitives.isName)(type, 'Metadata') && (0, _primitives.isName)(subtype, 'XML')) {
10743          try {
10744            metadata = (0, _util.stringToUTF8String)((0, _util.bytesToString)(stream.getBytes()));
10745          } catch (e) {
10746            if (e instanceof _util.MissingDataException) {
10747              throw e;
10748            }
10749            (0, _util.info)('Skipping invalid metadata.');
10750          }
10751        }
10752      }
10753      return (0, _util.shadow)(this, 'metadata', metadata);
10754    }
10755  }, {
10756    key: 'toplevelPagesDict',
10757    get: function get() {
10758      var pagesObj = this.catDict.get('Pages');
10759      if (!(0, _primitives.isDict)(pagesObj)) {
10760        throw new _util.FormatError('Invalid top-level pages dictionary.');
10761      }
10762      return (0, _util.shadow)(this, 'toplevelPagesDict', pagesObj);
10763    }
10764  }, {
10765    key: 'documentOutline',
10766    get: function get() {
10767      var obj = null;
10768      try {
10769        obj = this._readDocumentOutline();
10770      } catch (ex) {
10771        if (ex instanceof _util.MissingDataException) {
10772          throw ex;
10773        }
10774        (0, _util.warn)('Unable to read document outline.');
10775      }
10776      return (0, _util.shadow)(this, 'documentOutline', obj);
10777    }
10778  }, {
10779    key: 'permissions',
10780    get: function get() {
10781      var permissions = null;
10782      try {
10783        permissions = this._readPermissions();
10784      } catch (ex) {
10785        if (ex instanceof _util.MissingDataException) {
10786          throw ex;
10787        }
10788        (0, _util.warn)('Unable to read permissions.');
10789      }
10790      return (0, _util.shadow)(this, 'permissions', permissions);
10791    }
10792  }, {
10793    key: 'numPages',
10794    get: function get() {
10795      var obj = this.toplevelPagesDict.get('Count');
10796      if (!Number.isInteger(obj)) {
10797        throw new _util.FormatError('Page count in top-level pages dictionary is not an integer.');
10798      }
10799      return (0, _util.shadow)(this, 'numPages', obj);
10800    }
10801  }, {
10802    key: 'destinations',
10803    get: function get() {
10804      var obj = this._readDests(),
10805          dests = Object.create(null);
10806      if (obj instanceof NameTree) {
10807        var names = obj.getAll();
10808        for (var name in names) {
10809          dests[name] = fetchDestination(names[name]);
10810        }
10811      } else if (obj instanceof _primitives.Dict) {
10812        obj.forEach(function (key, value) {
10813          if (value) {
10814            dests[key] = fetchDestination(value);
10815          }
10816        });
10817      }
10818      return (0, _util.shadow)(this, 'destinations', dests);
10819    }
10820  }, {
10821    key: 'pageLabels',
10822    get: function get() {
10823      var obj = null;
10824      try {
10825        obj = this._readPageLabels();
10826      } catch (ex) {
10827        if (ex instanceof _util.MissingDataException) {
10828          throw ex;
10829        }
10830        (0, _util.warn)('Unable to read page labels.');
10831      }
10832      return (0, _util.shadow)(this, 'pageLabels', obj);
10833    }
10834  }, {
10835    key: 'pageMode',
10836    get: function get() {
10837      var obj = this.catDict.get('PageMode');
10838      var pageMode = 'UseNone';
10839      if ((0, _primitives.isName)(obj)) {
10840        switch (obj.name) {
10841          case 'UseNone':
10842          case 'UseOutlines':
10843          case 'UseThumbs':
10844          case 'FullScreen':
10845          case 'UseOC':
10846          case 'UseAttachments':
10847            pageMode = obj.name;
10848        }
10849      }
10850      return (0, _util.shadow)(this, 'pageMode', pageMode);
10851    }
10852  }, {
10853    key: 'attachments',
10854    get: function get() {
10855      var obj = this.catDict.get('Names');
10856      var attachments = null;
10857      if (obj && obj.has('EmbeddedFiles')) {
10858        var nameTree = new NameTree(obj.getRaw('EmbeddedFiles'), this.xref);
10859        var names = nameTree.getAll();
10860        for (var name in names) {
10861          var fs = new FileSpec(names[name], this.xref);
10862          if (!attachments) {
10863            attachments = Object.create(null);
10864          }
10865          attachments[(0, _util.stringToPDFString)(name)] = fs.serializable;
10866        }
10867      }
10868      return (0, _util.shadow)(this, 'attachments', attachments);
10869    }
10870  }, {
10871    key: 'javaScript',
10872    get: function get() {
10873      var obj = this.catDict.get('Names');
10874      var javaScript = null;
10875      function appendIfJavaScriptDict(jsDict) {
10876        var type = jsDict.get('S');
10877        if (!(0, _primitives.isName)(type, 'JavaScript')) {
10878          return;
10879        }
10880        var js = jsDict.get('JS');
10881        if ((0, _primitives.isStream)(js)) {
10882          js = (0, _util.bytesToString)(js.getBytes());
10883        } else if (!(0, _util.isString)(js)) {
10884          return;
10885        }
10886        if (!javaScript) {
10887          javaScript = [];
10888        }
10889        javaScript.push((0, _util.stringToPDFString)(js));
10890      }
10891      if (obj && obj.has('JavaScript')) {
10892        var nameTree = new NameTree(obj.getRaw('JavaScript'), this.xref);
10893        var names = nameTree.getAll();
10894        for (var name in names) {
10895          var jsDict = names[name];
10896          if ((0, _primitives.isDict)(jsDict)) {
10897            appendIfJavaScriptDict(jsDict);
10898          }
10899        }
10900      }
10901      var openActionDict = this.catDict.get('OpenAction');
10902      if ((0, _primitives.isDict)(openActionDict, 'Action')) {
10903        var actionType = openActionDict.get('S');
10904        if ((0, _primitives.isName)(actionType, 'Named')) {
10905          var action = openActionDict.get('N');
10906          if ((0, _primitives.isName)(action, 'Print')) {
10907            if (!javaScript) {
10908              javaScript = [];
10909            }
10910            javaScript.push('print({});');
10911          }
10912        } else {
10913          appendIfJavaScriptDict(openActionDict);
10914        }
10915      }
10916      return (0, _util.shadow)(this, 'javaScript', javaScript);
10917    }
10918  }], [{
10919    key: 'parseDestDictionary',
10920    value: function parseDestDictionary(params) {
10921      function addDefaultProtocolToUrl(url) {
10922        if (url.indexOf('www.') === 0) {
10923          return 'http://' + url;
10924        }
10925        return url;
10926      }
10927      function tryConvertUrlEncoding(url) {
10928        try {
10929          return (0, _util.stringToUTF8String)(url);
10930        } catch (e) {
10931          return url;
10932        }
10933      }
10934      var destDict = params.destDict;
10935      if (!(0, _primitives.isDict)(destDict)) {
10936        (0, _util.warn)('parseDestDictionary: `destDict` must be a dictionary.');
10937        return;
10938      }
10939      var resultObj = params.resultObj;
10940      if ((typeof resultObj === 'undefined' ? 'undefined' : _typeof(resultObj)) !== 'object') {
10941        (0, _util.warn)('parseDestDictionary: `resultObj` must be an object.');
10942        return;
10943      }
10944      var docBaseUrl = params.docBaseUrl || null;
10945      var action = destDict.get('A'),
10946          url = void 0,
10947          dest = void 0;
10948      if (!(0, _primitives.isDict)(action) && destDict.has('Dest')) {
10949        action = destDict.get('Dest');
10950      }
10951      if ((0, _primitives.isDict)(action)) {
10952        var actionType = action.get('S');
10953        if (!(0, _primitives.isName)(actionType)) {
10954          (0, _util.warn)('parseDestDictionary: Invalid type in Action dictionary.');
10955          return;
10956        }
10957        var actionName = actionType.name;
10958        switch (actionName) {
10959          case 'URI':
10960            url = action.get('URI');
10961            if ((0, _primitives.isName)(url)) {
10962              url = '/' + url.name;
10963            } else if ((0, _util.isString)(url)) {
10964              url = addDefaultProtocolToUrl(url);
10965            }
10966            break;
10967          case 'GoTo':
10968            dest = action.get('D');
10969            break;
10970          case 'Launch':
10971          case 'GoToR':
10972            var urlDict = action.get('F');
10973            if ((0, _primitives.isDict)(urlDict)) {
10974              url = urlDict.get('F') || null;
10975            } else if ((0, _util.isString)(urlDict)) {
10976              url = urlDict;
10977            }
10978            var remoteDest = action.get('D');
10979            if (remoteDest) {
10980              if ((0, _primitives.isName)(remoteDest)) {
10981                remoteDest = remoteDest.name;
10982              }
10983              if ((0, _util.isString)(url)) {
10984                var baseUrl = url.split('#')[0];
10985                if ((0, _util.isString)(remoteDest)) {
10986                  url = baseUrl + '#' + remoteDest;
10987                } else if (Array.isArray(remoteDest)) {
10988                  url = baseUrl + '#' + JSON.stringify(remoteDest);
10989                }
10990              }
10991            }
10992            var newWindow = action.get('NewWindow');
10993            if ((0, _util.isBool)(newWindow)) {
10994              resultObj.newWindow = newWindow;
10995            }
10996            break;
10997          case 'Named':
10998            var namedAction = action.get('N');
10999            if ((0, _primitives.isName)(namedAction)) {
11000              resultObj.action = namedAction.name;
11001            }
11002            break;
11003          case 'JavaScript':
11004            var jsAction = action.get('JS');
11005            var js = void 0;
11006            if ((0, _primitives.isStream)(jsAction)) {
11007              js = (0, _util.bytesToString)(jsAction.getBytes());
11008            } else if ((0, _util.isString)(jsAction)) {
11009              js = jsAction;
11010            }
11011            if (js) {
11012              var URL_OPEN_METHODS = ['app.launchURL', 'window.open'];
11013              var regex = new RegExp('^\\s*(' + URL_OPEN_METHODS.join('|').split('.').join('\\.') + ')\\((?:\'|\")([^\'\"]*)(?:\'|\")(?:,\\s*(\\w+)\\)|\\))', 'i');
11014              var jsUrl = regex.exec((0, _util.stringToPDFString)(js));
11015              if (jsUrl && jsUrl[2]) {
11016                url = jsUrl[2];
11017                if (jsUrl[3] === 'true' && jsUrl[1] === 'app.launchURL') {
11018                  resultObj.newWindow = true;
11019                }
11020                break;
11021              }
11022            }
11023          default:
11024            (0, _util.warn)('parseDestDictionary: unsupported action type "' + actionName + '".');
11025            break;
11026        }
11027      } else if (destDict.has('Dest')) {
11028        dest = destDict.get('Dest');
11029      }
11030      if ((0, _util.isString)(url)) {
11031        url = tryConvertUrlEncoding(url);
11032        var absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl);
11033        if (absoluteUrl) {
11034          resultObj.url = absoluteUrl.href;
11035        }
11036        resultObj.unsafeUrl = url;
11037      }
11038      if (dest) {
11039        if ((0, _primitives.isName)(dest)) {
11040          dest = dest.name;
11041        }
11042        if ((0, _util.isString)(dest) || Array.isArray(dest)) {
11043          resultObj.dest = dest;
11044        }
11045      }
11046    }
11047  }]);
11048
11049  return Catalog;
11050}();
11051
11052var XRef = function XRefClosure() {
11053  function XRef(stream, pdfManager) {
11054    this.stream = stream;
11055    this.pdfManager = pdfManager;
11056    this.entries = [];
11057    this.xrefstms = Object.create(null);
11058    this.cache = [];
11059    this.stats = {
11060      streamTypes: [],
11061      fontTypes: []
11062    };
11063  }
11064  XRef.prototype = {
11065    setStartXRef: function XRef_setStartXRef(startXRef) {
11066      this.startXRefQueue = [startXRef];
11067    },
11068    parse: function XRef_parse(recoveryMode) {
11069      var trailerDict;
11070      if (!recoveryMode) {
11071        trailerDict = this.readXRef();
11072      } else {
11073        (0, _util.warn)('Indexing all PDF objects');
11074        trailerDict = this.indexObjects();
11075      }
11076      trailerDict.assignXref(this);
11077      this.trailer = trailerDict;
11078      var encrypt = void 0;
11079      try {
11080        encrypt = trailerDict.get('Encrypt');
11081      } catch (ex) {
11082        if (ex instanceof _util.MissingDataException) {
11083          throw ex;
11084        }
11085        (0, _util.warn)('XRef.parse - Invalid "Encrypt" reference: "' + ex + '".');
11086      }
11087      if ((0, _primitives.isDict)(encrypt)) {
11088        var ids = trailerDict.get('ID');
11089        var fileId = ids && ids.length ? ids[0] : '';
11090        encrypt.suppressEncryption = true;
11091        this.encrypt = new _crypto.CipherTransformFactory(encrypt, fileId, this.pdfManager.password);
11092      }
11093      var root = void 0;
11094      try {
11095        root = trailerDict.get('Root');
11096      } catch (ex) {
11097        if (ex instanceof _util.MissingDataException) {
11098          throw ex;
11099        }
11100        (0, _util.warn)('XRef.parse - Invalid "Root" reference: "' + ex + '".');
11101      }
11102      if ((0, _primitives.isDict)(root) && root.has('Pages')) {
11103        this.root = root;
11104      } else {
11105        if (!recoveryMode) {
11106          throw new _util.XRefParseException();
11107        }
11108        throw new _util.FormatError('Invalid root reference');
11109      }
11110    },
11111    processXRefTable: function XRef_processXRefTable(parser) {
11112      if (!('tableState' in this)) {
11113        this.tableState = {
11114          entryNum: 0,
11115          streamPos: parser.lexer.stream.pos,
11116          parserBuf1: parser.buf1,
11117          parserBuf2: parser.buf2
11118        };
11119      }
11120      var obj = this.readXRefTable(parser);
11121      if (!(0, _primitives.isCmd)(obj, 'trailer')) {
11122        throw new _util.FormatError('Invalid XRef table: could not find trailer dictionary');
11123      }
11124      var dict = parser.getObj();
11125      if (!(0, _primitives.isDict)(dict) && dict.dict) {
11126        dict = dict.dict;
11127      }
11128      if (!(0, _primitives.isDict)(dict)) {
11129        throw new _util.FormatError('Invalid XRef table: could not parse trailer dictionary');
11130      }
11131      delete this.tableState;
11132      return dict;
11133    },
11134    readXRefTable: function XRef_readXRefTable(parser) {
11135      var stream = parser.lexer.stream;
11136      var tableState = this.tableState;
11137      stream.pos = tableState.streamPos;
11138      parser.buf1 = tableState.parserBuf1;
11139      parser.buf2 = tableState.parserBuf2;
11140      var obj;
11141      while (true) {
11142        if (!('firstEntryNum' in tableState) || !('entryCount' in tableState)) {
11143          if ((0, _primitives.isCmd)(obj = parser.getObj(), 'trailer')) {
11144            break;
11145          }
11146          tableState.firstEntryNum = obj;
11147          tableState.entryCount = parser.getObj();
11148        }
11149        var first = tableState.firstEntryNum;
11150        var count = tableState.entryCount;
11151        if (!Number.isInteger(first) || !Number.isInteger(count)) {
11152          throw new _util.FormatError('Invalid XRef table: wrong types in subsection header');
11153        }
11154        for (var i = tableState.entryNum; i < count; i++) {
11155          tableState.streamPos = stream.pos;
11156          tableState.entryNum = i;
11157          tableState.parserBuf1 = parser.buf1;
11158          tableState.parserBuf2 = parser.buf2;
11159          var entry = {};
11160          entry.offset = parser.getObj();
11161          entry.gen = parser.getObj();
11162          var type = parser.getObj();
11163          if ((0, _primitives.isCmd)(type, 'f')) {
11164            entry.free = true;
11165          } else if ((0, _primitives.isCmd)(type, 'n')) {
11166            entry.uncompressed = true;
11167          }
11168          if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) {
11169            throw new _util.FormatError('Invalid entry in XRef subsection: ' + first + ', ' + count);
11170          }
11171          if (i === 0 && entry.free && first === 1) {
11172            first = 0;
11173          }
11174          if (!this.entries[i + first]) {
11175            this.entries[i + first] = entry;
11176          }
11177        }
11178        tableState.entryNum = 0;
11179        tableState.streamPos = stream.pos;
11180        tableState.parserBuf1 = parser.buf1;
11181        tableState.parserBuf2 = parser.buf2;
11182        delete tableState.firstEntryNum;
11183        delete tableState.entryCount;
11184      }
11185      if (this.entries[0] && !this.entries[0].free) {
11186        throw new _util.FormatError('Invalid XRef table: unexpected first object');
11187      }
11188      return obj;
11189    },
11190    processXRefStream: function XRef_processXRefStream(stream) {
11191      if (!('streamState' in this)) {
11192        var streamParameters = stream.dict;
11193        var byteWidths = streamParameters.get('W');
11194        var range = streamParameters.get('Index');
11195        if (!range) {
11196          range = [0, streamParameters.get('Size')];
11197        }
11198        this.streamState = {
11199          entryRanges: range,
11200          byteWidths: byteWidths,
11201          entryNum: 0,
11202          streamPos: stream.pos
11203        };
11204      }
11205      this.readXRefStream(stream);
11206      delete this.streamState;
11207      return stream.dict;
11208    },
11209    readXRefStream: function XRef_readXRefStream(stream) {
11210      var i, j;
11211      var streamState = this.streamState;
11212      stream.pos = streamState.streamPos;
11213      var byteWidths = streamState.byteWidths;
11214      var typeFieldWidth = byteWidths[0];
11215      var offsetFieldWidth = byteWidths[1];
11216      var generationFieldWidth = byteWidths[2];
11217      var entryRanges = streamState.entryRanges;
11218      while (entryRanges.length > 0) {
11219        var first = entryRanges[0];
11220        var n = entryRanges[1];
11221        if (!Number.isInteger(first) || !Number.isInteger(n)) {
11222          throw new _util.FormatError('Invalid XRef range fields: ' + first + ', ' + n);
11223        }
11224        if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) {
11225          throw new _util.FormatError('Invalid XRef entry fields length: ' + first + ', ' + n);
11226        }
11227        for (i = streamState.entryNum; i < n; ++i) {
11228          streamState.entryNum = i;
11229          streamState.streamPos = stream.pos;
11230          var type = 0,
11231              offset = 0,
11232              generation = 0;
11233          for (j = 0; j < typeFieldWidth; ++j) {
11234            type = type << 8 | stream.getByte();
11235          }
11236          if (typeFieldWidth === 0) {
11237            type = 1;
11238          }
11239          for (j = 0; j < offsetFieldWidth; ++j) {
11240            offset = offset << 8 | stream.getByte();
11241          }
11242          for (j = 0; j < generationFieldWidth; ++j) {
11243            generation = generation << 8 | stream.getByte();
11244          }
11245          var entry = {};
11246          entry.offset = offset;
11247          entry.gen = generation;
11248          switch (type) {
11249            case 0:
11250              entry.free = true;
11251              break;
11252            case 1:
11253              entry.uncompressed = true;
11254              break;
11255            case 2:
11256              break;
11257            default:
11258              throw new _util.FormatError('Invalid XRef entry type: ' + type);
11259          }
11260          if (!this.entries[first + i]) {
11261            this.entries[first + i] = entry;
11262          }
11263        }
11264        streamState.entryNum = 0;
11265        streamState.streamPos = stream.pos;
11266        entryRanges.splice(0, 2);
11267      }
11268    },
11269    indexObjects: function XRef_indexObjects() {
11270      var TAB = 0x9,
11271          LF = 0xA,
11272          CR = 0xD,
11273          SPACE = 0x20;
11274      var PERCENT = 0x25,
11275          LT = 0x3C;
11276      function readToken(data, offset) {
11277        var token = '',
11278            ch = data[offset];
11279        while (ch !== LF && ch !== CR && ch !== LT) {
11280          if (++offset >= data.length) {
11281            break;
11282          }
11283          token += String.fromCharCode(ch);
11284          ch = data[offset];
11285        }
11286        return token;
11287      }
11288      function skipUntil(data, offset, what) {
11289        var length = what.length,
11290            dataLength = data.length;
11291        var skipped = 0;
11292        while (offset < dataLength) {
11293          var i = 0;
11294          while (i < length && data[offset + i] === what[i]) {
11295            ++i;
11296          }
11297          if (i >= length) {
11298            break;
11299          }
11300          offset++;
11301          skipped++;
11302        }
11303        return skipped;
11304      }
11305      var objRegExp = /^(\d+)\s+(\d+)\s+obj\b/;
11306      var endobjRegExp = /\bendobj[\b\s]$/;
11307      var nestedObjRegExp = /\s+(\d+\s+\d+\s+obj[\b\s])$/;
11308      var CHECK_CONTENT_LENGTH = 25;
11309      var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);
11310      var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]);
11311      var objBytes = new Uint8Array([111, 98, 106]);
11312      var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);
11313      this.entries.length = 0;
11314      var stream = this.stream;
11315      stream.pos = 0;
11316      var buffer = stream.getBytes();
11317      var position = stream.start,
11318          length = buffer.length;
11319      var trailers = [],
11320          xrefStms = [];
11321      while (position < length) {
11322        var ch = buffer[position];
11323        if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {
11324          ++position;
11325          continue;
11326        }
11327        if (ch === PERCENT) {
11328          do {
11329            ++position;
11330            if (position >= length) {
11331              break;
11332            }
11333            ch = buffer[position];
11334          } while (ch !== LF && ch !== CR);
11335          continue;
11336        }
11337        var token = readToken(buffer, position);
11338        var m;
11339        if (token.indexOf('xref') === 0 && (token.length === 4 || /\s/.test(token[4]))) {
11340          position += skipUntil(buffer, position, trailerBytes);
11341          trailers.push(position);
11342          position += skipUntil(buffer, position, startxrefBytes);
11343        } else if (m = objRegExp.exec(token)) {
11344          if (typeof this.entries[m[1]] === 'undefined') {
11345            this.entries[m[1]] = {
11346              offset: position - stream.start,
11347              gen: m[2] | 0,
11348              uncompressed: true
11349            };
11350          }
11351          var contentLength = void 0,
11352              startPos = position + token.length;
11353          while (startPos < buffer.length) {
11354            var endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;
11355            contentLength = endPos - position;
11356            var checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);
11357            var tokenStr = (0, _util.bytesToString)(buffer.subarray(checkPos, endPos));
11358            if (endobjRegExp.test(tokenStr)) {
11359              break;
11360            } else {
11361              var objToken = nestedObjRegExp.exec(tokenStr);
11362              if (objToken && objToken[1]) {
11363                (0, _util.warn)('indexObjects: Found new "obj" inside of another "obj", ' + 'caused by missing "endobj" -- trying to recover.');
11364                contentLength -= objToken[1].length;
11365                break;
11366              }
11367            }
11368            startPos = endPos;
11369          }
11370          var content = buffer.subarray(position, position + contentLength);
11371          var xrefTagOffset = skipUntil(content, 0, xrefBytes);
11372          if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {
11373            xrefStms.push(position - stream.start);
11374            this.xrefstms[position - stream.start] = 1;
11375          }
11376          position += contentLength;
11377        } else if (token.indexOf('trailer') === 0 && (token.length === 7 || /\s/.test(token[7]))) {
11378          trailers.push(position);
11379          position += skipUntil(buffer, position, startxrefBytes);
11380        } else {
11381          position += token.length + 1;
11382        }
11383      }
11384      var i, ii;
11385      for (i = 0, ii = xrefStms.length; i < ii; ++i) {
11386        this.startXRefQueue.push(xrefStms[i]);
11387        this.readXRef(true);
11388      }
11389      var trailerDict = void 0;
11390      for (i = 0, ii = trailers.length; i < ii; ++i) {
11391        stream.pos = trailers[i];
11392        var parser = new _parser.Parser(new _parser.Lexer(stream), true, this, true);
11393        var obj = parser.getObj();
11394        if (!(0, _primitives.isCmd)(obj, 'trailer')) {
11395          continue;
11396        }
11397        var dict = parser.getObj();
11398        if (!(0, _primitives.isDict)(dict)) {
11399          continue;
11400        }
11401        var rootDict = void 0;
11402        try {
11403          rootDict = dict.get('Root');
11404        } catch (ex) {
11405          if (ex instanceof _util.MissingDataException) {
11406            throw ex;
11407          }
11408          continue;
11409        }
11410        if (!(0, _primitives.isDict)(rootDict) || !rootDict.has('Pages')) {
11411          continue;
11412        }
11413        if (dict.has('ID')) {
11414          return dict;
11415        }
11416        trailerDict = dict;
11417      }
11418      if (trailerDict) {
11419        return trailerDict;
11420      }
11421      throw new _util.InvalidPDFException('Invalid PDF structure');
11422    },
11423    readXRef: function XRef_readXRef(recoveryMode) {
11424      var stream = this.stream;
11425      var startXRefParsedCache = Object.create(null);
11426      try {
11427        while (this.startXRefQueue.length) {
11428          var startXRef = this.startXRefQueue[0];
11429          if (startXRefParsedCache[startXRef]) {
11430            (0, _util.warn)('readXRef - skipping XRef table since it was already parsed.');
11431            this.startXRefQueue.shift();
11432            continue;
11433          }
11434          startXRefParsedCache[startXRef] = true;
11435          stream.pos = startXRef + stream.start;
11436          var parser = new _parser.Parser(new _parser.Lexer(stream), true, this);
11437          var obj = parser.getObj();
11438          var dict;
11439          if ((0, _primitives.isCmd)(obj, 'xref')) {
11440            dict = this.processXRefTable(parser);
11441            if (!this.topDict) {
11442              this.topDict = dict;
11443            }
11444            obj = dict.get('XRefStm');
11445            if (Number.isInteger(obj)) {
11446              var pos = obj;
11447              if (!(pos in this.xrefstms)) {
11448                this.xrefstms[pos] = 1;
11449                this.startXRefQueue.push(pos);
11450              }
11451            }
11452          } else if (Number.isInteger(obj)) {
11453            if (!Number.isInteger(parser.getObj()) || !(0, _primitives.isCmd)(parser.getObj(), 'obj') || !(0, _primitives.isStream)(obj = parser.getObj())) {
11454              throw new _util.FormatError('Invalid XRef stream');
11455            }
11456            dict = this.processXRefStream(obj);
11457            if (!this.topDict) {
11458              this.topDict = dict;
11459            }
11460            if (!dict) {
11461              throw new _util.FormatError('Failed to read XRef stream');
11462            }
11463          } else {
11464            throw new _util.FormatError('Invalid XRef stream header');
11465          }
11466          obj = dict.get('Prev');
11467          if (Number.isInteger(obj)) {
11468            this.startXRefQueue.push(obj);
11469          } else if ((0, _primitives.isRef)(obj)) {
11470            this.startXRefQueue.push(obj.num);
11471          }
11472          this.startXRefQueue.shift();
11473        }
11474        return this.topDict;
11475      } catch (e) {
11476        if (e instanceof _util.MissingDataException) {
11477          throw e;
11478        }
11479        (0, _util.info)('(while reading XRef): ' + e);
11480      }
11481      if (recoveryMode) {
11482        return;
11483      }
11484      throw new _util.XRefParseException();
11485    },
11486    getEntry: function XRef_getEntry(i) {
11487      var xrefEntry = this.entries[i];
11488      if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {
11489        return xrefEntry;
11490      }
11491      return null;
11492    },
11493    fetchIfRef: function XRef_fetchIfRef(obj, suppressEncryption) {
11494      if (!(0, _primitives.isRef)(obj)) {
11495        return obj;
11496      }
11497      return this.fetch(obj, suppressEncryption);
11498    },
11499    fetch: function XRef_fetch(ref, suppressEncryption) {
11500      if (!(0, _primitives.isRef)(ref)) {
11501        throw new Error('ref object is not a reference');
11502      }
11503      var num = ref.num;
11504      if (num in this.cache) {
11505        var cacheEntry = this.cache[num];
11506        if (cacheEntry instanceof _primitives.Dict && !cacheEntry.objId) {
11507          cacheEntry.objId = ref.toString();
11508        }
11509        return cacheEntry;
11510      }
11511      var xrefEntry = this.getEntry(num);
11512      if (xrefEntry === null) {
11513        return this.cache[num] = null;
11514      }
11515      if (xrefEntry.uncompressed) {
11516        xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);
11517      } else {
11518        xrefEntry = this.fetchCompressed(xrefEntry, suppressEncryption);
11519      }
11520      if ((0, _primitives.isDict)(xrefEntry)) {
11521        xrefEntry.objId = ref.toString();
11522      } else if ((0, _primitives.isStream)(xrefEntry)) {
11523        xrefEntry.dict.objId = ref.toString();
11524      }
11525      return xrefEntry;
11526    },
11527    fetchUncompressed: function XRef_fetchUncompressed(ref, xrefEntry, suppressEncryption) {
11528      var gen = ref.gen;
11529      var num = ref.num;
11530      if (xrefEntry.gen !== gen) {
11531        throw new _util.FormatError('inconsistent generation in XRef');
11532      }
11533      var stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start);
11534      var parser = new _parser.Parser(new _parser.Lexer(stream), true, this);
11535      var obj1 = parser.getObj();
11536      var obj2 = parser.getObj();
11537      var obj3 = parser.getObj();
11538      if (!Number.isInteger(obj1)) {
11539        obj1 = parseInt(obj1, 10);
11540      }
11541      if (!Number.isInteger(obj2)) {
11542        obj2 = parseInt(obj2, 10);
11543      }
11544      if (obj1 !== num || obj2 !== gen || !(0, _primitives.isCmd)(obj3)) {
11545        throw new _util.FormatError('bad XRef entry');
11546      }
11547      if (obj3.cmd !== 'obj') {
11548        if (obj3.cmd.indexOf('obj') === 0) {
11549          num = parseInt(obj3.cmd.substring(3), 10);
11550          if (!Number.isNaN(num)) {
11551            return num;
11552          }
11553        }
11554        throw new _util.FormatError('bad XRef entry');
11555      }
11556      if (this.encrypt && !suppressEncryption) {
11557        xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));
11558      } else {
11559        xrefEntry = parser.getObj();
11560      }
11561      if (!(0, _primitives.isStream)(xrefEntry)) {
11562        this.cache[num] = xrefEntry;
11563      }
11564      return xrefEntry;
11565    },
11566    fetchCompressed: function XRef_fetchCompressed(xrefEntry, suppressEncryption) {
11567      var tableOffset = xrefEntry.offset;
11568      var stream = this.fetch(new _primitives.Ref(tableOffset, 0));
11569      if (!(0, _primitives.isStream)(stream)) {
11570        throw new _util.FormatError('bad ObjStm stream');
11571      }
11572      var first = stream.dict.get('First');
11573      var n = stream.dict.get('N');
11574      if (!Number.isInteger(first) || !Number.isInteger(n)) {
11575        throw new _util.FormatError('invalid first and n parameters for ObjStm stream');
11576      }
11577      var parser = new _parser.Parser(new _parser.Lexer(stream), false, this);
11578      parser.allowStreams = true;
11579      var i,
11580          entries = [],
11581          num,
11582          nums = [];
11583      for (i = 0; i < n; ++i) {
11584        num = parser.getObj();
11585        if (!Number.isInteger(num)) {
11586          throw new _util.FormatError('invalid object number in the ObjStm stream: ' + num);
11587        }
11588        nums.push(num);
11589        var offset = parser.getObj();
11590        if (!Number.isInteger(offset)) {
11591          throw new _util.FormatError('invalid object offset in the ObjStm stream: ' + offset);
11592        }
11593      }
11594      for (i = 0; i < n; ++i) {
11595        entries.push(parser.getObj());
11596        if ((0, _primitives.isCmd)(parser.buf1, 'endobj')) {
11597          parser.shift();
11598        }
11599        num = nums[i];
11600        var entry = this.entries[num];
11601        if (entry && entry.offset === tableOffset && entry.gen === i) {
11602          this.cache[num] = entries[i];
11603        }
11604      }
11605      xrefEntry = entries[xrefEntry.gen];
11606      if (xrefEntry === undefined) {
11607        throw new _util.FormatError('bad XRef entry for compressed object');
11608      }
11609      return xrefEntry;
11610    },
11611    fetchIfRefAsync: function () {
11612      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(obj, suppressEncryption) {
11613        return _regenerator2.default.wrap(function _callee$(_context) {
11614          while (1) {
11615            switch (_context.prev = _context.next) {
11616              case 0:
11617                if ((0, _primitives.isRef)(obj)) {
11618                  _context.next = 2;
11619                  break;
11620                }
11621
11622                return _context.abrupt('return', obj);
11623
11624              case 2:
11625                return _context.abrupt('return', this.fetchAsync(obj, suppressEncryption));
11626
11627              case 3:
11628              case 'end':
11629                return _context.stop();
11630            }
11631          }
11632        }, _callee, this);
11633      }));
11634
11635      function fetchIfRefAsync(_x, _x2) {
11636        return _ref.apply(this, arguments);
11637      }
11638
11639      return fetchIfRefAsync;
11640    }(),
11641    fetchAsync: function () {
11642      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(ref, suppressEncryption) {
11643        return _regenerator2.default.wrap(function _callee2$(_context2) {
11644          while (1) {
11645            switch (_context2.prev = _context2.next) {
11646              case 0:
11647                _context2.prev = 0;
11648                return _context2.abrupt('return', this.fetch(ref, suppressEncryption));
11649
11650              case 4:
11651                _context2.prev = 4;
11652                _context2.t0 = _context2['catch'](0);
11653
11654                if (_context2.t0 instanceof _util.MissingDataException) {
11655                  _context2.next = 8;
11656                  break;
11657                }
11658
11659                throw _context2.t0;
11660
11661              case 8:
11662                _context2.next = 10;
11663                return this.pdfManager.requestRange(_context2.t0.begin, _context2.t0.end);
11664
11665              case 10:
11666                return _context2.abrupt('return', this.fetchAsync(ref, suppressEncryption));
11667
11668              case 11:
11669              case 'end':
11670                return _context2.stop();
11671            }
11672          }
11673        }, _callee2, this, [[0, 4]]);
11674      }));
11675
11676      function fetchAsync(_x3, _x4) {
11677        return _ref2.apply(this, arguments);
11678      }
11679
11680      return fetchAsync;
11681    }(),
11682
11683    getCatalogObj: function XRef_getCatalogObj() {
11684      return this.root;
11685    }
11686  };
11687  return XRef;
11688}();
11689
11690var NameOrNumberTree = function () {
11691  function NameOrNumberTree(root, xref, type) {
11692    _classCallCheck(this, NameOrNumberTree);
11693
11694    if (this.constructor === NameOrNumberTree) {
11695      (0, _util.unreachable)('Cannot initialize NameOrNumberTree.');
11696    }
11697    this.root = root;
11698    this.xref = xref;
11699    this._type = type;
11700  }
11701
11702  _createClass(NameOrNumberTree, [{
11703    key: 'getAll',
11704    value: function getAll() {
11705      var dict = Object.create(null);
11706      if (!this.root) {
11707        return dict;
11708      }
11709      var xref = this.xref;
11710      var processed = new _primitives.RefSet();
11711      processed.put(this.root);
11712      var queue = [this.root];
11713      while (queue.length > 0) {
11714        var obj = xref.fetchIfRef(queue.shift());
11715        if (!(0, _primitives.isDict)(obj)) {
11716          continue;
11717        }
11718        if (obj.has('Kids')) {
11719          var _kids = obj.get('Kids');
11720          for (var i = 0, ii = _kids.length; i < ii; i++) {
11721            var kid = _kids[i];
11722            if (processed.has(kid)) {
11723              throw new _util.FormatError('Duplicate entry in "' + this._type + '" tree.');
11724            }
11725            queue.push(kid);
11726            processed.put(kid);
11727          }
11728          continue;
11729        }
11730        var entries = obj.get(this._type);
11731        if (Array.isArray(entries)) {
11732          for (var _i2 = 0, _ii = entries.length; _i2 < _ii; _i2 += 2) {
11733            dict[xref.fetchIfRef(entries[_i2])] = xref.fetchIfRef(entries[_i2 + 1]);
11734          }
11735        }
11736      }
11737      return dict;
11738    }
11739  }, {
11740    key: 'get',
11741    value: function get(key) {
11742      if (!this.root) {
11743        return null;
11744      }
11745      var xref = this.xref;
11746      var kidsOrEntries = xref.fetchIfRef(this.root);
11747      var loopCount = 0;
11748      var MAX_LEVELS = 10;
11749      while (kidsOrEntries.has('Kids')) {
11750        if (++loopCount > MAX_LEVELS) {
11751          (0, _util.warn)('Search depth limit reached for "' + this._type + '" tree.');
11752          return null;
11753        }
11754        var _kids2 = kidsOrEntries.get('Kids');
11755        if (!Array.isArray(_kids2)) {
11756          return null;
11757        }
11758        var l = 0,
11759            r = _kids2.length - 1;
11760        while (l <= r) {
11761          var m = l + r >> 1;
11762          var kid = xref.fetchIfRef(_kids2[m]);
11763          var limits = kid.get('Limits');
11764          if (key < xref.fetchIfRef(limits[0])) {
11765            r = m - 1;
11766          } else if (key > xref.fetchIfRef(limits[1])) {
11767            l = m + 1;
11768          } else {
11769            kidsOrEntries = xref.fetchIfRef(_kids2[m]);
11770            break;
11771          }
11772        }
11773        if (l > r) {
11774          return null;
11775        }
11776      }
11777      var entries = kidsOrEntries.get(this._type);
11778      if (Array.isArray(entries)) {
11779        var _l = 0,
11780            _r = entries.length - 2;
11781        while (_l <= _r) {
11782          var _m = _l + _r & ~1;
11783          var currentKey = xref.fetchIfRef(entries[_m]);
11784          if (key < currentKey) {
11785            _r = _m - 2;
11786          } else if (key > currentKey) {
11787            _l = _m + 2;
11788          } else {
11789            return xref.fetchIfRef(entries[_m + 1]);
11790          }
11791        }
11792      }
11793      return null;
11794    }
11795  }]);
11796
11797  return NameOrNumberTree;
11798}();
11799
11800var NameTree = function (_NameOrNumberTree) {
11801  _inherits(NameTree, _NameOrNumberTree);
11802
11803  function NameTree(root, xref) {
11804    _classCallCheck(this, NameTree);
11805
11806    return _possibleConstructorReturn(this, (NameTree.__proto__ || Object.getPrototypeOf(NameTree)).call(this, root, xref, 'Names'));
11807  }
11808
11809  return NameTree;
11810}(NameOrNumberTree);
11811
11812var NumberTree = function (_NameOrNumberTree2) {
11813  _inherits(NumberTree, _NameOrNumberTree2);
11814
11815  function NumberTree(root, xref) {
11816    _classCallCheck(this, NumberTree);
11817
11818    return _possibleConstructorReturn(this, (NumberTree.__proto__ || Object.getPrototypeOf(NumberTree)).call(this, root, xref, 'Nums'));
11819  }
11820
11821  return NumberTree;
11822}(NameOrNumberTree);
11823
11824var FileSpec = function FileSpecClosure() {
11825  function FileSpec(root, xref) {
11826    if (!root || !(0, _primitives.isDict)(root)) {
11827      return;
11828    }
11829    this.xref = xref;
11830    this.root = root;
11831    if (root.has('FS')) {
11832      this.fs = root.get('FS');
11833    }
11834    this.description = root.has('Desc') ? (0, _util.stringToPDFString)(root.get('Desc')) : '';
11835    if (root.has('RF')) {
11836      (0, _util.warn)('Related file specifications are not supported');
11837    }
11838    this.contentAvailable = true;
11839    if (!root.has('EF')) {
11840      this.contentAvailable = false;
11841      (0, _util.warn)('Non-embedded file specifications are not supported');
11842    }
11843  }
11844  function pickPlatformItem(dict) {
11845    if (dict.has('UF')) {
11846      return dict.get('UF');
11847    } else if (dict.has('F')) {
11848      return dict.get('F');
11849    } else if (dict.has('Unix')) {
11850      return dict.get('Unix');
11851    } else if (dict.has('Mac')) {
11852      return dict.get('Mac');
11853    } else if (dict.has('DOS')) {
11854      return dict.get('DOS');
11855    }
11856    return null;
11857  }
11858  FileSpec.prototype = {
11859    get filename() {
11860      if (!this._filename && this.root) {
11861        var filename = pickPlatformItem(this.root) || 'unnamed';
11862        this._filename = (0, _util.stringToPDFString)(filename).replace(/\\\\/g, '\\').replace(/\\\//g, '/').replace(/\\/g, '/');
11863      }
11864      return this._filename;
11865    },
11866    get content() {
11867      if (!this.contentAvailable) {
11868        return null;
11869      }
11870      if (!this.contentRef && this.root) {
11871        this.contentRef = pickPlatformItem(this.root.get('EF'));
11872      }
11873      var content = null;
11874      if (this.contentRef) {
11875        var xref = this.xref;
11876        var fileObj = xref.fetchIfRef(this.contentRef);
11877        if (fileObj && (0, _primitives.isStream)(fileObj)) {
11878          content = fileObj.getBytes();
11879        } else {
11880          (0, _util.warn)('Embedded file specification points to non-existing/invalid ' + 'content');
11881        }
11882      } else {
11883        (0, _util.warn)('Embedded file specification does not have a content');
11884      }
11885      return content;
11886    },
11887    get serializable() {
11888      return {
11889        filename: this.filename,
11890        content: this.content
11891      };
11892    }
11893  };
11894  return FileSpec;
11895}();
11896var ObjectLoader = function () {
11897  function mayHaveChildren(value) {
11898    return (0, _primitives.isRef)(value) || (0, _primitives.isDict)(value) || Array.isArray(value) || (0, _primitives.isStream)(value);
11899  }
11900  function addChildren(node, nodesToVisit) {
11901    if ((0, _primitives.isDict)(node) || (0, _primitives.isStream)(node)) {
11902      var dict = (0, _primitives.isDict)(node) ? node : node.dict;
11903      var dictKeys = dict.getKeys();
11904      for (var i = 0, ii = dictKeys.length; i < ii; i++) {
11905        var rawValue = dict.getRaw(dictKeys[i]);
11906        if (mayHaveChildren(rawValue)) {
11907          nodesToVisit.push(rawValue);
11908        }
11909      }
11910    } else if (Array.isArray(node)) {
11911      for (var _i3 = 0, _ii2 = node.length; _i3 < _ii2; _i3++) {
11912        var value = node[_i3];
11913        if (mayHaveChildren(value)) {
11914          nodesToVisit.push(value);
11915        }
11916      }
11917    }
11918  }
11919  function ObjectLoader(dict, keys, xref) {
11920    this.dict = dict;
11921    this.keys = keys;
11922    this.xref = xref;
11923    this.refSet = null;
11924    this.capability = null;
11925  }
11926  ObjectLoader.prototype = {
11927    load: function load() {
11928      this.capability = (0, _util.createPromiseCapability)();
11929      if (!(this.xref.stream instanceof _chunked_stream.ChunkedStream) || this.xref.stream.getMissingChunks().length === 0) {
11930        this.capability.resolve();
11931        return this.capability.promise;
11932      }
11933      var keys = this.keys,
11934          dict = this.dict;
11935
11936      this.refSet = new _primitives.RefSet();
11937      var nodesToVisit = [];
11938      for (var i = 0, ii = keys.length; i < ii; i++) {
11939        var rawValue = dict.getRaw(keys[i]);
11940        if (rawValue !== undefined) {
11941          nodesToVisit.push(rawValue);
11942        }
11943      }
11944      this._walk(nodesToVisit);
11945      return this.capability.promise;
11946    },
11947    _walk: function _walk(nodesToVisit) {
11948      var _this4 = this;
11949
11950      var nodesToRevisit = [];
11951      var pendingRequests = [];
11952      while (nodesToVisit.length) {
11953        var _currentNode = nodesToVisit.pop();
11954        if ((0, _primitives.isRef)(_currentNode)) {
11955          if (this.refSet.has(_currentNode)) {
11956            continue;
11957          }
11958          try {
11959            this.refSet.put(_currentNode);
11960            _currentNode = this.xref.fetch(_currentNode);
11961          } catch (ex) {
11962            if (!(ex instanceof _util.MissingDataException)) {
11963              throw ex;
11964            }
11965            nodesToRevisit.push(_currentNode);
11966            pendingRequests.push({
11967              begin: ex.begin,
11968              end: ex.end
11969            });
11970          }
11971        }
11972        if (_currentNode && _currentNode.getBaseStreams) {
11973          var baseStreams = _currentNode.getBaseStreams();
11974          var foundMissingData = false;
11975          for (var i = 0, ii = baseStreams.length; i < ii; i++) {
11976            var stream = baseStreams[i];
11977            if (stream.getMissingChunks && stream.getMissingChunks().length) {
11978              foundMissingData = true;
11979              pendingRequests.push({
11980                begin: stream.start,
11981                end: stream.end
11982              });
11983            }
11984          }
11985          if (foundMissingData) {
11986            nodesToRevisit.push(_currentNode);
11987          }
11988        }
11989        addChildren(_currentNode, nodesToVisit);
11990      }
11991      if (pendingRequests.length) {
11992        this.xref.stream.manager.requestRanges(pendingRequests).then(function () {
11993          for (var _i4 = 0, _ii3 = nodesToRevisit.length; _i4 < _ii3; _i4++) {
11994            var node = nodesToRevisit[_i4];
11995            if ((0, _primitives.isRef)(node)) {
11996              _this4.refSet.remove(node);
11997            }
11998          }
11999          _this4._walk(nodesToRevisit);
12000        }, this.capability.reject);
12001        return;
12002      }
12003      this.refSet = null;
12004      this.capability.resolve();
12005    }
12006  };
12007  return ObjectLoader;
12008}();
12009exports.Catalog = Catalog;
12010exports.ObjectLoader = ObjectLoader;
12011exports.XRef = XRef;
12012exports.FileSpec = FileSpec;
12013
12014/***/ }),
12015/* 138 */
12016/***/ (function(module, exports, __w_pdfjs_require__) {
12017
12018"use strict";
12019
12020
12021Object.defineProperty(exports, "__esModule", {
12022  value: true
12023});
12024
12025var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
12026
12027var EOF = {};
12028var Name = function NameClosure() {
12029  function Name(name) {
12030    this.name = name;
12031  }
12032  Name.prototype = {};
12033  var nameCache = Object.create(null);
12034  Name.get = function Name_get(name) {
12035    var nameValue = nameCache[name];
12036    return nameValue ? nameValue : nameCache[name] = new Name(name);
12037  };
12038  return Name;
12039}();
12040var Cmd = function CmdClosure() {
12041  function Cmd(cmd) {
12042    this.cmd = cmd;
12043  }
12044  Cmd.prototype = {};
12045  var cmdCache = Object.create(null);
12046  Cmd.get = function Cmd_get(cmd) {
12047    var cmdValue = cmdCache[cmd];
12048    return cmdValue ? cmdValue : cmdCache[cmd] = new Cmd(cmd);
12049  };
12050  return Cmd;
12051}();
12052var Dict = function DictClosure() {
12053  var nonSerializable = function nonSerializableClosure() {
12054    return nonSerializable;
12055  };
12056  function Dict(xref) {
12057    this._map = Object.create(null);
12058    this.xref = xref;
12059    this.objId = null;
12060    this.suppressEncryption = false;
12061    this.__nonSerializable__ = nonSerializable;
12062  }
12063  Dict.prototype = {
12064    assignXref: function Dict_assignXref(newXref) {
12065      this.xref = newXref;
12066    },
12067    get: function Dict_get(key1, key2, key3) {
12068      var value;
12069      var xref = this.xref,
12070          suppressEncryption = this.suppressEncryption;
12071      if (typeof (value = this._map[key1]) !== 'undefined' || key1 in this._map || typeof key2 === 'undefined') {
12072        return xref ? xref.fetchIfRef(value, suppressEncryption) : value;
12073      }
12074      if (typeof (value = this._map[key2]) !== 'undefined' || key2 in this._map || typeof key3 === 'undefined') {
12075        return xref ? xref.fetchIfRef(value, suppressEncryption) : value;
12076      }
12077      value = this._map[key3] || null;
12078      return xref ? xref.fetchIfRef(value, suppressEncryption) : value;
12079    },
12080    getAsync: function Dict_getAsync(key1, key2, key3) {
12081      var value;
12082      var xref = this.xref,
12083          suppressEncryption = this.suppressEncryption;
12084      if (typeof (value = this._map[key1]) !== 'undefined' || key1 in this._map || typeof key2 === 'undefined') {
12085        if (xref) {
12086          return xref.fetchIfRefAsync(value, suppressEncryption);
12087        }
12088        return Promise.resolve(value);
12089      }
12090      if (typeof (value = this._map[key2]) !== 'undefined' || key2 in this._map || typeof key3 === 'undefined') {
12091        if (xref) {
12092          return xref.fetchIfRefAsync(value, suppressEncryption);
12093        }
12094        return Promise.resolve(value);
12095      }
12096      value = this._map[key3] || null;
12097      if (xref) {
12098        return xref.fetchIfRefAsync(value, suppressEncryption);
12099      }
12100      return Promise.resolve(value);
12101    },
12102    getArray: function Dict_getArray(key1, key2, key3) {
12103      var value = this.get(key1, key2, key3);
12104      var xref = this.xref,
12105          suppressEncryption = this.suppressEncryption;
12106      if (!Array.isArray(value) || !xref) {
12107        return value;
12108      }
12109      value = value.slice();
12110      for (var i = 0, ii = value.length; i < ii; i++) {
12111        if (!isRef(value[i])) {
12112          continue;
12113        }
12114        value[i] = xref.fetch(value[i], suppressEncryption);
12115      }
12116      return value;
12117    },
12118    getRaw: function Dict_getRaw(key) {
12119      return this._map[key];
12120    },
12121    getKeys: function Dict_getKeys() {
12122      return Object.keys(this._map);
12123    },
12124    set: function Dict_set(key, value) {
12125      this._map[key] = value;
12126    },
12127    has: function Dict_has(key) {
12128      return key in this._map;
12129    },
12130    forEach: function Dict_forEach(callback) {
12131      for (var key in this._map) {
12132        callback(key, this.get(key));
12133      }
12134    }
12135  };
12136  Dict.empty = new Dict(null);
12137  Dict.merge = function (xref, dictArray) {
12138    var mergedDict = new Dict(xref);
12139    for (var i = 0, ii = dictArray.length; i < ii; i++) {
12140      var dict = dictArray[i];
12141      if (!isDict(dict)) {
12142        continue;
12143      }
12144      for (var keyName in dict._map) {
12145        if (mergedDict._map[keyName] !== undefined) {
12146          continue;
12147        }
12148        mergedDict._map[keyName] = dict._map[keyName];
12149      }
12150    }
12151    return mergedDict;
12152  };
12153  return Dict;
12154}();
12155var Ref = function RefClosure() {
12156  function Ref(num, gen) {
12157    this.num = num;
12158    this.gen = gen;
12159  }
12160  Ref.prototype = {
12161    toString: function Ref_toString() {
12162      var str = this.num + 'R';
12163      if (this.gen !== 0) {
12164        str += this.gen;
12165      }
12166      return str;
12167    }
12168  };
12169  return Ref;
12170}();
12171var RefSet = function RefSetClosure() {
12172  function RefSet() {
12173    this.dict = Object.create(null);
12174  }
12175  RefSet.prototype = {
12176    has: function RefSet_has(ref) {
12177      return ref.toString() in this.dict;
12178    },
12179    put: function RefSet_put(ref) {
12180      this.dict[ref.toString()] = true;
12181    },
12182    remove: function RefSet_remove(ref) {
12183      delete this.dict[ref.toString()];
12184    }
12185  };
12186  return RefSet;
12187}();
12188var RefSetCache = function RefSetCacheClosure() {
12189  function RefSetCache() {
12190    this.dict = Object.create(null);
12191  }
12192  RefSetCache.prototype = {
12193    get: function RefSetCache_get(ref) {
12194      return this.dict[ref.toString()];
12195    },
12196    has: function RefSetCache_has(ref) {
12197      return ref.toString() in this.dict;
12198    },
12199    put: function RefSetCache_put(ref, obj) {
12200      this.dict[ref.toString()] = obj;
12201    },
12202    putAlias: function RefSetCache_putAlias(ref, aliasRef) {
12203      this.dict[ref.toString()] = this.get(aliasRef);
12204    },
12205    forEach: function RefSetCache_forEach(fn, thisArg) {
12206      for (var i in this.dict) {
12207        fn.call(thisArg, this.dict[i]);
12208      }
12209    },
12210    clear: function RefSetCache_clear() {
12211      this.dict = Object.create(null);
12212    }
12213  };
12214  return RefSetCache;
12215}();
12216function isEOF(v) {
12217  return v === EOF;
12218}
12219function isName(v, name) {
12220  return v instanceof Name && (name === undefined || v.name === name);
12221}
12222function isCmd(v, cmd) {
12223  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);
12224}
12225function isDict(v, type) {
12226  return v instanceof Dict && (type === undefined || isName(v.get('Type'), type));
12227}
12228function isRef(v) {
12229  return v instanceof Ref;
12230}
12231function isRefsEqual(v1, v2) {
12232  return v1.num === v2.num && v1.gen === v2.gen;
12233}
12234function isStream(v) {
12235  return (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object' && v !== null && v.getBytes !== undefined;
12236}
12237exports.EOF = EOF;
12238exports.Cmd = Cmd;
12239exports.Dict = Dict;
12240exports.Name = Name;
12241exports.Ref = Ref;
12242exports.RefSet = RefSet;
12243exports.RefSetCache = RefSetCache;
12244exports.isEOF = isEOF;
12245exports.isCmd = isCmd;
12246exports.isDict = isDict;
12247exports.isName = isName;
12248exports.isRef = isRef;
12249exports.isRefsEqual = isRefsEqual;
12250exports.isStream = isStream;
12251
12252/***/ }),
12253/* 139 */
12254/***/ (function(module, exports, __w_pdfjs_require__) {
12255
12256"use strict";
12257
12258
12259Object.defineProperty(exports, "__esModule", {
12260  value: true
12261});
12262exports.Parser = exports.Linearization = exports.Lexer = undefined;
12263
12264var _stream = __w_pdfjs_require__(140);
12265
12266var _util = __w_pdfjs_require__(2);
12267
12268var _primitives = __w_pdfjs_require__(138);
12269
12270var _ccitt_stream = __w_pdfjs_require__(141);
12271
12272var _jbig2_stream = __w_pdfjs_require__(143);
12273
12274var _jpeg_stream = __w_pdfjs_require__(146);
12275
12276var _jpx_stream = __w_pdfjs_require__(148);
12277
12278var MAX_LENGTH_TO_CACHE = 1000;
12279var MAX_ADLER32_LENGTH = 5552;
12280function computeAdler32(bytes) {
12281  var bytesLength = bytes.length;
12282  var a = 1,
12283      b = 0;
12284  for (var i = 0; i < bytesLength; ++i) {
12285    a += bytes[i] & 0xFF;
12286    b += a;
12287  }
12288  return b % 65521 << 16 | a % 65521;
12289}
12290var Parser = function ParserClosure() {
12291  function Parser(lexer, allowStreams, xref, recoveryMode) {
12292    this.lexer = lexer;
12293    this.allowStreams = allowStreams;
12294    this.xref = xref;
12295    this.recoveryMode = recoveryMode || false;
12296    this.imageCache = Object.create(null);
12297    this.refill();
12298  }
12299  Parser.prototype = {
12300    refill: function Parser_refill() {
12301      this.buf1 = this.lexer.getObj();
12302      this.buf2 = this.lexer.getObj();
12303    },
12304    shift: function Parser_shift() {
12305      if ((0, _primitives.isCmd)(this.buf2, 'ID')) {
12306        this.buf1 = this.buf2;
12307        this.buf2 = null;
12308      } else {
12309        this.buf1 = this.buf2;
12310        this.buf2 = this.lexer.getObj();
12311      }
12312    },
12313    tryShift: function Parser_tryShift() {
12314      try {
12315        this.shift();
12316        return true;
12317      } catch (e) {
12318        if (e instanceof _util.MissingDataException) {
12319          throw e;
12320        }
12321        return false;
12322      }
12323    },
12324    getObj: function Parser_getObj(cipherTransform) {
12325      var buf1 = this.buf1;
12326      this.shift();
12327      if (buf1 instanceof _primitives.Cmd) {
12328        switch (buf1.cmd) {
12329          case 'BI':
12330            return this.makeInlineImage(cipherTransform);
12331          case '[':
12332            var array = [];
12333            while (!(0, _primitives.isCmd)(this.buf1, ']') && !(0, _primitives.isEOF)(this.buf1)) {
12334              array.push(this.getObj(cipherTransform));
12335            }
12336            if ((0, _primitives.isEOF)(this.buf1)) {
12337              if (!this.recoveryMode) {
12338                throw new _util.FormatError('End of file inside array');
12339              }
12340              return array;
12341            }
12342            this.shift();
12343            return array;
12344          case '<<':
12345            var dict = new _primitives.Dict(this.xref);
12346            while (!(0, _primitives.isCmd)(this.buf1, '>>') && !(0, _primitives.isEOF)(this.buf1)) {
12347              if (!(0, _primitives.isName)(this.buf1)) {
12348                (0, _util.info)('Malformed dictionary: key must be a name object');
12349                this.shift();
12350                continue;
12351              }
12352              var key = this.buf1.name;
12353              this.shift();
12354              if ((0, _primitives.isEOF)(this.buf1)) {
12355                break;
12356              }
12357              dict.set(key, this.getObj(cipherTransform));
12358            }
12359            if ((0, _primitives.isEOF)(this.buf1)) {
12360              if (!this.recoveryMode) {
12361                throw new _util.FormatError('End of file inside dictionary');
12362              }
12363              return dict;
12364            }
12365            if ((0, _primitives.isCmd)(this.buf2, 'stream')) {
12366              return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict;
12367            }
12368            this.shift();
12369            return dict;
12370          default:
12371            return buf1;
12372        }
12373      }
12374      if (Number.isInteger(buf1)) {
12375        var num = buf1;
12376        if (Number.isInteger(this.buf1) && (0, _primitives.isCmd)(this.buf2, 'R')) {
12377          var ref = new _primitives.Ref(num, this.buf1);
12378          this.shift();
12379          this.shift();
12380          return ref;
12381        }
12382        return num;
12383      }
12384      if ((0, _util.isString)(buf1)) {
12385        var str = buf1;
12386        if (cipherTransform) {
12387          str = cipherTransform.decryptString(str);
12388        }
12389        return str;
12390      }
12391      return buf1;
12392    },
12393    findDefaultInlineStreamEnd: function findDefaultInlineStreamEnd(stream) {
12394      var E = 0x45,
12395          I = 0x49,
12396          SPACE = 0x20,
12397          LF = 0xA,
12398          CR = 0xD;
12399      var n = 10,
12400          NUL = 0x0;
12401      var startPos = stream.pos,
12402          state = 0,
12403          ch = void 0,
12404          maybeEIPos = void 0;
12405      while ((ch = stream.getByte()) !== -1) {
12406        if (state === 0) {
12407          state = ch === E ? 1 : 0;
12408        } else if (state === 1) {
12409          state = ch === I ? 2 : 0;
12410        } else {
12411          (0, _util.assert)(state === 2);
12412          if (ch === SPACE || ch === LF || ch === CR) {
12413            maybeEIPos = stream.pos;
12414            var followingBytes = stream.peekBytes(n);
12415            for (var i = 0, ii = followingBytes.length; i < ii; i++) {
12416              ch = followingBytes[i];
12417              if (ch === NUL && followingBytes[i + 1] !== NUL) {
12418                continue;
12419              }
12420              if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7F)) {
12421                state = 0;
12422                break;
12423              }
12424            }
12425            if (state === 2) {
12426              break;
12427            }
12428          } else {
12429            state = 0;
12430          }
12431        }
12432      }
12433      if (ch === -1) {
12434        (0, _util.warn)('findDefaultInlineStreamEnd: ' + 'Reached the end of the stream without finding a valid EI marker');
12435        if (maybeEIPos) {
12436          (0, _util.warn)('... trying to recover by using the last "EI" occurrence.');
12437          stream.skip(-(stream.pos - maybeEIPos));
12438        }
12439      }
12440      return stream.pos - 4 - startPos;
12441    },
12442
12443    findDCTDecodeInlineStreamEnd: function Parser_findDCTDecodeInlineStreamEnd(stream) {
12444      var startPos = stream.pos,
12445          foundEOI = false,
12446          b,
12447          markerLength,
12448          length;
12449      while ((b = stream.getByte()) !== -1) {
12450        if (b !== 0xFF) {
12451          continue;
12452        }
12453        switch (stream.getByte()) {
12454          case 0x00:
12455            break;
12456          case 0xFF:
12457            stream.skip(-1);
12458            break;
12459          case 0xD9:
12460            foundEOI = true;
12461            break;
12462          case 0xC0:
12463          case 0xC1:
12464          case 0xC2:
12465          case 0xC3:
12466          case 0xC5:
12467          case 0xC6:
12468          case 0xC7:
12469          case 0xC9:
12470          case 0xCA:
12471          case 0xCB:
12472          case 0xCD:
12473          case 0xCE:
12474          case 0xCF:
12475          case 0xC4:
12476          case 0xCC:
12477          case 0xDA:
12478          case 0xDB:
12479          case 0xDC:
12480          case 0xDD:
12481          case 0xDE:
12482          case 0xDF:
12483          case 0xE0:
12484          case 0xE1:
12485          case 0xE2:
12486          case 0xE3:
12487          case 0xE4:
12488          case 0xE5:
12489          case 0xE6:
12490          case 0xE7:
12491          case 0xE8:
12492          case 0xE9:
12493          case 0xEA:
12494          case 0xEB:
12495          case 0xEC:
12496          case 0xED:
12497          case 0xEE:
12498          case 0xEF:
12499          case 0xFE:
12500            markerLength = stream.getUint16();
12501            if (markerLength > 2) {
12502              stream.skip(markerLength - 2);
12503            } else {
12504              stream.skip(-2);
12505            }
12506            break;
12507        }
12508        if (foundEOI) {
12509          break;
12510        }
12511      }
12512      length = stream.pos - startPos;
12513      if (b === -1) {
12514        (0, _util.warn)('Inline DCTDecode image stream: ' + 'EOI marker not found, searching for /EI/ instead.');
12515        stream.skip(-length);
12516        return this.findDefaultInlineStreamEnd(stream);
12517      }
12518      this.inlineStreamSkipEI(stream);
12519      return length;
12520    },
12521    findASCII85DecodeInlineStreamEnd: function Parser_findASCII85DecodeInlineStreamEnd(stream) {
12522      var TILDE = 0x7E,
12523          GT = 0x3E;
12524      var startPos = stream.pos,
12525          ch,
12526          length;
12527      while ((ch = stream.getByte()) !== -1) {
12528        if (ch === TILDE && stream.peekByte() === GT) {
12529          stream.skip();
12530          break;
12531        }
12532      }
12533      length = stream.pos - startPos;
12534      if (ch === -1) {
12535        (0, _util.warn)('Inline ASCII85Decode image stream: ' + 'EOD marker not found, searching for /EI/ instead.');
12536        stream.skip(-length);
12537        return this.findDefaultInlineStreamEnd(stream);
12538      }
12539      this.inlineStreamSkipEI(stream);
12540      return length;
12541    },
12542    findASCIIHexDecodeInlineStreamEnd: function Parser_findASCIIHexDecodeInlineStreamEnd(stream) {
12543      var GT = 0x3E;
12544      var startPos = stream.pos,
12545          ch,
12546          length;
12547      while ((ch = stream.getByte()) !== -1) {
12548        if (ch === GT) {
12549          break;
12550        }
12551      }
12552      length = stream.pos - startPos;
12553      if (ch === -1) {
12554        (0, _util.warn)('Inline ASCIIHexDecode image stream: ' + 'EOD marker not found, searching for /EI/ instead.');
12555        stream.skip(-length);
12556        return this.findDefaultInlineStreamEnd(stream);
12557      }
12558      this.inlineStreamSkipEI(stream);
12559      return length;
12560    },
12561    inlineStreamSkipEI: function Parser_inlineStreamSkipEI(stream) {
12562      var E = 0x45,
12563          I = 0x49;
12564      var state = 0,
12565          ch;
12566      while ((ch = stream.getByte()) !== -1) {
12567        if (state === 0) {
12568          state = ch === E ? 1 : 0;
12569        } else if (state === 1) {
12570          state = ch === I ? 2 : 0;
12571        } else if (state === 2) {
12572          break;
12573        }
12574      }
12575    },
12576    makeInlineImage: function Parser_makeInlineImage(cipherTransform) {
12577      var lexer = this.lexer;
12578      var stream = lexer.stream;
12579      var dict = new _primitives.Dict(this.xref),
12580          dictLength = void 0;
12581      while (!(0, _primitives.isCmd)(this.buf1, 'ID') && !(0, _primitives.isEOF)(this.buf1)) {
12582        if (!(0, _primitives.isName)(this.buf1)) {
12583          throw new _util.FormatError('Dictionary key must be a name object');
12584        }
12585        var key = this.buf1.name;
12586        this.shift();
12587        if ((0, _primitives.isEOF)(this.buf1)) {
12588          break;
12589        }
12590        dict.set(key, this.getObj(cipherTransform));
12591      }
12592      if (lexer.beginInlineImagePos !== -1) {
12593        dictLength = stream.pos - lexer.beginInlineImagePos;
12594      }
12595      var filter = dict.get('Filter', 'F'),
12596          filterName;
12597      if ((0, _primitives.isName)(filter)) {
12598        filterName = filter.name;
12599      } else if (Array.isArray(filter)) {
12600        var filterZero = this.xref.fetchIfRef(filter[0]);
12601        if ((0, _primitives.isName)(filterZero)) {
12602          filterName = filterZero.name;
12603        }
12604      }
12605      var startPos = stream.pos,
12606          length = void 0;
12607      if (filterName === 'DCTDecode' || filterName === 'DCT') {
12608        length = this.findDCTDecodeInlineStreamEnd(stream);
12609      } else if (filterName === 'ASCII85Decode' || filterName === 'A85') {
12610        length = this.findASCII85DecodeInlineStreamEnd(stream);
12611      } else if (filterName === 'ASCIIHexDecode' || filterName === 'AHx') {
12612        length = this.findASCIIHexDecodeInlineStreamEnd(stream);
12613      } else {
12614        length = this.findDefaultInlineStreamEnd(stream);
12615      }
12616      var imageStream = stream.makeSubStream(startPos, length, dict);
12617      var cacheKey = void 0;
12618      if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {
12619        var imageBytes = imageStream.getBytes();
12620        imageStream.reset();
12621        var initialStreamPos = stream.pos;
12622        stream.pos = lexer.beginInlineImagePos;
12623        var dictBytes = stream.getBytes(dictLength);
12624        stream.pos = initialStreamPos;
12625        cacheKey = computeAdler32(imageBytes) + '_' + computeAdler32(dictBytes);
12626        var cacheEntry = this.imageCache[cacheKey];
12627        if (cacheEntry !== undefined) {
12628          this.buf2 = _primitives.Cmd.get('EI');
12629          this.shift();
12630          cacheEntry.reset();
12631          return cacheEntry;
12632        }
12633      }
12634      if (cipherTransform) {
12635        imageStream = cipherTransform.createStream(imageStream, length);
12636      }
12637      imageStream = this.filter(imageStream, dict, length);
12638      imageStream.dict = dict;
12639      if (cacheKey !== undefined) {
12640        imageStream.cacheKey = 'inline_' + length + '_' + cacheKey;
12641        this.imageCache[cacheKey] = imageStream;
12642      }
12643      this.buf2 = _primitives.Cmd.get('EI');
12644      this.shift();
12645      return imageStream;
12646    },
12647    _findStreamLength: function _findStreamLength(startPos, signature) {
12648      var stream = this.lexer.stream;
12649
12650      stream.pos = startPos;
12651      var SCAN_BLOCK_LENGTH = 2048;
12652      var signatureLength = signature.length;
12653      while (stream.pos < stream.end) {
12654        var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);
12655        var scanLength = scanBytes.length - signatureLength;
12656        if (scanLength <= 0) {
12657          break;
12658        }
12659        var pos = 0;
12660        while (pos < scanLength) {
12661          var j = 0;
12662          while (j < signatureLength && scanBytes[pos + j] === signature[j]) {
12663            j++;
12664          }
12665          if (j >= signatureLength) {
12666            stream.pos += pos;
12667            return stream.pos - startPos;
12668          }
12669          pos++;
12670        }
12671        stream.pos += scanLength;
12672      }
12673      return -1;
12674    },
12675
12676    makeStream: function Parser_makeStream(dict, cipherTransform) {
12677      var lexer = this.lexer;
12678      var stream = lexer.stream;
12679      lexer.skipToNextLine();
12680      var startPos = stream.pos - 1;
12681      var length = dict.get('Length');
12682      if (!Number.isInteger(length)) {
12683        (0, _util.info)('Bad ' + length + ' attribute in stream');
12684        length = 0;
12685      }
12686      stream.pos = startPos + length;
12687      lexer.nextChar();
12688      if (this.tryShift() && (0, _primitives.isCmd)(this.buf2, 'endstream')) {
12689        this.shift();
12690      } else {
12691        var ENDSTREAM_SIGNATURE = new Uint8Array([0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D]);
12692        var actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);
12693        if (actualLength < 0) {
12694          var MAX_TRUNCATION = 1;
12695          for (var i = 1; i <= MAX_TRUNCATION; i++) {
12696            var end = ENDSTREAM_SIGNATURE.length - i;
12697            var TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);
12698            var maybeLength = this._findStreamLength(startPos, TRUNCATED_SIGNATURE);
12699            if (maybeLength >= 0) {
12700              var lastByte = stream.peekBytes(end + 1)[end];
12701              if (!(0, _util.isSpace)(lastByte)) {
12702                break;
12703              }
12704              (0, _util.info)('Found "' + (0, _util.bytesToString)(TRUNCATED_SIGNATURE) + '" when ' + 'searching for endstream command.');
12705              actualLength = maybeLength;
12706              break;
12707            }
12708          }
12709          if (actualLength < 0) {
12710            throw new _util.FormatError('Missing endstream command.');
12711          }
12712        }
12713        length = actualLength;
12714        lexer.nextChar();
12715        this.shift();
12716        this.shift();
12717      }
12718      this.shift();
12719      stream = stream.makeSubStream(startPos, length, dict);
12720      if (cipherTransform) {
12721        stream = cipherTransform.createStream(stream, length);
12722      }
12723      stream = this.filter(stream, dict, length);
12724      stream.dict = dict;
12725      return stream;
12726    },
12727    filter: function Parser_filter(stream, dict, length) {
12728      var filter = dict.get('Filter', 'F');
12729      var params = dict.get('DecodeParms', 'DP');
12730      if ((0, _primitives.isName)(filter)) {
12731        if (Array.isArray(params)) {
12732          (0, _util.warn)('/DecodeParms should not contain an Array, ' + 'when /Filter contains a Name.');
12733        }
12734        return this.makeFilter(stream, filter.name, length, params);
12735      }
12736      var maybeLength = length;
12737      if (Array.isArray(filter)) {
12738        var filterArray = filter;
12739        var paramsArray = params;
12740        for (var i = 0, ii = filterArray.length; i < ii; ++i) {
12741          filter = this.xref.fetchIfRef(filterArray[i]);
12742          if (!(0, _primitives.isName)(filter)) {
12743            throw new _util.FormatError('Bad filter name: ' + filter);
12744          }
12745          params = null;
12746          if (Array.isArray(paramsArray) && i in paramsArray) {
12747            params = this.xref.fetchIfRef(paramsArray[i]);
12748          }
12749          stream = this.makeFilter(stream, filter.name, maybeLength, params);
12750          maybeLength = null;
12751        }
12752      }
12753      return stream;
12754    },
12755    makeFilter: function Parser_makeFilter(stream, name, maybeLength, params) {
12756      if (maybeLength === 0) {
12757        (0, _util.warn)('Empty "' + name + '" stream.');
12758        return new _stream.NullStream();
12759      }
12760      try {
12761        var xrefStreamStats = this.xref.stats.streamTypes;
12762        if (name === 'FlateDecode' || name === 'Fl') {
12763          xrefStreamStats[_util.StreamType.FLATE] = true;
12764          if (params) {
12765            return new _stream.PredictorStream(new _stream.FlateStream(stream, maybeLength), maybeLength, params);
12766          }
12767          return new _stream.FlateStream(stream, maybeLength);
12768        }
12769        if (name === 'LZWDecode' || name === 'LZW') {
12770          xrefStreamStats[_util.StreamType.LZW] = true;
12771          var earlyChange = 1;
12772          if (params) {
12773            if (params.has('EarlyChange')) {
12774              earlyChange = params.get('EarlyChange');
12775            }
12776            return new _stream.PredictorStream(new _stream.LZWStream(stream, maybeLength, earlyChange), maybeLength, params);
12777          }
12778          return new _stream.LZWStream(stream, maybeLength, earlyChange);
12779        }
12780        if (name === 'DCTDecode' || name === 'DCT') {
12781          xrefStreamStats[_util.StreamType.DCT] = true;
12782          return new _jpeg_stream.JpegStream(stream, maybeLength, stream.dict, params);
12783        }
12784        if (name === 'JPXDecode' || name === 'JPX') {
12785          xrefStreamStats[_util.StreamType.JPX] = true;
12786          return new _jpx_stream.JpxStream(stream, maybeLength, stream.dict, params);
12787        }
12788        if (name === 'ASCII85Decode' || name === 'A85') {
12789          xrefStreamStats[_util.StreamType.A85] = true;
12790          return new _stream.Ascii85Stream(stream, maybeLength);
12791        }
12792        if (name === 'ASCIIHexDecode' || name === 'AHx') {
12793          xrefStreamStats[_util.StreamType.AHX] = true;
12794          return new _stream.AsciiHexStream(stream, maybeLength);
12795        }
12796        if (name === 'CCITTFaxDecode' || name === 'CCF') {
12797          xrefStreamStats[_util.StreamType.CCF] = true;
12798          return new _ccitt_stream.CCITTFaxStream(stream, maybeLength, params);
12799        }
12800        if (name === 'RunLengthDecode' || name === 'RL') {
12801          xrefStreamStats[_util.StreamType.RL] = true;
12802          return new _stream.RunLengthStream(stream, maybeLength);
12803        }
12804        if (name === 'JBIG2Decode') {
12805          xrefStreamStats[_util.StreamType.JBIG] = true;
12806          return new _jbig2_stream.Jbig2Stream(stream, maybeLength, stream.dict, params);
12807        }
12808        (0, _util.warn)('filter "' + name + '" not supported yet');
12809        return stream;
12810      } catch (ex) {
12811        if (ex instanceof _util.MissingDataException) {
12812          throw ex;
12813        }
12814        (0, _util.warn)('Invalid stream: \"' + ex + '\"');
12815        return new _stream.NullStream();
12816      }
12817    }
12818  };
12819  return Parser;
12820}();
12821var Lexer = function LexerClosure() {
12822  function Lexer(stream, knownCommands) {
12823    this.stream = stream;
12824    this.nextChar();
12825    this.strBuf = [];
12826    this.knownCommands = knownCommands;
12827    this.beginInlineImagePos = -1;
12828  }
12829  var specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
12830  function toHexDigit(ch) {
12831    if (ch >= 0x30 && ch <= 0x39) {
12832      return ch & 0x0F;
12833    }
12834    if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {
12835      return (ch & 0x0F) + 9;
12836    }
12837    return -1;
12838  }
12839  Lexer.prototype = {
12840    nextChar: function Lexer_nextChar() {
12841      return this.currentChar = this.stream.getByte();
12842    },
12843    peekChar: function Lexer_peekChar() {
12844      return this.stream.peekByte();
12845    },
12846    getNumber: function Lexer_getNumber() {
12847      var ch = this.currentChar;
12848      var eNotation = false;
12849      var divideBy = 0;
12850      var sign = 0;
12851      if (ch === 0x2D) {
12852        sign = -1;
12853        ch = this.nextChar();
12854        if (ch === 0x2D) {
12855          ch = this.nextChar();
12856        }
12857      } else if (ch === 0x2B) {
12858        sign = 1;
12859        ch = this.nextChar();
12860      }
12861      if (ch === 0x0A || ch === 0x0D) {
12862        do {
12863          ch = this.nextChar();
12864        } while (ch === 0x0A || ch === 0x0D);
12865      }
12866      if (ch === 0x2E) {
12867        divideBy = 10;
12868        ch = this.nextChar();
12869      }
12870      if (ch < 0x30 || ch > 0x39) {
12871        if (divideBy === 10 && sign === 0 && ((0, _util.isSpace)(ch) || ch === -1)) {
12872          (0, _util.warn)('Lexer.getNumber - treating a single decimal point as zero.');
12873          return 0;
12874        }
12875        throw new _util.FormatError('Invalid number: ' + String.fromCharCode(ch) + ' (charCode ' + ch + ')');
12876      }
12877      sign = sign || 1;
12878      var baseValue = ch - 0x30;
12879      var powerValue = 0;
12880      var powerValueSign = 1;
12881      while ((ch = this.nextChar()) >= 0) {
12882        if (0x30 <= ch && ch <= 0x39) {
12883          var currentDigit = ch - 0x30;
12884          if (eNotation) {
12885            powerValue = powerValue * 10 + currentDigit;
12886          } else {
12887            if (divideBy !== 0) {
12888              divideBy *= 10;
12889            }
12890            baseValue = baseValue * 10 + currentDigit;
12891          }
12892        } else if (ch === 0x2E) {
12893          if (divideBy === 0) {
12894            divideBy = 1;
12895          } else {
12896            break;
12897          }
12898        } else if (ch === 0x2D) {
12899          (0, _util.warn)('Badly formatted number');
12900        } else if (ch === 0x45 || ch === 0x65) {
12901          ch = this.peekChar();
12902          if (ch === 0x2B || ch === 0x2D) {
12903            powerValueSign = ch === 0x2D ? -1 : 1;
12904            this.nextChar();
12905          } else if (ch < 0x30 || ch > 0x39) {
12906            break;
12907          }
12908          eNotation = true;
12909        } else {
12910          break;
12911        }
12912      }
12913      if (divideBy !== 0) {
12914        baseValue /= divideBy;
12915      }
12916      if (eNotation) {
12917        baseValue *= Math.pow(10, powerValueSign * powerValue);
12918      }
12919      return sign * baseValue;
12920    },
12921    getString: function Lexer_getString() {
12922      var numParen = 1;
12923      var done = false;
12924      var strBuf = this.strBuf;
12925      strBuf.length = 0;
12926      var ch = this.nextChar();
12927      while (true) {
12928        var charBuffered = false;
12929        switch (ch | 0) {
12930          case -1:
12931            (0, _util.warn)('Unterminated string');
12932            done = true;
12933            break;
12934          case 0x28:
12935            ++numParen;
12936            strBuf.push('(');
12937            break;
12938          case 0x29:
12939            if (--numParen === 0) {
12940              this.nextChar();
12941              done = true;
12942            } else {
12943              strBuf.push(')');
12944            }
12945            break;
12946          case 0x5C:
12947            ch = this.nextChar();
12948            switch (ch) {
12949              case -1:
12950                (0, _util.warn)('Unterminated string');
12951                done = true;
12952                break;
12953              case 0x6E:
12954                strBuf.push('\n');
12955                break;
12956              case 0x72:
12957                strBuf.push('\r');
12958                break;
12959              case 0x74:
12960                strBuf.push('\t');
12961                break;
12962              case 0x62:
12963                strBuf.push('\b');
12964                break;
12965              case 0x66:
12966                strBuf.push('\f');
12967                break;
12968              case 0x5C:
12969              case 0x28:
12970              case 0x29:
12971                strBuf.push(String.fromCharCode(ch));
12972                break;
12973              case 0x30:
12974              case 0x31:
12975              case 0x32:
12976              case 0x33:
12977              case 0x34:
12978              case 0x35:
12979              case 0x36:
12980              case 0x37:
12981                var x = ch & 0x0F;
12982                ch = this.nextChar();
12983                charBuffered = true;
12984                if (ch >= 0x30 && ch <= 0x37) {
12985                  x = (x << 3) + (ch & 0x0F);
12986                  ch = this.nextChar();
12987                  if (ch >= 0x30 && ch <= 0x37) {
12988                    charBuffered = false;
12989                    x = (x << 3) + (ch & 0x0F);
12990                  }
12991                }
12992                strBuf.push(String.fromCharCode(x));
12993                break;
12994              case 0x0D:
12995                if (this.peekChar() === 0x0A) {
12996                  this.nextChar();
12997                }
12998                break;
12999              case 0x0A:
13000                break;
13001              default:
13002                strBuf.push(String.fromCharCode(ch));
13003                break;
13004            }
13005            break;
13006          default:
13007            strBuf.push(String.fromCharCode(ch));
13008            break;
13009        }
13010        if (done) {
13011          break;
13012        }
13013        if (!charBuffered) {
13014          ch = this.nextChar();
13015        }
13016      }
13017      return strBuf.join('');
13018    },
13019    getName: function Lexer_getName() {
13020      var ch, previousCh;
13021      var strBuf = this.strBuf;
13022      strBuf.length = 0;
13023      while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {
13024        if (ch === 0x23) {
13025          ch = this.nextChar();
13026          if (specialChars[ch]) {
13027            (0, _util.warn)('Lexer_getName: ' + 'NUMBER SIGN (#) should be followed by a hexadecimal number.');
13028            strBuf.push('#');
13029            break;
13030          }
13031          var x = toHexDigit(ch);
13032          if (x !== -1) {
13033            previousCh = ch;
13034            ch = this.nextChar();
13035            var x2 = toHexDigit(ch);
13036            if (x2 === -1) {
13037              (0, _util.warn)('Lexer_getName: Illegal digit (' + String.fromCharCode(ch) + ') in hexadecimal number.');
13038              strBuf.push('#', String.fromCharCode(previousCh));
13039              if (specialChars[ch]) {
13040                break;
13041              }
13042              strBuf.push(String.fromCharCode(ch));
13043              continue;
13044            }
13045            strBuf.push(String.fromCharCode(x << 4 | x2));
13046          } else {
13047            strBuf.push('#', String.fromCharCode(ch));
13048          }
13049        } else {
13050          strBuf.push(String.fromCharCode(ch));
13051        }
13052      }
13053      if (strBuf.length > 127) {
13054        (0, _util.warn)('name token is longer than allowed by the spec: ' + strBuf.length);
13055      }
13056      return _primitives.Name.get(strBuf.join(''));
13057    },
13058    getHexString: function Lexer_getHexString() {
13059      var strBuf = this.strBuf;
13060      strBuf.length = 0;
13061      var ch = this.currentChar;
13062      var isFirstHex = true;
13063      var firstDigit;
13064      var secondDigit;
13065      while (true) {
13066        if (ch < 0) {
13067          (0, _util.warn)('Unterminated hex string');
13068          break;
13069        } else if (ch === 0x3E) {
13070          this.nextChar();
13071          break;
13072        } else if (specialChars[ch] === 1) {
13073          ch = this.nextChar();
13074          continue;
13075        } else {
13076          if (isFirstHex) {
13077            firstDigit = toHexDigit(ch);
13078            if (firstDigit === -1) {
13079              (0, _util.warn)('Ignoring invalid character "' + ch + '" in hex string');
13080              ch = this.nextChar();
13081              continue;
13082            }
13083          } else {
13084            secondDigit = toHexDigit(ch);
13085            if (secondDigit === -1) {
13086              (0, _util.warn)('Ignoring invalid character "' + ch + '" in hex string');
13087              ch = this.nextChar();
13088              continue;
13089            }
13090            strBuf.push(String.fromCharCode(firstDigit << 4 | secondDigit));
13091          }
13092          isFirstHex = !isFirstHex;
13093          ch = this.nextChar();
13094        }
13095      }
13096      return strBuf.join('');
13097    },
13098    getObj: function Lexer_getObj() {
13099      var comment = false;
13100      var ch = this.currentChar;
13101      while (true) {
13102        if (ch < 0) {
13103          return _primitives.EOF;
13104        }
13105        if (comment) {
13106          if (ch === 0x0A || ch === 0x0D) {
13107            comment = false;
13108          }
13109        } else if (ch === 0x25) {
13110          comment = true;
13111        } else if (specialChars[ch] !== 1) {
13112          break;
13113        }
13114        ch = this.nextChar();
13115      }
13116      switch (ch | 0) {
13117        case 0x30:
13118        case 0x31:
13119        case 0x32:
13120        case 0x33:
13121        case 0x34:
13122        case 0x35:
13123        case 0x36:
13124        case 0x37:
13125        case 0x38:
13126        case 0x39:
13127        case 0x2B:
13128        case 0x2D:
13129        case 0x2E:
13130          return this.getNumber();
13131        case 0x28:
13132          return this.getString();
13133        case 0x2F:
13134          return this.getName();
13135        case 0x5B:
13136          this.nextChar();
13137          return _primitives.Cmd.get('[');
13138        case 0x5D:
13139          this.nextChar();
13140          return _primitives.Cmd.get(']');
13141        case 0x3C:
13142          ch = this.nextChar();
13143          if (ch === 0x3C) {
13144            this.nextChar();
13145            return _primitives.Cmd.get('<<');
13146          }
13147          return this.getHexString();
13148        case 0x3E:
13149          ch = this.nextChar();
13150          if (ch === 0x3E) {
13151            this.nextChar();
13152            return _primitives.Cmd.get('>>');
13153          }
13154          return _primitives.Cmd.get('>');
13155        case 0x7B:
13156          this.nextChar();
13157          return _primitives.Cmd.get('{');
13158        case 0x7D:
13159          this.nextChar();
13160          return _primitives.Cmd.get('}');
13161        case 0x29:
13162          this.nextChar();
13163          throw new _util.FormatError('Illegal character: ' + ch);
13164      }
13165      var str = String.fromCharCode(ch);
13166      var knownCommands = this.knownCommands;
13167      var knownCommandFound = knownCommands && knownCommands[str] !== undefined;
13168      while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {
13169        var possibleCommand = str + String.fromCharCode(ch);
13170        if (knownCommandFound && knownCommands[possibleCommand] === undefined) {
13171          break;
13172        }
13173        if (str.length === 128) {
13174          throw new _util.FormatError('Command token too long: ' + str.length);
13175        }
13176        str = possibleCommand;
13177        knownCommandFound = knownCommands && knownCommands[str] !== undefined;
13178      }
13179      if (str === 'true') {
13180        return true;
13181      }
13182      if (str === 'false') {
13183        return false;
13184      }
13185      if (str === 'null') {
13186        return null;
13187      }
13188      if (str === 'BI') {
13189        this.beginInlineImagePos = this.stream.pos;
13190      }
13191      return _primitives.Cmd.get(str);
13192    },
13193    skipToNextLine: function Lexer_skipToNextLine() {
13194      var ch = this.currentChar;
13195      while (ch >= 0) {
13196        if (ch === 0x0D) {
13197          ch = this.nextChar();
13198          if (ch === 0x0A) {
13199            this.nextChar();
13200          }
13201          break;
13202        } else if (ch === 0x0A) {
13203          this.nextChar();
13204          break;
13205        }
13206        ch = this.nextChar();
13207      }
13208    }
13209  };
13210  return Lexer;
13211}();
13212var Linearization = {
13213  create: function LinearizationCreate(stream) {
13214    function getInt(name, allowZeroValue) {
13215      var obj = linDict.get(name);
13216      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {
13217        return obj;
13218      }
13219      throw new Error('The "' + name + '" parameter in the linearization ' + 'dictionary is invali
13219d.');
13220    }
13221    function getHints() {
13222      var hints = linDict.get('H'),
13223          hintsLength,
13224          item;
13225      if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) {
13226        for (var index = 0; index < hintsLength; index++) {
13227          if (!(Number.isInteger(item = hints[index]) && item > 0)) {
13228            throw new Error('Hint (' + index + ') in the linearization dictionary is invalid.');
13229          }
13230        }
13231        return hints;
13232      }
13233      throw new Error('Hint array in the linearization dictionary is invalid.');
13234    }
13235    var parser = new Parser(new Lexer(stream), false, null);
13236    var obj1 = parser.getObj();
13237    var obj2 = parser.getObj();
13238    var obj3 = parser.getObj();
13239    var linDict = parser.getObj();
13240    var obj, length;
13241    if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, 'obj') && (0, _primitives.isDict)(linDict) && (0, _util.isNum)(obj = linDict.get('Linearized')) && obj > 0)) {
13242      return null;
13243    } else if ((length = getInt('L')) !== stream.length) {
13244      throw new Error('The "L" parameter in the linearization dictionary ' + 'does not equal the stream length.');
13245    }
13246    return {
13247      length: length,
13248      hints: getHints(),
13249      objectNumberFirst: getInt('O'),
13250      endFirst: getInt('E'),
13251      numPages: getInt('N'),
13252      mainXRefEntriesOffset: getInt('T'),
13253      pageFirst: linDict.has('P') ? getInt('P', true) : 0
13254    };
13255  }
13256};
13257exports.Lexer = Lexer;
13258exports.Linearization = Linearization;
13259exports.Parser = Parser;
13260
13261/***/ }),
13262/* 140 */
13263/***/ (function(module, exports, __w_pdfjs_require__) {
13264
13265"use strict";
13266
13267
13268Object.defineProperty(exports, "__esModule", {
13269  value: true
13270});
13271exports.LZWStream = exports.StringStream = exports.StreamsSequenceStream = exports.Stream = exports.RunLengthStream = exports.PredictorStream = exports.NullStream = exports.FlateStream = exports.DecodeStream = exports.DecryptStream = exports.AsciiHexStream = exports.Ascii85Stream = undefined;
13272
13273var _util = __w_pdfjs_require__(2);
13274
13275var _primitives = __w_pdfjs_require__(138);
13276
13277function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
13278
13279var Stream = function StreamClosure() {
13280  function Stream(arrayBuffer, start, length, dict) {
13281    this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer);
13282    this.start = start || 0;
13283    this.pos = this.start;
13284    this.end = start + length || this.bytes.length;
13285    this.dict = dict;
13286  }
13287  Stream.prototype = {
13288    get length() {
13289      return this.end - this.start;
13290    },
13291    get isEmpty() {
13292      return this.length === 0;
13293    },
13294    getByte: function Stream_getByte() {
13295      if (this.pos >= this.end) {
13296        return -1;
13297      }
13298      return this.bytes[this.pos++];
13299    },
13300    getUint16: function Stream_getUint16() {
13301      var b0 = this.getByte();
13302      var b1 = this.getByte();
13303      if (b0 === -1 || b1 === -1) {
13304        return -1;
13305      }
13306      return (b0 << 8) + b1;
13307    },
13308    getInt32: function Stream_getInt32() {
13309      var b0 = this.getByte();
13310      var b1 = this.getByte();
13311      var b2 = this.getByte();
13312      var b3 = this.getByte();
13313      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
13314    },
13315    getBytes: function getBytes(length) {
13316      var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
13317
13318      var bytes = this.bytes;
13319      var pos = this.pos;
13320      var strEnd = this.end;
13321      if (!length) {
13322        var _subarray = bytes.subarray(pos, strEnd);
13323        return forceClamped ? new Uint8ClampedArray(_subarray) : _subarray;
13324      }
13325      var end = pos + length;
13326      if (end > strEnd) {
13327        end = strEnd;
13328      }
13329      this.pos = end;
13330      var subarray = bytes.subarray(pos, end);
13331      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;
13332    },
13333
13334    peekByte: function Stream_peekByte() {
13335      var peekedByte = this.getByte();
13336      this.pos--;
13337      return peekedByte;
13338    },
13339    peekBytes: function peekBytes(length) {
13340      var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
13341
13342      var bytes = this.getBytes(length, forceClamped);
13343      this.pos -= bytes.length;
13344      return bytes;
13345    },
13346
13347    skip: function Stream_skip(n) {
13348      if (!n) {
13349        n = 1;
13350      }
13351      this.pos += n;
13352    },
13353    reset: function Stream_reset() {
13354      this.pos = this.start;
13355    },
13356    moveStart: function Stream_moveStart() {
13357      this.start = this.pos;
13358    },
13359    makeSubStream: function Stream_makeSubStream(start, length, dict) {
13360      return new Stream(this.bytes.buffer, start, length, dict);
13361    }
13362  };
13363  return Stream;
13364}();
13365var StringStream = function StringStreamClosure() {
13366  function StringStream(str) {
13367    var bytes = (0, _util.stringToBytes)(str);
13368    Stream.call(this, bytes);
13369  }
13370  StringStream.prototype = Stream.prototype;
13371  return StringStream;
13372}();
13373var DecodeStream = function DecodeStreamClosure() {
13374  var emptyBuffer = new Uint8Array(0);
13375  function DecodeStream(maybeMinBufferLength) {
13376    this._rawMinBufferLength = maybeMinBufferLength || 0;
13377    this.pos = 0;
13378    this.bufferLength = 0;
13379    this.eof = false;
13380    this.buffer = emptyBuffer;
13381    this.minBufferLength = 512;
13382    if (maybeMinBufferLength) {
13383      while (this.minBufferLength < maybeMinBufferLength) {
13384        this.minBufferLength *= 2;
13385      }
13386    }
13387  }
13388  DecodeStream.prototype = {
13389    get isEmpty() {
13390      while (!this.eof && this.bufferLength === 0) {
13391        this.readBlock();
13392      }
13393      return this.bufferLength === 0;
13394    },
13395    ensureBuffer: function DecodeStream_ensureBuffer(requested) {
13396      var buffer = this.buffer;
13397      if (requested <= buffer.byteLength) {
13398        return buffer;
13399      }
13400      var size = this.minBufferLength;
13401      while (size < requested) {
13402        size *= 2;
13403      }
13404      var buffer2 = new Uint8Array(size);
13405      buffer2.set(buffer);
13406      return this.buffer = buffer2;
13407    },
13408    getByte: function DecodeStream_getByte() {
13409      var pos = this.pos;
13410      while (this.bufferLength <= pos) {
13411        if (this.eof) {
13412          return -1;
13413        }
13414        this.readBlock();
13415      }
13416      return this.buffer[this.pos++];
13417    },
13418    getUint16: function DecodeStream_getUint16() {
13419      var b0 = this.getByte();
13420      var b1 = this.getByte();
13421      if (b0 === -1 || b1 === -1) {
13422        return -1;
13423      }
13424      return (b0 << 8) + b1;
13425    },
13426    getInt32: function DecodeStream_getInt32() {
13427      var b0 = this.getByte();
13428      var b1 = this.getByte();
13429      var b2 = this.getByte();
13430      var b3 = this.getByte();
13431      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
13432    },
13433    getBytes: function getBytes(length) {
13434      var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
13435
13436      var end,
13437          pos = this.pos;
13438      if (length) {
13439        this.ensureBuffer(pos + length);
13440        end = pos + length;
13441        while (!this.eof && this.bufferLength < end) {
13442          this.readBlock();
13443        }
13444        var bufEnd = this.bufferLength;
13445        if (end > bufEnd) {
13446          end = bufEnd;
13447        }
13448      } else {
13449        while (!this.eof) {
13450          this.readBlock();
13451        }
13452        end = this.bufferLength;
13453      }
13454      this.pos = end;
13455      var subarray = this.buffer.subarray(pos, end);
13456      return forceClamped && !(subarray instanceof Uint8ClampedArray) ? new Uint8ClampedArray(subarray) : subarray;
13457    },
13458
13459    peekByte: function DecodeStream_peekByte() {
13460      var peekedByte = this.getByte();
13461      this.pos--;
13462      return peekedByte;
13463    },
13464    peekBytes: function peekBytes(length) {
13465      var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
13466
13467      var bytes = this.getBytes(length, forceClamped);
13468      this.pos -= bytes.length;
13469      return bytes;
13470    },
13471
13472    makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {
13473      var end = start + length;
13474      while (this.bufferLength <= end && !this.eof) {
13475        this.readBlock();
13476      }
13477      return new Stream(this.buffer, start, length, dict);
13478    },
13479    skip: function DecodeStream_skip(n) {
13480      if (!n) {
13481        n = 1;
13482      }
13483      this.pos += n;
13484    },
13485    reset: function DecodeStream_reset() {
13486      this.pos = 0;
13487    },
13488    getBaseStreams: function DecodeStream_getBaseStreams() {
13489      if (this.str && this.str.getBaseStreams) {
13490        return this.str.getBaseStreams();
13491      }
13492      return [];
13493    }
13494  };
13495  return DecodeStream;
13496}();
13497var StreamsSequenceStream = function StreamsSequenceStreamClosure() {
13498  function StreamsSequenceStream(streams) {
13499    this.streams = streams;
13500    var maybeLength = 0;
13501    for (var i = 0, ii = streams.length; i < ii; i++) {
13502      var stream = streams[i];
13503      if (stream instanceof DecodeStream) {
13504        maybeLength += stream._rawMinBufferLength;
13505      } else {
13506        maybeLength += stream.length;
13507      }
13508    }
13509    DecodeStream.call(this, maybeLength);
13510  }
13511  StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype);
13512  StreamsSequenceStream.prototype.readBlock = function streamSequenceStreamReadBlock() {
13513    var streams = this.streams;
13514    if (streams.length === 0) {
13515      this.eof = true;
13516      return;
13517    }
13518    var stream = streams.shift();
13519    var chunk = stream.getBytes();
13520    var bufferLength = this.bufferLength;
13521    var newLength = bufferLength + chunk.length;
13522    var buffer = this.ensureBuffer(newLength);
13523    buffer.set(chunk, bufferLength);
13524    this.bufferLength = newLength;
13525  };
13526  StreamsSequenceStream.prototype.getBaseStreams = function StreamsSequenceStream_getBaseStreams() {
13527    var baseStreams = [];
13528    for (var i = 0, ii = this.streams.length; i < ii; i++) {
13529      var stream = this.streams[i];
13530      if (stream.getBaseStreams) {
13531        baseStreams.push.apply(baseStreams, _toConsumableArray(stream.getBaseStreams()));
13532      }
13533    }
13534    return baseStreams;
13535  };
13536  return StreamsSequenceStream;
13537}();
13538var FlateStream = function FlateStreamClosure() {
13539  var codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
13540  var lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]);
13541  var distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]);
13542  var fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 
135420x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9];
13543  var fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5];
13544  function FlateStream(str, maybeLength) {
13545    this.str = str;
13546    this.dict = str.dict;
13547    var cmf = str.getByte();
13548    var flg = str.getByte();
13549    if (cmf === -1 || flg === -1) {
13550      throw new _util.FormatError('Invalid header in flate stream: ' + cmf + ', ' + flg);
13551    }
13552    if ((cmf & 0x0f) !== 0x08) {
13553      throw new _util.FormatError('Unknown compression method in flate stream: ' + cmf + ', ' + flg);
13554    }
13555    if (((cmf << 8) + flg) % 31 !== 0) {
13556      throw new _util.FormatError('Bad FCHECK in flate stream: ' + cmf + ', ' + flg);
13557    }
13558    if (flg & 0x20) {
13559      throw new _util.FormatError('FDICT bit set in flate stream: ' + cmf + ', ' + flg);
13560    }
13561    this.codeSize = 0;
13562    this.codeBuf = 0;
13563    DecodeStream.call(this, maybeLength);
13564  }
13565  FlateStream.prototype = Object.create(DecodeStream.prototype);
13566  FlateStream.prototype.getBits = function FlateStream_getBits(bits) {
13567    var str = this.str;
13568    var codeSize = this.codeSize;
13569    var codeBuf = this.codeBuf;
13570    var b;
13571    while (codeSize < bits) {
13572      if ((b = str.getByte()) === -1) {
13573        throw new _util.FormatError('Bad encoding in flate stream');
13574      }
13575      codeBuf |= b << codeSize;
13576      codeSize += 8;
13577    }
13578    b = codeBuf & (1 << bits) - 1;
13579    this.codeBuf = codeBuf >> bits;
13580    this.codeSize = codeSize -= bits;
13581    return b;
13582  };
13583  FlateStream.prototype.getCode = function FlateStream_getCode(table) {
13584    var str = this.str;
13585    var codes = table[0];
13586    var maxLen = table[1];
13587    var codeSize = this.codeSize;
13588    var codeBuf = this.codeBuf;
13589    var b;
13590    while (codeSize < maxLen) {
13591      if ((b = str.getByte()) === -1) {
13592        break;
13593      }
13594      codeBuf |= b << codeSize;
13595      codeSize += 8;
13596    }
13597    var code = codes[codeBuf & (1 << maxLen) - 1];
13598    var codeLen = code >> 16;
13599    var codeVal = code & 0xffff;
13600    if (codeLen < 1 || codeSize < codeLen) {
13601      throw new _util.FormatError('Bad encoding in flate stream');
13602    }
13603    this.codeBuf = codeBuf >> codeLen;
13604    this.codeSize = codeSize - codeLen;
13605    return codeVal;
13606  };
13607  FlateStream.prototype.generateHuffmanTable = function flateStreamGenerateHuffmanTable(lengths) {
13608    var n = lengths.length;
13609    var maxLen = 0;
13610    var i;
13611    for (i = 0; i < n; ++i) {
13612      if (lengths[i] > maxLen) {
13613        maxLen = lengths[i];
13614      }
13615    }
13616    var size = 1 << maxLen;
13617    var codes = new Int32Array(size);
13618    for (var len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {
13619      for (var val = 0; val < n; ++val) {
13620        if (lengths[val] === len) {
13621          var code2 = 0;
13622          var t = code;
13623          for (i = 0; i < len; ++i) {
13624            code2 = code2 << 1 | t & 1;
13625            t >>= 1;
13626          }
13627          for (i = code2; i < size; i += skip) {
13628            codes[i] = len << 16 | val;
13629          }
13630          ++code;
13631        }
13632      }
13633    }
13634    return [codes, maxLen];
13635  };
13636  FlateStream.prototype.readBlock = function FlateStream_readBlock() {
13637    var buffer, len;
13638    var str = this.str;
13639    var hdr = this.getBits(3);
13640    if (hdr & 1) {
13641      this.eof = true;
13642    }
13643    hdr >>= 1;
13644    if (hdr === 0) {
13645      var b;
13646      if ((b = str.getByte()) === -1) {
13647        throw new _util.FormatError('Bad block header in flate stream');
13648      }
13649      var blockLen = b;
13650      if ((b = str.getByte()) === -1) {
13651        throw new _util.FormatError('Bad block header in flate stream');
13652      }
13653      blockLen |= b << 8;
13654      if ((b = str.getByte()) === -1) {
13655        throw new _util.FormatError('Bad block header in flate stream');
13656      }
13657      var check = b;
13658      if ((b = str.getByte()) === -1) {
13659        throw new _util.FormatError('Bad block header in flate stream');
13660      }
13661      check |= b << 8;
13662      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {
13663        throw new _util.FormatError('Bad uncompressed block length in flate stream');
13664      }
13665      this.codeBuf = 0;
13666      this.codeSize = 0;
13667      var bufferLength = this.bufferLength;
13668      buffer = this.ensureBuffer(bufferLength + blockLen);
13669      var end = bufferLength + blockLen;
13670      this.bufferLength = end;
13671      if (blockLen === 0) {
13672        if (str.peekByte() === -1) {
13673          this.eof = true;
13674        }
13675      } else {
13676        for (var n = bufferLength; n < end; ++n) {
13677          if ((b = str.getByte()) === -1) {
13678            this.eof = true;
13679            break;
13680          }
13681          buffer[n] = b;
13682        }
13683      }
13684      return;
13685    }
13686    var litCodeTable;
13687    var distCodeTable;
13688    if (hdr === 1) {
13689      litCodeTable = fixedLitCodeTab;
13690      distCodeTable = fixedDistCodeTab;
13691    } else if (hdr === 2) {
13692      var numLitCodes = this.getBits(5) + 257;
13693      var numDistCodes = this.getBits(5) + 1;
13694      var numCodeLenCodes = this.getBits(4) + 4;
13695      var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);
13696      var i;
13697      for (i = 0; i < numCodeLenCodes; ++i) {
13698        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);
13699      }
13700      var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);
13701      len = 0;
13702      i = 0;
13703      var codes = numLitCodes + numDistCodes;
13704      var codeLengths = new Uint8Array(codes);
13705      var bitsLength, bitsOffset, what;
13706      while (i < codes) {
13707        var code = this.getCode(codeLenCodeTab);
13708        if (code === 16) {
13709          bitsLength = 2;
13710          bitsOffset = 3;
13711          what = len;
13712        } else if (code === 17) {
13713          bitsLength = 3;
13714          bitsOffset = 3;
13715          what = len = 0;
13716        } else if (code === 18) {
13717          bitsLength = 7;
13718          bitsOffset = 11;
13719          what = len = 0;
13720        } else {
13721          codeLengths[i++] = len = code;
13722          continue;
13723        }
13724        var repeatLength = this.getBits(bitsLength) + bitsOffset;
13725        while (repeatLength-- > 0) {
13726          codeLengths[i++] = what;
13727        }
13728      }
13729      litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));
13730      distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));
13731    } else {
13732      throw new _util.FormatError('Unknown block type in flate stream');
13733    }
13734    buffer = this.buffer;
13735    var limit = buffer ? buffer.length : 0;
13736    var pos = this.bufferLength;
13737    while (true) {
13738      var code1 = this.getCode(litCodeTable);
13739      if (code1 < 256) {
13740        if (pos + 1 >= limit) {
13741          buffer = this.ensureBuffer(pos + 1);
13742          limit = buffer.length;
13743        }
13744        buffer[pos++] = code1;
13745        continue;
13746      }
13747      if (code1 === 256) {
13748        this.bufferLength = pos;
13749        return;
13750      }
13751      code1 -= 257;
13752      code1 = lengthDecode[code1];
13753      var code2 = code1 >> 16;
13754      if (code2 > 0) {
13755        code2 = this.getBits(code2);
13756      }
13757      len = (code1 & 0xffff) + code2;
13758      code1 = this.getCode(distCodeTable);
13759      code1 = distDecode[code1];
13760      code2 = code1 >> 16;
13761      if (code2 > 0) {
13762        code2 = this.getBits(code2);
13763      }
13764      var dist = (code1 & 0xffff) + code2;
13765      if (pos + len >= limit) {
13766        buffer = this.ensureBuffer(pos + len);
13767        limit = buffer.length;
13768      }
13769      for (var k = 0; k < len; ++k, ++pos) {
13770        buffer[pos] = buffer[pos - dist];
13771      }
13772    }
13773  };
13774  return FlateStream;
13775}();
13776var PredictorStream = function PredictorStreamClosure() {
13777  function PredictorStream(str, maybeLength, params) {
13778    if (!(0, _primitives.isDict)(params)) {
13779      return str;
13780    }
13781    var predictor = this.predictor = params.get('Predictor') || 1;
13782    if (predictor <= 1) {
13783      return str;
13784    }
13785    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {
13786      throw new _util.FormatError('Unsupported predictor: ' + predictor);
13787    }
13788    if (predictor === 2) {
13789      this.readBlock = this.readBlockTiff;
13790    } else {
13791      this.readBlock = this.readBlockPng;
13792    }
13793    this.str = str;
13794    this.dict = str.dict;
13795    var colors = this.colors = params.get('Colors') || 1;
13796    var bits = this.bits = params.get('BitsPerComponent') || 8;
13797    var columns = this.columns = params.get('Columns') || 1;
13798    this.pixBytes = colors * bits + 7 >> 3;
13799    this.rowBytes = columns * colors * bits + 7 >> 3;
13800    DecodeStream.call(this, maybeLength);
13801    return this;
13802  }
13803  PredictorStream.prototype = Object.create(DecodeStream.prototype);
13804  PredictorStream.prototype.readBlockTiff = function predictorStreamReadBlockTiff() {
13805    var rowBytes = this.rowBytes;
13806    var bufferLength = this.bufferLength;
13807    var buffer = this.ensureBuffer(bufferLength + rowBytes);
13808    var bits = this.bits;
13809    var colors = this.colors;
13810    var rawBytes = this.str.getBytes(rowBytes);
13811    this.eof = !rawBytes.length;
13812    if (this.eof) {
13813      return;
13814    }
13815    var inbuf = 0,
13816        outbuf = 0;
13817    var inbits = 0,
13818        outbits = 0;
13819    var pos = bufferLength;
13820    var i;
13821    if (bits === 1 && colors === 1) {
13822      for (i = 0; i < rowBytes; ++i) {
13823        var c = rawBytes[i] ^ inbuf;
13824        c ^= c >> 1;
13825        c ^= c >> 2;
13826        c ^= c >> 4;
13827        inbuf = (c & 1) << 7;
13828        buffer[pos++] = c;
13829      }
13830    } else if (bits === 8) {
13831      for (i = 0; i < colors; ++i) {
13832        buffer[pos++] = rawBytes[i];
13833      }
13834      for (; i < rowBytes; ++i) {
13835        buffer[pos] = buffer[pos - colors] + rawBytes[i];
13836        pos++;
13837      }
13838    } else if (bits === 16) {
13839      var bytesPerPixel = colors * 2;
13840      for (i = 0; i < bytesPerPixel; ++i) {
13841        buffer[pos++] = rawBytes[i];
13842      }
13843      for (; i < rowBytes; i += 2) {
13844        var sum = ((rawBytes[i] & 0xFF) << 8) + (rawBytes[i + 1] & 0xFF) + ((buffer[pos - bytesPerPixel] & 0xFF) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xFF);
13845        buffer[pos++] = sum >> 8 & 0xFF;
13846        buffer[pos++] = sum & 0xFF;
13847      }
13848    } else {
13849      var compArray = new Uint8Array(colors + 1);
13850      var bitMask = (1 << bits) - 1;
13851      var j = 0,
13852          k = bufferLength;
13853      var columns = this.columns;
13854      for (i = 0; i < columns; ++i) {
13855        for (var kk = 0; kk < colors; ++kk) {
13856          if (inbits < bits) {
13857            inbuf = inbuf << 8 | rawBytes[j++] & 0xFF;
13858            inbits += 8;
13859          }
13860          compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask;
13861          inbits -= bits;
13862          outbuf = outbuf << bits | compArray[kk];
13863          outbits += bits;
13864          if (outbits >= 8) {
13865            buffer[k++] = outbuf >> outbits - 8 & 0xFF;
13866            outbits -= 8;
13867          }
13868        }
13869      }
13870      if (outbits > 0) {
13871        buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1);
13872      }
13873    }
13874    this.bufferLength += rowBytes;
13875  };
13876  PredictorStream.prototype.readBlockPng = function predictorStreamReadBlockPng() {
13877    var rowBytes = this.rowBytes;
13878    var pixBytes = this.pixBytes;
13879    var predictor = this.str.getByte();
13880    var rawBytes = this.str.getBytes(rowBytes);
13881    this.eof = !rawBytes.length;
13882    if (this.eof) {
13883      return;
13884    }
13885    var bufferLength = this.bufferLength;
13886    var buffer = this.ensureBuffer(bufferLength + rowBytes);
13887    var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);
13888    if (prevRow.length === 0) {
13889      prevRow = new Uint8Array(rowBytes);
13890    }
13891    var i,
13892        j = bufferLength,
13893        up,
13894        c;
13895    switch (predictor) {
13896      case 0:
13897        for (i = 0; i < rowBytes; ++i) {
13898          buffer[j++] = rawBytes[i];
13899        }
13900        break;
13901      case 1:
13902        for (i = 0; i < pixBytes; ++i) {
13903          buffer[j++] = rawBytes[i];
13904        }
13905        for (; i < rowBytes; ++i) {
13906          buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xFF;
13907          j++;
13908        }
13909        break;
13910      case 2:
13911        for (i = 0; i < rowBytes; ++i) {
13912          buffer[j++] = prevRow[i] + rawBytes[i] & 0xFF;
13913        }
13914        break;
13915      case 3:
13916        for (i = 0; i < pixBytes; ++i) {
13917          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];
13918        }
13919        for (; i < rowBytes; ++i) {
13920          buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xFF;
13921          j++;
13922        }
13923        break;
13924      case 4:
13925        for (i = 0; i < pixBytes; ++i) {
13926          up = prevRow[i];
13927          c = rawBytes[i];
13928          buffer[j++] = up + c;
13929        }
13930        for (; i < rowBytes; ++i) {
13931          up = prevRow[i];
13932          var upLeft = prevRow[i - pixBytes];
13933          var left = buffer[j - pixBytes];
13934          var p = left + up - upLeft;
13935          var pa = p - left;
13936          if (pa < 0) {
13937            pa = -pa;
13938          }
13939          var pb = p - up;
13940          if (pb < 0) {
13941            pb = -pb;
13942          }
13943          var pc = p - upLeft;
13944          if (pc < 0) {
13945            pc = -pc;
13946          }
13947          c = rawBytes[i];
13948          if (pa <= pb && pa <= pc) {
13949            buffer[j++] = left + c;
13950          } else if (pb <= pc) {
13951            buffer[j++] = up + c;
13952          } else {
13953            buffer[j++] = upLeft + c;
13954          }
13955        }
13956        break;
13957      default:
13958        throw new _util.FormatError('Unsupported predictor: ' + predictor);
13959    }
13960    this.bufferLength += rowBytes;
13961  };
13962  return PredictorStream;
13963}();
13964var DecryptStream = function DecryptStreamClosure() {
13965  function DecryptStream(str, maybeLength, decrypt) {
13966    this.str = str;
13967    this.dict = str.dict;
13968    this.decrypt = decrypt;
13969    this.nextChunk = null;
13970    this.initialized = false;
vendor: 7,882 bytes, lines 13971-14224
13971    DecodeStream.call(this, maybeLength);
13972  }
13973  var chunkSize = 512;
13974  DecryptStream.prototype = Object.create(DecodeStream.prototype);
13975  DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {
13976    var chunk;
13977    if (this.initialized) {
13978      chunk = this.nextChunk;
13979    } else {
13980      chunk = this.str.getBytes(chunkSize);
13981      this.initialized = true;
13982    }
13983    if (!chunk || chunk.length === 0) {
13984      this.eof = true;
13985      return;
13986    }
13987    this.nextChunk = this.str.getBytes(chunkSize);
13988    var hasMoreData = this.nextChunk && this.nextChunk.length > 0;
13989    var decrypt = this.decrypt;
13990    chunk = decrypt(chunk, !hasMoreData);
13991    var bufferLength = this.bufferLength;
13992    var i,
13993        n = chunk.length;
13994    var buffer = this.ensureBuffer(bufferLength + n);
13995    for (i = 0; i < n; i++) {
13996      buffer[bufferLength++] = chunk[i];
13997    }
13998    this.bufferLength = bufferLength;
13999  };
14000  return DecryptStream;
14001}();
14002var Ascii85Stream = function Ascii85StreamClosure() {
14003  function Ascii85Stream(str, maybeLength) {
14004    this.str = str;
14005    this.dict = str.dict;
14006    this.input = new Uint8Array(5);
14007    if (maybeLength) {
14008      maybeLength = 0.8 * maybeLength;
14009    }
14010    DecodeStream.call(this, maybeLength);
14011  }
14012  Ascii85Stream.prototype = Object.create(DecodeStream.prototype);
14013  Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {
14014    var TILDA_CHAR = 0x7E;
14015    var Z_LOWER_CHAR = 0x7A;
14016    var EOF = -1;
14017    var str = this.str;
14018    var c = str.getByte();
14019    while ((0, _util.isSpace)(c)) {
14020      c = str.getByte();
14021    }
14022    if (c === EOF || c === TILDA_CHAR) {
14023      this.eof = true;
14024      return;
14025    }
14026    var bufferLength = this.bufferLength,
14027        buffer;
14028    var i;
14029    if (c === Z_LOWER_CHAR) {
14030      buffer = this.ensureBuffer(bufferLength + 4);
14031      for (i = 0; i < 4; ++i) {
14032        buffer[bufferLength + i] = 0;
14033      }
14034      this.bufferLength += 4;
14035    } else {
14036      var input = this.input;
14037      input[0] = c;
14038      for (i = 1; i < 5; ++i) {
14039        c = str.getByte();
14040        while ((0, _util.isSpace)(c)) {
14041          c = str.getByte();
14042        }
14043        input[i] = c;
14044        if (c === EOF || c === TILDA_CHAR) {
14045          break;
14046        }
14047      }
14048      buffer = this.ensureBuffer(bufferLength + i - 1);
14049      this.bufferLength += i - 1;
14050      if (i < 5) {
14051        for (; i < 5; ++i) {
14052          input[i] = 0x21 + 84;
14053        }
14054        this.eof = true;
14055      }
14056      var t = 0;
14057      for (i = 0; i < 5; ++i) {
14058        t = t * 85 + (input[i] - 0x21);
14059      }
14060      for (i = 3; i >= 0; --i) {
14061        buffer[bufferLength + i] = t & 0xFF;
14062        t >>= 8;
14063      }
14064    }
14065  };
14066  return Ascii85Stream;
14067}();
14068var AsciiHexStream = function AsciiHexStreamClosure() {
14069  function AsciiHexStream(str, maybeLength) {
14070    this.str = str;
14071    this.dict = str.dict;
14072    this.firstDigit = -1;
14073    if (maybeLength) {
14074      maybeLength = 0.5 * maybeLength;
14075    }
14076    DecodeStream.call(this, maybeLength);
14077  }
14078  AsciiHexStream.prototype = Object.create(DecodeStream.prototype);
14079  AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {
14080    var UPSTREAM_BLOCK_SIZE = 8000;
14081    var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);
14082    if (!bytes.length) {
14083      this.eof = true;
14084      return;
14085    }
14086    var maxDecodeLength = bytes.length + 1 >> 1;
14087    var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);
14088    var bufferLength = this.bufferLength;
14089    var firstDigit = this.firstDigit;
14090    for (var i = 0, ii = bytes.length; i < ii; i++) {
14091      var ch = bytes[i],
14092          digit;
14093      if (ch >= 0x30 && ch <= 0x39) {
14094        digit = ch & 0x0F;
14095      } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {
14096        digit = (ch & 0x0F) + 9;
14097      } else if (ch === 0x3E) {
14098        this.eof = true;
14099        break;
14100      } else {
14101        continue;
14102      }
14103      if (firstDigit < 0) {
14104        firstDigit = digit;
14105      } else {
14106        buffer[bufferLength++] = firstDigit << 4 | digit;
14107        firstDigit = -1;
14108      }
14109    }
14110    if (firstDigit >= 0 && this.eof) {
14111      buffer[bufferLength++] = firstDigit << 4;
14112      firstDigit = -1;
14113    }
14114    this.firstDigit = firstDigit;
14115    this.bufferLength = bufferLength;
14116  };
14117  return AsciiHexStream;
14118}();
14119var RunLengthStream = function RunLengthStreamClosure() {
14120  function RunLengthStream(str, maybeLength) {
14121    this.str = str;
14122    this.dict = str.dict;
14123    DecodeStream.call(this, maybeLength);
14124  }
14125  RunLengthStream.prototype = Object.create(DecodeStream.prototype);
14126  RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {
14127    var repeatHeader = this.str.getBytes(2);
14128    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {
14129      this.eof = true;
14130      return;
14131    }
14132    var buffer;
14133    var bufferLength = this.bufferLength;
14134    var n = repeatHeader[0];
14135    if (n < 128) {
14136      buffer = this.ensureBuffer(bufferLength + n + 1);
14137      buffer[bufferLength++] = repeatHeader[1];
14138      if (n > 0) {
14139        var source = this.str.getBytes(n);
14140        buffer.set(source, bufferLength);
14141        bufferLength += n;
14142      }
14143    } else {
14144      n = 257 - n;
14145      var b = repeatHeader[1];
14146      buffer = this.ensureBuffer(bufferLength + n + 1);
14147      for (var i = 0; i < n; i++) {
14148        buffer[bufferLength++] = b;
14149      }
14150    }
14151    this.bufferLength = bufferLength;
14152  };
14153  return RunLengthStream;
14154}();
14155var LZWStream = function LZWStreamClosure() {
14156  function LZWStream(str, maybeLength, earlyChange) {
14157    this.str = str;
14158    this.dict = str.dict;
14159    this.cachedData = 0;
14160    this.bitsCached = 0;
14161    var maxLzwDictionarySize = 4096;
14162    var lzwState = {
14163      earlyChange: earlyChange,
14164      codeLength: 9,
14165      nextCode: 258,
14166      dictionaryValues: new Uint8Array(maxLzwDictionarySize),
14167      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),
14168      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),
14169      currentSequence: new Uint8Array(maxLzwDictionarySize),
14170      currentSequenceLength: 0
14171    };
14172    for (var i = 0; i < 256; ++i) {
14173      lzwState.dictionaryValues[i] = i;
14174      lzwState.dictionaryLengths[i] = 1;
14175    }
14176    this.lzwState = lzwState;
14177    DecodeStream.call(this, maybeLength);
14178  }
14179  LZWStream.prototype = Object.create(DecodeStream.prototype);
14180  LZWStream.prototype.readBits = function LZWStream_readBits(n) {
14181    var bitsCached = this.bitsCached;
14182    var cachedData = this.cachedData;
14183    while (bitsCached < n) {
14184      var c = this.str.getByte();
14185      if (c === -1) {
14186        this.eof = true;
14187        return null;
14188      }
14189      cachedData = cachedData << 8 | c;
14190      bitsCached += 8;
14191    }
14192    this.bitsCached = bitsCached -= n;
14193    this.cachedData = cachedData;
14194    this.lastCode = null;
14195    return cachedData >>> bitsCached & (1 << n) - 1;
14196  };
14197  LZWStream.prototype.readBlock = function LZWStream_readBlock() {
14198    var blockSize = 512;
14199    var estimatedDecodedSize = blockSize * 2,
14200        decodedSizeDelta = blockSize;
14201    var i, j, q;
14202    var lzwState = this.lzwState;
14203    if (!lzwState) {
14204      return;
14205    }
14206    var earlyChange = lzwState.earlyChange;
14207    var nextCode = lzwState.nextCode;
14208    var dictionaryValues = lzwState.dictionaryValues;
14209    var dictionaryLengths = lzwState.dictionaryLengths;
14210    var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;
14211    var codeLength = lzwState.codeLength;
14212    var prevCode = lzwState.prevCode;
14213    var currentSequence = lzwState.currentSequence;
14214    var currentSequenceLength = lzwState.currentSequenceLength;
14215    var decodedLength = 0;
14216    var currentBufferLength = this.bufferLength;
14217    var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);
14218    for (i = 0; i < blockSize; i++) {
14219      var code = this.readBits(codeLength);
14220      var hasPrev = currentSequenceLength > 0;
14221      if (code < 256) {
14222        currentSequence[0] = code;
14223        currentSequenceLength = 1;
14224      } else if (code >= 258) {
14225        if (code < nextCode) {
14226          currentSequenceLength = dictionaryLengths[code];
14227          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {
14228            currentSequence[j] = dictionaryValues[q];
14229            q = dictionaryPrevCodes[q];
14230          }
14231        } else {
14232          currentSequence[currentSequenceLength++] = currentSequence[0];
14233        }
14234      } else if (code === 256) {
14235        codeLength = 9;
14236        nextCode = 258;
14237        currentSequenceLength = 0;
14238        continue;
14239      } else {
14240        this.eof = true;
14241        delete this.lzwState;
14242        break;
14243      }
14244      if (hasPrev) {
14245        dictionaryPrevCodes[nextCode] = prevCode;
14246        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;
14247        dictionaryValues[nextCode] = currentSequence[0];
14248        nextCode++;
14249        codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;
14250      }
14251      prevCode = code;
14252      decodedLength += currentSequenceLength;
14253      if (estimatedDecodedSize < decodedLength) {
14254        do {
14255          estimatedDecodedSize += decodedSizeDelta;
14256        } while (estimatedDecodedSize < decodedLength);
14257        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);
14258      }
14259      for (j = 0; j < currentSequenceLength; j++) {
14260        buffer[currentBufferLength++] = currentSequence[j];
14261      }
14262    }
14263    lzwState.nextCode = nextCode;
14264    lzwState.codeLength = codeLength;
14265    lzwState.prevCode = prevCode;
14266    lzwState.currentSequenceLength = currentSequenceLength;
14267    this.bufferLength = currentBufferLength;
14268  };
14269  return LZWStream;
14270}();
14271var NullStream = function NullStreamClosure() {
14272  function NullStream() {
14273    Stream.call(this, new Uint8Array(0));
14274  }
14275  NullStream.prototype = Stream.prototype;
14276  return NullStream;
14277}();
14278exports.Ascii85Stream = Ascii85Stream;
14279exports.AsciiHexStream = AsciiHexStream;
14280exports.DecryptStream = DecryptStream;
14281exports.DecodeStream = DecodeStream;
14282exports.FlateStream = FlateStream;
14283exports.NullStream = NullStream;
14284exports.PredictorStream = PredictorStream;
14285exports.RunLengthStream = RunLengthStream;
14286exports.Stream = Stream;
14287exports.StreamsSequenceStream = StreamsSequenceStream;
14288exports.StringStream = StringStream;
14289exports.LZWStream = LZWStream;
14290
14291/***/ }),
14292/* 141 */
14293/***/ (function(module, exports, __w_pdfjs_require__) {
14294
14295"use strict";
14296
14297
14298Object.defineProperty(exports, "__esModule", {
14299  value: true
14300});
14301exports.CCITTFaxStream = undefined;
14302
14303var _primitives = __w_pdfjs_require__(138);
14304
14305var _ccitt = __w_pdfjs_require__(142);
14306
14307var _stream = __w_pdfjs_require__(140);
14308
14309var CCITTFaxStream = function CCITTFaxStreamClosure() {
14310  function CCITTFaxStream(str, maybeLength, params) {
14311    this.str = str;
14312    this.dict = str.dict;
14313    if (!(0, _primitives.isDict)(params)) {
14314      params = _primitives.Dict.empty;
14315    }
14316    var source = {
14317      next: function next() {
14318        return str.getByte();
14319      }
14320    };
14321    this.ccittFaxDecoder = new _ccitt.CCITTFaxDecoder(source, {
14322      K: params.get('K'),
14323      EndOfLine: params.get('EndOfLine'),
14324      EncodedByteAlign: params.get('EncodedByteAlign'),
14325      Columns: params.get('Columns'),
14326      Rows: params.get('Rows'),
14327      EndOfBlock: params.get('EndOfBlock'),
14328      BlackIs1: params.get('BlackIs1')
14329    });
14330    _stream.DecodeStream.call(this, maybeLength);
14331  }
14332  CCITTFaxStream.prototype = Object.create(_stream.DecodeStream.prototype);
14333  CCITTFaxStream.prototype.readBlock = function () {
14334    while (!this.eof) {
14335      var c = this.ccittFaxDecoder.readNextChar();
14336      if (c === -1) {
14337        this.eof = true;
14338        return;
14339      }
14340      this.ensureBuffer(this.bufferLength + 1);
14341      this.buffer[this.bufferLength++] = c;
14342    }
14343  };
14344  return CCITTFaxStream;
14345}();
14346exports.CCITTFaxStream = CCITTFaxStream;
14347
14348/***/ }),
14349/* 142 */
14350/***/ (function(module, exports, __w_pdfjs_require__) {
14351
14352"use strict";
14353
14354
14355Object.defineProperty(exports, "__esModule", {
14356  value: true
14357});
14358exports.CCITTFaxDecoder = undefined;
14359
14360var _util = __w_pdfjs_require__(2);
14361
14362var CCITTFaxDecoder = function CCITTFaxDecoder() {
14363  var ccittEOL = -2;
14364  var ccittEOF = -1;
14365  var twoDimPass = 0;
14366  var twoDimHoriz = 1;
14367  var twoDimVert0 = 2;
14368  var twoDimVertR1 = 3;
14369  var twoDimVertL1 = 4;
14370  var twoDimVertR2 = 5;
14371  var twoDimVertL2 = 6;
14372  var twoDimVertR3 = 7;
14373  var twoDimVertL3 = 8;
14374  var twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]];
14375  var whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]];
14376  var whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]];
vendor: 4,834 bytes, lines 14377-14408
14377  var blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]];
14378  var blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]];
14379  var blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]];
14380  function CCITTFaxDecoder(source) {
14381    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14382
14383    if (!source || typeof source.next !== 'function') {
14384      throw new Error('CCITTFaxDecoder - invalid "source" parameter.');
14385    }
14386    this.source = source;
14387    this.eof = false;
14388    this.encoding = options['K'] || 0;
14389    this.eoline = options['EndOfLine'] || false;
14390    this.byteAlign = options['EncodedByteAlign'] || false;
14391    this.columns = options['Columns'] || 1728;
14392    this.rows = options['Rows'] || 0;
14393    var eoblock = options['EndOfBlock'];
14394    if (eoblock === null || eoblock === undefined) {
14395      eoblock = true;
14396    }
14397    this.eoblock = eoblock;
14398    this.black = options['BlackIs1'] || false;
14399    this.codingLine = new Uint32Array(this.columns + 1);
14400    this.refLine = new Uint32Array(this.columns + 2);
14401    this.codingLine[0] = this.columns;
14402    this.codingPos = 0;
14403    this.row = 0;
14404    this.nextLine2D = this.encoding < 0;
14405    this.inputBits = 0;
14406    this.inputBuf = 0;
14407    this.outputBits = 0;
14408    this.rowsDone = false;
vendor: 4,064 bytes, lines 14409-14522
14409    var code1 = void 0;
14410    while ((code1 = this._lookBits(12)) === 0) {
14411      this._eatBits(1);
14412    }
14413    if (code1 === 1) {
14414      this._eatBits(12);
14415    }
14416    if (this.encoding > 0) {
14417      this.nextLine2D = !this._lookBits(1);
14418      this._eatBits(1);
14419    }
14420  }
14421  CCITTFaxDecoder.prototype = {
14422    readNextChar: function readNextChar() {
14423      if (this.eof) {
14424        return -1;
14425      }
14426      var refLine = this.refLine;
14427      var codingLine = this.codingLine;
14428      var columns = this.columns;
14429      var refPos = void 0,
14430          blackPixels = void 0,
14431          bits = void 0,
14432          i = void 0;
14433      if (this.outputBits === 0) {
14434        if (this.rowsDone) {
14435          this.eof = true;
14436        }
14437        if (this.eof) {
14438          return -1;
14439        }
14440        this.err = false;
14441        var code1 = void 0,
14442            code2 = void 0,
14443            code3 = void 0;
14444        if (this.nextLine2D) {
14445          for (i = 0; codingLine[i] < columns; ++i) {
14446            refLine[i] = codingLine[i];
14447          }
14448          refLine[i++] = columns;
14449          refLine[i] = columns;
14450          codingLine[0] = 0;
14451          this.codingPos = 0;
14452          refPos = 0;
14453          blackPixels = 0;
14454          while (codingLine[this.codingPos] < columns) {
14455            code1 = this._getTwoDimCode();
14456            switch (code1) {
14457              case twoDimPass:
14458                this._addPixels(refLine[refPos + 1], blackPixels);
14459                if (refLine[refPos + 1] < columns) {
14460                  refPos += 2;
14461                }
14462                break;
14463              case twoDimHoriz:
14464                code1 = code2 = 0;
14465                if (blackPixels) {
14466                  do {
14467                    code1 += code3 = this._getBlackCode();
14468                  } while (code3 >= 64);
14469                  do {
14470                    code2 += code3 = this._getWhiteCode();
14471                  } while (code3 >= 64);
14472                } else {
14473                  do {
14474                    code1 += code3 = this._getWhiteCode();
14475                  } while (code3 >= 64);
14476                  do {
14477                    code2 += code3 = this._getBlackCode();
14478                  } while (code3 >= 64);
14479                }
14480                this._addPixels(codingLine[this.codingPos] + code1, blackPixels);
14481                if (codingLine[this.codingPos] < columns) {
14482                  this._addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1);
14483                }
14484                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
14485                  refPos += 2;
14486                }
14487                break;
14488              case twoDimVertR3:
14489                this._addPixels(refLine[refPos] + 3, blackPixels);
14490                blackPixels ^= 1;
14491                if (codingLine[this.codingPos] < columns) {
14492                  ++refPos;
14493                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
14494                    refPos += 2;
14495                  }
14496                }
14497                break;
14498              case twoDimVertR2:
14499                this._addPixels(refLine[refPos] + 2, blackPixels);
14500                blackPixels ^= 1;
14501                if (codingLine[this.codingPos] < columns) {
14502                  ++refPos;
14503                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
14504                    refPos += 2;
14505                  }
14506                }
14507                break;
14508              case twoDimVertR1:
14509                this._addPixels(refLine[refPos] + 1, blackPixels);
14510                blackPixels ^= 1;
14511                if (codingLine[this.codingPos] < columns) {
14512                  ++refPos;
14513                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
14514                    refPos += 2;
14515                  }
14516                }
14517                break;
14518              case twoDimVert0:
14519                this._addPixels(refLine[refPos], blackPixels);
14520                blackPixels ^= 1;
14521                if (codingLine[this.codingPos] < columns) {
14522                  ++refPos;
vendor: 4,886 bytes, lines 14523-14670
14523                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
14524                    refPos += 2;
14525                  }
14526                }
14527                break;
14528              case twoDimVertL3:
14529                this._addPixelsNeg(refLine[refPos] - 3, blackPixels);
14530                blackPixels ^= 1;
14531                if (codingLine[this.codingPos] < columns) {
14532                  if (refPos > 0) {
14533                    --refPos;
14534                  } else {
14535                    ++refPos;
14536                  }
14537                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
14538                    refPos += 2;
14539                  }
14540                }
14541                break;
14542              case twoDimVertL2:
14543                this._addPixelsNeg(refLine[refPos] - 2, blackPixels);
14544                blackPixels ^= 1;
14545                if (codingLine[this.codingPos] < columns) {
14546                  if (refPos > 0) {
14547                    --refPos;
14548                  } else {
14549                    ++refPos;
14550                  }
14551                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
14552                    refPos += 2;
14553                  }
14554                }
14555                break;
14556              case twoDimVertL1:
14557                this._addPixelsNeg(refLine[refPos] - 1, blackPixels);
14558                blackPixels ^= 1;
14559                if (codingLine[this.codingPos] < columns) {
14560                  if (refPos > 0) {
14561                    --refPos;
14562                  } else {
14563                    ++refPos;
14564                  }
14565                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
14566                    refPos += 2;
14567                  }
14568                }
14569                break;
14570              case ccittEOF:
14571                this._addPixels(columns, 0);
14572                this.eof = true;
14573                break;
14574              default:
14575                (0, _util.info)('bad 2d code');
14576                this._addPixels(columns, 0);
14577                this.err = true;
14578            }
14579          }
14580        } else {
14581          codingLine[0] = 0;
14582          this.codingPos = 0;
14583          blackPixels = 0;
14584          while (codingLine[this.codingPos] < columns) {
14585            code1 = 0;
14586            if (blackPixels) {
14587              do {
14588                code1 += code3 = this._getBlackCode();
14589              } while (code3 >= 64);
14590            } else {
14591              do {
14592                code1 += code3 = this._getWhiteCode();
14593              } while (code3 >= 64);
14594            }
14595            this._addPixels(codingLine[this.codingPos] + code1, blackPixels);
14596            blackPixels ^= 1;
14597          }
14598        }
14599        var gotEOL = false;
14600        if (this.byteAlign) {
14601          this.inputBits &= ~7;
14602        }
14603        if (!this.eoblock && this.row === this.rows - 1) {
14604          this.rowsDone = true;
14605        } else {
14606          code1 = this._lookBits(12);
14607          if (this.eoline) {
14608            while (code1 !== ccittEOF && code1 !== 1) {
14609              this._eatBits(1);
14610              code1 = this._lookBits(12);
14611            }
14612          } else {
14613            while (code1 === 0) {
14614              this._eatBits(1);
14615              code1 = this._lookBits(12);
14616            }
14617          }
14618          if (code1 === 1) {
14619            this._eatBits(12);
14620            gotEOL = true;
14621          } else if (code1 === ccittEOF) {
14622            this.eof = true;
14623          }
14624        }
14625        if (!this.eof && this.encoding > 0 && !this.rowsDone) {
14626          this.nextLine2D = !this._lookBits(1);
14627          this._eatBits(1);
14628        }
14629        if (this.eoblock && gotEOL && this.byteAlign) {
14630          code1 = this._lookBits(12);
14631          if (code1 === 1) {
14632            this._eatBits(12);
14633            if (this.encoding > 0) {
14634              this._lookBits(1);
14635              this._eatBits(1);
14636            }
14637            if (this.encoding >= 0) {
14638              for (i = 0; i < 4; ++i) {
14639                code1 = this._lookBits(12);
14640                if (code1 !== 1) {
14641                  (0, _util.info)('bad rtc code: ' + code1);
14642                }
14643                this._eatBits(12);
14644                if (this.encoding > 0) {
14645                  this._lookBits(1);
14646                  this._eatBits(1);
14647                }
14648              }
14649            }
14650            this.eof = true;
14651          }
14652        } else if (this.err && this.eoline) {
14653          while (true) {
14654            code1 = this._lookBits(13);
14655            if (code1 === ccittEOF) {
14656              this.eof = true;
14657              return -1;
14658            }
14659            if (code1 >> 1 === 1) {
14660              break;
14661            }
14662            this._eatBits(1);
14663          }
14664          this._eatBits(12);
14665          if (this.encoding > 0) {
14666            this._eatBits(1);
14667            this.nextLine2D = !(code1 & 1);
14668          }
14669        }
14670        if (codingLine[0] > 0) {
14671          this.outputBits = codingLine[this.codingPos = 0];
14672        } else {
14673          this.outputBits = codingLine[this.codingPos = 1];
14674        }
14675        this.row++;
14676      }
14677      var c = void 0;
14678      if (this.outputBits >= 8) {
14679        c = this.codingPos & 1 ? 0 : 0xFF;
14680        this.outputBits -= 8;
14681        if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {
14682          this.codingPos++;
14683          this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];
14684        }
14685      } else {
14686        bits = 8;
14687        c = 0;
14688        do {
14689          if (this.outputBits > bits) {
14690            c <<= bits;
14691            if (!(this.codingPos & 1)) {
14692              c |= 0xFF >> 8 - bits;
14693            }
14694            this.outputBits -= bits;
14695            bits = 0;
14696          } else {
14697            c <<= this.outputBits;
14698            if (!(this.codingPos & 1)) {
14699              c |= 0xFF >> 8 - this.outputBits;
14700            }
14701            bits -= this.outputBits;
14702            this.outputBits = 0;
14703            if (codingLine[this.codingPos] < columns) {
14704              this.codingPos++;
14705              this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];
14706            } else if (bits > 0) {
14707              c <<= bits;
14708              bits = 0;
14709            }
14710          }
14711        } while (bits);
14712      }
14713      if (this.black) {
14714        c ^= 0xFF;
14715      }
14716      return c;
14717    },
14718    _addPixels: function _addPixels(a1, blackPixels) {
14719      var codingLine = this.codingLine;
14720      var codingPos = this.codingPos;
14721      if (a1 > codingLine[codingPos]) {
14722        if (a1 > this.columns) {
14723          (0, _util.info)('row is wrong length');
14724          this.err = true;
14725          a1 = this.columns;
14726        }
14727        if (codingPos & 1 ^ blackPixels) {
14728          ++codingPos;
14729        }
14730        codingLine[codingPos] = a1;
14731      }
14732      this.codingPos = codingPos;
14733    },
14734    _addPixelsNeg: function _addPixelsNeg(a1, blackPixels) {
14735      var codingLine = this.codingLine;
14736      var codingPos = this.codingPos;
14737      if (a1 > codingLine[codingPos]) {
14738        if (a1 > this.columns) {
14739          (0, _util.info)('row is wrong length');
14740          this.err = true;
14741          a1 = this.columns;
14742        }
14743        if (codingPos & 1 ^ blackPixels) {
14744          ++codingPos;
14745        }
14746        codingLine[codingPos] = a1;
14747      } else if (a1 < codingLine[codingPos]) {
14748        if (a1 < 0) {
14749          (0, _util.info)('invalid code');
14750          this.err = true;
14751          a1 = 0;
14752        }
14753        while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {
14754          --codingPos;
14755        }
14756        codingLine[codingPos] = a1;
14757      }
14758      this.codingPos = codingPos;
14759    },
14760    _findTableCode: function _findTableCode(start, end, table, limit) {
14761      var limitValue = limit || 0;
14762      for (var i = start; i <= end; ++i) {
14763        var code = this._lookBits(i);
14764        if (code === ccittEOF) {
14765          return [true, 1, false];
14766        }
14767        if (i < end) {
14768          code <<= end - i;
14769        }
14770        if (!limitValue || code >= limitValue) {
14771          var p = table[code - limitValue];
14772          if (p[0] === i) {
14773            this._eatBits(i);
14774            return [true, p[1], true];
14775          }
14776        }
14777      }
14778      return [false, 0, false];
14779    },
14780    _getTwoDimCode: function _getTwoDimCode() {
14781      var code = 0;
14782      var p = void 0;
14783      if (this.eoblock) {
14784        code = this._lookBits(7);
14785        p = twoDimTable[code];
14786        if (p && p[0] > 0) {
14787          this._eatBits(p[0]);
14788          return p[1];
14789        }
14790      } else {
14791        var result = this._findTableCode(1, 7, twoDimTable);
14792        if (result[0] && result[2]) {
14793          return result[1];
14794        }
14795      }
14796      (0, _util.info)('Bad two dim code');
14797      return ccittEOF;
14798    },
14799    _getWhiteCode: function _getWhiteCode() {
14800      var code = 0;
14801      var p = void 0;
14802      if (this.eoblock) {
14803        code = this._lookBits(12);
14804        if (code === ccittEOF) {
14805          return 1;
14806        }
14807        if (code >> 5 === 0) {
14808          p = whiteTable1[code];
14809        } else {
14810          p = whiteTable2[code >> 3];
14811        }
14812        if (p[0] > 0) {
14813          this._eatBits(p[0]);
14814          return p[1];
14815        }
14816      } else {
14817        var result = this._findTableCode(1, 9, whiteTable2);
14818        if (result[0]) {
14819          return result[1];
14820        }
14821        result = this._findTableCode(11, 12, whiteTable1);
14822        if (result[0]) {
14823          return result[1];
14824        }
14825      }
14826      (0, _util.info)('bad white code');
14827      this._eatBits(1);
14828      return 1;
14829    },
14830    _getBlackCode: function _getBlackCode() {
14831      var code = void 0,
14832          p = void 0;
14833      if (this.eoblock) {
14834        code = this._lookBits(13);
14835        if (code === ccittEOF) {
14836          return 1;
14837        }
14838        if (code >> 7 === 0) {
14839          p = blackTable1[code];
14840        } else if (code >> 9 === 0 && code >> 7 !== 0) {
14841          p = blackTable2[(code >> 1) - 64];
14842        } else {
14843          p = blackTable3[code >> 7];
14844        }
14845        if (p[0] > 0) {
14846          this._eatBits(p[0]);
14847          return p[1];
14848        }
14849      } else {
14850        var result = this._findTableCode(2, 6, blackTable3);
14851        if (result[0]) {
14852          return result[1];
14853        }
14854        result = this._findTableCode(7, 12, blackTable2, 64);
14855        if (result[0]) {
14856          return result[1];
14857        }
14858        result = this._findTableCode(10, 13, blackTable1);
14859        if (result[0]) {
14860          return result[1];
14861        }
14862      }
14863      (0, _util.info)('bad black code');
14864      this._eatBits(1);
14865      return 1;
14866    },
14867    _lookBits: function _lookBits(n) {
14868      var c = void 0;
14869      while (this.inputBits < n) {
14870        if ((c = this.source.next()) === -1) {
14871          if (this.inputBits === 0) {
14872            return ccittEOF;
14873          }
14874          return this.inputBuf << n - this.inputBits & 0xFFFF >> 16 - n;
14875        }
14876        this.inputBuf = this.inputBuf << 8 | c;
14877        this.inputBits += 8;
14878      }
14879      return this.inputBuf >> this.inputBits - n & 0xFFFF >> 16 - n;
14880    },
14881    _eatBits: function _eatBits(n) {
14882      if ((this.inputBits -= n) < 0) {
14883        this.inputBits = 0;
14884      }
14885    }
14886  };
14887  return CCITTFaxDecoder;
14888}();
14889exports.CCITTFaxDecoder = CCITTFaxDecoder;
14890
14891/***/ }),
14892/* 143 */
14893/***/ (function(module, exports, __w_pdfjs_require__) {
14894
14895"use strict";
14896
14897
14898Object.defineProperty(exports, "__esModule", {
14899  value: true
14900});
14901exports.Jbig2Stream = undefined;
14902
14903var _primitives = __w_pdfjs_require__(138);
14904
14905var _stream = __w_pdfjs_require__(140);
14906
14907var _jbig = __w_pdfjs_require__(144);
14908
14909var _util = __w_pdfjs_require__(2);
14910
14911var Jbig2Stream = function Jbig2StreamClosure() {
14912  function Jbig2Stream(stream, maybeLength, dict, params) {
14913    this.stream = stream;
14914    this.maybeLength = maybeLength;
14915    this.dict = dict;
14916    this.params = params;
14917    _stream.DecodeStream.call(this, maybeLength);
14918  }
14919  Jbig2Stream.prototype = Object.create(_stream.DecodeStream.prototype);
14920  Object.defineProperty(Jbig2Stream.prototype, 'bytes', {
14921    get: function get() {
14922      return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength));
14923    },
14924
14925    configurable: true
14926  });
14927  Jbig2Stream.prototype.ensureBuffer = function (requested) {};
14928  Jbig2Stream.prototype.readBlock = function () {
14929    if (this.eof) {
14930      return;
14931    }
14932    var jbig2Image = new _jbig.Jbig2Image();
14933    var chunks = [];
14934    if ((0, _primitives.isDict)(this.params)) {
14935      var globalsStream = this.params.get('JBIG2Globals');
14936      if ((0, _primitives.isStream)(globalsStream)) {
14937        var globals = globalsStream.getBytes();
14938        chunks.push({
14939          data: globals,
14940          start: 0,
14941          end: globals.length
14942        });
14943      }
14944    }
14945    chunks.push({
14946      data: this.bytes,
14947      start: 0,
14948      end: this.bytes.length
14949    });
14950    var data = jbig2Image.parseChunks(chunks);
14951    var dataLength = data.length;
14952    for (var i = 0; i < dataLength; i++) {
14953      data[i] ^= 0xFF;
14954    }
14955    this.buffer = data;
14956    this.bufferLength = dataLength;
14957    this.eof = true;
14958  };
14959  return Jbig2Stream;
14960}();
14961exports.Jbig2Stream = Jbig2Stream;
14962
14963/***/ }),
14964/* 144 */
14965/***/ (function(module, exports, __w_pdfjs_require__) {
14966
14967"use strict";
14968
14969
14970Object.defineProperty(exports, "__esModule", {
14971  value: true
14972});
14973exports.Jbig2Image = undefined;
14974
14975var _util = __w_pdfjs_require__(2);
14976
14977var _arithmetic_decoder = __w_pdfjs_require__(145);
14978
14979var _ccitt = __w_pdfjs_require__(142);
14980
14981var Jbig2Error = function Jbig2ErrorClosure() {
14982  function Jbig2Error(msg) {
14983    this.message = 'JBIG2 error: ' + msg;
14984  }
14985  Jbig2Error.prototype = new Error();
14986  Jbig2Error.prototype.name = 'Jbig2Error';
14987  Jbig2Error.constructor = Jbig2Error;
14988  return Jbig2Error;
14989}();
14990var Jbig2Image = function Jbig2ImageClosure() {
14991  function ContextCache() {}
14992  ContextCache.prototype = {
14993    getContexts: function getContexts(id) {
14994      if (id in this) {
14995        return this[id];
14996      }
14997      return this[id] = new Int8Array(1 << 16);
14998    }
14999  };
15000  function DecodingContext(data, start, end) {
15001    this.data = data;
15002    this.start = start;
15003    this.end = end;
15004  }
15005  DecodingContext.prototype = {
15006    get decoder() {
15007      var decoder = new _arithmetic_decoder.ArithmeticDecoder(this.data, this.start, this.end);
15008      return (0, _util.shadow)(this, 'decoder', decoder);
15009    },
15010    get contextCache() {
15011      var cache = new ContextCache();
15012      return (0, _util.shadow)(this, 'contextCache', cache);
15013    }
15014  };
15015  function decodeInteger(contextCache, procedure, decoder) {
15016    var contexts = contextCache.getContexts(procedure);
15017    var prev = 1;
15018    function readBits(length) {
15019      var v = 0;
15020      for (var i = 0; i < length; i++) {
15021        var bit = decoder.readBit(contexts, prev);
15022        prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256;
15023        v = v << 1 | bit;
15024      }
15025      return v >>> 0;
15026    }
15027    var sign = readBits(1);
15028    var value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2);
15029    return sign === 0 ? value : value > 0 ? -value : null;
15030  }
vendor: 7,250 bytes, lines 15031-15346
15031  function decodeIAID(contextCache, decoder, codeLength) {
15032    var contexts = contextCache.getContexts('IAID');
15033    var prev = 1;
15034    for (var i = 0; i < codeLength; i++) {
15035      var bit = decoder.readBit(contexts, prev);
15036      prev = prev << 1 | bit;
15037    }
15038    if (codeLength < 31) {
15039      return prev & (1 << codeLength) - 1;
15040    }
15041    return prev & 0x7FFFFFFF;
15042  }
15043  var SegmentTypes = ['SymbolDictionary', null, null, null, 'IntermediateTextRegion', null, 'ImmediateTextRegion', 'ImmediateLosslessTextRegion', null, null, null, null, null, null, null, null, 'PatternDictionary', null, null, null, 'IntermediateHalftoneRegion', null, 'ImmediateHalftoneRegion', 'ImmediateLosslessHalftoneRegion', null, null, null, null, null, null, null, null, null, null, null, null, 'IntermediateGenericRegion', null, 'ImmediateGenericRegion', 'ImmediateLosslessGenericRegion', 'IntermediateGenericRefinementRegion', null, 'ImmediateGenericRefinementRegion', 'ImmediateLosslessGenericRefinementRegion', null, null, null, null, 'PageInformation', 'EndOfPage', 'EndOfStripe', 'EndOfFile', 'Profiles', 'Tables', null, null, null, null, null, null, null, null, 'Extension'];
15044  var CodingTemplates = [[{
15045    x: -1,
15046    y: -2
15047  }, {
15048    x: 0,
15049    y: -2
15050  }, {
15051    x: 1,
15052    y: -2
15053  }, {
15054    x: -2,
15055    y: -1
15056  }, {
15057    x: -1,
15058    y: -1
15059  }, {
15060    x: 0,
15061    y: -1
15062  }, {
15063    x: 1,
15064    y: -1
15065  }, {
15066    x: 2,
15067    y: -1
15068  }, {
15069    x: -4,
15070    y: 0
15071  }, {
15072    x: -3,
15073    y: 0
15074  }, {
15075    x: -2,
15076    y: 0
15077  }, {
15078    x: -1,
15079    y: 0
15080  }], [{
15081    x: -1,
15082    y: -2
15083  }, {
15084    x: 0,
15085    y: -2
15086  }, {
15087    x: 1,
15088    y: -2
15089  }, {
15090    x: 2,
15091    y: -2
15092  }, {
15093    x: -2,
15094    y: -1
15095  }, {
15096    x: -1,
15097    y: -1
15098  }, {
15099    x: 0,
15100    y: -1
15101  }, {
15102    x: 1,
15103    y: -1
15104  }, {
15105    x: 2,
15106    y: -1
15107  }, {
15108    x: -3,
15109    y: 0
15110  }, {
15111    x: -2,
15112    y: 0
15113  }, {
15114    x: -1,
15115    y: 0
15116  }], [{
15117    x: -1,
15118    y: -2
15119  }, {
15120    x: 0,
15121    y: -2
15122  }, {
15123    x: 1,
15124    y: -2
15125  }, {
15126    x: -2,
15127    y: -1
15128  }, {
15129    x: -1,
15130    y: -1
15131  }, {
15132    x: 0,
15133    y: -1
15134  }, {
15135    x: 1,
15136    y: -1
15137  }, {
15138    x: -2,
15139    y: 0
15140  }, {
15141    x: -1,
15142    y: 0
15143  }], [{
15144    x: -3,
15145    y: -1
15146  }, {
15147    x: -2,
15148    y: -1
15149  }, {
15150    x: -1,
15151    y: -1
15152  }, {
15153    x: 0,
15154    y: -1
15155  }, {
15156    x: 1,
15157    y: -1
15158  }, {
15159    x: -4,
15160    y: 0
15161  }, {
15162    x: -3,
15163    y: 0
15164  }, {
15165    x: -2,
15166    y: 0
15167  }, {
15168    x: -1,
15169    y: 0
15170  }]];
15171  var RefinementTemplates = [{
15172    coding: [{
15173      x: 0,
15174      y: -1
15175    }, {
15176      x: 1,
15177      y: -1
15178    }, {
15179      x: -1,
15180      y: 0
15181    }],
15182    reference: [{
15183      x: 0,
15184      y: -1
15185    }, {
15186      x: 1,
15187      y: -1
15188    }, {
15189      x: -1,
15190      y: 0
15191    }, {
15192      x: 0,
15193      y: 0
15194    }, {
15195      x: 1,
15196      y: 0
15197    }, {
15198      x: -1,
15199      y: 1
15200    }, {
15201      x: 0,
15202      y: 1
15203    }, {
15204      x: 1,
15205      y: 1
15206    }]
15207  }, {
15208    coding: [{
15209      x: -1,
15210      y: -1
15211    }, {
15212      x: 0,
15213      y: -1
15214    }, {
15215      x: 1,
15216      y: -1
15217    }, {
15218      x: -1,
15219      y: 0
15220    }],
15221    reference: [{
15222      x: 0,
15223      y: -1
15224    }, {
15225      x: -1,
15226      y: 0
15227    }, {
15228      x: 0,
15229      y: 0
15230    }, {
15231      x: 1,
15232      y: 0
15233    }, {
15234      x: 0,
15235      y: 1
15236    }, {
15237      x: 1,
15238      y: 1
15239    }]
15240  }];
15241  var ReusedContexts = [0x9B25, 0x0795, 0x00E5, 0x0195];
15242  var RefinementReusedContexts = [0x0020, 0x0008];
15243  function decodeBitmapTemplate0(width, height, decodingContext) {
15244    var decoder = decodingContext.decoder;
15245    var contexts = decodingContext.contextCache.getContexts('GB');
15246    var contextLabel,
15247        i,
15248        j,
15249        pixel,
15250        row,
15251        row1,
15252        row2,
15253        bitmap = [];
15254    var OLD_PIXEL_MASK = 0x7BF7;
15255    for (i = 0; i < height; i++) {
15256      row = bitmap[i] = new Uint8Array(width);
15257      row1 = i < 1 ? row : bitmap[i - 1];
15258      row2 = i < 2 ? row : bitmap[i - 2];
15259      contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4;
15260      for (j = 0; j < width; j++) {
15261        row[j] = pixel = decoder.readBit(contexts, contextLabel);
15262        contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel;
15263      }
15264    }
15265    return bitmap;
15266  }
15267  function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) {
15268    if (mmr) {
15269      var input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);
15270      return decodeMMRBitmap(input, width, height, false);
15271    }
15272    if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) {
15273      return decodeBitmapTemplate0(width, height, decodingContext);
15274    }
15275    var useskip = !!skip;
15276    var template = CodingTemplates[templateIndex].concat(at);
15277    template.sort(function (a, b) {
15278      return a.y - b.y || a.x - b.x;
15279    });
15280    var templateLength = template.length;
15281    var templateX = new Int8Array(templateLength);
15282    var templateY = new Int8Array(templateLength);
15283    var changingTemplateEntries = [];
15284    var reuseMask = 0,
15285        minX = 0,
15286        maxX = 0,
15287        minY = 0;
15288    var c, k;
15289    for (k = 0; k < templateLength; k++) {
15290      templateX[k] = template[k].x;
15291      templateY[k] = template[k].y;
15292      minX = Math.min(minX, template[k].x);
15293      maxX = Math.max(maxX, template[k].x);
15294      minY = Math.min(minY, template[k].y);
15295      if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) {
15296        reuseMask |= 1 << templateLength - 1 - k;
15297      } else {
15298        changingTemplateEntries.push(k);
15299      }
15300    }
15301    var changingEntriesLength = changingTemplateEntries.length;
15302    var changingTemplateX = new Int8Array(changingEntriesLength);
15303    var changingTemplateY = new Int8Array(changingEntriesLength);
15304    var changingTemplateBit = new Uint16Array(changingEntriesLength);
15305    for (c = 0; c < changingEntriesLength; c++) {
15306      k = changingTemplateEntries[c];
15307      changingTemplateX[c] = template[k].x;
15308      changingTemplateY[c] = template[k].y;
15309      changingTemplateBit[c] = 1 << templateLength - 1 - k;
15310    }
15311    var sbb_left = -minX;
15312    var sbb_top = -minY;
15313    var sbb_right = width - maxX;
15314    var pseudoPixelContext = ReusedContexts[templateIndex];
15315    var row = new Uint8Array(width);
15316    var bitmap = [];
15317    var decoder = decodingContext.decoder;
15318    var contexts = decodingContext.contextCache.getContexts('GB');
15319    var ltp = 0,
15320        j,
15321        i0,
15322        j0,
15323        contextLabel = 0,
15324        bit,
15325        shift;
15326    for (var i = 0; i < height; i++) {
15327      if (prediction) {
15328        var sltp = decoder.readBit(contexts, pseudoPixelContext);
15329        ltp ^= sltp;
15330        if (ltp) {
15331          bitmap.push(row);
15332          continue;
15333        }
15334      }
15335      row = new Uint8Array(row);
15336      bitmap.push(row);
15337      for (j = 0; j < width; j++) {
15338        if (useskip && skip[i][j]) {
15339          row[j] = 0;
15340          continue;
15341        }
15342        if (j >= sbb_left && j < sbb_right && i >= sbb_top) {
15343          contextLabel = contextLabel << 1 & reuseMask;
15344          for (k = 0; k < changingEntriesLength; k++) {
15345            i0 = i + changingTemplateY[k];
15346            j0 = j + changingTemplateX[k];
vendor: 4,144 bytes, lines 15347-15455
15347            bit = bitmap[i0][j0];
15348            if (bit) {
15349              bit = changingTemplateBit[k];
15350              contextLabel |= bit;
15351            }
15352          }
15353        } else {
15354          contextLabel = 0;
15355          shift = templateLength - 1;
15356          for (k = 0; k < templateLength; k++, shift--) {
15357            j0 = j + templateX[k];
15358            if (j0 >= 0 && j0 < width) {
15359              i0 = i + templateY[k];
15360              if (i0 >= 0) {
15361                bit = bitmap[i0][j0];
15362                if (bit) {
15363                  contextLabel |= bit << shift;
15364                }
15365              }
15366            }
15367          }
15368        }
15369        var pixel = decoder.readBit(contexts, contextLabel);
15370        row[j] = pixel;
15371      }
15372    }
15373    return bitmap;
15374  }
15375  function decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) {
15376    var codingTemplate = RefinementTemplates[templateIndex].coding;
15377    if (templateIndex === 0) {
15378      codingTemplate = codingTemplate.concat([at[0]]);
15379    }
15380    var codingTemplateLength = codingTemplate.length;
15381    var codingTemplateX = new Int32Array(codingTemplateLength);
15382    var codingTemplateY = new Int32Array(codingTemplateLength);
15383    var k;
15384    for (k = 0; k < codingTemplateLength; k++) {
15385      codingTemplateX[k] = codingTemplate[k].x;
15386      codingTemplateY[k] = codingTemplate[k].y;
15387    }
15388    var referenceTemplate = RefinementTemplates[templateIndex].reference;
15389    if (templateIndex === 0) {
15390      referenceTemplate = referenceTemplate.concat([at[1]]);
15391    }
15392    var referenceTemplateLength = referenceTemplate.length;
15393    var referenceTemplateX = new Int32Array(referenceTemplateLength);
15394    var referenceTemplateY = new Int32Array(referenceTemplateLength);
15395    for (k = 0; k < referenceTemplateLength; k++) {
15396      referenceTemplateX[k] = referenceTemplate[k].x;
15397      referenceTemplateY[k] = referenceTemplate[k].y;
15398    }
15399    var referenceWidth = referenceBitmap[0].length;
15400    var referenceHeight = referenceBitmap.length;
15401    var pseudoPixelContext = RefinementReusedContexts[templateIndex];
15402    var bitmap = [];
15403    var decoder = decodingContext.decoder;
15404    var contexts = decodingContext.contextCache.getContexts('GR');
15405    var ltp = 0;
15406    for (var i = 0; i < height; i++) {
15407      if (prediction) {
15408        var sltp = decoder.readBit(contexts, pseudoPixelContext);
15409        ltp ^= sltp;
15410        if (ltp) {
15411          throw new Jbig2Error('prediction is not supported');
15412        }
15413      }
15414      var row = new Uint8Array(width);
15415      bitmap.push(row);
15416      for (var j = 0; j < width; j++) {
15417        var i0, j0;
15418        var contextLabel = 0;
15419        for (k = 0; k < codingTemplateLength; k++) {
15420          i0 = i + codingTemplateY[k];
15421          j0 = j + codingTemplateX[k];
15422          if (i0 < 0 || j0 < 0 || j0 >= width) {
15423            contextLabel <<= 1;
15424          } else {
15425            contextLabel = contextLabel << 1 | bitmap[i0][j0];
15426          }
15427        }
15428        for (k = 0; k < referenceTemplateLength; k++) {
15429          i0 = i + referenceTemplateY[k] - offsetY;
15430          j0 = j + referenceTemplateX[k] - offsetX;
15431          if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {
15432            contextLabel <<= 1;
15433          } else {
15434            contextLabel = contextLabel << 1 | referenceBitmap[i0][j0];
15435          }
15436        }
15437        var pixel = decoder.readBit(contexts, contextLabel);
15438        row[j] = pixel;
15439      }
15440    }
15441    return bitmap;
15442  }
15443  function decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) {
15444    if (huffman && refinement) {
15445      throw new Jbig2Error('symbol refinement with Huffman is not supported');
15446    }
15447    var newSymbols = [];
15448    var currentHeight = 0;
15449    var symbolCodeLength = (0, _util.log2)(symbols.length + numberOfNewSymbols);
15450    var decoder = decodingContext.decoder;
15451    var contextCache = decodingContext.contextCache;
15452    var tableB1 = void 0,
15453        symbolWidths = void 0;
15454    if (huffman) {
15455      tableB1 = getStandardTable(1);
15456      symbolWidths = [];
15457      symbolCodeLength = Math.max(symbolCodeLength, 1);
15458    }
15459    while (newSymbols.length < numberOfNewSymbols) {
15460      var deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : decodeInteger(contextCache, 'IADH', decoder);
15461      currentHeight += deltaHeight;
15462      var currentWidth = 0,
15463          totalWidth = 0;
15464      var firstSymbol = huffman ? symbolWidths.length : 0;
15465      while (true) {
15466        var deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : decodeInteger(contextCache, 'IADW', decoder);
15467        if (deltaWidth === null) {
15468          break;
15469        }
15470        currentWidth += deltaWidth;
15471        totalWidth += currentWidth;
15472        var bitmap;
15473        if (refinement) {
15474          var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder);
15475          if (numberOfInstances > 1) {
15476            bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, 0, huffmanInput);
15477          } else {
15478            var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);
15479            var rdx = decodeInteger(contextCache, 'IARDX', decoder);
15480            var rdy = decodeInteger(contextCache, 'IARDY', decoder);
15481            var symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length];
15482            bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext);
15483          }
15484          newSymbols.push(bitmap);
15485        } else if (huffman) {
15486          symbolWidths.push(currentWidth);
15487        } else {
15488          bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext);
15489          newSymbols.push(bitmap);
15490        }
15491      }
15492      if (huffman && !refinement) {
15493        var bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);
15494        huffmanInput.byteAlign();
15495        var collectiveBitmap = void 0;
15496        if (bitmapSize === 0) {
15497          collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight);
15498        } else {
15499          var originalEnd = huffmanInput.end;
15500          var bitmapEnd = huffmanInput.position + bitmapSize;
15501          huffmanInput.end = bitmapEnd;
15502          collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false);
15503          huffmanInput.end = originalEnd;
15504          huffmanInput.position = bitmapEnd;
15505        }
15506        var numberOfSymbolsDecoded = symbolWidths.length;
15507        if (firstSymbol === numberOfSymbolsDecoded - 1) {
15508          newSymbols.push(collectiveBitmap);
15509        } else {
15510          var _i = void 0,
15511              y = void 0,
15512              xMin = 0,
15513              xMax = void 0,
15514              bitmapWidth = void 0,
15515              symbolBitmap = void 0;
15516          for (_i = firstSymbol; _i < numberOfSymbolsDecoded; _i++) {
15517            bitmapWidth = symbolWidths[_i];
15518            xMax = xMin + bitmapWidth;
15519            symbolBitmap = [];
15520            for (y = 0; y < currentHeight; y++) {
15521              symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));
15522            }
15523            newSymbols.push(symbolBitmap);
15524            xMin = xMax;
15525          }
15526        }
15527      }
15528    }
15529    var exportedSymbols = [];
15530    var flags = [],
15531        currentFlag = false;
15532    var totalSymbolsLength = symbols.length + numberOfNewSymbols;
15533    while (flags.length < totalSymbolsLength) {
15534      var runLength = huffman ? tableB1.decode(huffmanInput) : decodeInteger(contextCache, 'IAEX', decoder);
15535      while (runLength--) {
15536        flags.push(currentFlag);
15537      }
15538      currentFlag = !currentFlag;
15539    }
15540    for (var i = 0, ii = symbols.length; i < ii; i++) {
15541      if (flags[i]) {
15542        exportedSymbols.push(symbols[i]);
15543      }
15544    }
15545    for (var j = 0; j < numberOfNewSymbols; i++, j++) {
15546      if (flags[i]) {
15547        exportedSymbols.push(newSymbols[j]);
15548      }
15549    }
15550    return exportedSymbols;
15551  }
15552  function decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) {
15553    if (huffman && refinement) {
15554      throw new Jbig2Error('refinement with Huffman is not supported');
15555    }
15556    var bitmap = [];
15557    var i, row;
15558    for (i = 0; i < height; i++) {
15559      row = new Uint8Array(width);
15560      if (defaultPixelValue) {
15561        for (var j = 0; j < width; j++) {
15562          row[j] = defaultPixelValue;
15563        }
15564      }
15565      bitmap.push(row);
15566    }
15567    var decoder = decodingContext.decoder;
15568    var contextCache = decodingContext.contextCache;
15569    var stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, 'IADT', decoder);
15570    var firstS = 0;
15571    i = 0;
15572    while (i < numberOfSymbolInstances) {
15573      var deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, 'IADT', decoder);
15574      stripT += deltaT;
15575      var deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : decodeInteger(contextCache, 'IAFS', decoder);
15576      firstS += deltaFirstS;
15577      var currentS = firstS;
15578      do {
15579        var currentT = 0;
15580        if (stripSize > 1) {
15581          currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, 'IAIT', decoder);
15582        }
15583        var t = stripSize * stripT + currentT;
15584        var symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, decoder, symbolCodeLength);
15585        var applyRefinement = refinement && (huffman ? huffmanInput.readBit() : decodeInteger(contextCache, 'IARI', decoder));
15586        var symbolBitmap = inputSymbols[symbolId];
15587        var symbolWidth = symbolBitmap[0].length;
15588        var symbolHeight = symbolBitmap.length;
15589        if (applyRefinement) {
15590          var rdw = decodeInteger(contextCache, 'IARDW', decoder);
15591          var rdh = decodeInteger(contextCache, 'IARDH', decoder);
15592          var rdx = decodeInteger(contextCache, 'IARDX', decoder);
15593          var rdy = decodeInteger(contextCache, 'IARDY', decoder);
15594          symbolWidth += rdw;
15595          symbolHeight += rdh;
15596          symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext);
15597        }
15598        var offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);
15599        var offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);
15600        var s2, t2, symbolRow;
15601        if (transposed) {
15602          for (s2 = 0; s2 < symbolHeight; s2++) {
15603            row = bitmap[offsetS + s2];
15604            if (!row) {
15605              continue;
15606            }
15607            symbolRow = symbolBitmap[s2];
15608            var maxWidth = Math.min(width - offsetT, symbolWidth);
15609            switch (combinationOperator) {
15610              case 0:
15611                for (t2 = 0; t2 < maxWidth; t2++) {
15612                  row[offsetT + t2] |= symbolRow[t2];
15613                }
15614                break;
15615              case 2:
15616                for (t2 = 0; t2 < maxWidth; t2++) {
15617                  row[offsetT + t2] ^= symbolRow[t2];
15618                }
15619                break;
15620              default:
15621                throw new Jbig2Error('operator ' + combinationOperator + ' is not supported');
15622            }
15623          }
15624          currentS += symbolHeight - 1;
15625        } else {
15626          for (t2 = 0; t2 < symbolHeight; t2++) {
15627            row = bitmap[offsetT + t2];
15628            if (!row) {
15629              continue;
15630            }
15631            symbolRow = symbolBitmap[t2];
15632            switch (combinationOperator) {
15633              case 0:
15634                for (s2 = 0; s2 < symbolWidth; s2++) {
15635                  row[offsetS + s2] |= symbolRow[s2];
15636                }
15637                break;
15638              case 2:
15639                for (s2 = 0; s2 < symbolWidth; s2++) {
15640                  row[offsetS + s2] ^= symbolRow[s2];
15641                }
15642                break;
15643              default:
15644                throw new Jbig2Error('operator ' + combinationOperator + ' is not supported');
15645            }
15646          }
15647          currentS += symbolWidth - 1;
15648        }
15649        i++;
15650        var deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, 'IADS', decoder);
15651        if (deltaS === null) {
15652          break;
15653        }
15654        currentS += deltaS + dsOffset;
15655      } while (true);
15656    }
15657    return bitmap;
15658  }
15659  function decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) {
15660    var at = [];
15661    if (!mmr) {
15662      at.push({
15663        x: -patternWidth,
15664        y: 0
15665      });
15666      if (template === 0) {
15667        at.push({
15668          x: -3,
15669          y: -1
15670        });
15671        at.push({
15672          x: 2,
15673          y: -2
15674        });
15675        at.push({
15676          x: -2,
15677          y: -2
15678        });
15679      }
15680    }
15681    var collectiveWidth = (maxPatternIndex + 1) * patternWidth;
15682    var collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext);
15683    var patterns = [],
15684        i = 0,
15685        patternBitmap = void 0,
15686        xMin = void 0,
15687        xMax = void 0,
15688        y = void 0;
15689    while (i <= maxPatternIndex) {
15690      patternBitmap = [];
15691      xMin = patternWidth * i;
15692      xMax = xMin + patternWidth;
15693      for (y = 0; y < patternHeight; y++) {
15694        patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));
15695      }
15696      patterns.push(patternBitmap);
15697      i++;
15698    }
15699    return patterns;
15700  }
15701  function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) {
15702    var skip = null;
15703    if (enableSkip) {
15704      throw new Jbig2Error('skip is not supported');
15705    }
15706    if (combinationOperator !== 0) {
15707      throw new Jbig2Error('operator ' + combinationOperator + ' is not supported in halftone region');
15708    }
15709    var regionBitmap = [];
15710    var i = void 0,
15711        j = void 0,
15712        row = void 0;
15713    for (i = 0; i < regionHeight; i++) {
15714      row = new Uint8Array(regionWidth);
15715      if (defaultPixelValue) {
15716        for (j = 0; j < regionWidth; j++) {
15717          row[j] = defaultPixelValue;
15718        }
15719      }
15720      regionBitmap.push(row);
15721    }
15722    var numberOfPatterns = patterns.length;
15723    var pattern0 = patterns[0];
15724    var patternWidth = pattern0[0].length,
15725        patternHeight = pattern0.length;
15726    var bitsPerValue = (0, _util.log2)(numberOfPatterns);
15727    var at = [];
15728    if (!mmr) {
15729      at.push({
15730        x: template <= 1 ? 3 : 2,
15731        y: -1
15732      });
15733      if (template === 0) {
15734        at.push({
15735          x: -3,
15736          y: -1
15737        });
15738        at.push({
15739          x: 2,
15740          y: -2
15741        });
15742        at.push({
15743          x: -2,
15744          y: -2
15745        });
15746      }
15747    }
15748    var grayScaleBitPlanes = [],
15749        mmrInput = void 0,
15750        bitmap = void 0;
15751    if (mmr) {
15752      mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);
15753    }
15754    for (i = bitsPerValue - 1; i >= 0; i--) {
15755      if (mmr) {
15756        bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);
15757      } else {
15758        bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext);
15759      }
15760      grayScaleBitPlanes[i] = bitmap;
15761    }
15762    var mg = void 0,
15763        ng = void 0,
15764        bit = void 0,
15765        patternIndex = void 0,
15766        patternBitmap = void 0,
15767        x = void 0,
15768        y = void 0,
15769        patternRow = void 0,
15770        regionRow = void 0;
15771    for (mg = 0; mg < gridHeight; mg++) {
15772      for (ng = 0; ng < gridWidth; ng++) {
15773        bit = 0;
15774        patternIndex = 0;
15775        for (j = bitsPerValue - 1; j >= 0; j--) {
15776          bit = grayScaleBitPlanes[j][mg][ng] ^ bit;
vendor: 10,840 bytes, lines 15777-16040
15777          patternIndex |= bit << j;
15778        }
15779        patternBitmap = patterns[patternIndex];
15780        x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8;
15781        y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8;
15782        if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) {
15783          for (i = 0; i < patternHeight; i++) {
15784            regionRow = regionBitmap[y + i];
15785            patternRow = patternBitmap[i];
15786            for (j = 0; j < patternWidth; j++) {
15787              regionRow[x + j] |= patternRow[j];
15788            }
15789          }
15790        } else {
15791          var regionX = void 0,
15792              regionY = void 0;
15793          for (i = 0; i < patternHeight; i++) {
15794            regionY = y + i;
15795            if (regionY < 0 || regionY >= regionHeight) {
15796              continue;
15797            }
15798            regionRow = regionBitmap[regionY];
15799            patternRow = patternBitmap[i];
15800            for (j = 0; j < patternWidth; j++) {
15801              regionX = x + j;
15802              if (regionX >= 0 && regionX < regionWidth) {
15803                regionRow[regionX] |= patternRow[j];
15804              }
15805            }
15806          }
15807        }
15808      }
15809    }
15810    return regionBitmap;
15811  }
15812  function readSegmentHeader(data, start) {
15813    var segmentHeader = {};
15814    segmentHeader.number = (0, _util.readUint32)(data, start);
15815    var flags = data[start + 4];
15816    var segmentType = flags & 0x3F;
15817    if (!SegmentTypes[segmentType]) {
15818      throw new Jbig2Error('invalid segment type: ' + segmentType);
15819    }
15820    segmentHeader.type = segmentType;
15821    segmentHeader.typeName = SegmentTypes[segmentType];
15822    segmentHeader.deferredNonRetain = !!(flags & 0x80);
15823    var pageAssociationFieldSize = !!(flags & 0x40);
15824    var referredFlags = data[start + 5];
15825    var referredToCount = referredFlags >> 5 & 7;
15826    var retainBits = [referredFlags & 31];
15827    var position = start + 6;
15828    if (referredFlags === 7) {
15829      referredToCount = (0, _util.readUint32)(data, position - 1) & 0x1FFFFFFF;
15830      position += 3;
15831      var bytes = referredToCount + 7 >> 3;
15832      retainBits[0] = data[position++];
15833      while (--bytes > 0) {
15834        retainBits.push(data[position++]);
15835      }
15836    } else if (referredFlags === 5 || referredFlags === 6) {
15837      throw new Jbig2Error('invalid referred-to flags');
15838    }
15839    segmentHeader.retainBits = retainBits;
15840    var referredToSegmentNumberSize = segmentHeader.number <= 256 ? 1 : segmentHeader.number <= 65536 ? 2 : 4;
15841    var referredTo = [];
15842    var i, ii;
15843    for (i = 0; i < referredToCount; i++) {
15844      var number = referredToSegmentNumberSize === 1 ? data[position] : referredToSegmentNumberSize === 2 ? (0, _util.readUint16)(data, position) : (0, _util.readUint32)(data, position);
15845      referredTo.push(number);
15846      position += referredToSegmentNumberSize;
15847    }
15848    segmentHeader.referredTo = referredTo;
15849    if (!pageAssociationFieldSize) {
15850      segmentHeader.pageAssociation = data[position++];
15851    } else {
15852      segmentHeader.pageAssociation = (0, _util.readUint32)(data, position);
15853      position += 4;
15854    }
15855    segmentHeader.length = (0, _util.readUint32)(data, position);
15856    position += 4;
15857    if (segmentHeader.length === 0xFFFFFFFF) {
15858      if (segmentType === 38) {
15859        var genericRegionInfo = readRegionSegmentInformation(data, position);
15860        var genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength];
15861        var genericRegionMmr = !!(genericRegionSegmentFlags & 1);
15862        var searchPatternLength = 6;
15863        var searchPattern = new Uint8Array(searchPatternLength);
15864        if (!genericRegionMmr) {
15865          searchPattern[0] = 0xFF;
15866          searchPattern[1] = 0xAC;
15867        }
15868        searchPattern[2] = genericRegionInfo.height >>> 24 & 0xFF;
15869        searchPattern[3] = genericRegionInfo.height >> 16 & 0xFF;
15870        searchPattern[4] = genericRegionInfo.height >> 8 & 0xFF;
15871        searchPattern[5] = genericRegionInfo.height & 0xFF;
15872        for (i = position, ii = data.length; i < ii; i++) {
15873          var j = 0;
15874          while (j < searchPatternLength && searchPattern[j] === data[i + j]) {
15875            j++;
15876          }
15877          if (j === searchPatternLength) {
15878            segmentHeader.length = i + searchPatternLength;
15879            break;
15880          }
15881        }
15882        if (segmentHeader.length === 0xFFFFFFFF) {
15883          throw new Jbig2Error('segment end was not found');
15884        }
15885      } else {
15886        throw new Jbig2Error('invalid unknown segment length');
15887      }
15888    }
15889    segmentHeader.headerEnd = position;
15890    return segmentHeader;
15891  }
15892  function readSegments(header, data, start, end) {
15893    var segments = [];
15894    var position = start;
15895    while (position < end) {
15896      var segmentHeader = readSegmentHeader(data, position);
15897      position = segmentHeader.headerEnd;
15898      var segment = {
15899        header: segmentHeader,
15900        data: data
15901      };
15902      if (!header.randomAccess) {
15903        segment.start = position;
15904        position += segmentHeader.length;
15905        segment.end = position;
15906      }
15907      segments.push(segment);
15908      if (segmentHeader.type === 51) {
15909        break;
15910      }
15911    }
15912    if (header.randomAccess) {
15913      for (var i = 0, ii = segments.length; i < ii; i++) {
15914        segments[i].start = position;
15915        position += segments[i].header.length;
15916        segments[i].end = position;
15917      }
15918    }
15919    return segments;
15920  }
15921  function readRegionSegmentInformation(data, start) {
15922    return {
15923      width: (0, _util.readUint32)(data, start),
15924      height: (0, _util.readUint32)(data, start + 4),
15925      x: (0, _util.readUint32)(data, start + 8),
15926      y: (0, _util.readUint32)(data, start + 12),
15927      combinationOperator: data[start + 16] & 7
15928    };
15929  }
15930  var RegionSegmentInformationFieldLength = 17;
15931  function processSegment(segment, visitor) {
15932    var header = segment.header;
15933    var data = segment.data,
15934        position = segment.start,
15935        end = segment.end;
15936    var args, at, i, atLength;
15937    switch (header.type) {
15938      case 0:
15939        var dictionary = {};
15940        var dictionaryFlags = (0, _util.readUint16)(data, position);
15941        dictionary.huffman = !!(dictionaryFlags & 1);
15942        dictionary.refinement = !!(dictionaryFlags & 2);
15943        dictionary.huffmanDHSelector = dictionaryFlags >> 2 & 3;
15944        dictionary.huffmanDWSelector = dictionaryFlags >> 4 & 3;
15945        dictionary.bitmapSizeSelector = dictionaryFlags >> 6 & 1;
15946        dictionary.aggregationInstancesSelector = dictionaryFlags >> 7 & 1;
15947        dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);
15948        dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);
15949        dictionary.template = dictionaryFlags >> 10 & 3;
15950        dictionary.refinementTemplate = dictionaryFlags >> 12 & 1;
15951        position += 2;
15952        if (!dictionary.huffman) {
15953          atLength = dictionary.template === 0 ? 4 : 1;
15954          at = [];
15955          for (i = 0; i < atLength; i++) {
15956            at.push({
15957              x: (0, _util.readInt8)(data, position),
15958              y: (0, _util.readInt8)(data, position + 1)
15959            });
15960            position += 2;
15961          }
15962          dictionary.at = at;
15963        }
15964        if (dictionary.refinement && !dictionary.refinementTemplate) {
15965          at = [];
15966          for (i = 0; i < 2; i++) {
15967            at.push({
15968              x: (0, _util.readInt8)(data, position),
15969              y: (0, _util.readInt8)(data, position + 1)
15970            });
15971            position += 2;
15972          }
15973          dictionary.refinementAt = at;
15974        }
15975        dictionary.numberOfExportedSymbols = (0, _util.readUint32)(data, position);
15976        position += 4;
15977        dictionary.numberOfNewSymbols = (0, _util.readUint32)(data, position);
15978        position += 4;
15979        args = [dictionary, header.number, header.referredTo, data, position, end];
15980        break;
15981      case 6:
15982      case 7:
15983        var textRegion = {};
15984        textRegion.info = readRegionSegmentInformation(data, position);
15985        position += RegionSegmentInformationFieldLength;
15986        var textRegionSegmentFlags = (0, _util.readUint16)(data, position);
15987        position += 2;
15988        textRegion.huffman = !!(textRegionSegmentFlags & 1);
15989        textRegion.refinement = !!(textRegionSegmentFlags & 2);
15990        textRegion.logStripSize = textRegionSegmentFlags >> 2 & 3;
15991        textRegion.stripSize = 1 << textRegion.logStripSize;
15992        textRegion.referenceCorner = textRegionSegmentFlags >> 4 & 3;
15993        textRegion.transposed = !!(textRegionSegmentFlags & 64);
15994        textRegion.combinationOperator = textRegionSegmentFlags >> 7 & 3;
15995        textRegion.defaultPixelValue = textRegionSegmentFlags >> 9 & 1;
15996        textRegion.dsOffset = textRegionSegmentFlags << 17 >> 27;
15997        textRegion.refinementTemplate = textRegionSegmentFlags >> 15 & 1;
15998        if (textRegion.huffman) {
15999          var textRegionHuffmanFlags = (0, _util.readUint16)(data, position);
16000          position += 2;
16001          textRegion.huffmanFS = textRegionHuffmanFlags & 3;
16002          textRegion.huffmanDS = textRegionHuffmanFlags >> 2 & 3;
16003          textRegion.huffmanDT = textRegionHuffmanFlags >> 4 & 3;
16004          textRegion.huffmanRefinementDW = textRegionHuffmanFlags >> 6 & 3;
16005          textRegion.huffmanRefinementDH = textRegionHuffmanFlags >> 8 & 3;
16006          textRegion.huffmanRefinementDX = textRegionHuffmanFlags >> 10 & 3;
16007          textRegion.huffmanRefinementDY = textRegionHuffmanFlags >> 12 & 3;
16008          textRegion.huffmanRefinementSizeSelector = !!(textRegionHuffmanFlags & 0x4000);
16009        }
16010        if (textRegion.refinement && !textRegion.refinementTemplate) {
16011          at = [];
16012          for (i = 0; i < 2; i++) {
16013            at.push({
16014              x: (0, _util.readInt8)(data, position),
16015              y: (0, _util.readInt8)(data, position + 1)
16016            });
16017            position += 2;
16018          }
16019          textRegion.refinementAt = at;
16020        }
16021        textRegion.numberOfSymbolInstances = (0, _util.readUint32)(data, position);
16022        position += 4;
16023        args = [textRegion, header.referredTo, data, position, end];
16024        break;
16025      case 16:
16026        var patternDictionary = {};
16027        var patternDictionaryFlags = data[position++];
16028        patternDictionary.mmr = !!(patternDictionaryFlags & 1);
16029        patternDictionary.template = patternDictionaryFlags >> 1 & 3;
16030        patternDictionary.patternWidth = data[position++];
16031        patternDictionary.patternHeight = data[position++];
16032        patternDictionary.maxPatternIndex = (0, _util.readUint32)(data, position);
16033        position += 4;
16034        args = [patternDictionary, header.number, data, position, end];
16035        break;
16036      case 22:
16037      case 23:
16038        var halftoneRegion = {};
16039        halftoneRegion.info = readRegionSegmentInformation(data, position);
16040        position += RegionSegmentInformationFieldLength;
16041        var halftoneRegionFlags = data[position++];
16042        halftoneRegion.mmr = !!(halftoneRegionFlags & 1);
16043        halftoneRegion.template = halftoneRegionFlags >> 1 & 3;
16044        halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);
16045        halftoneRegion.combinationOperator = halftoneRegionFlags >> 4 & 7;
16046        halftoneRegion.defaultPixelValue = halftoneRegionFlags >> 7 & 1;
16047        halftoneRegion.gridWidth = (0, _util.readUint32)(data, position);
16048        position += 4;
16049        halftoneRegion.gridHeight = (0, _util.readUint32)(data, position);
16050        position += 4;
16051        halftoneRegion.gridOffsetX = (0, _util.readUint32)(data, position) & 0xFFFFFFFF;
16052        position += 4;
16053        halftoneRegion.gridOffsetY = (0, _util.readUint32)(data, position) & 0xFFFFFFFF;
16054        position += 4;
16055        halftoneRegion.gridVectorX = (0, _util.readUint16)(data, position);
16056        position += 2;
16057        halftoneRegion.gridVectorY = (0, _util.readUint16)(data, position);
16058        position += 2;
16059        args = [halftoneRegion, header.referredTo, data, position, end];
16060        break;
16061      case 38:
16062      case 39:
16063        var genericRegion = {};
16064        genericRegion.info = readRegionSegmentInformation(data, position);
16065        position += RegionSegmentInformationFieldLength;
16066        var genericRegionSegmentFlags = data[position++];
16067        genericRegion.mmr = !!(genericRegionSegmentFlags & 1);
16068        genericRegion.template = genericRegionSegmentFlags >> 1 & 3;
16069        genericRegion.prediction = !!(genericRegionSegmentFlags & 8);
16070        if (!genericRegion.mmr) {
16071          atLength = genericRegion.template === 0 ? 4 : 1;
16072          at = [];
16073          for (i = 0; i < atLength; i++) {
16074            at.push({
16075              x: (0, _util.readInt8)(data, position),
16076              y: (0, _util.readInt8)(data, position + 1)
16077            });
16078            position += 2;
16079          }
16080          genericRegion.at = at;
16081        }
16082        args = [genericRegion, data, position, end];
16083        break;
16084      case 48:
16085        var pageInfo = {
16086          width: (0, _util.readUint32)(data, position),
16087          height: (0, _util.readUint32)(data, position + 4),
16088          resolutionX: (0, _util.readUint32)(data, position + 8),
16089          resolutionY: (0, _util.readUint32)(data, position + 12)
16090        };
16091        if (pageInfo.height === 0xFFFFFFFF) {
16092          delete pageInfo.height;
16093        }
16094        var pageSegmentFlags = data[position + 16];
16095        (0, _util.readUint16)(data, position + 17);
16096        pageInfo.lossless = !!(pageSegmentFlags & 1);
16097        pageInfo.refinement = !!(pageSegmentFlags & 2);
16098        pageInfo.defaultPixelValue = pageSegmentFlags >> 2 & 1;
16099        pageInfo.combinationOperator = pageSegmentFlags >> 3 & 3;
16100        pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);
16101        pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);
16102        args = [pageInfo];
16103        break;
16104      case 49:
16105        break;
16106      case 50:
16107        break;
16108      case 51:
16109        break;
16110      case 53:
16111        args = [header.number, data, position, end];
16112        break;
16113      case 62:
16114        break;
16115      default:
16116        throw new Jbig2Error('segment type ' + header.typeName + '(' + header.type + ')' + ' is not implemented');
16117    }
16118    var callbackName = 'on' + header.typeName;
16119    if (callbackName in visitor) {
16120      visitor[callbackName].apply(visitor, args);
16121    }
16122  }
16123  function processSegments(segments, visitor) {
16124    for (var i = 0, ii = segments.length; i < ii; i++) {
16125      processSegment(segments[i], visitor);
16126    }
16127  }
16128  function parseJbig2Chunks(chunks) {
16129    var visitor = new SimpleSegmentVisitor();
16130    for (var i = 0, ii = chunks.length; i < ii; i++) {
16131      var chunk = chunks[i];
16132      var segments = readSegments({}, chunk.data, chunk.start, chunk.end);
16133      processSegments(segments, visitor);
16134    }
16135    return visitor.buffer;
16136  }
16137  function parseJbig2(data) {
16138    var position = 0,
16139        end = data.length;
16140    if (data[position] !== 0x97 || data[position + 1] !== 0x4A || data[position + 2] !== 0x42 || data[position + 3] !== 0x32 || data[position + 4] !== 0x0D || data[position + 5] !== 0x0A || data[position + 6] !== 0x1A || data[position + 7] !== 0x0A) {
16141      throw new Jbig2Error('parseJbig2 - invalid header.');
16142    }
16143    var header = Object.create(null);
16144    position += 8;
16145    var flags = data[position++];
16146    header.randomAccess = !(flags & 1);
16147    if (!(flags & 2)) {
16148      header.numberOfPages = (0, _util.readUint32)(data, position);
16149      position += 4;
16150    }
16151    var segments = readSegments(header, data, position, end);
16152    var visitor = new SimpleSegmentVisitor();
16153    processSegments(segments, visitor);
16154    var _visitor$currentPageI = visitor.currentPageInfo,
16155        width = _visitor$currentPageI.width,
16156        height = _visitor$currentPageI.height;
16157
16158    var bitPacked = visitor.buffer;
16159    var imgData = new Uint8ClampedArray(width * height);
16160    var q = 0,
16161        k = 0;
16162    for (var i = 0; i < height; i++) {
16163      var mask = 0,
16164          buffer = void 0;
16165      for (var j = 0; j < width; j++) {
16166        if (!mask) {
16167          mask = 128;
16168          buffer = bitPacked[k++];
16169        }
16170        imgData[q++] = buffer & mask ? 0 : 255;
16171        mask >>= 1;
16172      }
16173    }
16174    return {
16175      imgData: imgData,
16176      width: width,
16177      height: height
16178    };
16179  }
16180  function SimpleSegmentVisitor() {}
16181  SimpleSegmentVisitor.prototype = {
16182    onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {
16183      this.currentPageInfo = info;
16184      var rowSize = info.width + 7 >> 3;
16185      var buffer = new Uint8ClampedArray(rowSize * info.height);
16186      if (info.defaultPixelValue) {
16187        for (var i = 0, ii = buffer.length; i < ii; i++) {
16188          buffer[i] = 0xFF;
16189        }
16190      }
16191      this.buffer = buffer;
16192    },
16193    drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {
16194      var pageInfo = this.currentPageInfo;
16195      var width = regionInfo.width,
16196          height = regionInfo.height;
16197      var rowSize = pageInfo.width + 7 >> 3;
16198      var combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : pageInfo.combinationOperator;
16199      var buffer = this.buffer;
16200      var mask0 = 128 >> (regionInfo.x & 7);
16201      var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);
16202      var i, j, mask, offset;
16203      switch (combinationOperator) {
16204        case 0:
16205          for (i = 0; i < height; i++) {
16206            mask = mask0;
16207            offset = offset0;
16208            for (j = 0; j < width; j++) {
16209              if (bitmap[i][j]) {
16210                buffer[offset] |= mask;
16211              }
16212              mask >>= 1;
16213              if (!mask) {
16214                mask = 128;
16215                offset++;
16216              }
16217            }
16218            offset0 += rowSize;
16219          }
16220          break;
16221        case 2:
16222          for (i = 0; i < height; i++) {
16223            mask = mask0;
16224            offset = offset0;
16225            for (j = 0; j < width; j++) {
16226              if (bitmap[i][j]) {
16227                buffer[offset] ^= mask;
16228              }
16229              mask >>= 1;
16230              if (!mask) {
16231                mask = 128;
16232                offset++;
16233              }
16234            }
16235            offset0 += rowSize;
16236          }
16237          break;
16238        default:
16239          throw new Jbig2Error('operator ' + combinationOperator + ' is not supported');
16240      }
16241    },
16242    onImmediateGenericRegion: function SimpleSegmentVisitor_onImmediateGenericRegion(region, data, start, end) {
16243      var regionInfo = region.info;
16244      var decodingContext = new DecodingContext(data, start, end);
16245      var bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext);
16246      this.drawBitmap(regionInfo, bitmap);
16247    },
16248    onImmediateLosslessGenericRegion: function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() {
16249      this.onImmediateGenericRegion.apply(this, arguments);
16250    },
16251    onSymbolDictionary: function SimpleSegmentVisitor_onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) {
16252      var huffmanTables = void 0,
16253          huffmanInput = void 0;
16254      if (dictionary.huffman) {
16255        huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables);
16256        huffmanInput = new Reader(data, start, end);
16257      }
16258      var symbols = this.symbols;
16259      if (!symbols) {
16260        this.symbols = symbols = {};
16261      }
16262      var inputSymbols = [];
16263      for (var i = 0, ii = referredSegments.length; i < ii; i++) {
16264        var referredSymbols = symbols[referredSegments[i]];
16265        if (referredSymbols) {
16266          inputSymbols = inputSymbols.concat(referredSymbols);
16267        }
16268      }
16269      var decodingContext = new DecodingContext(data, start, end);
16270      symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, huffmanInput);
16271    },
16272    onImmediateTextRegion: function SimpleSegmentVisitor_onImmediateTextRegion(region, referredSegments, data, start, end) {
16273      var regionInfo = region.info;
16274      var huffmanTables = void 0,
16275          huffmanInput = void 0;
16276      var symbols = this.symbols;
16277      var inputSymbols = [];
16278      for (var i = 0, ii = referredSegments.length; i < ii; i++) {
16279        var referredSymbols = symbols[referredSegments[i]];
16280        if (referredSymbols) {
16281          inputSymbols = inputSymbols.concat(referredSymbols);
16282        }
16283      }
16284      var symbolCodeLength = (0, _util.log2)(inputSymbols.length);
16285      if (region.huffman) {
16286        huffmanInput = new Reader(data, start, end);
16287        huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, inputSymbols.length, huffmanInput);
16288      }
16289      var decodingContext = new DecodingContext(data, start, end);
16290      var bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput);
16291      this.drawBitmap(regionInfo, bitmap);
16292    },
16293    onImmediateLosslessTextRegion: function SimpleSegmentVisitor_onImmediateLosslessTextRegion() {
16294      this.onImmediateTextRegion.apply(this, arguments);
16295    },
16296    onPatternDictionary: function onPatternDictionary(dictionary, currentSegment, data, start, end) {
16297      var patterns = this.patterns;
16298      if (!patterns) {
16299        this.patterns = patterns = {};
16300      }
16301      var decodingContext = new DecodingContext(data, start, end);
16302      patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext);
16303    },
16304    onImmediateHalftoneRegion: function onImmediateHalftoneRegion(region, referredSegments, data, start, end) {
16305      var patterns = this.patterns[referredSegments[0]];
16306      var regionInfo = region.info;
16307      var decodingContext = new DecodingContext(data, start, end);
16308      var bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext);
16309      this.drawBitmap(regionInfo, bitmap);
16310    },
16311    onImmediateLosslessHalftoneRegion: function onImmediateLosslessHalftoneRegion() {
16312      this.onImmediateHalftoneRegion.apply(this, arguments);
16313    },
16314    onTables: function onTables(currentSegment, data, start, end) {
16315      var customTables = this.customTables;
16316      if (!customTables) {
16317        this.customTables = customTables = {};
16318      }
16319      customTables[currentSegment] = decodeTablesSegment(data, start, end);
16320    }
16321  };
16322  function HuffmanLine(lineData) {
16323    if (lineData.length === 2) {
16324      this.isOOB = true;
16325      this.rangeLow = 0;
16326      this.prefixLength = lineData[0];
16327      this.rangeLength = 0;
16328      this.prefixCode = lineData[1];
16329      this.isLowerRange = false;
16330    } else {
16331      this.isOOB = false;
16332      this.rangeLow = lineData[0];
16333      this.prefixLength = lineData[1];
16334      this.rangeLength = lineData[2];
16335      this.prefixCode = lineData[3];
16336      this.isLowerRange = lineData[4] === 'lower';
16337    }
16338  }
16339  function HuffmanTreeNode(line) {
16340    this.children = [];
16341    if (line) {
16342      this.isLeaf = true;
16343      this.rangeLength = line.rangeLength;
16344      this.rangeLow = line.rangeLow;
16345      this.isLowerRange = line.isLowerRange;
16346      this.isOOB = line.isOOB;
16347    } else {
16348      this.isLeaf = false;
16349    }
16350  }
16351  HuffmanTreeNode.prototype = {
16352    buildTree: function buildTree(line, shift) {
16353      var bit = line.prefixCode >> shift & 1;
16354      if (shift <= 0) {
16355        this.children[bit] = new HuffmanTreeNode(line);
16356      } else {
16357        var node = this.children[bit];
16358        if (!node) {
16359          this.children[bit] = node = new HuffmanTreeNode(null);
16360        }
16361        node.buildTree(line, shift - 1);
16362      }
16363    },
16364    decodeNode: function decodeNode(reader) {
16365      if (this.isLeaf) {
16366        if (this.isOOB) {
16367          return null;
16368        }
16369        var htOffset = reader.readBits(this.rangeLength);
16370        return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);
16371      }
16372      var node = this.children[reader.readBit()];
16373      if (!node) {
16374        throw new Jbig2Error('invalid Huffman data');
16375      }
16376      return node.decodeNode(reader);
16377    }
16378  };
16379  function HuffmanTable(lines, prefixCodesDone) {
16380    if (!prefixCodesDone) {
16381      this.assignPrefixCodes(lines);
16382    }
16383    this.rootNode = new HuffmanTreeNode(null);
16384    var i = void 0,
16385        ii = lines.length,
16386        line = void 0;
16387    for (i = 0; i < ii; i++) {
16388      line = lines[i];
16389      if (line.prefixLength > 0) {
16390        this.rootNode.buildTree(line, line.prefixLength - 1);
16391      }
16392    }
16393  }
16394  HuffmanTable.prototype = {
16395    decode: function decode(reader) {
16396      return this.rootNode.decodeNode(reader);
16397    },
16398    assignPrefixCodes: function assignPrefixCodes(lines) {
16399      var linesLength = lines.length,
16400          prefixLengthMax = 0,
16401          i = void 0;
16402      for (i = 0; i < linesLength; i++) {
16403        prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);
16404      }
16405      var histogram = new Uint32Array(prefixLengthMax + 1);
16406      for (i = 0; i < linesLength; i++) {
16407        histogram[lines[i].prefixLength]++;
16408      }
16409      var currentLength = 1,
16410          firstCode = 0,
16411          currentCode = void 0,
16412          currentTemp = void 0,
16413          line = void 0;
16414      histogram[0] = 0;
16415      while (currentLength <= prefixLengthMax) {
16416        firstCode = firstCode + histogram[currentLength - 1] << 1;
16417        currentCode = firstCode;
16418        currentTemp = 0;
16419        while (currentTemp < linesLength) {
16420          line = lines[currentTemp];
16421          if (line.prefixLength === currentLength) {
16422            line.prefixCode = currentCode;
16423            currentCode++;
16424          }
16425          currentTemp++;
16426        }
16427        currentLength++;
16428      }
16429    }
16430  };
16431  function decodeTablesSegment(data, start, end) {
16432    var flags = data[start];
16433    var lowestValue = (0, _util.readUint32)(data, start + 1) & 0xFFFFFFFF;
16434    var highestValue = (0, _util.readUint32)(data, start + 5) & 0xFFFFFFFF;
16435    var reader = new Reader(data, start + 9, end);
16436    var prefixSizeBits = (flags >> 1 & 7) + 1;
16437    var rangeSizeBits = (flags >> 4 & 7) + 1;
16438    var lines = [];
16439    var prefixLength = void 0,
16440        rangeLength = void 0,
16441        currentRangeLow = lowestValue;
16442    do {
16443      prefixLength = reader.readBits(prefixSizeBits);
16444      rangeLength = reader.readBits(rangeSizeBits);
16445      lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0]));
16446      currentRangeLow += 1 << rangeLength;
16447    } while (currentRangeLow < highestValue);
16448    prefixLength = reader.readBits(prefixSizeBits);
16449    lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, 'lower']));
16450    prefixLength = reader.readBits(prefixSizeBits);
16451    lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));
16452    if (flags & 1) {
16453      prefixLength = reader.readBits(prefixSizeBits);
16454      lines.push(new HuffmanLine([prefixLength, 0]));
16455    }
16456    return new HuffmanTable(lines, false);
16457  }
16458  var standardTablesCache = {};
16459  function getStandardTable(number) {
16460    var table = standardTablesCache[number];
16461    if (table) {
16462      return table;
16463    }
16464    var lines = void 0;
16465    switch (number) {
16466      case 1:
16467        lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]];
16468        break;
16469      case 2:
16470        lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xE], [11, 5, 6, 0x1E], [75, 6, 32, 0x3E], [6, 0x3F]];
16471        break;
16472      case 3:
16473        lines = [[-256, 8, 8, 0xFE], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xE], [11, 5, 6, 0x1E], [-25
164737, 8, 32, 0xFF, 'lower'], [75, 7, 32, 0x7E], [6, 0x3E]];
16474        break;
16475      case 4:
16476        lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xE], [12, 5, 6, 0x1E], [76, 5, 32, 0x1F]];
16477        break;
16478      case 5:
16479        lines = [[-255, 7, 8, 0x7E], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xE], [12, 5, 6, 0x1E], [-256, 7, 32, 0x7F, 'lower'], [76, 6, 32, 0x3E]];
16480        break;
16481      case 6:
16482        lines = [[-2048, 5, 10, 0x1C], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xA], [-128, 5, 6, 0x1D], [-64, 5, 5, 0x1E], [-32, 4, 5, 0xB], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 0xC], [1024, 4, 10, 0xD], [-2049, 6, 32, 0x3E, 'lower'], [2048, 6, 32, 0x3F]];
16483        break;
16484      case 7:
16485        lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1A], [-64, 5, 5, 0x1B], [-32, 4, 5, 0xA], [0, 4, 5, 0xB], [32, 5, 5, 0x1C], [64, 5, 6, 0x1D], [128, 4, 7, 0xC], [256, 3, 8, 0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1E, 'lower'], [2048, 5, 32, 0x1F]];
16486        break;
16487      case 8:
16488        lines = [[-15, 8, 3, 0xFC], [-7, 9, 1, 0x1FC], [-5, 8, 1, 0xFD], [-3, 9, 0, 0x1FD], [-2, 7, 0, 0x7C], [-1, 4, 0, 0xA], [0, 2, 1, 0x0], [2, 5, 0, 0x1A], [3, 6, 0, 0x3A], [4, 3, 4, 0x4], [20, 6, 1, 0x3B], [22, 4, 4, 0xB], [38, 4, 5, 0xC], [70, 5, 6, 0x1B], [134, 5, 7, 0x1C], [262, 6, 7, 0x3C], [390, 7, 8, 0x7D], [646, 6, 10, 0x3D], [-16, 9, 32, 0x1FE, 'lower'], [1670, 9, 32, 0x1FF], [2, 0x1]];
16489        break;
16490      case 9:
16491        lines = [[-31, 8, 4, 0xFC], [-15, 9, 2, 0x1FC], [-11, 8, 2, 0xFD], [-7, 9, 1, 0x1FD], [-5, 7, 1, 0x7C], [-3, 4, 1, 0xA], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1A], [5, 6, 1, 0x3A], [7, 3, 5, 0x4], [39, 6, 2, 0x3B], [43, 4, 5, 0xB], [75, 4, 6, 0xC], [139, 5, 7, 0x1B], [267, 5, 8, 0x1C], [523, 6, 8, 0x3C], [779, 7, 9, 0x7D], [1291, 6, 11, 0x3D], [-32, 9, 32, 0x1FE, 'lower'], [3339, 9, 32, 0x1FF], [2, 0x0]];
16492        break;
16493      case 10:
16494        lines = [[-21, 7, 4, 0x7A], [-5, 8, 0, 0xFC], [-4, 7, 0, 0x7B], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7C], [5, 8, 0, 0xFD], [6, 2, 6, 0x1], [70, 5, 5, 0x1A], [102, 6, 5, 0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3A], [582, 6, 9, 0x3B], [1094, 6, 10, 0x3C], [2118, 7, 11, 0x7D], [-22, 8, 32, 0xFE, 'lower'], [4166, 8, 32, 0xFF], [2, 0x2]];
16495        break;
16496      case 11:
16497        lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xC], [5, 4, 1, 0xD], [7, 5, 1, 0x1C], [9, 5, 2, 0x1D], [13, 6, 2, 0x3C], [17, 7, 2, 0x7A], [21, 7, 3, 0x7B], [29, 7, 4, 0x7C], [45, 7, 5, 0x7D], [77, 7, 6, 0x7E], [141, 7, 32, 0x7F]];
16498        break;
16499      case 12:
16500        lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1C], [6, 5, 1, 0x1D], [8, 6, 1, 0x3C], [10, 7, 0, 0x7A], [11, 7, 1, 0x7B], [13, 7, 2, 0x7C], [17, 7, 3, 0x7D], [25, 7, 4, 0x7E], [41, 8, 5, 0xFE], [73, 8, 32, 0xFF]];
16501        break;
16502      case 13:
16503        lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xC], [4, 5, 0, 0x1C], [5, 4, 1, 0xD], [7, 3, 3, 0x5], [15, 6, 1, 0x3A], [17, 6, 2, 0x3B], [21, 6, 3, 0x3C], [29, 6, 4, 0x3D], [45, 6, 5, 0x3E], [77, 7, 6, 0x7E], [141, 7, 32, 0x7F]];
16504        break;
16505      case 14:
16506        lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]];
16507        break;
16508      case 15:
16509        lines = [[-24, 7, 4, 0x7C], [-8, 6, 2, 0x3C], [-4, 5, 1, 0x1C], [-2, 4, 0, 0xC], [-1, 3, 0, 0x4], [0, 1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xD], [3, 5, 1, 0x1D], [5, 6, 2, 0x3D], [9, 7, 4, 0x7D], [-25, 7, 32, 0x7E, 'lower'], [25, 7, 32, 0x7F]];
16510        break;
16511      default:
16512        throw new Jbig2Error('standard table B.' + number + ' does not exist');
16513    }
16514    var length = lines.length,
16515        i = void 0;
16516    for (i = 0; i < length; i++) {
16517      lines[i] = new HuffmanLine(lines[i]);
16518    }
16519    table = new HuffmanTable(lines, true);
16520    standardTablesCache[number] = table;
16521    return table;
16522  }
16523  function Reader(data, start, end) {
16524    this.data = data;
16525    this.start = start;
16526    this.end = end;
16527    this.position = start;
16528    this.shift = -1;
16529    this.currentByte = 0;
16530  }
16531  Reader.prototype = {
16532    readBit: function readBit() {
16533      if (this.shift < 0) {
16534        if (this.position >= this.end) {
16535          throw new Jbig2Error('end of data while reading bit');
16536        }
16537        this.currentByte = this.data[this.position++];
16538        this.shift = 7;
16539      }
16540      var bit = this.currentByte >> this.shift & 1;
16541      this.shift--;
16542      return bit;
16543    },
16544    readBits: function readBits(numBits) {
16545      var result = 0,
16546          i = void 0;
16547      for (i = numBits - 1; i >= 0; i--) {
16548        result |= this.readBit() << i;
16549      }
16550      return result;
16551    },
16552    byteAlign: function byteAlign() {
16553      this.shift = -1;
16554    },
16555    next: function next() {
16556      if (this.position >= this.end) {
16557        return -1;
16558      }
16559      return this.data[this.position++];
16560    }
16561  };
16562  function getCustomHuffmanTable(index, referredTo, customTables) {
16563    var currentIndex = 0,
16564        i = void 0,
16565        ii = referredTo.length,
16566        table = void 0;
16567    for (i = 0; i < ii; i++) {
16568      table = customTables[referredTo[i]];
16569      if (table) {
16570        if (index === currentIndex) {
16571          return table;
16572        }
16573        currentIndex++;
16574      }
16575    }
16576    throw new Jbig2Error('can\'t find custom Huffman table');
16577  }
16578  function getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) {
16579    var codes = [],
16580        i = void 0,
16581        codeLength = void 0;
16582    for (i = 0; i <= 34; i++) {
16583      codeLength = reader.readBits(4);
16584      codes.push(new HuffmanLine([i, codeLength, 0, 0]));
16585    }
16586    var runCodesTable = new HuffmanTable(codes, false);
16587    codes.length = 0;
16588    for (i = 0; i < numberOfSymbols;) {
16589      codeLength = runCodesTable.decode(reader);
16590      if (codeLength >= 32) {
16591        var repeatedLength = void 0,
16592            numberOfRepeats = void 0,
16593            j = void 0;
16594        switch (codeLength) {
16595          case 32:
16596            if (i === 0) {
16597              throw new Jbig2Error('no previous value in symbol ID table');
16598            }
16599            numberOfRepeats = reader.readBits(2) + 3;
16600            repeatedLength = codes[i - 1].prefixLength;
16601            break;
16602          case 33:
16603            numberOfRepeats = reader.readBits(3) + 3;
16604            repeatedLength = 0;
16605            break;
16606          case 34:
16607            numberOfRepeats = reader.readBits(7) + 11;
16608            repeatedLength = 0;
16609            break;
16610          default:
16611            throw new Jbig2Error('invalid code length in symbol ID table');
16612        }
16613        for (j = 0; j < numberOfRepeats; j++) {
16614          codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));
16615          i++;
16616        }
16617      } else {
16618        codes.push(new HuffmanLine([i, codeLength, 0, 0]));
16619        i++;
16620      }
16621    }
16622    reader.byteAlign();
16623    var symbolIDTable = new HuffmanTable(codes, false);
16624    var customIndex = 0,
16625        tableFirstS = void 0,
16626        tableDeltaS = void 0,
16627        tableDeltaT = void 0;
16628    switch (textRegion.huffmanFS) {
16629      case 0:
16630      case 1:
16631        tableFirstS = getStandardTable(textRegion.huffmanFS + 6);
16632        break;
16633      case 3:
16634        tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables);
16635        customIndex++;
16636        break;
16637      default:
16638        throw new Jbig2Error('invalid Huffman FS selector');
16639    }
16640    switch (textRegion.huffmanDS) {
16641      case 0:
16642      case 1:
16643      case 2:
16644        tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);
16645        break;
16646      case 3:
16647        tableDeltaS = getCustomHuffmanTable(customIndex, referredTo, customTables);
16648        customIndex++;
16649        break;
16650      default:
16651        throw new Jbig2Error('invalid Huffman DS selector');
16652    }
16653    switch (textRegion.huffmanDT) {
16654      case 0:
16655      case 1:
16656      case 2:
16657        tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);
16658        break;
16659      case 3:
16660        tableDeltaT = getCustomHuffmanTable(customIndex, referredTo, customTables);
16661        customIndex++;
16662        break;
16663      default:
16664        throw new Jbig2Error('invalid Huffman DT selector');
16665    }
16666    if (textRegion.refinement) {
16667      throw new Jbig2Error('refinement with Huffman is not supported');
16668    }
16669    return {
16670      symbolIDTable: symbolIDTable,
16671      tableFirstS: tableFirstS,
16672      tableDeltaS: tableDeltaS,
16673      tableDeltaT: tableDeltaT
16674    };
16675  }
16676  function getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) {
16677    var customIndex = 0,
16678        tableDeltaHeight = void 0,
16679        tableDeltaWidth = void 0;
16680    switch (dictionary.huffmanDHSelector) {
16681      case 0:
16682      case 1:
16683        tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);
16684        break;
16685      case 3:
16686        tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo, customTables);
16687        customIndex++;
16688        break;
16689      default:
16690        throw new Jbig2Error('invalid Huffman DH selector');
16691    }
16692    switch (dictionary.huffmanDWSelector) {
16693      case 0:
16694      case 1:
16695        tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);
16696        break;
16697      case 3:
16698        tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo, customTables);
16699        customIndex++;
16700        break;
16701      default:
16702        throw new Jbig2Error('invalid Huffman DW selector');
16703    }
16704    var tableBitmapSize = void 0,
16705        tableAggregateInstances = void 0;
16706    if (dictionary.bitmapSizeSelector) {
16707      tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables);
16708      customIndex++;
16709    } else {
16710      tableBitmapSize = getStandardTable(1);
16711    }
16712    if (dictionary.aggregationInstancesSelector) {
16713      tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables);
16714    } else {
16715      tableAggregateInstances = getStandardTable(1);
16716    }
16717    return {
16718      tableDeltaHeight: tableDeltaHeight,
16719      tableDeltaWidth: tableDeltaWidth,
16720      tableBitmapSize: tableBitmapSize,
16721      tableAggregateInstances: tableAggregateInstances
16722    };
16723  }
16724  function readUncompressedBitmap(reader, width, height) {
16725    var bitmap = [],
16726        x = void 0,
16727        y = void 0,
16728        row = void 0;
16729    for (y = 0; y < height; y++) {
16730      row = new Uint8Array(width);
16731      bitmap.push(row);
16732      for (x = 0; x < width; x++) {
16733        row[x] = reader.readBit();
16734      }
16735      reader.byteAlign();
16736    }
16737    return bitmap;
16738  }
16739  function decodeMMRBitmap(input, width, height, endOfBlock) {
16740    var params = {
16741      K: -1,
16742      Columns: width,
16743      Rows: height,
16744      BlackIs1: true,
16745      EndOfBlock: endOfBlock
16746    };
16747    var decoder = new _ccitt.CCITTFaxDecoder(input, params);
16748    var bitmap = [],
16749        x = void 0,
16750        y = void 0,
16751        row = void 0,
16752        currentByte = void 0,
16753        shift = void 0,
16754        eof = false;
16755    for (y = 0; y < height; y++) {
16756      row = new Uint8Array(width);
16757      bitmap.push(row);
16758      shift = -1;
16759      for (x = 0; x < width; x++) {
16760        if (shift < 0) {
16761          currentByte = decoder.readNextChar();
16762          if (currentByte === -1) {
16763            currentByte = 0;
16764            eof = true;
16765          }
16766          shift = 7;
16767        }
16768        row[x] = currentByte >> shift & 1;
16769        shift--;
16770      }
16771    }
16772    if (endOfBlock && !eof) {
16773      var lookForEOFLimit = 5;
16774      for (var i = 0; i < lookForEOFLimit; i++) {
16775        if (decoder.readNextChar() === -1) {
16776          break;
16777        }
16778      }
16779    }
16780    return bitmap;
16781  }
16782  function Jbig2Image() {}
16783  Jbig2Image.prototype = {
16784    parseChunks: function parseChunks(chunks) {
16785      return parseJbig2Chunks(chunks);
16786    },
16787    parse: function parse(data) {
16788      var _parseJbig = parseJbig2(data),
16789          imgData = _parseJbig.imgData,
16790          width = _parseJbig.width,
16791          height = _parseJbig.height;
16792
16793      this.width = width;
16794      this.height = height;
16795      return imgData;
16796    }
16797  };
16798  return Jbig2Image;
16799}();
16800exports.Jbig2Image = Jbig2Image;
16801
16802/***/ }),
16803/* 145 */
16804/***/ (function(module, exports, __w_pdfjs_require__) {
16805
16806"use strict";
16807
16808
16809Object.defineProperty(exports, "__esModule", {
16810  value: true
16811});
16812var ArithmeticDecoder = function ArithmeticDecoderClosure() {
16813  var QeTable = [{
16814    qe: 0x5601,
16815    nmps: 1,
16816    nlps: 1,
16817    switchFlag: 1
16818  }, {
16819    qe: 0x3401,
16820    nmps: 2,
16821    nlps: 6,
16822    switchFlag: 0
16823  }, {
16824    qe: 0x1801,
16825    nmps: 3,
16826    nlps: 9,
16827    switchFlag: 0
16828  }, {
16829    qe: 0x0AC1,
16830    nmps: 4,
16831    nlps: 12,
16832    switchFlag: 0
16833  }, {
16834    qe: 0x0521,
16835    nmps: 5,
16836    nlps: 29,
16837    switchFlag: 0
16838  }, {
16839    qe: 0x0221,
16840    nmps: 38,
16841    nlps: 33,
16842    switchFlag: 0
16843  }, {
16844    qe: 0x5601,
16845    nmps: 7,
16846    nlps: 6,
16847    switchFlag: 1
16848  }, {
16849    qe: 0x5401,
16850    nmps: 8,
16851    nlps: 14,
16852    switchFlag: 0
16853  }, {
16854    qe: 0x4801,
16855    nmps: 9,
16856    nlps: 14,
16857    switchFlag: 0
16858  }, {
16859    qe: 0x3801,
16860    nmps: 10,
16861    nlps: 14,
16862    switchFlag: 0
16863  }, {
16864    qe: 0x3001,
16865    nmps: 11,
16866    nlps: 17,
16867    switchFlag: 0
16868  }, {
16869    qe: 0x2401,
16870    nmps: 12,
16871    nlps: 18,
16872    switchFlag: 0
16873  }, {
16874    qe: 0x1C01,
16875    nmps: 13,
16876    nlps: 20,
16877    switchFlag: 0
16878  }, {
16879    qe: 0x1601,
16880    nmps: 29,
16881    nlps: 21,
16882    switchFlag: 0
16883  }, {
16884    qe: 0x5601,
16885    nmps: 15,
16886    nlps: 14,
16887    switchFlag: 1
16888  }, {
16889    qe: 0x5401,
16890    nmps: 16,
16891    nlps: 14,
16892    switchFlag: 0
16893  }, {
16894    qe: 0x5101,
16895    nmps: 17,
16896    nlps: 15,
16897    switchFlag: 0
16898  }, {
16899    qe: 0x4801,
16900    nmps: 18,
16901    nlps: 16,
16902    switchFlag: 0
16903  }, {
16904    qe: 0x3801,
16905    nmps: 19,
16906    nlps: 17,
16907    switchFlag: 0
16908  }, {
16909    qe: 0x3401,
16910    nmps: 20,
16911    nlps: 18,
16912    switchFlag: 0
16913  }, {
16914    qe: 0x3001,
16915    nmps: 21,
16916    nlps: 19,
16917    switchFlag: 0
16918  }, {
16919    qe: 0x2801,
16920    nmps: 22,
16921    nlps: 19,
16922    switchFlag: 0
16923  }, {
16924    qe: 0x2401,
16925    nmps: 23,
16926    nlps: 20,
16927    switchFlag: 0
16928  }, {
16929    qe: 0x2201,
16930    nmps: 24,
16931    nlps: 21,
16932    switchFlag: 0
16933  }, {
16934    qe: 0x1C01,
16935    nmps: 25,
16936    nlps: 22,
16937    switchFlag: 0
16938  }, {
16939    qe: 0x1801,
16940    nmps: 26,
16941    nlps: 23,
16942    switchFlag: 0
16943  }, {
16944    qe: 0x1601,
16945    nmps: 27,
16946    nlps: 24,
16947    switchFlag: 0
16948  }, {
16949    qe: 0x1401,
16950    nmps: 28,
16951    nlps: 25,
16952    switchFlag: 0
16953  }, {
16954    qe: 0x1201,
16955    nmps: 29,
16956    nlps: 26,
16957    switchFlag: 0
16958  }, {
16959    qe: 0x1101,
16960    nmps: 30,
16961    nlps: 27,
16962    switchFlag: 0
16963  }, {
16964    qe: 0x0AC1,
16965    nmps: 31,
16966    nlps: 28,
16967    switchFlag: 0
16968  }, {
16969    qe: 0x09C1,
16970    nmps: 32,
16971    nlps: 29,
16972    switchFlag: 0
16973  }, {
16974    qe: 0x08A1,
16975    nmps: 33,
16976    nlps: 30,
16977    switchFlag: 0
16978  }, {
16979    qe: 0x0521,
16980    nmps: 34,
16981    nlps: 31,
16982    switchFlag: 0
16983  }, {
16984    qe: 0x0441,
16985    nmps: 35,
16986    nlps: 32,
16987    switchFlag: 0
16988  }, {
16989    qe: 0x02A1,
16990    nmps: 36,
16991    nlps: 33,
16992    switchFlag: 0
16993  }, {
16994    qe: 0x0221,
16995    nmps: 37,
16996    nlps: 34,
16997    switchFlag: 0
16998  }, {
16999    qe: 0x0141,
17000    nmps: 38,
17001    nlps: 35,
17002    switchFlag: 0
17003  }, {
17004    qe: 0x0111,
17005    nmps: 39,
17006    nlps: 36,
17007    switchFlag: 0
17008  }, {
17009    qe: 0x0085,
17010    nmps: 40,
17011    nlps: 37,
17012    switchFlag: 0
17013  }, {
17014    qe: 0x0049,
17015    nmps: 41,
17016    nlps: 38,
17017    switchFlag: 0
17018  }, {
17019    qe: 0x0025,
17020    nmps: 42,
17021    nlps: 39,
17022    switchFlag: 0
17023  }, {
17024    qe: 0x0015,
17025    nmps: 43,
17026    nlps: 40,
17027    switchFlag: 0
17028  }, {
17029    qe: 0x0009,
17030    nmps: 44,
17031    nlps: 41,
17032    switchFlag: 0
17033  }, {
17034    qe: 0x0005,
17035    nmps: 45,
17036    nlps: 42,
17037    switchFlag: 0
17038  }, {
17039    qe: 0x0001,
17040    nmps: 45,
17041    nlps: 43,
17042    switchFlag: 0
17043  }, {
17044    qe: 0x5601,
17045    nmps: 46,
17046    nlps: 46,
17047    switchFlag: 0
17048  }];
17049  function ArithmeticDecoder(data, start, end) {
17050    this.data = data;
17051    this.bp = start;
17052    this.dataEnd = end;
17053    this.chigh = data[start];
17054    this.clow = 0;
17055    this.byteIn();
17056    this.chigh = this.chigh << 7 & 0xFFFF | this.clow >> 9 & 0x7F;
17057    this.clow = this.clow << 7 & 0xFFFF;
17058    this.ct -= 7;
17059    this.a = 0x8000;
17060  }
17061  ArithmeticDecoder.prototype = {
17062    byteIn: function ArithmeticDecoder_byteIn() {
17063      var data = this.data;
17064      var bp = this.bp;
17065      if (data[bp] === 0xFF) {
17066        var b1 = data[bp + 1];
17067        if (b1 > 0x8F) {
17068          this.clow += 0xFF00;
17069          this.ct = 8;
17070        } else {
17071          bp++;
17072          this.clow += data[bp] << 9;
17073          this.ct = 7;
17074          this.bp = bp;
17075        }
17076      } else {
17077        bp++;
17078        this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xFF00;
17079        this.ct = 8;
17080        this.bp = bp;
17081      }
17082      if (this.clow > 0xFFFF) {
17083        this.chigh += this.clow >> 16;
17084        this.clow &= 0xFFFF;
17085      }
17086    },
17087    readBit: function ArithmeticDecoder_readBit(contexts, pos) {
17088      var cx_index = contexts[pos] >> 1,
17089          cx_mps = contexts[pos] & 1;
17090      var qeTableIcx = QeTable[cx_index];
17091      var qeIcx = qeTableIcx.qe;
17092      var d;
17093      var a = this.a - qeIcx;
17094      if (this.chigh < qeIcx) {
17095        if (a < qeIcx) {
17096          a = qeIcx;
17097          d = cx_mps;
17098          cx_index = qeTableIcx.nmps;
17099        } else {
17100          a = qeIcx;
17101          d = 1 ^ cx_mps;
17102          if (qeTableIcx.switchFlag === 1) {
17103            cx_mps = d;
17104          }
17105          cx_index = qeTableIcx.nlps;
17106        }
17107      } else {
17108        this.chigh -= qeIcx;
17109        if ((a & 0x8000) !== 0) {
17110          this.a = a;
17111          return cx_mps;
17112        }
17113        if (a < qeIcx) {
17114          d = 1 ^ cx_mps;
17115          if (qeTableIcx.switchFlag === 1) {
17116            cx_mps = d;
17117          }
17118          cx_index = qeTableIcx.nlps;
17119        } else {
17120          d = cx_mps;
17121          cx_index = qeTableIcx.nmps;
17122        }
17123      }
17124      do {
17125        if (this.ct === 0) {
17126          this.byteIn();
17127        }
17128        a <<= 1;
17129        this.chigh = this.chigh << 1 & 0xFFFF | this.clow >> 15 & 1;
17130        this.clow = this.clow << 1 & 0xFFFF;
17131        this.ct--;
17132      } while ((a & 0x8000) === 0);
17133      this.a = a;
17134      contexts[pos] = cx_index << 1 | cx_mps;
17135      return d;
17136    }
17137  };
17138  return ArithmeticDecoder;
17139}();
17140exports.ArithmeticDecoder = ArithmeticDecoder;
17141
17142/***/ }),
17143/* 146 */
17144/***/ (function(module, exports, __w_pdfjs_require__) {
17145
17146"use strict";
17147
17148
17149Object.defineProperty(exports, "__esModule", {
17150  value: true
17151});
17152exports.JpegStream = undefined;
17153
17154var _util = __w_pdfjs_require__(2);
17155
17156var _stream = __w_pdfjs_require__(140);
17157
17158var _primitives = __w_pdfjs_require__(138);
17159
17160var _jpg = __w_pdfjs_require__(147);
17161
17162var JpegStream = function JpegStreamClosure() {
17163  function JpegStream(stream, maybeLength, dict, params) {
17164    var ch = void 0;
17165    while ((ch = stream.getByte()) !== -1) {
17166      if (ch === 0xFF) {
17167        stream.skip(-1);
17168        break;
17169      }
17170    }
17171    this.stream = stream;
17172    this.maybeLength = maybeLength;
17173    this.dict = dict;
17174    this.params = params;
17175    _stream.DecodeStream.call(this, maybeLength);
17176  }
17177  JpegStream.prototype = Object.create(_stream.DecodeStream.prototype);
17178  Object.defineProperty(JpegStream.prototype, 'bytes', {
17179    get: function JpegStream_bytes() {
17180      return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength));
17181    },
17182    configurable: true
17183  });
17184  JpegStream.prototype.ensureBuffer = function (requested) {};
17185  JpegStream.prototype.readBlock = function () {
17186    if (this.eof) {
17187      return;
17188    }
17189    var jpegOptions = {
17190      decodeTransform: undefined,
17191      colorTransform: undefined
17192    };
17193    var decodeArr = this.dict.getArray('Decode', 'D');
17194    if (this.forceRGB && Array.isArray(decodeArr)) {
17195      var bitsPerComponent = this.dict.get('BitsPerComponent') || 8;
17196      var decodeArrLength = decodeArr.length;
17197      var transform = new Int32Array(decodeArrLength);
17198      var transformNeeded = false;
17199      var maxValue = (1 << bitsPerComponent) - 1;
17200      for (var i = 0; i < decodeArrLength; i += 2) {
17201        transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0;
17202        transform[i + 1] = decodeArr[i] * maxValue | 0;
17203        if (transform[i] !== 256 || transform[i + 1] !== 0) {
17204          transformNeeded = true;
17205        }
17206      }
17207      if (transformNeeded) {
17208        jpegOptions.decodeTransform = transform;
17209      }
17210    }
17211    if ((0, _primitives.isDict)(this.params)) {
17212      var colorTransform = this.params.get('ColorTransform');
17213      if (Number.isInteger(colorTransform)) {
17214        jpegOptions.colorTransform = colorTransform;
17215      }
17216    }
17217    var jpegImage = new _jpg.JpegImage(jpegOptions);
17218    jpegImage.parse(this.bytes);
17219    var data = jpegImage.getData({
17220      width: this.drawWidth,
17221      height: this.drawHeight,
17222      forceRGB: this.forceRGB,
17223      isSourcePDF: true
17224    });
17225    this.buffer = data;
17226    this.bufferLength = data.length;
17227    this.eof = true;
17228  };
17229  JpegStream.prototype.getIR = function () {
17230    var forceDataSchema = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
17231
17232    return (0, _util.createObjectURL)(this.bytes, 'image/jpeg', forceDataSchema);
17233  };
17234  return JpegStream;
17235}();
17236exports.JpegStream = JpegStream;
17237
17238/***/ }),
17239/* 147 */
17240/***/ (function(module, exports, __w_pdfjs_require__) {
17241
17242"use strict";
17243
17244
17245Object.defineProperty(exports, "__esModule", {
17246  value: true
17247});
17248exports.JpegImage = undefined;
17249
17250var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
17251
17252var _util = __w_pdfjs_require__(2);
17253
17254var JpegError = function JpegErrorClosure() {
17255  function JpegError(msg) {
17256    this.message = 'JPEG error: ' + msg;
17257  }
17258  JpegError.prototype = new Error();
17259  JpegError.prototype.name = 'JpegError';
17260  JpegError.constructor = JpegError;
17261  return JpegError;
17262}();
17263var DNLMarkerError = function DNLMarkerErrorClosure() {
17264  function DNLMarkerError(message, scanLines) {
17265    this.message = message;
17266    this.scanLines = scanLines;
17267  }
17268  DNLMarkerError.prototype = new Error();
17269  DNLMarkerError.prototype.name = 'DNLMarkerError';
17270  DNLMarkerError.constructor = DNLMarkerError;
17271  return DNLMarkerError;
17272}();
17273var EOIMarkerError = function EOIMarkerErrorClosure() {
17274  function EOIMarkerError(message) {
17275    this.message = message;
17276  }
17277  EOIMarkerError.prototype = new Error();
17278  EOIMarkerError.prototype.name = 'EOIMarkerError';
17279  EOIMarkerError.constructor = EOIMarkerError;
17280  return EOIMarkerError;
17281}();
17282var JpegImage = function JpegImageClosure() {
17283  var dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]);
17284  var dctCos1 = 4017;
17285  var dctSin1 = 799;
17286  var dctCos3 = 3406;
17287  var dctSin3 = 2276;
17288  var dctCos6 = 1567;
17289  var dctSin6 = 3784;
17290  var dctSqrt2 = 5793;
17291  var dctSqrt1d2 = 2896;
17292  function JpegImage() {
17293    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
17294        _ref$decodeTransform = _ref.decodeTransform,
17295        decodeTransform = _ref$decodeTransform === undefined ? null : _ref$decodeTransform,
17296        _ref$colorTransform = _ref.colorTransform,
17297        colorTransform = _ref$colorTransform === undefined ? -1 : _ref$colorTransform;
17298
17299    this._decodeTransform = decodeTransform;
17300    this._colorTransform = colorTransform;
17301  }
17302  function buildHuffmanTable(codeLengths, values) {
17303    var k = 0,
17304        code = [],
17305        i,
17306        j,
17307        length = 16;
17308    while (length > 0 && !codeLengths[length - 1]) {
17309      length--;
17310    }
17311    code.push({
17312      children: [],
17313      index: 0
17314    });
17315    var p = code[0],
17316        q;
17317    for (i = 0; i < length; i++) {
17318      for (j = 0; j < codeLengths[i]; j++) {
17319        p = code.pop();
17320        p.children[p.index] = values[k];
17321        while (p.index > 0) {
17322          p = code.pop();
17323        }
17324        p.index++;
17325        code.push(p);
17326        while (code.length <= i) {
17327          code.push(q = {
17328            children: [],
17329            index: 0
17330          });
17331          p.children[p.index] = q.children;
17332          p = q;
17333        }
17334        k++;
17335      }
17336      if (i + 1 < length) {
17337        code.push(q = {
17338          children: [],
17339          index: 0
17340        });
17341        p.children[p.index] = q.children;
17342        p = q;
17343      }
17344    }
17345    return code[0].children;
17346  }
17347  function getBlockBufferOffset(component, row, col) {
17348    return 64 * ((component.blocksPerLine + 1) * row + col);
17349  }
17350  function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive) {
17351    var parseDNLMarker = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;
17352
17353    var mcusPerLine = frame.mcusPerLine;
17354    var progressive = frame.progressive;
17355    var startOffset = offset,
17356        bitsData = 0,
17357        bitsCount = 0;
17358    function readBit() {
17359      if (bitsCount > 0) {
17360        bitsCount--;
17361        return bitsData >> bitsCount & 1;
17362      }
17363      bitsData = data[offset++];
17364      if (bitsData === 0xFF) {
17365        var nextByte = data[offset++];
17366        if (nextByte) {
17367          if (nextByte === 0xDC && parseDNLMarker) {
17368            offset += 2;
17369            var scanLines = data[offset++] << 8 | data[offset++];
17370            if (scanLines > 0 && scanLines !== frame.scanLines) {
17371              throw new DNLMarkerError('Found DNL marker (0xFFDC) while parsing scan data', scanLines);
17372            }
17373          } else if (nextByte === 0xD9) {
17374            throw new EOIMarkerError('Found EOI marker (0xFFD9) while parsing scan data');
17375          }
17376          throw new JpegError('unexpected marker ' + (bitsData << 8 | nextByte).toString(16));
17377        }
17378      }
17379      bitsCount = 7;
17380      return bitsData >>> 7;
17381    }
17382    function decodeHuffman(tree) {
17383      var node = tree;
17384      while (true) {
17385        node = node[readBit()];
17386        if (typeof node === 'number') {
17387          return node;
17388        }
17389        if ((typeof node === 'undefined' ? 'undefined' : _typeof(node)) !== 'object') {
17390          throw new JpegError('invalid huffman sequence');
17391        }
17392      }
17393    }
17394    function receive(length) {
17395      var n = 0;
17396      while (length > 0) {
17397        n = n << 1 | readBit();
17398        length--;
17399      }
17400      return n;
17401    }
17402    function receiveAndExtend(length) {
17403      if (length === 1) {
17404        return readBit() === 1 ? 1 : -1;
17405      }
17406      var n = receive(length);
17407      if (n >= 1 << length - 1) {
17408        return n;
17409      }
17410      return n + (-1 << length) + 1;
17411    }
17412    function decodeBaseline(component, offset) {
17413      var t = decodeHuffman(component.huffmanTableDC);
17414      var diff = t === 0 ? 0 : receiveAndExtend(t);
17415      component.blockData[offset] = component.pred += diff;
17416      var k = 1;
17417      while (k < 64) {
17418        var rs = decodeHuffman(component.huffmanTableAC);
17419        var s = rs & 15,
17420            r = rs >> 4;
17421        if (s === 0) {
17422          if (r < 15) {
17423            break;
17424          }
17425          k += 16;
17426          continue;
17427        }
17428        k += r;
17429        var z = dctZigZag[k];
17430        component.blockData[offset + z] = receiveAndExtend(s);
17431        k++;
17432      }
17433    }
17434    function decodeDCFirst(component, offset) {
17435      var t = decodeHuffman(component.huffmanTableDC);
17436      var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;
17437      component.blockData[offset] = component.pred += diff;
17438    }
17439    function decodeDCSuccessive(component, offset) {
17440      component.blockData[offset] |= readBit() << successive;
17441    }
17442    var eobrun = 0;
17443    function decodeACFirst(component, offset) {
17444      if (eobrun > 0) {
17445        eobrun--;
17446        return;
17447      }
17448      var k = spectralStart,
17449          e = spectralEnd;
17450      while (k <= e) {
17451        var rs = decodeHuffman(component.huffmanTableAC);
17452        var s = rs & 15,
17453            r = rs >> 4;
17454        if (s === 0) {
17455          if (r < 15) {
17456            eobrun = receive(r) + (1 << r) - 1;
17457            break;
17458          }
17459          k += 16;
17460          continue;
17461        }
17462        k += r;
17463        var z = dctZigZag[k];
17464        component.blockData[offset + z] = receiveAndExtend(s) * (1 << successive);
17465        k++;
17466      }
17467    }
17468    var successiveACState = 0,
17469        successiveACNextValue;
17470    function decodeACSuccessive(component, offset) {
17471      var k = spectralStart;
17472      var e = spectralEnd;
17473      var r = 0;
17474      var s;
17475      var rs;
17476      while (k <= e) {
17477        var offsetZ = offset + dctZigZag[k];
17478        var sign = component.blockData[offsetZ] < 0 ? -1 : 1;
17479        switch (successiveACState) {
17480          case 0:
17481            rs = decodeHuffman(component.huffmanTableAC);
17482            s = rs & 15;
17483            r = rs >> 4;
17484            if (s === 0) {
17485              if (r < 15) {
17486                eobrun = receive(r) + (1 << r);
17487                successiveACState = 4;
17488              } else {
17489                r = 16;
17490                successiveACState = 1;
17491              }
17492            } else {
17493              if (s !== 1) {
17494                throw new JpegError('invalid ACn encoding');
17495              }
17496              successiveACNextValue = receiveAndExtend(s);
17497              successiveACState = r ? 2 : 3;
17498            }
17499            continue;
17500          case 1:
17501          case 2:
17502            if (component.blockData[offsetZ]) {
17503              component.blockData[offsetZ] += sign * (readBit() << successive);
17504            } else {
17505              r--;
17506              if (r === 0) {
17507                successiveACState = successiveACState === 2 ? 3 : 0;
17508              }
17509            }
17510            break;
17511          case 3:
17512            if (component.blockData[offsetZ]) {
17513              component.blockData[offsetZ] += sign * (readBit() << successive);
17514            } else {
17515              component.blockData[offsetZ] = successiveACNextValue << successive;
17516              successiveACState = 0;
17517            }
17518            break;
17519          case 4:
17520            if (component.blockData[offsetZ]) {
17521              component.blockData[offsetZ] += sign * (readBit() << successive);
17522            }
17523            break;
17524        }
17525        k++;
17526      }
17527      if (successiveACState === 4) {
17528        eobrun--;
17529        if (eobrun === 0) {
17530          successiveACState = 0;
17531        }
17532      }
17533    }
17534    function decodeMcu(component, decode, mcu, row, col) {
17535      var mcuRow = mcu / mcusPerLine | 0;
17536      var mcuCol = mcu % mcusPerLine;
17537      var blockRow = mcuRow * component.v + row;
17538      var blockCol = mcuCol * component.h + col;
17539      var offset = getBlockBufferOffset(component, blockRow, blockCol);
17540      decode(component, offset);
17541    }
17542    function decodeBlock(component, decode, mcu) {
17543      var blockRow = mcu / component.blocksPerLine | 0;
17544      var blockCol = mcu % component.blocksPerLine;
17545      var offset = getBlockBufferOffset(component, blockRow, blockCol);
17546      decode(component, offset);
17547    }
17548    var componentsLength = components.length;
17549    var component, i, j, k, n;
17550    var decodeFn;
17551    if (progressive) {
17552      if (spectralStart === 0) {
17553        decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;
17554      } else {
17555        decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;
17556      }
17557    } else {
17558      decodeFn = decodeBaseline;
17559    }
17560    var mcu = 0,
17561        fileMarker;
17562    var mcuExpected;
17563    if (componentsLength === 1) {
17564      mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;
17565    } else {
17566      mcuExpected = mcusPerLine * frame.mcusPerColumn;
17567    }
17568    var h, v;
17569    while (mcu < mcuExpected) {
17570      var mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;
17571      for (i = 0; i < componentsLength; i++) {
17572        components[i].pred = 0;
17573      }
17574      eobrun = 0;
17575      if (componentsLength === 1) {
17576        component = components[0];
17577        for (n = 0; n < mcuToRead; n++) {
17578          decodeBlock(component, decodeFn, mcu);
17579          mcu++;
17580        }
17581      } else {
17582        for (n = 0; n < mcuToRead; n++) {
17583          for (i = 0; i < componentsLength; i++) {
17584            component = components[i];
17585            h = component.h;
17586            v = component.v;
17587            for (j = 0; j < v; j++) {
17588              for (k = 0; k < h; k++) {
17589                decodeMcu(component, decodeFn, mcu, j, k);
17590              }
17591            }
17592          }
17593          mcu++;
17594        }
17595      }
17596      bitsCount = 0;
17597      fileMarker = findNextFileMarker(data, offset);
17598      if (fileMarker && fileMarker.invalid) {
17599        (0, _util.warn)('decodeScan - unexpected MCU data, current marker is: ' + fileMarker.invalid);
17600        offset = fileMarker.offset;
17601      }
17602      var marker = fileMarker && fileMarker.marker;
17603      if (!marker || marker <= 0xFF00) {
17604        throw new JpegError('marker was not found');
17605      }
17606      if (marker >= 0xFFD0 && marker <= 0xFFD7) {
17607        offset += 2;
17608      } else {
17609        break;
17610      }
17611    }
17612    fileMarker = findNextFileMarker(data, offset);
17613    if (fileMarker && fileMarker.invalid) {
17614      (0, _util.warn)('decodeScan - unexpected Scan data, current marker is: ' + fileMarker.invalid);
17615      offset = fileMarker.offset;
17616    }
17617    return offset - startOffset;
17618  }
17619  function quantizeAndInverse(component, blockBufferOffset, p) {
17620    var qt = component.quantizationTable,
17621        blockData = component.blockData;
17622    var v0, v1, v2, v3, v4, v5, v6, v7;
17623    var p0, p1, p2, p3, p4, p5, p6, p7;
17624    var t;
17625    if (!qt) {
17626      throw new JpegError('missing required Quantization Table.');
17627    }
17628    for (var row = 0; row < 64; row += 8) {
17629      p0 = blockData[blockBufferOffset + row];
17630      p1 = blockData[blockBufferOffset + row + 1];
17631      p2 = blockData[blockBufferOffset + row + 2];
17632      p3 = blockData[blockBufferOffset + row + 3];
17633      p4 = blockData[blockBufferOffset + row + 4];
17634      p5 = blockData[blockBufferOffset + row + 5];
17635      p6 = blockData[blockBufferOffset + row + 6];
17636      p7 = blockData[blockBufferOffset + row + 7];
17637      p0 *= qt[row];
17638      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {
17639        t = dctSqrt2 * p0 + 512 >> 10;
17640        p[row] = t;
17641        p[row + 1] = t;
17642        p[row + 2] = t;
17643        p[row + 3] = t;
17644        p[row + 4] = t;
17645        p[row + 5] = t;
17646        p[row + 6] = t;
17647        p[row + 7] = t;
17648        continue;
17649      }
17650      p1 *= qt[row + 1];
17651      p2 *= qt[row + 2];
17652      p3 *= qt[row + 3];
17653      p4 *= qt[row + 4];
17654      p5 *= qt[row + 5];
17655      p6 *= qt[row + 6];
17656      p7 *= qt[row + 7];
17657      v0 = dctSqrt2 * p0 + 128 >> 8;
17658      v1 = dctSqrt2 * p4 + 128 >> 8;
17659      v2 = p2;
17660      v3 = p6;
17661      v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8;
17662      v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8;
17663      v5 = p3 << 4;
17664      v6 = p5 << 4;
17665      v0 = v0 + v1 + 1 >> 1;
17666      v1 = v0 - v1;
17667      t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8;
17668      v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8;
17669      v3 = t;
17670      v4 = v4 + v6 + 1 >> 1;
17671      v6 = v4 - v6;
17672      v7 = v7 + v5 + 1 >> 1;
17673      v5 = v7 - v5;
17674      v0 = v0 + v3 + 1 >> 1;
vendor: 2,012 bytes, lines 17675-17736
17675      v3 = v0 - v3;
17676      v1 = v1 + v2 + 1 >> 1;
17677      v2 = v1 - v2;
17678      t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;
17679      v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;
17680      v7 = t;
17681      t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;
17682      v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;
17683      v6 = t;
17684      p[row] = v0 + v7;
17685      p[row + 7] = v0 - v7;
17686      p[row + 1] = v1 + v6;
17687      p[row + 6] = v1 - v6;
17688      p[row + 2] = v2 + v5;
17689      p[row + 5] = v2 - v5;
17690      p[row + 3] = v3 + v4;
17691      p[row + 4] = v3 - v4;
17692    }
17693    for (var col = 0; col < 8; ++col) {
17694      p0 = p[col];
17695      p1 = p[col + 8];
17696      p2 = p[col + 16];
17697      p3 = p[col + 24];
17698      p4 = p[col + 32];
17699      p5 = p[col + 40];
17700      p6 = p[col + 48];
17701      p7 = p[col + 56];
17702      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {
17703        t = dctSqrt2 * p0 + 8192 >> 14;
17704        t = t < -2040 ? 0 : t >= 2024 ? 255 : t + 2056 >> 4;
17705        blockData[blockBufferOffset + col] = t;
17706        blockData[blockBufferOffset + col + 8] = t;
17707        blockData[blockBufferOffset + col + 16] = t;
17708        blockData[blockBufferOffset + col + 24] = t;
17709        blockData[blockBufferOffset + col + 32] = t;
17710        blockData[blockBufferOffset + col + 40] = t;
17711        blockData[blockBufferOffset + col + 48] = t;
17712        blockData[blockBufferOffset + col + 56] = t;
17713        continue;
17714      }
17715      v0 = dctSqrt2 * p0 + 2048 >> 12;
17716      v1 = dctSqrt2 * p4 + 2048 >> 12;
17717      v2 = p2;
17718      v3 = p6;
17719      v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12;
17720      v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12;
17721      v5 = p3;
17722      v6 = p5;
17723      v0 = (v0 + v1 + 1 >> 1) + 4112;
17724      v1 = v0 - v1;
17725      t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12;
17726      v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12;
17727      v3 = t;
17728      v4 = v4 + v6 + 1 >> 1;
17729      v6 = v4 - v6;
17730      v7 = v7 + v5 + 1 >> 1;
17731      v5 = v7 - v5;
17732      v0 = v0 + v3 + 1 >> 1;
17733      v3 = v0 - v3;
17734      v1 = v1 + v2 + 1 >> 1;
17735      v2 = v1 - v2;
17736      t = v4 * dctSin3 + v7 * dctCos3 + 2048 >>
17736 12;
17737      v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;
17738      v7 = t;
17739      t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;
17740      v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;
17741      v6 = t;
17742      p0 = v0 + v7;
17743      p7 = v0 - v7;
17744      p1 = v1 + v6;
17745      p6 = v1 - v6;
17746      p2 = v2 + v5;
17747      p5 = v2 - v5;
17748      p3 = v3 + v4;
17749      p4 = v3 - v4;
17750      p0 = p0 < 16 ? 0 : p0 >= 4080 ? 255 : p0 >> 4;
17751      p1 = p1 < 16 ? 0 : p1 >= 4080 ? 255 : p1 >> 4;
17752      p2 = p2 < 16 ? 0 : p2 >= 4080 ? 255 : p2 >> 4;
17753      p3 = p3 < 16 ? 0 : p3 >= 4080 ? 255 : p3 >> 4;
17754      p4 = p4 < 16 ? 0 : p4 >= 4080 ? 255 : p4 >> 4;
17755      p5 = p5 < 16 ? 0 : p5 >= 4080 ? 255 : p5 >> 4;
17756      p6 = p6 < 16 ? 0 : p6 >= 4080 ? 255 : p6 >> 4;
17757      p7 = p7 < 16 ? 0 : p7 >= 4080 ? 255 : p7 >> 4;
17758      blockData[blockBufferOffset + col] = p0;
17759      blockData[blockBufferOffset + col + 8] = p1;
17760      blockData[blockBufferOffset + col + 16] = p2;
17761      blockData[blockBufferOffset + col + 24] = p3;
17762      blockData[blockBufferOffset + col + 32] = p4;
17763      blockData[blockBufferOffset + col + 40] = p5;
17764      blockData[blockBufferOffset + col + 48] = p6;
17765      blockData[blockBufferOffset + col + 56] = p7;
17766    }
17767  }
17768  function buildComponentData(frame, component) {
17769    var blocksPerLine = component.blocksPerLine;
17770    var blocksPerColumn = component.blocksPerColumn;
17771    var computationBuffer = new Int16Array(64);
17772    for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {
17773      for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {
17774        var offset = getBlockBufferOffset(component, blockRow, blockCol);
17775        quantizeAndInverse(component, offset, computationBuffer);
17776      }
17777    }
17778    return component.blockData;
17779  }
17780  function findNextFileMarker(data, currentPos) {
17781    var startPos = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentPos;
17782
17783    function peekUint16(pos) {
17784      return data[pos] << 8 | data[pos + 1];
17785    }
17786    var maxPos = data.length - 1;
17787    var newPos = startPos < currentPos ? startPos : currentPos;
17788    if (currentPos >= maxPos) {
17789      return null;
17790    }
17791    var currentMarker = peekUint16(currentPos);
17792    if (currentMarker >= 0xFFC0 && currentMarker <= 0xFFFE) {
17793      return {
17794        invalid: null,
17795        marker: currentMarker,
17796        offset: currentPos
17797      };
17798    }
17799    var newMarker = peekUint16(newPos);
17800    while (!(newMarker >= 0xFFC0 && newMarker <= 0xFFFE)) {
17801      if (++newPos >= maxPos) {
17802        return null;
17803      }
17804      newMarker = peekUint16(newPos);
17805    }
17806    return {
17807      invalid: currentMarker.toString(16),
17808      marker: newMarker,
17809      offset: newPos
17810    };
17811  }
17812  JpegImage.prototype = {
17813    parse: function parse(data) {
17814      var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
17815          _ref2$dnlScanLines = _ref2.dnlScanLines,
17816          dnlScanLines = _ref2$dnlScanLines === undefined ? null : _ref2$dnlScanLines;
17817
17818      function readUint16() {
17819        var value = data[offset] << 8 | data[offset + 1];
17820        offset += 2;
17821        return value;
17822      }
17823      function readDataBlock() {
17824        var length = readUint16();
17825        var endOffset = offset + length - 2;
17826        var fileMarker = findNextFileMarker(data, endOffset, offset);
17827        if (fileMarker && fileMarker.invalid) {
17828          (0, _util.warn)('readDataBlock - incorrect length, current marker is: ' + fileMarker.invalid);
17829          endOffset = fileMarker.offset;
17830        }
17831        var array = data.subarray(offset, endOffset);
17832        offset += array.length;
17833        return array;
17834      }
17835      function prepareComponents(frame) {
17836        var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);
17837        var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);
17838        for (var i = 0; i < frame.components.length; i++) {
17839          component = frame.components[i];
17840          var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);
17841          var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);
17842          var blocksPerLineForMcu = mcusPerLine * component.h;
17843          var blocksPerColumnForMcu = mcusPerColumn * component.v;
17844          var blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);
17845          component.blockData = new Int16Array(blocksBufferSize);
17846          component.blocksPerLine = blocksPerLine;
17847          component.blocksPerColumn = blocksPerColumn;
17848        }
17849        frame.mcusPerLine = mcusPerLine;
17850        frame.mcusPerColumn = mcusPerColumn;
17851      }
17852      var offset = 0;
17853      var jfif = null;
17854      var adobe = null;
17855      var frame, resetInterval;
17856      var numSOSMarkers = 0;
17857      var quantizationTables = [];
17858      var huffmanTablesAC = [],
17859          huffmanTablesDC = [];
17860      var fileMarker = readUint16();
17861      if (fileMarker !== 0xFFD8) {
17862        throw new JpegError('SOI not found');
17863      }
17864      fileMarker = readUint16();
17865      markerLoop: while (fileMarker !== 0xFFD9) {
17866        var i, j, l;
17867        switch (fileMarker) {
17868          case 0xFFE0:
17869          case 0xFFE1:
17870          case 0xFFE2:
17871          case 0xFFE3:
17872          case 0xFFE4:
17873          case 0xFFE5:
17874          case 0xFFE6:
17875          case 0xFFE7:
17876          case 0xFFE8:
17877          case 0xFFE9:
17878          case 0xFFEA:
17879          case 0xFFEB:
17880          case 0xFFEC:
17881          case 0xFFED:
17882          case 0xFFEE:
17883          case 0xFFEF:
17884          case 0xFFFE:
17885            var appData = readDataBlock();
17886            if (fileMarker === 0xFFE0) {
17887              if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {
17888                jfif = {
17889                  version: {
17890                    major: appData[5],
17891                    minor: appData[6]
17892                  },
17893                  densityUnits: appData[7],
17894                  xDensity: appData[8] << 8 | appData[9],
17895                  yDensity: appData[10] << 8 | appData[11],
17896                  thumbWidth: appData[12],
17897                  thumbHeight: appData[13],
17898                  thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])
17899                };
17900              }
17901            }
17902            if (fileMarker === 0xFFEE) {
17903              if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F && appData[3] === 0x62 && appData[4] === 0x65) {
17904                adobe = {
17905                  version: appData[5] << 8 | appData[6],
17906                  flags0: appData[7] << 8 | appData[8],
17907                  flags1: appData[9] << 8 | appData[10],
17908                  transformCode: appData[11]
17909                };
17910              }
17911            }
17912            break;
17913          case 0xFFDB:
17914            var quantizationTablesLength = readUint16();
17915            var quantizationTablesEnd = quantizationTablesLength + offset - 2;
17916            var z;
17917            while (offset < quantizationTablesEnd) {
17918              var quantizationTableSpec = data[offset++];
17919              var tableData = new Uint16Array(64);
17920              if (quantizationTableSpec >> 4 === 0) {
17921                for (j = 0; j < 64; j++) {
17922                  z = dctZigZag[j];
17923                  tableData[z] = data[offset++];
17924                }
17925              } else if (quantizationTableSpec >> 4 === 1) {
17926                for (j = 0; j < 64; j++) {
17927                  z = dctZigZag[j];
17928                  tableData[z] = readUint16();
17929                }
17930              } else {
17931                throw new JpegError('DQT - invalid table spec');
17932              }
17933              quantizationTables[quantizationTableSpec & 15] = tableData;
17934            }
17935            break;
17936          case 0xFFC0:
17937          case 0xFFC1:
17938          case 0xFFC2:
17939            if (frame) {
17940              throw new JpegError('Only single frame JPEGs supported');
17941            }
17942            readUint16();
17943            frame = {};
17944            frame.extended = fileMarker === 0xFFC1;
17945            frame.progressive = fileMarker === 0xFFC2;
17946            frame.precision = data[offset++];
17947            var sofScanLines = readUint16();
17948            frame.scanLines = dnlScanLines || sofScanLines;
17949            frame.samplesPerLine = readUint16();
17950            frame.components = [];
17951            frame.componentIds = {};
17952            var componentsCount = data[offset++],
17953                componentId;
17954            var maxH = 0,
17955                maxV = 0;
17956            for (i = 0; i < componentsCount; i++) {
17957              componentId = data[offset];
17958              var h = data[offset + 1] >> 4;
17959              var v = data[offset + 1] & 15;
17960              if (maxH < h) {
17961                maxH = h;
17962              }
17963              if (maxV < v) {
17964                maxV = v;
17965              }
17966              var qId = data[offset + 2];
17967              l = frame.components.push({
17968                h: h,
17969                v: v,
17970                quantizationId: qId,
17971                quantizationTable: null
17972              });
17973              frame.componentIds[componentId] = l - 1;
17974              offset += 3;
17975            }
17976            frame.maxH = maxH;
17977            frame.maxV = maxV;
17978            prepareComponents(frame);
17979            break;
17980          case 0xFFC4:
17981            var huffmanLength = readUint16();
17982            for (i = 2; i < huffmanLength;) {
17983              var huffmanTableSpec = data[offset++];
17984              var codeLengths = new Uint8Array(16);
17985              var codeLengthSum = 0;
17986              for (j = 0; j < 16; j++, offset++) {
17987                codeLengthSum += codeLengths[j] = data[offset];
17988              }
17989              var huffmanValues = new Uint8Array(codeLengthSum);
17990              for (j = 0; j < codeLengthSum; j++, offset++) {
17991                huffmanValues[j] = data[offset];
17992              }
17993              i += 17 + codeLengthSum;
17994              (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);
17995            }
17996            break;
17997          case 0xFFDD:
17998            readUint16();
17999            resetInterval = readUint16();
18000            break;
18001          case 0xFFDA:
18002            var parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;
18003            readUint16();
18004            var selectorsCount = data[offset++];
18005            var components = [],
18006                component;
18007            for (i = 0; i < selectorsCount; i++) {
18008              var componentIndex = frame.componentIds[data[offset++]];
18009              component = frame.components[componentIndex];
18010              var tableSpec = data[offset++];
18011              component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];
18012              component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];
18013              components.push(component);
18014            }
18015            var spectralStart = data[offset++];
18016            var spectralEnd = data[offset++];
18017            var successiveApproximation = data[offset++];
18018            try {
18019              var processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);
18020              offset += processed;
18021            } catch (ex) {
18022              if (ex instanceof DNLMarkerError) {
18023                (0, _util.warn)(ex.message + ' -- attempting to re-parse the JPEG image.');
18024                return this.parse(data, { dnlScanLines: ex.scanLines });
18025              } else if (ex instanceof EOIMarkerError) {
18026                (0, _util.warn)(ex.message + ' -- ignoring the rest of the image data.');
18027                break markerLoop;
18028              }
18029              throw ex;
18030            }
18031            break;
18032          case 0xFFDC:
18033            offset += 4;
18034            break;
18035          case 0xFFFF:
18036            if (data[offset] !== 0xFF) {
18037              offset--;
18038            }
18039            break;
18040          default:
18041            if (data[offset - 3] === 0xFF && data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) {
18042              offset -= 3;
18043              break;
18044            }
18045            var nextFileMarker = findNextFileMarker(data, offset - 2);
18046            if (nextFileMarker && nextFileMarker.invalid) {
18047              (0, _util.warn)('JpegImage.parse - unexpected data, current marker is: ' + nextFileMarker.invalid);
18048              offset = nextFileMarker.offset;
18049              break;
18050            }
18051            throw new JpegError('unknown marker ' + fileMarker.toString(16));
18052        }
18053        fileMarker = readUint16();
18054      }
18055      this.width = frame.samplesPerLine;
18056      this.height = frame.scanLines;
18057      this.jfif = jfif;
18058      this.adobe = adobe;
18059      this.components = [];
18060      for (i = 0; i < frame.components.length; i++) {
18061        component = frame.components[i];
18062        var quantizationTable = quantizationTables[component.quantizationId];
18063        if (quantizationTable) {
18064          component.quantizationTable = quantizationTable;
18065        }
18066        this.components.push({
18067          output: buildComponentData(frame, component),
18068          scaleX: component.h / frame.maxH,
18069          scaleY: component.v / frame.maxV,
18070          blocksPerLine: component.blocksPerLine,
18071          blocksPerColumn: component.blocksPerColumn
18072        });
18073      }
18074      this.numComponents = this.components.length;
18075    },
18076    _getLinearizedBlockData: function _getLinearizedBlockData(width, height) {
18077      var isSourcePDF = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
18078
18079      var scaleX = this.width / width,
18080          scaleY = this.height / height;
18081      var component, componentScaleX, componentScaleY, blocksPerScanline;
18082      var x, y, i, j, k;
18083      var index;
18084      var offset = 0;
18085      var output;
18086      var numComponents = this.components.length;
18087      var dataLength = width * height * numComponents;
18088      var data = new Uint8ClampedArray(dataLength);
18089      var xScaleBlockOffset = new Uint32Array(width);
18090      var mask3LSB = 0xfffffff8;
18091      for (i = 0; i < numComponents; i++) {
18092        component = this.components[i];
18093        componentScaleX = component.scaleX * scaleX;
18094        componentScaleY = component.scaleY * scaleY;
18095        offset = i;
18096        output = component.output;
18097        blocksPerScanline = component.blocksPerLine + 1 << 3;
18098        for (x = 0; x < width; x++) {
18099          j = 0 | x * componentScaleX;
18100          xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7;
18101        }
18102        for (y = 0; y < height; y++) {
18103          j = 0 | y * componentScaleY;
18104          index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3;
18105          for (x = 0; x < width; x++) {
18106            data[offset] = output[index + xScaleBlockOffset[x]];
18107            offset += numComponents;
18108          }
18109        }
18110      }
18111      var transform = this._decodeTransform;
18112      if (!isSourcePDF && numComponents === 4 && !transform) {
18113        transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);
18114      }
18115      if (transform) {
18116        for (i = 0; i < dataLength;) {
18117          for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {
18118            data[i] = (data[i] * transform[k] >> 8) + transform[k + 1];
18119          }
18120        }
18121      }
18122      return data;
18123    },
18124
18125    get _isColorConversionNeeded() {
18126      if (this.adobe) {
18127        return !!this.adobe.transformCode;
18128      }
18129      if (this.numComponents === 3) {
18130        if (this._colorTransform === 0) {
18131          return false;
18132        }
18133        return true;
18134      }
18135      if (this._colorTransform === 1) {
18136        return true;
18137      }
18138      return false;
18139    },
18140    _convertYccToRgb: function convertYccToRgb(data) {
18141      var Y, Cb, Cr;
18142      for (var i = 0, length = data.length; i < length; i += 3) {
18143        Y = data[i];
18144        Cb = data[i + 1];
18145        Cr = data[i + 2];
18146        data[i] = Y - 179.456 + 1.402 * Cr;
18147        data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;
18148        data[i + 2] = Y - 226.816 + 1.772 * Cb;
18149      }
18150      return data;
18151    },
18152    _convertYcckToRgb: function convertYcckToRgb(data) {
18153      var Y, Cb, Cr, k;
18154      var offset = 0;
18155      for (var i = 0, length = data.length; i < length; i += 4) {
18156        Y = data[i];
18157        Cb = data[i + 1];
18158        Cr = data[i + 2];
18159        k = data[i + 3];
18160        data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);
18161        data[offset++] = 107.268039397724 + Cb * (2.19927104525741e
18161-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);
18162        data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);
18163      }
18164      return data.subarray(0, offset);
18165    },
18166    _convertYcckToCmyk: function convertYcckToCmyk(data) {
18167      var Y, Cb, Cr;
18168      for (var i = 0, length = data.length; i < length; i += 4) {
18169        Y = data[i];
18170        Cb = data[i + 1];
18171        Cr = data[i + 2];
18172        data[i] = 434.456 - Y - 1.402 * Cr;
18173        data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;
18174        data[i + 2] = 481.816 - Y - 1.772 * Cb;
18175      }
18176      return data;
18177    },
18178    _convertCmykToRgb: function convertCmykToRgb(data) {
18179      var c, m, y, k;
18180      var offset = 0;
18181      var scale = 1 / 255;
18182      for (var i = 0, length = data.length; i < length; i += 4) {
18183        c = data[i] * scale;
18184        m = data[i + 1] * scale;
18185        y = data[i + 2] * scale;
18186        k = data[i + 3] * scale;
18187        data[offset++] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k - 285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y - 17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) - k * (21.86122147463605 * k + 189.48180835922747);
18188        data[offset++] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k - 79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) - k * (20.737325471181034 * k + 187.80453709719578);
18189        data[offset++] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k - 14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k - 193.58209356861505) - k * (22.33816807309886 * k + 180.12613974708367);
18190      }
18191      return data.subarray(0, offset);
18192    },
18193    getData: function getData(_ref3) {
18194      var width = _ref3.width,
18195          height = _ref3.height,
18196          _ref3$forceRGB = _ref3.forceRGB,
18197          forceRGB = _ref3$forceRGB === undefined ? false : _ref3$forceRGB,
18198          _ref3$isSourcePDF = _ref3.isSourcePDF,
18199          isSourcePDF = _ref3$isSourcePDF === undefined ? false : _ref3$isSourcePDF;
18200
18201      if (this.numComponents > 4) {
18202        throw new JpegError('Unsupported color mode');
18203      }
18204      var data = this._getLinearizedBlockData(width, height, isSourcePDF);
18205      if (this.numComponents === 1 && forceRGB) {
18206        var dataLength = data.length;
18207        var rgbData = new Uint8ClampedArray(dataLength * 3);
18208        var offset = 0;
18209        for (var i = 0; i < dataLength; i++) {
18210          var grayColor = data[i];
18211          rgbData[offset++] = grayColor;
18212          rgbData[offset++] = grayColor;
18213          rgbData[offset++] = grayColor;
18214        }
18215        return rgbData;
18216      } else if (this.numComponents === 3 && this._isColorConversionNeeded) {
18217        return this._convertYccToRgb(data);
18218      } else if (this.numComponents === 4) {
18219        if (this._isColorConversionNeeded) {
18220          if (forceRGB) {
18221            return this._convertYcckToRgb(data);
18222          }
18223          return this._convertYcckToCmyk(data);
18224        } else if (forceRGB) {
18225          return this._convertCmykToRgb(data);
18226        }
18227      }
18228      return data;
18229    }
18230  };
18231  return JpegImage;
18232}();
18233exports.JpegImage = JpegImage;
18234
18235/***/ }),
18236/* 148 */
18237/***/ (function(module, exports, __w_pdfjs_require__) {
18238
18239"use strict";
18240
18241
18242Object.defineProperty(exports, "__esModule", {
18243  value: true
18244});
18245exports.JpxStream = undefined;
18246
18247var _stream = __w_pdfjs_require__(140);
18248
18249var _jpx = __w_pdfjs_require__(149);
18250
18251var _util = __w_pdfjs_require__(2);
18252
18253var JpxStream = function JpxStreamClosure() {
18254  function JpxStream(stream, maybeLength, dict, params) {
18255    this.stream = stream;
18256    this.maybeLength = maybeLength;
18257    this.dict = dict;
18258    this.params = params;
18259    _stream.DecodeStream.call(this, maybeLength);
18260  }
18261  JpxStream.prototype = Object.create(_stream.DecodeStream.prototype);
18262  Object.defineProperty(JpxStream.prototype, 'bytes', {
18263    get: function JpxStream_bytes() {
18264      return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength));
18265    },
18266    configurable: true
18267  });
18268  JpxStream.prototype.ensureBuffer = function (requested) {};
18269  JpxStream.prototype.readBlock = function () {
18270    if (this.eof) {
18271      return;
18272    }
18273    var jpxImage = new _jpx.JpxImage();
18274    jpxImage.parse(this.bytes);
18275    var width = jpxImage.width;
18276    var height = jpxImage.height;
18277    var componentsCount = jpxImage.componentsCount;
18278    var tileCount = jpxImage.tiles.length;
18279    if (tileCount === 1) {
18280      this.buffer = jpxImage.tiles[0].items;
18281    } else {
18282      var data = new Uint8ClampedArray(width * height * componentsCount);
18283      for (var k = 0; k < tileCount; k++) {
18284        var tileComponents = jpxImage.tiles[k];
18285        var tileWidth = tileComponents.width;
18286        var tileHeight = tileComponents.height;
18287        var tileLeft = tileComponents.left;
18288        var tileTop = tileComponents.top;
18289        var src = tileComponents.items;
18290        var srcPosition = 0;
18291        var dataPosition = (width * tileTop + tileLeft) * componentsCount;
18292        var imgRowSize = width * componentsCount;
18293        var tileRowSize = tileWidth * componentsCount;
18294        for (var j = 0; j < tileHeight; j++) {
18295          var rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);
18296          data.set(rowBytes, dataPosition);
18297          srcPosition += tileRowSize;
18298          dataPosition += imgRowSize;
18299        }
18300      }
18301      this.buffer = data;
18302    }
18303    this.bufferLength = this.buffer.length;
18304    this.eof = true;
18305  };
18306  return JpxStream;
18307}();
18308exports.JpxStream = JpxStream;
18309
18310/***/ }),
18311/* 149 */
18312/***/ (function(module, exports, __w_pdfjs_require__) {
18313
18314"use strict";
18315
18316
18317Object.defineProperty(exports, "__esModule", {
18318  value: true
18319});
18320exports.JpxImage = undefined;
18321
18322var _util = __w_pdfjs_require__(2);
18323
18324var _arithmetic_decoder = __w_pdfjs_require__(145);
18325
18326var JpxError = function JpxErrorClosure() {
18327  function JpxError(msg) {
18328    this.message = 'JPX error: ' + msg;
18329  }
18330  JpxError.prototype = new Error();
18331  JpxError.prototype.name = 'JpxError';
18332  JpxError.constructor = JpxError;
18333  return JpxError;
18334}();
18335var JpxImage = function JpxImageClosure() {
18336  var SubbandsGainLog2 = {
18337    'LL': 0,
18338    'LH': 1,
18339    'HL': 1,
18340    'HH': 2
18341  };
18342  function JpxImage() {
18343    this.failOnCorruptedImage = false;
18344  }
18345  JpxImage.prototype = {
18346    parse: function JpxImage_parse(data) {
18347      var head = (0, _util.readUint16)(data, 0);
18348      if (head === 0xFF4F) {
18349        this.parseCodestream(data, 0, data.length);
18350        return;
18351      }
18352      var position = 0,
18353          length = data.length;
18354      while (position < length) {
18355        var headerSize = 8;
18356        var lbox = (0, _util.readUint32)(data, position);
18357        var tbox = (0, _util.readUint32)(data, position + 4);
18358        position += headerSize;
18359        if (lbox === 1) {
18360          lbox = (0, _util.readUint32)(data, position) * 4294967296 + (0, _util.readUint32)(data, position + 4);
18361          position += 8;
18362          headerSize += 8;
18363        }
18364        if (lbox === 0) {
18365          lbox = length - position + headerSize;
18366        }
18367        if (lbox < headerSize) {
18368          throw new JpxError('Invalid box field size');
18369        }
18370        var dataLength = lbox - headerSize;
18371        var jumpDataLength = true;
18372        switch (tbox) {
18373          case 0x6A703268:
18374            jumpDataLength = false;
18375            break;
18376          case 0x636F6C72:
18377            var method = data[position];
18378            if (method === 1) {
18379              var colorspace = (0, _util.readUint32)(data, position + 3);
18380              switch (colorspace) {
18381                case 16:
18382                case 17:
18383                case 18:
18384                  break;
18385                default:
18386                  (0, _util.warn)('Unknown colorspace ' + colorspace);
18387                  break;
18388              }
18389            } else if (method === 2) {
18390              (0, _util.info)('ICC profile not supported');
18391            }
18392            break;
18393          case 0x6A703263:
18394            this.parseCodestream(data, position, position + dataLength);
18395            break;
18396          case 0x6A502020:
18397            if ((0, _util.readUint32)(data, position) !== 0x0d0a870a) {
18398              (0, _util.warn)('Invalid JP2 signature');
18399            }
18400            break;
18401          case 0x6A501A1A:
18402          case 0x66747970:
18403          case 0x72726571:
18404          case 0x72657320:
18405          case 0x69686472:
18406            break;
18407          default:
18408            var headerType = String.fromCharCode(tbox >> 24 & 0xFF, tbox >> 16 & 0xFF, tbox >> 8 & 0xFF, tbox & 0xFF);
18409            (0, _util.warn)('Unsupported header type ' + tbox + ' (' + headerType + ')');
18410            break;
18411        }
18412        if (jumpDataLength) {
18413          position += dataLength;
18414        }
18415      }
18416    },
18417    parseImageProperties: function JpxImage_parseImageProperties(stream) {
18418      var newByte = stream.getByte();
18419      while (newByte >= 0) {
18420        var oldByte = newByte;
18421        newByte = stream.getByte();
18422        var code = oldByte << 8 | newByte;
18423        if (code === 0xFF51) {
18424          stream.skip(4);
18425          var Xsiz = stream.getInt32() >>> 0;
18426          var Ysiz = stream.getInt32() >>> 0;
18427          var XOsiz = stream.getInt32() >>> 0;
18428          var YOsiz = stream.getInt32() >>> 0;
18429          stream.skip(16);
18430          var Csiz = stream.getUint16();
18431          this.width = Xsiz - XOsiz;
18432          this.height = Ysiz - YOsiz;
18433          this.componentsCount = Csiz;
18434          this.bitsPerComponent = 8;
18435          return;
18436        }
18437      }
18438      throw new JpxError('No size marker found in JPX stream');
18439    },
18440    parseCodestream: function JpxImage_parseCodestream(data, start, end) {
18441      var context = {};
18442      var doNotRecover = false;
18443      try {
18444        var position = start;
18445        while (position + 1 < end) {
18446          var code = (0, _util.readUint16)(data, position);
18447          position += 2;
18448          var length = 0,
18449              j,
18450              sqcd,
18451              spqcds,
18452              spqcdSize,
18453              scalarExpounded,
18454              tile;
18455          switch (code) {
18456            case 0xFF4F:
18457              context.mainHeader = true;
18458              break;
18459            case 0xFFD9:
18460              break;
18461            case 0xFF51:
18462              length = (0, _util.readUint16)(data, position);
18463              var siz = {};
18464              siz.Xsiz = (0, _util.readUint32)(data, position + 4);
18465              siz.Ysiz = (0, _util.readUint32)(data, position + 8);
18466              siz.XOsiz = (0, _util.readUint32)(data, position + 12);
18467              siz.YOsiz = (0, _util.readUint32)(data, position + 16);
18468              siz.XTsiz = (0, _util.readUint32)(data, position + 20);
18469              siz.YTsiz = (0, _util.readUint32)(data, position + 24);
18470              siz.XTOsiz = (0, _util.readUint32)(data, position + 28);
18471              siz.YTOsiz = (0, _util.readUint32)(data, position + 32);
18472              var componentsCount = (0, _util.readUint16)(data, position + 36);
18473              siz.Csiz = componentsCount;
18474              var components = [];
18475              j = position + 38;
18476              for (var i = 0; i < componentsCount; i++) {
18477                var component = {
18478                  precision: (data[j] & 0x7F) + 1,
18479                  isSigned: !!(data[j] & 0x80),
18480                  XRsiz: data[j + 1],
18481                  YRsiz: data[j + 2]
18482                };
18483                j += 3;
18484                calculateComponentDimensions(component, siz);
18485                components.push(component);
18486              }
18487              context.SIZ = siz;
18488              context.components = components;
18489              calculateTileGrids(context, components);
18490              context.QCC = [];
18491              context.COC = [];
18492              break;
18493            case 0xFF5C:
18494              length = (0, _util.readUint16)(data, position);
18495              var qcd = {};
18496              j = position + 2;
18497              sqcd = data[j++];
18498              switch (sqcd & 0x1F) {
18499                case 0:
18500                  spqcdSize = 8;
18501                  scalarExpounded = true;
18502                  break;
18503                case 1:
18504                  spqcdSize = 16;
18505                  scalarExpounded = false;
18506                  break;
18507                case 2:
18508                  spqcdSize = 16;
18509                  scalarExpounded = true;
18510                  break;
18511                default:
18512                  throw new Error('Invalid SQcd value ' + sqcd);
18513              }
18514              qcd.noQuantization = spqcdSize === 8;
18515              qcd.scalarExpounded = scalarExpounded;
18516              qcd.guardBits = sqcd >> 5;
18517              spqcds = [];
18518              while (j < length + position) {
18519                var spqcd = {};
18520                if (spqcdSize === 8) {
18521                  spqcd.epsilon = data[j++] >> 3;
18522                  spqcd.mu = 0;
18523                } else {
18524                  spqcd.epsilon = data[j] >> 3;
18525                  spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];
18526                  j += 2;
18527                }
18528                spqcds.push(spqcd);
18529              }
18530              qcd.SPqcds = spqcds;
18531              if (context.mainHeader) {
18532                context.QCD = qcd;
18533              } else {
18534                context.currentTile.QCD = qcd;
18535                context.currentTile.QCC = [];
18536              }
18537              break;
18538            case 0xFF5D:
18539              length = (0, _util.readUint16)(data, position);
18540              var qcc = {};
18541              j = position + 2;
18542              var cqcc;
18543              if (context.SIZ.Csiz < 257) {
18544                cqcc = data[j++];
18545              } else {
18546                cqcc = (0, _util.readUint16)(data, j);
18547                j += 2;
18548              }
18549              sqcd = data[j++];
18550              switch (sqcd & 0x1F) {
18551                case 0:
18552                  spqcdSize = 8;
18553                  scalarExpounded = true;
18554                  break;
18555                case 1:
18556                  spqcdSize = 16;
18557                  scalarExpounded = false;
18558                  break;
18559                case 2:
18560                  spqcdSize = 16;
18561                  scalarExpounded = true;
18562                  break;
18563                default:
18564                  throw new Error('Invalid SQcd value ' + sqcd);
18565              }
18566              qcc.noQuantization = spqcdSize === 8;
18567              qcc.scalarExpounded = scalarExpounded;
18568              qcc.guardBits = sqcd >> 5;
18569              spqcds = [];
18570              while (j < length + position) {
18571                spqcd = {};
18572                if (spqcdSize === 8) {
18573                  spqcd.epsilon = data[j++] >> 3;
18574                  spqcd.mu = 0;
18575                } else {
18576                  spqcd.epsilon = data[j] >> 3;
18577                  spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];
18578                  j += 2;
18579                }
18580                spqcds.push(spqcd);
18581              }
18582              qcc.SPqcds = spqcds;
18583              if (context.mainHeader) {
18584                context.QCC[cqcc] = qcc;
18585              } else {
18586                context.currentTile.QCC[cqcc] = qcc;
18587              }
18588              break;
18589            case 0xFF52:
18590              length = (0, _util.readUint16)(data, position);
18591              var cod = {};
18592              j = position + 2;
18593              var scod = data[j++];
18594              cod.entropyCoderWithCustomPrecincts = !!(scod & 1);
18595              cod.sopMarkerUsed = !!(scod & 2);
18596              cod.ephMarkerUsed = !!(scod & 4);
18597              cod.progressionOrder = data[j++];
18598              cod.layersCount = (0, _util.readUint16)(data, j);
18599              j += 2;
18600              cod.multipleComponentTransform = data[j++];
18601              cod.decompositionLevelsCount = data[j++];
18602              cod.xcb = (data[j++] & 0xF) + 2;
18603              cod.ycb = (data[j++] & 0xF) + 2;
18604              var blockStyle = data[j++];
18605              cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);
18606              cod.resetContextProbabilities = !!(blockStyle & 2);
18607              cod.terminationOnEachCodingPass = !!(blockStyle & 4);
18608              cod.verticallyStripe = !!(blockStyle & 8);
18609              cod.predictableTermination = !!(blockStyle & 16);
18610              cod.segmentationSymbolUsed = !!(blockStyle & 32);
18611              cod.reversibleTransformation = data[j++];
18612              if (cod.entropyCoderWithCustomPrecincts) {
18613                var precinctsSizes = [];
18614                while (j < length + position) {
18615                  var precinctsSize = data[j++];
18616                  precinctsSizes.push({
18617                    PPx: precinctsSize & 0xF,
18618                    PPy: precinctsSize >> 4
18619                  });
18620                }
18621                cod.precinctsSizes = precinctsSizes;
18622              }
18623              var unsupported = [];
18624              if (cod.selectiveArithmeticCodingBypass) {
18625                unsupported.push('selectiveArithmeticCodingBypass');
18626              }
18627              if (cod.resetContextProbabilities) {
18628                unsupported.push('resetContextProbabilities');
18629              }
18630              if (cod.terminationOnEachCodingPass) {
18631                unsupported.push('terminationOnEachCodingPass');
18632              }
18633              if (cod.verticallyStripe) {
18634                unsupported.push('verticallyStripe');
18635              }
18636              if (cod.predictableTermination) {
18637                unsupported.push('predictableTermination');
18638              }
18639              if (unsupported.length > 0) {
18640                doNotRecover = true;
18641                throw new Error('Unsupported COD options (' + unsupported.join(', ') + ')');
18642              }
18643              if (context.mainHeader) {
18644                context.COD = cod;
18645              } else {
18646                context.currentTile.COD = cod;
18647                context.currentTile.COC = [];
18648              }
18649              break;
18650            case 0xFF90:
18651              length = (0, _util.readUint16)(data, position);
18652              tile = {};
18653              tile.index = (0, _util.readUint16)(data, position + 2);
18654              tile.length = (0, _util.readUint32)(data, position + 4);
18655              tile.dataEnd = tile.length + position - 2;
18656              tile.partIndex = data[position + 8];
18657              tile.partsCount = data[position + 9];
18658              context.mainHeader = false;
vendor: 7,159 bytes, lines 18659-18825
18659              if (tile.partIndex === 0) {
18660                tile.COD = context.COD;
18661                tile.COC = context.COC.slice(0);
18662                tile.QCD = context.QCD;
18663                tile.QCC = context.QCC.slice(0);
18664              }
18665              context.currentTile = tile;
18666              break;
18667            case 0xFF93:
18668              tile = context.currentTile;
18669              if (tile.partIndex === 0) {
18670                initializeTile(context, tile.index);
18671                buildPackets(context);
18672              }
18673              length = tile.dataEnd - position;
18674              parseTilePackets(context, data, position, length);
18675              break;
18676            case 0xFF55:
18677            case 0xFF57:
18678            case 0xFF58:
18679            case 0xFF64:
18680              length = (0, _util.readUint16)(data, position);
18681              break;
18682            case 0xFF53:
18683              throw new Error('Codestream code 0xFF53 (COC) is ' + 'not implemented');
18684            default:
18685              throw new Error('Unknown codestream code: ' + code.toString(16));
18686          }
18687          position += length;
18688        }
18689      } catch (e) {
18690        if (doNotRecover || this.failOnCorruptedImage) {
18691          throw new JpxError(e.message);
18692        } else {
18693          (0, _util.warn)('JPX: Trying to recover from: ' + e.message);
18694        }
18695      }
18696      this.tiles = transformComponents(context);
18697      this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;
18698      this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;
18699      this.componentsCount = context.SIZ.Csiz;
18700    }
18701  };
18702  function calculateComponentDimensions(component, siz) {
18703    component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);
18704    component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);
18705    component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);
18706    component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);
18707    component.width = component.x1 - component.x0;
18708    component.height = component.y1 - component.y0;
18709  }
18710  function calculateTileGrids(context, components) {
18711    var siz = context.SIZ;
18712    var tile,
18713        tiles = [];
18714    var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);
18715    var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);
18716    for (var q = 0; q < numYtiles; q++) {
18717      for (var p = 0; p < numXtiles; p++) {
18718        tile = {};
18719        tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);
18720        tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);
18721        tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);
18722        tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);
18723        tile.width = tile.tx1 - tile.tx0;
18724        tile.height = tile.ty1 - tile.ty0;
18725        tile.components = [];
18726        tiles.push(tile);
18727      }
18728    }
18729    context.tiles = tiles;
18730    var componentsCount = siz.Csiz;
18731    for (var i = 0, ii = componentsCount; i < ii; i++) {
18732      var component = components[i];
18733      for (var j = 0, jj = tiles.length; j < jj; j++) {
18734        var tileComponent = {};
18735        tile = tiles[j];
18736        tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);
18737        tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);
18738        tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);
18739        tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);
18740        tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;
18741        tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;
18742        tile.components[i] = tileComponent;
18743      }
18744    }
18745  }
18746  function getBlocksDimensions(context, component, r) {
18747    var codOrCoc = component.codingStyleParameters;
18748    var result = {};
18749    if (!codOrCoc.entropyCoderWithCustomPrecincts) {
18750      result.PPx = 15;
18751      result.PPy = 15;
18752    } else {
18753      result.PPx = codOrCoc.precinctsSizes[r].PPx;
18754      result.PPy = codOrCoc.precinctsSizes[r].PPy;
18755    }
18756    result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : Math.min(codOrCoc.xcb, result.PPx);
18757    result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : Math.min(codOrCoc.ycb, result.PPy);
18758    return result;
18759  }
18760  function buildPrecincts(context, resolution, dimensions) {
18761    var precinctWidth = 1 << dimensions.PPx;
18762    var precinctHeight = 1 << dimensions.PPy;
18763    var isZeroRes = resolution.resLevel === 0;
18764    var precinctWidthInSubband = 1 << dimensions.PPx + (isZeroRes ? 0 : -1);
18765    var precinctHeightInSubband = 1 << dimensions.PPy + (isZeroRes ? 0 : -1);
18766    var numprecinctswide = resolution.trx1 > resolution.trx0 ? Math.ceil(resolution.trx1 / precinctWidth) - Math.floor(resolution.trx0 / precinctWidth) : 0;
18767    var numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - Math.floor(resolution.try0 / precinctHeight) : 0;
18768    var numprecincts = numprecinctswide * numprecinctshigh;
18769    resolution.precinctParameters = {
18770      precinctWidth: precinctWidth,
18771      precinctHeight: precinctHeight,
18772      numprecinctswide: numprecinctswide,
18773      numprecinctshigh: numprecinctshigh,
18774      numprecincts: numprecincts,
18775      precinctWidthInSubband: precinctWidthInSubband,
18776      precinctHeightInSubband: precinctHeightInSubband
18777    };
18778  }
18779  function buildCodeblocks(context, subband, dimensions) {
18780    var xcb_ = dimensions.xcb_;
18781    var ycb_ = dimensions.ycb_;
18782    var codeblockWidth = 1 << xcb_;
18783    var codeblockHeight = 1 << ycb_;
18784    var cbx0 = subband.tbx0 >> xcb_;
18785    var cby0 = subband.tby0 >> ycb_;
18786    var cbx1 = subband.tbx1 + codeblockWidth - 1 >> xcb_;
18787    var cby1 = subband.tby1 + codeblockHeight - 1 >> ycb_;
18788    var precinctParameters = subband.resolution.precinctParameters;
18789    var codeblocks = [];
18790    var precincts = [];
18791    var i, j, codeblock, precinctNumber;
18792    for (j = cby0; j < cby1; j++) {
18793      for (i = cbx0; i < cbx1; i++) {
18794        codeblock = {
18795          cbx: i,
18796          cby: j,
18797          tbx0: codeblockWidth * i,
18798          tby0: codeblockHeight * j,
18799          tbx1: codeblockWidth * (i + 1),
18800          tby1: codeblockHeight * (j + 1)
18801        };
18802        codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);
18803        codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);
18804        codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);
18805        codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);
18806        var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / precinctParameters.precinctWidthInSubband);
18807        var pj = Math.floor((codeblock.tby0_ - subband.tby0) / precinctParameters.precinctHeightInSubband);
18808        precinctNumber = pi + pj * precinctParameters.numprecinctswide;
18809        codeblock.precinctNumber = precinctNumber;
18810        codeblock.subbandType = subband.type;
18811        codeblock.Lblock = 3;
18812        if (codeblock.tbx1_ <= codeblock.tbx0_ || codeblock.tby1_ <= codeblock.tby0_) {
18813          continue;
18814        }
18815        codeblocks.push(codeblock);
18816        var precinct = precincts[precinctNumber];
18817        if (precinct !== undefined) {
18818          if (i < precinct.cbxMin) {
18819            precinct.cbxMin = i;
18820          } else if (i > precinct.cbxMax) {
18821            precinct.cbxMax = i;
18822          }
18823          if (j < precinct.cbyMin) {
18824            precinct.cbxMin = j;
18825          } else if (j >
vendor: 25,242 bytes, lines 18825-19499
18825 precinct.cbyMax) {
18826            precinct.cbyMax = j;
18827          }
18828        } else {
18829          precincts[precinctNumber] = precinct = {
18830            cbxMin: i,
18831            cbyMin: j,
18832            cbxMax: i,
18833            cbyMax: j
18834          };
18835        }
18836        codeblock.precinct = precinct;
18837      }
18838    }
18839    subband.codeblockParameters = {
18840      codeblockWidth: xcb_,
18841      codeblockHeight: ycb_,
18842      numcodeblockwide: cbx1 - cbx0 + 1,
18843      numcodeblockhigh: cby1 - cby0 + 1
18844    };
18845    subband.codeblocks = codeblocks;
18846    subband.precincts = precincts;
18847  }
18848  function createPacket(resolution, precinctNumber, layerNumber) {
18849    var precinctCodeblocks = [];
18850    var subbands = resolution.subbands;
18851    for (var i = 0, ii = subbands.length; i < ii; i++) {
18852      var subband = subbands[i];
18853      var codeblocks = subband.codeblocks;
18854      for (var j = 0, jj = codeblocks.length; j < jj; j++) {
18855        var codeblock = codeblocks[j];
18856        if (codeblock.precinctNumber !== precinctNumber) {
18857          continue;
18858        }
18859        precinctCodeblocks.push(codeblock);
18860      }
18861    }
18862    return {
18863      layerNumber: layerNumber,
18864      codeblocks: precinctCodeblocks
18865    };
18866  }
18867  function LayerResolutionComponentPositionIterator(context) {
18868    var siz = context.SIZ;
18869    var tileIndex = context.currentTile.index;
18870    var tile = context.tiles[tileIndex];
18871    var layersCount = tile.codingStyleDefaultParameters.layersCount;
18872    var componentsCount = siz.Csiz;
18873    var maxDecompositionLevelsCount = 0;
18874    for (var q = 0; q < componentsCount; q++) {
18875      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount);
18876    }
18877    var l = 0,
18878        r = 0,
18879        i = 0,
18880        k = 0;
18881    this.nextPacket = function JpxImage_nextPacket() {
18882      for (; l < layersCount; l++) {
18883        for (; r <= maxDecompositionLevelsCount; r++) {
18884          for (; i < componentsCount; i++) {
18885            var component = tile.components[i];
18886            if (r > component.codingStyleParameters.decompositionLevelsCount) {
18887              continue;
18888            }
18889            var resolution = component.resolutions[r];
18890            var numprecincts = resolution.precinctParameters.numprecincts;
18891            for (; k < numprecincts;) {
18892              var packet = createPacket(resolution, k, l);
18893              k++;
18894              return packet;
18895            }
18896            k = 0;
18897          }
18898          i = 0;
18899        }
18900        r = 0;
18901      }
18902      throw new JpxError('Out of packets');
18903    };
18904  }
18905  function ResolutionLayerComponentPositionIterator(context) {
18906    var siz = context.SIZ;
18907    var tileIndex = context.currentTile.index;
18908    var tile = context.tiles[tileIndex];
18909    var layersCount = tile.codingStyleDefaultParameters.layersCount;
18910    var componentsCount = siz.Csiz;
18911    var maxDecompositionLevelsCount = 0;
18912    for (var q = 0; q < componentsCount; q++) {
18913      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount);
18914    }
18915    var r = 0,
18916        l = 0,
18917        i = 0,
18918        k = 0;
18919    this.nextPacket = function JpxImage_nextPacket() {
18920      for (; r <= maxDecompositionLevelsCount; r++) {
18921        for (; l < layersCount; l++) {
18922          for (; i < componentsCount; i++) {
18923            var component = tile.components[i];
18924            if (r > component.codingStyleParameters.decompositionLevelsCount) {
18925              continue;
18926            }
18927            var resolution = component.resolutions[r];
18928            var numprecincts = resolution.precinctParameters.numprecincts;
18929            for (; k < numprecincts;) {
18930              var packet = createPacket(resolution, k, l);
18931              k++;
18932              return packet;
18933            }
18934            k = 0;
18935          }
18936          i = 0;
18937        }
18938        l = 0;
18939      }
18940      throw new JpxError('Out of packets');
18941    };
18942  }
18943  function ResolutionPositionComponentLayerIterator(context) {
18944    var siz = context.SIZ;
18945    var tileIndex = context.currentTile.index;
18946    var tile = context.tiles[tileIndex];
18947    var layersCount = tile.codingStyleDefaultParameters.layersCount;
18948    var componentsCount = siz.Csiz;
18949    var l, r, c, p;
18950    var maxDecompositionLevelsCount = 0;
18951    for (c = 0; c < componentsCount; c++) {
18952      var component = tile.components[c];
18953      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, component.codingStyleParameters.decompositionLevelsCount);
18954    }
18955    var maxNumPrecinctsInLevel = new Int32Array(maxDecompositionLevelsCount + 1);
18956    for (r = 0; r <= maxDecompositionLevelsCount; ++r) {
18957      var maxNumPrecincts = 0;
18958      for (c = 0; c < componentsCount; ++c) {
18959        var resolutions = tile.components[c].resolutions;
18960        if (r < resolutions.length) {
18961          maxNumPrecincts = Math.max(maxNumPrecincts, resolutions[r].precinctParameters.numprecincts);
18962        }
18963      }
18964      maxNumPrecinctsInLevel[r] = maxNumPrecincts;
18965    }
18966    l = 0;
18967    r = 0;
18968    c = 0;
18969    p = 0;
18970    this.nextPacket = function JpxImage_nextPacket() {
18971      for (; r <= maxDecompositionLevelsCount; r++) {
18972        for (; p < maxNumPrecinctsInLevel[r]; p++) {
18973          for (; c < componentsCount; c++) {
18974            var component = tile.components[c];
18975            if (r > component.codingStyleParameters.decompositionLevelsCount) {
18976              continue;
18977            }
18978            var resolution = component.resolutions[r];
18979            var numprecincts = resolution.precinctParameters.numprecincts;
18980            if (p >= numprecincts) {
18981              continue;
18982            }
18983            for (; l < layersCount;) {
18984              var packet = createPacket(resolution, p, l);
18985              l++;
18986              return packet;
18987            }
18988            l = 0;
18989          }
18990          c = 0;
18991        }
18992        p = 0;
18993      }
18994      throw new JpxError('Out of packets');
18995    };
18996  }
18997  function PositionComponentResolutionLayerIterator(context) {
18998    var siz = context.SIZ;
18999    var tileIndex = context.currentTile.index;
19000    var tile = context.tiles[tileIndex];
19001    var layersCount = tile.codingStyleDefaultParameters.layersCount;
19002    var componentsCount = siz.Csiz;
19003    var precinctsSizes = getPrecinctSizesInImageScale(tile);
19004    var precinctsIterationSizes = precinctsSizes;
19005    var l = 0,
19006        r = 0,
19007        c = 0,
19008        px = 0,
19009        py = 0;
19010    this.nextPacket = function JpxImage_nextPacket() {
19011      for (; py < precinctsIterationSizes.maxNumHigh; py++) {
19012        for (; px < precinctsIterationSizes.maxNumWide; px++) {
19013          for (; c < componentsCount; c++) {
19014            var component = tile.components[c];
19015            var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
19016            for (; r <= decompositionLevelsCount; r++) {
19017              var resolution = component.resolutions[r];
19018              var sizeInImageScale = precinctsSizes.components[c].resolutions[r];
19019              var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);
19020              if (k === null) {
19021                continue;
19022              }
19023              for (; l < layersCount;) {
19024                var packet = createPacket(resolution, k, l);
19025                l++;
19026                return packet;
19027              }
19028              l = 0;
19029            }
19030            r = 0;
19031          }
19032          c = 0;
19033        }
19034        px = 0;
19035      }
19036      throw new JpxError('Out of packets');
19037    };
19038  }
19039  function ComponentPositionResolutionLayerIterator(context) {
19040    var siz = context.SIZ;
19041    var tileIndex = context.currentTile.index;
19042    var tile = context.tiles[tileIndex];
19043    var layersCount = tile.codingStyleDefaultParameters.layersCount;
19044    var componentsCount = siz.Csiz;
19045    var precinctsSizes = getPrecinctSizesInImageScale(tile);
19046    var l = 0,
19047        r = 0,
19048        c = 0,
19049        px = 0,
19050        py = 0;
19051    this.nextPacket = function JpxImage_nextPacket() {
19052      for (; c < componentsCount; ++c) {
19053        var component = tile.components[c];
19054        var precinctsIterationSizes = precinctsSizes.components[c];
19055        var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
19056        for (; py < precinctsIterationSizes.maxNumHigh; py++) {
19057          for (; px < precinctsIterationSizes.maxNumWide; px++) {
19058            for (; r <= decompositionLevelsCount; r++) {
19059              var resolution = component.resolutions[r];
19060              var sizeInImageScale = precinctsIterationSizes.resolutions[r];
19061              var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);
19062              if (k === null) {
19063                continue;
19064              }
19065              for (; l < layersCount;) {
19066                var packet = createPacket(resolution, k, l);
19067                l++;
19068                return packet;
19069              }
19070              l = 0;
19071            }
19072            r = 0;
19073          }
19074          px = 0;
19075        }
19076        py = 0;
19077      }
19078      throw new JpxError('Out of packets');
19079    };
19080  }
19081  function getPrecinctIndexIfExist(pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) {
19082    var posX = pxIndex * precinctIterationSizes.minWidth;
19083    var posY = pyIndex * precinctIterationSizes.minHeight;
19084    if (posX % sizeInImageScale.width !== 0 || posY % sizeInImageScale.height !== 0) {
19085      return null;
19086    }
19087    var startPrecinctRowIndex = posY / sizeInImageScale.width * resolution.precinctParameters.numprecinctswide;
19088    return posX / sizeInImageScale.height + startPrecinctRowIndex;
19089  }
19090  function getPrecinctSizesInImageScale(tile) {
19091    var componentsCount = tile.components.length;
19092    var minWidth = Number.MAX_VALUE;
19093    var minHeight = Number.MAX_VALUE;
19094    var maxNumWide = 0;
19095    var maxNumHigh = 0;
19096    var sizePerComponent = new Array(componentsCount);
19097    for (var c = 0; c < componentsCount; c++) {
19098      var component = tile.components[c];
19099      var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
19100      var sizePerResolution = new Array(decompositionLevelsCount + 1);
19101      var minWidthCurrentComponent = Number.MAX_VALUE;
19102      var minHeightCurrentComponent = Number.MAX_VALUE;
19103      var maxNumWideCurrentComponent = 0;
19104      var maxNumHighCurrentComponent = 0;
19105      var scale = 1;
19106      for (var r = decompositionLevelsCount; r >= 0; --r) {
19107        var resolution = component.resolutions[r];
19108        var widthCurrentResolution = scale * resolution.precinctParameters.precinctWidth;
19109        var heightCurrentResolution = scale * resolution.precinctParameters.precinctHeight;
19110        minWidthCurrentComponent = Math.min(minWidthCurrentComponent, widthCurrentResolution);
19111        minHeightCurrentComponent = Math.min(minHeightCurrentComponent, heightCurrentResolution);
19112        maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, resolution.precinctParameters.numprecinctswide);
19113        maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, resolution.precinctParameters.numprecinctshigh);
19114        sizePerResolution[r] = {
19115          width: widthCurrentResolution,
19116          height: heightCurrentResolution
19117        };
19118        scale <<= 1;
19119      }
19120      minWidth = Math.min(minWidth, minWidthCurrentComponent);
19121      minHeight = Math.min(minHeight, minHeightCurrentComponent);
19122      maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);
19123      maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);
19124      sizePerComponent[c] = {
19125        resolutions: sizePerResolution,
19126        minWidth: minWidthCurrentComponent,
19127        minHeight: minHeightCurrentComponent,
19128        maxNumWide: maxNumWideCurrentComponent,
19129        maxNumHigh: maxNumHighCurrentComponent
19130      };
19131    }
19132    return {
19133      components: sizePerComponent,
19134      minWidth: minWidth,
19135      minHeight: minHeight,
19136      maxNumWide: maxNumWide,
19137      maxNumHigh: maxNumHigh
19138    };
19139  }
19140  function buildPackets(context) {
19141    var siz = context.SIZ;
19142    var tileIndex = context.currentTile.index;
19143    var tile = context.tiles[tileIndex];
19144    var componentsCount = siz.Csiz;
19145    for (var c = 0; c < componentsCount; c++) {
19146      var component = tile.components[c];
19147      var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
19148      var resolutions = [];
19149      var subbands = [];
19150      for (var r = 0; r <= decompositionLevelsCount; r++) {
19151        var blocksDimensions = getBlocksDimensions(context, component, r);
19152        var resolution = {};
19153        var scale = 1 << decompositionLevelsCount - r;
19154        resolution.trx0 = Math.ceil(component.tcx0 / scale);
19155        resolution.try0 = Math.ceil(component.tcy0 / scale);
19156        resolution.trx1 = Math.ceil(component.tcx1 / scale);
19157        resolution.try1 = Math.ceil(component.tcy1 / scale);
19158        resolution.resLevel = r;
19159        buildPrecincts(context, resolution, blocksDimensions);
19160        resolutions.push(resolution);
19161        var subband;
19162        if (r === 0) {
19163          subband = {};
19164          subband.type = 'LL';
19165          subband.tbx0 = Math.ceil(component.tcx0 / scale);
19166          subband.tby0 = Math.ceil(component.tcy0 / scale);
19167          subband.tbx1 = Math.ceil(component.tcx1 / scale);
19168          subband.tby1 = Math.ceil(component.tcy1 / scale);
19169          subband.resolution = resolution;
19170          buildCodeblocks(context, subband, blocksDimensions);
19171          subbands.push(subband);
19172          resolution.subbands = [subband];
19173        } else {
19174          var bscale = 1 << decompositionLevelsCount - r + 1;
19175          var resolutionSubbands = [];
19176          subband = {};
19177          subband.type = 'HL';
19178          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
19179          subband.tby0 = Math.ceil(component.tcy0 / bscale);
19180          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
19181          subband.tby1 = Math.ceil(component.tcy1 / bscale);
19182          subband.resolution = resolution;
19183          buildCodeblocks(context, subband, blocksDimensions);
19184          subbands.push(subband);
19185          resolutionSubbands.push(subband);
19186          subband = {};
19187          subband.type = 'LH';
19188          subband.tbx0 = Math.ceil(component.tcx0 / bscale);
19189          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
19190          subband.tbx1 = Math.ceil(component.tcx1 / bscale);
19191          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);
19192          subband.resolution = resolution;
19193          buildCodeblocks(context, subband, blocksDimensions);
19194          subbands.push(subband);
19195          resolutionSubbands.push(subband);
19196          subband = {};
19197          subband.type = 'HH';
19198          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
19199          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
19200          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
19201          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);
19202          subband.resolution = resolution;
19203          buildCodeblocks(context, subband, blocksDimensions);
19204          subbands.push(subband);
19205          resolutionSubbands.push(subband);
19206          resolution.subbands = resolutionSubbands;
19207        }
19208      }
19209      component.resolutions = resolutions;
19210      component.subbands = subbands;
19211    }
19212    var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;
19213    switch (progressionOrder) {
19214      case 0:
19215        tile.packetsIterator = new LayerResolutionComponentPositionIterator(context);
19216        break;
19217      case 1:
19218        tile.packetsIterator = new ResolutionLayerComponentPositionIterator(context);
19219        break;
19220      case 2:
19221        tile.packetsIterator = new ResolutionPositionComponentLayerIterator(context);
19222        break;
19223      case 3:
19224        tile.packetsIterator = new PositionComponentResolutionLayerIterator(context);
19225        break;
19226      case 4:
19227        tile.packetsIterator = new ComponentPositionResolutionLayerIterator(context);
19228        break;
19229      default:
19230        throw new JpxError('Unsupported progression order ' + progressionOrder);
19231    }
19232  }
19233  function parseTilePackets(context, data, offset, dataLength) {
19234    var position = 0;
19235    var buffer,
19236        bufferSize = 0,
19237        skipNextBit = false;
19238    function readBits(count) {
19239      while (bufferSize < count) {
19240        var b = data[offset + position];
19241        position++;
19242        if (skipNextBit) {
19243          buffer = buffer << 7 | b;
19244          bufferSize += 7;
19245          skipNextBit = false;
19246        } else {
19247          buffer = buffer << 8 | b;
19248          bufferSize += 8;
19249        }
19250        if (b === 0xFF) {
19251          skipNextBit = true;
19252        }
19253      }
19254      bufferSize -= count;
19255      return buffer >>> bufferSize & (1 << count) - 1;
19256    }
19257    function skipMarkerIfEqual(value) {
19258      if (data[offset + position - 1] === 0xFF && data[offset + position] === value) {
19259        skipBytes(1);
19260        return true;
19261      } else if (data[offset + position] === 0xFF && data[offset + position + 1] === value) {
19262        skipBytes(2);
19263        return true;
19264      }
19265      return false;
19266    }
19267    function skipBytes(count) {
19268      position += count;
19269    }
19270    function alignToByte() {
19271      bufferSize = 0;
19272      if (skipNextBit) {
19273        position++;
19274        skipNextBit = false;
19275      }
19276    }
19277    function readCodingpasses() {
19278      if (readBits(1) === 0) {
19279        return 1;
19280      }
19281      if (readBits(1) === 0) {
19282        return 2;
19283      }
19284      var value = readBits(2);
19285      if (value < 3) {
19286        return value + 3;
19287      }
19288      value = readBits(5);
19289      if (value < 31) {
19290        return value + 6;
19291      }
19292      value = readBits(7);
19293      return value + 37;
19294    }
19295    var tileIndex = context.currentTile.index;
19296    var tile = context.tiles[tileIndex];
19297    var sopMarkerUsed = context.COD.sopMarkerUsed;
19298    var ephMarkerUsed = context.COD.ephMarkerUsed;
19299    var packetsIterator = tile.packetsIterator;
19300    while (position < dataLength) {
19301      alignToByte();
19302      if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {
19303        skipBytes(4);
19304      }
19305      var packet = packetsIterator.nextPacket();
19306      if (!readBits(1)) {
19307        continue;
19308      }
19309      var layerNumber = packet.layerNumber;
19310      var queue = [],
19311          codeblock;
19312      for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {
19313        codeblock = packet.codeblocks[i];
19314        var precinct = codeblock.precinct;
19315        var codeblockColumn = codeblock.cbx - precinct.cbxMin;
19316        var codeblockRow = codeblock.cby - precinct.cbyMin;
19317        var codeblockIncluded = false;
19318        var firstTimeInclusion = false;
19319        var valueReady;
19320        if (codeblock['included'] !== undefined) {
19321          codeblockIncluded = !!readBits(1);
19322        } else {
19323          precinct = codeblock.precinct;
19324          var inclusionTree, zeroBitPlanesTree;
19325          if (precinct['inclusionTree'] !== undefined) {
19326            inclusionTree = precinct.inclusionTree;
19327          } else {
19328            var width = precinct.cbxMax - precinct.cbxMin + 1;
19329            var height = precinct.cbyMax - precinct.cbyMin + 1;
19330            inclusionTree = new InclusionTree(width, height, layerNumber);
19331            zeroBitPlanesTree = new TagTree(width, height);
19332            precinct.inclusionTree = inclusionTree;
19333            precinct.zeroBitPlanesTree = zeroBitPlanesTree;
19334          }
19335          if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {
19336            while (true) {
19337              if (readBits(1)) {
19338                valueReady = !inclusionTree.nextLevel();
19339                if (valueReady) {
19340                  codeblock.included = true;
19341                  codeblockIncluded = firstTimeInclusion = true;
19342                  break;
19343                }
19344              } else {
19345                inclusionTree.incrementValue(layerNumber);
19346                break;
19347              }
19348            }
19349          }
19350        }
19351        if (!codeblockIncluded) {
19352          continue;
19353        }
19354        if (firstTimeInclusion) {
19355          zeroBitPlanesTree = precinct.zeroBitPlanesTree;
19356          zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);
19357          while (true) {
19358            if (readBits(1)) {
19359              valueReady = !zeroBitPlanesTree.nextLevel();
19360              if (valueReady) {
19361                break;
19362              }
19363            } else {
19364              zeroBitPlanesTree.incrementValue();
19365            }
19366          }
19367          codeblock.zeroBitPlanes = zeroBitPlanesTree.value;
19368        }
19369        var codingpasses = readCodingpasses();
19370        while (readBits(1)) {
19371          codeblock.Lblock++;
19372        }
19373        var codingpassesLog2 = (0, _util.log2)(codingpasses);
19374        var bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;
19375        var codedDataLength = readBits(bits);
19376        queue.push({
19377          codeblock: codeblock,
19378          codingpasses: codingpasses,
19379          dataLength: codedDataLength
19380        });
19381      }
19382      alignToByte();
19383      if (ephMarkerUsed) {
19384        skipMarkerIfEqual(0x92);
19385      }
19386      while (queue.length > 0) {
19387        var packetItem = queue.shift();
19388        codeblock = packetItem.codeblock;
19389        if (codeblock['data'] === undefined) {
19390          codeblock.data = [];
19391        }
19392        codeblock.data.push({
19393          data: data,
19394          start: offset + position,
19395          end: offset + position + packetItem.dataLength,
19396          codingpasses: packetItem.codingpasses
19397        });
19398        position += packetItem.dataLength;
19399      }
19400    }
19401    return position;
19402  }
19403  function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, segmentationSymbolUsed) {
19404    var x0 = subband.tbx0;
19405    var y0 = subband.tby0;
19406    var width = subband.tbx1 - subband.tbx0;
19407    var codeblocks = subband.codeblocks;
19408    var right = subband.type.charAt(0) === 'H' ? 1 : 0;
19409    var bottom = subband.type.charAt(1) === 'H' ? levelWidth : 0;
19410    for (var i = 0, ii = codeblocks.length; i < ii; ++i) {
19411      var codeblock = codeblocks[i];
19412      var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;
19413      var blockHeight = codeblock.tby1_ - codeblock.tby0_;
19414      if (blockWidth === 0 || blockHeight === 0) {
19415        continue;
19416      }
19417      if (codeblock['data'] === undefined) {
19418        continue;
19419      }
19420      var bitModel, currentCodingpassType;
19421      bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, codeblock.zeroBitPlanes, mb);
19422      currentCodingpassType = 2;
19423      var data = codeblock.data,
19424          totalLength = 0,
19425          codingpasses = 0;
19426      var j, jj, dataItem;
19427      for (j = 0, jj = data.length; j < jj; j++) {
19428        dataItem = data[j];
19429        totalLength += dataItem.end - dataItem.start;
19430        codingpasses += dataItem.codingpasses;
19431      }
19432      var encodedData = new Uint8Array(totalLength);
19433      var position = 0;
19434      for (j = 0, jj = data.length; j < jj; j++) {
19435        dataItem = data[j];
19436        var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);
19437        encodedData.set(chunk, position);
19438        position += chunk.length;
19439      }
19440      var decoder = new _arithmetic_decoder.ArithmeticDecoder(encodedData, 0, totalLength);
19441      bitModel.setDecoder(decoder);
19442      for (j = 0; j < codingpasses; j++) {
19443        switch (currentCodingpassType) {
19444          case 0:
19445            bitModel.runSignificancePropagationPass();
19446            break;
19447          case 1:
19448            bitModel.runMagnitudeRefinementPass();
19449            break;
19450          case 2:
19451            bitModel.runCleanupPass();
19452            if (segmentationSymbolUsed) {
19453              bitModel.checkSegmentationSymbol();
19454            }
19455            break;
19456        }
19457        currentCodingpassType = (currentCodingpassType + 1) % 3;
19458      }
19459      var offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;
19460      var sign = bitModel.coefficentsSign;
19461      var magnitude = bitModel.coefficentsMagnitude;
19462      var bitsDecoded = bitModel.bitsDecoded;
19463      var magnitudeCorrection = reversible ? 0 : 0.5;
19464      var k, n, nb;
19465      position = 0;
19466      var interleave = subband.type !== 'LL';
19467      for (j = 0; j < blockHeight; j++) {
19468        var row = offset / width | 0;
19469        var levelOffset = 2 * row * (levelWidth - width) + right + bottom;
19470        for (k = 0; k < blockWidth; k++) {
19471          n = magnitude[position];
19472          if (n !== 0) {
19473            n = (n + magnitudeCorrection) * delta;
19474            if (sign[position] !== 0) {
19475              n = -n;
19476            }
19477            nb = bitsDecoded[position];
19478            var pos = interleave ? levelOffset + (offset << 1) : offset;
19479            if (reversible && nb >= mb) {
19480              coefficients[pos] = n;
19481            } else {
19482              coefficients[pos] = n * (1 << mb - nb);
19483            }
19484          }
19485          offset++;
19486          position++;
19487        }
19488        offset += width - blockWidth;
19489      }
19490    }
19491  }
19492  function transformTile(context, tile, c) {
19493    var component = tile.components[c];
19494    var codingStyleParameters = component.codingStyleParameters;
19495    var quantizationParameters = component.quantizationParameters;
19496    var decompositionLevelsCount = codingStyleParameters.decompositionLevelsCount;
19497    var spqcds = quantizationParameters.SPqcds;
19498    var scalarExpounded = quantizationParameters.scalarExpounded;
19499    var guardBits = quantizationParameters.guardBits;
19500    var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;
19501    var precision = context.components[c].precision;
19502    var reversible = codingStyleParameters.reversibleTransformation;
19503    var transform = reversible ? new ReversibleTransform() : new IrreversibleTransform();
19504    var subbandCoefficients = [];
19505    var b = 0;
19506    for (var i = 0; i <= decompositionLevelsCount; i++) {
19507      var resolution = component.resolutions[i];
19508      var width = resolution.trx1 - resolution.trx0;
19509      var height = resolution.try1 - resolution.try0;
19510      var coefficients = new Float32Array(width * height);
19511      for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {
19512        var mu, epsilon;
19513        if (!scalarExpounded) {
19514          mu = spqcds[0].mu;
19515          epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);
19516        } else {
19517          mu = spqcds[b].mu;
19518          epsilon = spqcds[b].epsilon;
19519          b++;
19520        }
19521        var subband = resolution.subbands[j];
19522        var gainLog2 = SubbandsGainLog2[subband.type];
19523        var delta = reversible ? 1 : Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048);
19524        var mb = guardBits + epsilon - 1;
19525        copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed);
19526      }
19527      subbandCoefficients.push({
19528        width: width,
19529        height: height,
19530        items: coefficients
19531      });
19532    }
19533    var result = transform.calculate(subbandCoefficients, component.tcx0, component.tcy0);
19534    return {
19535      left: component.tcx0,
19536      top: component.tcy0,
19537      width: result.width,
19538      height: result.height,
19539      items: result.items
19540    };
19541  }
19542  function transformComponents(context) {
19543    var siz = context.SIZ;
19544    var components = context.components;
19545    var componentsCount = siz.Csiz;
19546    var resultImages = [];
19547    for (var i = 0, ii = context.tiles.length; i < ii; i++) {
19548      var tile = context.tiles[i];
19549      var transformedTiles = [];
19550      var c;
19551      for (c = 0; c < componentsCount; c++) {
19552        transformedTiles[c] = transformTile(context, tile, c);
19553      }
19554      var tile0 = transformedTiles[0];
19555      var out = new Uint8ClampedArray(tile0.items.length * componentsCount);
19556      var result = {
19557        left: tile0.left,
19558        top: tile0.top,
19559        width: tile0.width,
19560        height: tile0.height,
19561        items: out
19562      };
19563      var shift, offset;
19564      var pos = 0,
19565          j,
19566          jj,
19567          y0,
19568          y1,
19569          y2;
19570      if (tile.codingStyleDefaultParameters.multipleComponentTransform) {
19571        var fourComponents = componentsCount === 4;
19572        var y0items = transformedTiles[0].items;
19573        var y1items = transformedTiles[1].items;
19574        var y2items = transformedTiles[2].items;
19575        var y3items = fourComponents ? transformedTiles[3].items : null;
19576        shift = components[0].precision - 8;
19577        offset = (128 << shift) + 0.5;
19578        var component0 = tile.components[0];
19579        var alpha01 = componentsCount - 3;
19580        jj = y0items.length;
19581        if (!component0.codingStyleParameters.reversibleTransformation) {
19582          for (j = 0; j < jj; j++, pos += alpha01) {
19583            y0 = y0items[j] + offset;
19584            y1 = y1items[j];
19585            y2 = y2items[j];
19586            out[pos++] = y0 + 1.402 * y2 >> shift;
19587            out[pos++] = y0 - 0.34413 * y1 - 0.71414 * y2 >> shift;
19588            out[pos++] = y0 + 1.772 * y1 >> shift;
19589          }
19590        } else {
19591          for (j = 0; j < jj; j++, pos += alpha01) {
19592            y0 = y0items[j] + offset;
19593            y1 = y1items[j];
19594            y2 = y2items[j];
19595            var g = y0 - (y2 + y1 >> 2);
19596            out[pos++] = g + y2 >> shift;
19597            out[pos++] = g >> shift;
19598            out[pos++] = g + y1 >> shift;
19599          }
19600        }
19601        if (fourComponents) {
19602          for (j = 0, pos = 3; j < jj; j++, pos += 4) {
19603            out[pos] = y3items[j] + offset >> shift;
19604          }
19605        }
19606      } else {
19607        for (c = 0; c < componentsCount; c++) {
19608          var items = transformedTiles[c].items;
19609          shift = components[c].precision - 8;
19610          offset = (128 << shift) + 0.5;
19611          for (pos = c, j = 0, jj = items.length; j < jj; j++) {
19612            out[pos] = items[j] + offset >> shift;
19613            pos += componentsCount;
19614          }
19615        }
19616      }
19617      resultImages.push(result);
19618    }
19619    return resultImages;
19620  }
19621  function initializeTile(context, tileIndex) {
19622    var siz = context.SIZ;
19623    var componentsCount = siz.Csiz;
19624    var tile = context.tiles[tileIndex];
19625    for (var c = 0; c < componentsCount; c++) {
19626      var component = tile.components[c];
19627      var qcdOrQcc = context.currentTile.QCC[c] !== undefined ? context.currentTile.QCC[c] : context.currentTile.QCD;
19628      component.quantizationParameters = qcdOrQcc;
19629      var codOrCoc = context.currentTile.COC[c] !== undefined ? context.currentTile.COC[c] : context.currentTile.COD;
19630      component.codingStyleParameters = codOrCoc;
19631    }
19632    tile.codingStyleDefaultParameters = context.currentTile.COD;
19633  }
19634  var TagTree = function TagTreeClosure() {
19635    function TagTree(width, height) {
19636      var levelsLength = (0, _util.log2)(Math.max(width, height)) + 1;
19637      this.levels = [];
19638      for (var i = 0; i < levelsLength; i++) {
19639        var level = {
19640          width: width,
19641          height: height,
19642          items: []
19643        };
19644        this.levels.push(level);
19645        width = Math.ceil(width / 2);
vendor: 21,758 bytes, lines 19646-20215
19646        height = Math.ceil(height / 2);
19647      }
19648    }
19649    TagTree.prototype = {
19650      reset: function TagTree_reset(i, j) {
19651        var currentLevel = 0,
19652            value = 0,
19653            level;
19654        while (currentLevel < this.levels.length) {
19655          level = this.levels[currentLevel];
19656          var index = i + j * level.width;
19657          if (level.items[index] !== undefined) {
19658            value = level.items[index];
19659            break;
19660          }
19661          level.index = index;
19662          i >>= 1;
19663          j >>= 1;
19664          currentLevel++;
19665        }
19666        currentLevel--;
19667        level = this.levels[currentLevel];
19668        level.items[level.index] = value;
19669        this.currentLevel = currentLevel;
19670        delete this.value;
19671      },
19672      incrementValue: function TagTree_incrementValue() {
19673        var level = this.levels[this.currentLevel];
19674        level.items[level.index]++;
19675      },
19676      nextLevel: function TagTree_nextLevel() {
19677        var currentLevel = this.currentLevel;
19678        var level = this.levels[currentLevel];
19679        var value = level.items[level.index];
19680        currentLevel--;
19681        if (currentLevel < 0) {
19682          this.value = value;
19683          return false;
19684        }
19685        this.currentLevel = currentLevel;
19686        level = this.levels[currentLevel];
19687        level.items[level.index] = value;
19688        return true;
19689      }
19690    };
19691    return TagTree;
19692  }();
19693  var InclusionTree = function InclusionTreeClosure() {
19694    function InclusionTree(width, height, defaultValue) {
19695      var levelsLength = (0, _util.log2)(Math.max(width, height)) + 1;
19696      this.levels = [];
19697      for (var i = 0; i < levelsLength; i++) {
19698        var items = new Uint8Array(width * height);
19699        for (var j = 0, jj = items.length; j < jj; j++) {
19700          items[j] = defaultValue;
19701        }
19702        var level = {
19703          width: width,
19704          height: height,
19705          items: items
19706        };
19707        this.levels.push(level);
19708        width = Math.ceil(width / 2);
19709        height = Math.ceil(height / 2);
19710      }
19711    }
19712    InclusionTree.prototype = {
19713      reset: function InclusionTree_reset(i, j, stopValue) {
19714        var currentLevel = 0;
19715        while (currentLevel < this.levels.length) {
19716          var level = this.levels[currentLevel];
19717          var index = i + j * level.width;
19718          level.index = index;
19719          var value = level.items[index];
19720          if (value === 0xFF) {
19721            break;
19722          }
19723          if (value > stopValue) {
19724            this.currentLevel = currentLevel;
19725            this.propagateValues();
19726            return false;
19727          }
19728          i >>= 1;
19729          j >>= 1;
19730          currentLevel++;
19731        }
19732        this.currentLevel = currentLevel - 1;
19733        return true;
19734      },
19735      incrementValue: function InclusionTree_incrementValue(stopValue) {
19736        var level = this.levels[this.currentLevel];
19737        level.items[level.index] = stopValue + 1;
19738        this.propagateValues();
19739      },
19740      propagateValues: function InclusionTree_propagateValues() {
19741        var levelIndex = this.currentLevel;
19742        var level = this.levels[levelIndex];
19743        var currentValue = level.items[level.index];
19744        while (--levelIndex >= 0) {
19745          level = this.levels[levelIndex];
19746          level.items[level.index] = currentValue;
19747        }
19748      },
19749      nextLevel: function InclusionTree_nextLevel() {
19750        var currentLevel = this.currentLevel;
19751        var level = this.levels[currentLevel];
19752        var value = level.items[level.index];
19753        level.items[level.index] = 0xFF;
19754        currentLevel--;
19755        if (currentLevel < 0) {
19756          return false;
19757        }
19758        this.currentLevel = currentLevel;
19759        level = this.levels[currentLevel];
19760        level.items[level.index] = value;
19761        return true;
19762      }
19763    };
19764    return InclusionTree;
19765  }();
19766  var BitModel = function BitModelClosure() {
19767    var UNIFORM_CONTEXT = 17;
19768    var RUNLENGTH_CONTEXT = 18;
19769    var LLAndLHContextsLabel = new Uint8Array([0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8]);
19770    var HLContextLabel = new Uint8Array([0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8]);
19771    var HHContextLabel = new Uint8Array([0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5, 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8]);
19772    function BitModel(width, height, subband, zeroBitPlanes, mb) {
19773      this.width = width;
19774      this.height = height;
19775      this.contextLabelTable = subband === 'HH' ? HHContextLabel : subband === 'HL' ? HLContextLabel : LLAndLHContextsLabel;
19776      var coefficientCount = width * height;
19777      this.neighborsSignificance = new Uint8Array(coefficientCount);
19778      this.coefficentsSign = new Uint8Array(coefficientCount);
19779      this.coefficentsMagnitude = mb > 14 ? new Uint32Array(coefficientCount) : mb > 6 ? new Uint16Array(coefficientCount) : new Uint8Array(coefficientCount);
19780      this.processingFlags = new Uint8Array(coefficientCount);
19781      var bitsDecoded = new Uint8Array(coefficientCount);
19782      if (zeroBitPlanes !== 0) {
19783        for (var i = 0; i < coefficientCount; i++) {
19784          bitsDecoded[i] = zeroBitPlanes;
19785        }
19786      }
19787      this.bitsDecoded = bitsDecoded;
19788      this.reset();
19789    }
19790    BitModel.prototype = {
19791      setDecoder: function BitModel_setDecoder(decoder) {
19792        this.decoder = decoder;
19793      },
19794      reset: function BitModel_reset() {
19795        this.contexts = new Int8Array(19);
19796        this.contexts[0] = 4 << 1 | 0;
19797        this.contexts[UNIFORM_CONTEXT] = 46 << 1 | 0;
19798        this.contexts[RUNLENGTH_CONTEXT] = 3 << 1 | 0;
19799      },
19800      setNeighborsSignificance: function BitModel_setNeighborsSignificance(row, column, index) {
19801        var neighborsSignificance = this.neighborsSignificance;
19802        var width = this.width,
19803            height = this.height;
19804        var left = column > 0;
19805        var right = column + 1 < width;
19806        var i;
19807        if (row > 0) {
19808          i = index - width;
19809          if (left) {
19810            neighborsSignificance[i - 1] += 0x10;
19811          }
19812          if (right) {
19813            neighborsSignificance[i + 1] += 0x10;
19814          }
19815          neighborsSignificance[i] += 0x04;
19816        }
19817        if (row + 1 < height) {
19818          i = index + width;
19819          if (left) {
19820            neighborsSignificance[i - 1] += 0x10;
19821          }
19822          if (right) {
19823            neighborsSignificance[i + 1] += 0x10;
19824          }
19825          neighborsSignificance[i] += 0x04;
19826        }
19827        if (left) {
19828          neighborsSignificance[index - 1] += 0x01;
19829        }
19830        if (right) {
19831          neighborsSignificance[index + 1] += 0x01;
19832        }
19833        neighborsSignificance[index] |= 0x80;
19834      },
19835      runSignificancePropagationPass: function BitModel_runSignificancePropagationPass() {
19836        var decoder = this.decoder;
19837        var width = this.width,
19838            height = this.height;
19839        var coefficentsMagnitude = this.coefficentsMagnitude;
19840        var coefficentsSign = this.coefficentsSign;
19841        var neighborsSignificance = this.neighborsSignificance;
19842        var processingFlags = this.processingFlags;
19843        var contexts = this.contexts;
19844        var labels = this.contextLabelTable;
19845        var bitsDecoded = this.bitsDecoded;
19846        var processedInverseMask = ~1;
19847        var processedMask = 1;
19848        var firstMagnitudeBitMask = 2;
19849        for (var i0 = 0; i0 < height; i0 += 4) {
19850          for (var j = 0; j < width; j++) {
19851            var index = i0 * width + j;
19852            for (var i1 = 0; i1 < 4; i1++, index += width) {
19853              var i = i0 + i1;
19854              if (i >= height) {
19855                break;
19856              }
19857              processingFlags[index] &= processedInverseMask;
19858              if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {
19859                continue;
19860              }
19861              var contextLabel = labels[neighborsSignificance[index]];
19862              var decision = decoder.readBit(contexts, contextLabel);
19863              if (decision) {
19864                var sign = this.decodeSignBit(i, j, index);
19865                coefficentsSign[index] = sign;
19866                coefficentsMagnitude[index] = 1;
19867                this.setNeighborsSignificance(i, j, index);
19868                processingFlags[index] |= firstMagnitudeBitMask;
19869              }
19870              bitsDecoded[index]++;
19871              processingFlags[index] |= processedMask;
19872            }
19873          }
19874        }
19875      },
19876      decodeSignBit: function BitModel_decodeSignBit(row, column, index) {
19877        var width = this.width,
19878            height = this.height;
19879        var coefficentsMagnitude = this.coefficentsMagnitude;
19880        var coefficentsSign = this.coefficentsSign;
19881        var contribution, sign0, sign1, significance1;
19882        var contextLabel, decoded;
19883        significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;
19884        if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {
19885          sign1 = coefficentsSign[index + 1];
19886          if (significance1) {
19887            sign0 = coefficentsSign[index - 1];
19888            contribution = 1 - sign1 - sign0;
19889          } else {
19890            contribution = 1 - sign1 - sign1;
19891          }
19892        } else if (significance1) {
19893          sign0 = coefficentsSign[index - 1];
19894          contribution = 1 - sign0 - sign0;
19895        } else {
19896          contribution = 0;
19897        }
19898        var horizontalContribution = 3 * contribution;
19899        significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;
19900        if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {
19901          sign1 = coefficentsSign[index + width];
19902          if (significance1) {
19903            sign0 = coefficentsSign[index - width];
19904            contribution = 1 - sign1 - sign0 + horizontalContribution;
19905          } else {
19906            contribution = 1 - sign1 - sign1 + horizontalContribution;
19907          }
19908        } else if (significance1) {
19909          sign0 = coefficentsSign[index - width];
19910          contribution = 1 - sign0 - sign0 + horizontalContribution;
19911        } else {
19912          contribution = horizontalContribution;
19913        }
19914        if (contribution >= 0) {
19915          contextLabel = 9 + contribution;
19916          decoded = this.decoder.readBit(this.contexts, contextLabel);
19917        } else {
19918          contextLabel = 9 - contribution;
19919          decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;
19920        }
19921        return decoded;
19922      },
19923      runMagnitudeRefinementPass: function BitModel_runMagnitudeRefinementPass() {
19924        var decoder = this.decoder;
19925        var width = this.width,
19926            height = this.height;
19927        var coefficentsMagnitude = this.coefficentsMagnitude;
19928        var neighborsSignificance = this.neighborsSignificance;
19929        var contexts = this.contexts;
19930        var bitsDecoded = this.bitsDecoded;
19931        var processingFlags = this.processingFlags;
19932        var processedMask = 1;
19933        var firstMagnitudeBitMask = 2;
19934        var length = width * height;
19935        var width4 = width * 4;
19936        for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {
19937          indexNext = Math.min(length, index0 + width4);
19938          for (var j = 0; j < width; j++) {
19939            for (var index = index0 + j; index < indexNext; index += width) {
19940              if (!coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {
19941                continue;
19942              }
19943              var contextLabel = 16;
19944              if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {
19945                processingFlags[index] ^= firstMagnitudeBitMask;
19946                var significance = neighborsSignificance[index] & 127;
19947                contextLabel = significance === 0 ? 15 : 14;
19948              }
19949              var bit = decoder.readBit(contexts, contextLabel);
19950              coefficentsMagnitude[index] = coefficentsMagnitude[index] << 1 | bit;
19951              bitsDecoded[index]++;
19952              processingFlags[index] |= processedMask;
19953            }
19954          }
19955        }
19956      },
19957      runCleanupPass: function BitModel_runCleanupPass() {
19958        var decoder = this.decoder;
19959        var width = this.width,
19960            height = this.height;
19961        var neighborsSignificance = this.neighborsSignificance;
19962        var coefficentsMagnitude = this.coefficentsMagnitude;
19963        var coefficentsSign = this.coefficentsSign;
19964        var contexts = this.contexts;
19965        var labels = this.contextLabelTable;
19966        var bitsDecoded = this.bitsDecoded;
19967        var processingFlags = this.processingFlags;
19968        var processedMask = 1;
19969        var firstMagnitudeBitMask = 2;
19970        var oneRowDown = width;
19971        var twoRowsDown = width * 2;
19972        var threeRowsDown = width * 3;
19973        var iNext;
19974        for (var i0 = 0; i0 < height; i0 = iNext) {
19975          iNext = Math.min(i0 + 4, height);
19976          var indexBase = i0 * width;
19977          var checkAllEmpty = i0 + 3 < height;
19978          for (var j = 0; j < width; j++) {
19979            var index0 = indexBase + j;
19980            var allEmpty = checkAllEmpty && processingFlags[index0] === 0 && processingFlags[index0 + oneRowDown] === 0 && processingFlags[index0 + twoRowsDown] === 0 && processingFlags[index0 + threeRowsDown] === 0 && neighborsSignificance[index0] === 0 && neighborsSignificance[index0 + oneRowDown] === 0 && neighborsSignificance[index0 + twoRowsDown] === 0 && neighborsSignificance[index0 + threeRowsDown] === 0;
19981            var i1 = 0,
19982                index = index0;
19983            var i = i0,
19984                sign;
19985            if (allEmpty) {
19986              var hasSignificantCoefficent = decoder.readBit(contexts, RUNLENGTH_CONTEXT);
19987              if (!hasSignificantCoefficent) {
19988                bitsDecoded[index0]++;
19989                bitsDecoded[index0 + oneRowDown]++;
19990                bitsDecoded[index0 + twoRowsDown]++;
19991                bitsDecoded[index0 + threeRowsDown]++;
19992                continue;
19993              }
19994              i1 = decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT);
19995              if (i1 !== 0) {
19996                i = i0 + i1;
19997                index += i1 * width;
19998              }
19999              sign = this.decodeSignBit(i, j, index);
20000              coefficentsSign[index] = sign;
20001              coefficentsMagnitude[index] = 1;
20002              this.setNeighborsSignificance(i, j, index);
20003              processingFlags[index] |= firstMagnitudeBitMask;
20004              index = index0;
20005              for (var i2 = i0; i2 <= i; i2++, index += width) {
20006                bitsDecoded[index]++;
20007              }
20008              i1++;
20009            }
20010            for (i = i0 + i1; i < iNext; i++, index += width) {
20011              if (coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {
20012                continue;
20013              }
20014              var contextLabel = labels[neighborsSignificance[index]];
20015              var decision = decoder.readBit(contexts, contextLabel);
20016              if (decision === 1) {
20017                sign = this.decodeSignBit(i, j, index);
20018                coefficentsSign[index] = sign;
20019                coefficentsMagnitude[index] = 1;
20020                this.setNeighborsSignificance(i, j, index);
20021                processingFlags[index] |= firstMagnitudeBitMask;
20022              }
20023              bitsDecoded[index]++;
20024            }
20025          }
20026        }
20027      },
20028      checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {
20029        var decoder = this.decoder;
20030        var contexts = this.contexts;
20031        var symbol = decoder.readBit(contexts, UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT);
20032        if (symbol !== 0xA) {
20033          throw new JpxError('Invalid segmentation symbol');
20034        }
20035      }
20036    };
20037    return BitModel;
20038  }();
20039  var Transform = function TransformClosure() {
20040    function Transform() {}
20041    Transform.prototype.calculate = function transformCalculate(subbands, u0, v0) {
20042      var ll = subbands[0];
20043      for (var i = 1, ii = subbands.length; i < ii; i++) {
20044        ll = this.iterate(ll, subbands[i], u0, v0);
20045      }
20046      return ll;
20047    };
20048    Transform.prototype.extend = function extend(buffer, offset, size) {
20049      var i1 = offset - 1,
20050          j1 = offset + 1;
20051      var i2 = offset + size - 2,
20052          j2 = offset + size;
20053      buffer[i1--] = buffer[j1++];
20054      buffer[j2++] = buffer[i2--];
20055      buffer[i1--] = buffer[j1++];
20056      buffer[j2++] = buffer[i2--];
20057      buffer[i1--] = buffer[j1++];
20058      buffer[j2++] = buffer[i2--];
20059      buffer[i1] = buffer[j1];
20060      buffer[j2] = buffer[i2];
20061    };
20062    Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh, u0, v0) {
20063      var llWidth = ll.width,
20064          llHeight = ll.height,
20065          llItems = ll.items;
20066      var width = hl_lh_hh.width;
20067      var height = hl_lh_hh.height;
20068      var items = hl_lh_hh.items;
20069      var i, j, k, l, u, v;
20070      for (k = 0, i = 0; i < llHeight; i++) {
20071        l = i * 2 * width;
20072        for (j = 0; j < llWidth; j++, k++, l += 2) {
20073          items[l] = llItems[k];
20074        }
20075      }
20076      llItems = ll.items = null;
20077      var bufferPadding = 4;
20078      var rowBuffer = new Float32Array(width + 2 * bufferPadding);
20079      if (width === 1) {
20080        if ((u0 & 1) !== 0) {
20081          for (v = 0, k = 0; v < height; v++, k += width) {
20082            items[k] *= 0.5;
20083          }
20084        }
20085      } else {
20086        for (v = 0, k = 0; v < height; v++, k += width) {
20087          rowBuffer.set(items.subarray(k, k + width), bufferPadding);
20088          this.extend(rowBuffer, bufferPadding, width);
20089          this.filter(rowBuffer, bufferPadding, width);
20090          items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);
20091        }
20092      }
20093      var numBuffers = 16;
20094      var colBuffers = [];
20095      for (i = 0; i < numBuffers; i++) {
20096        colBuffers.push(new Float32Array(height + 2 * bufferPadding));
20097      }
20098      var b,
20099          currentBuffer = 0;
20100      ll = bufferPadding + height;
20101      if (height === 1) {
20102        if ((v0 & 1) !== 0) {
20103          for (u = 0; u < width; u++) {
20104            items[u] *= 0.5;
20105          }
20106        }
20107      } else {
20108        for (u = 0; u < width; u++) {
20109          if (currentBuffer === 0) {
20110            numBuffers = Math.min(width - u, numBuffers);
20111            for (k = u, l = bufferPadding; l < ll; k += width, l++) {
20112              for (b = 0; b < numBuffers; b++) {
20113                colBuffers[b][l] = items[k + b];
20114              }
20115            }
20116            currentBuffer = numBuffers;
20117          }
20118          currentBuffer--;
20119          var buffer = colBuffers[currentBuffer];
20120          this.extend(buffer, bufferPadding, height);
20121          this.filter(buffer, bufferPadding, height);
20122          if (currentBuffer === 0) {
20123            k = u - numBuffers + 1;
20124            for (l = bufferPadding; l < ll; k += width, l++) {
20125              for (b = 0; b < numBuffers; b++) {
20126                items[k + b] = colBuffers[b][l];
20127              }
20128            }
20129          }
20130        }
20131      }
20132      return {
20133        width: width,
20134        height: height,
20135        items: items
20136      };
20137    };
20138    return Transform;
20139  }();
20140  var IrreversibleTransform = function IrreversibleTransformClosure() {
20141    function IrreversibleTransform() {
20142      Transform.call(this);
20143    }
20144    IrreversibleTransform.prototype = Object.create(Transform.prototype);
20145    IrreversibleTransform.prototype.filter = function irreversibleTransformFilter(x, offset, length) {
20146      var len = length >> 1;
20147      offset = offset | 0;
20148      var j, n, current, next;
20149      var alpha = -1.586134342059924;
20150      var beta = -0.052980118572961;
20151      var gamma = 0.882911075530934;
20152      var delta = 0.443506852043971;
20153      var K = 1.230174104914001;
20154      var K_ = 1 / K;
20155      j = offset - 3;
20156      for (n = len + 4; n--; j += 2) {
20157        x[j] *= K_;
20158      }
20159      j = offset - 2;
20160      current = delta * x[j - 1];
20161      for (n = len + 3; n--; j += 2) {
20162        next = delta * x[j + 1];
20163        x[j] = K * x[j] - current - next;
20164        if (n--) {
20165          j += 2;
20166          current = delta * x[j + 1];
20167          x[j] = K * x[j] - current - next;
20168        } else {
20169          break;
20170        }
20171      }
20172      j = offset - 1;
20173      current = gamma * x[j - 1];
20174      for (n = len + 2; n--; j += 2) {
20175        next = gamma * x[j + 1];
20176        x[j] -= current + next;
20177        if (n--) {
20178          j += 2;
20179          current = gamma * x[j + 1];
20180          x[j] -= current + next;
20181        } else {
20182          break;
20183        }
20184      }
20185      j = offset;
20186      current = beta * x[j - 1];
20187      for (n = len + 1; n--; j += 2) {
20188        next = beta * x[j + 1];
20189        x[j] -= current + next;
20190        if (n--) {
20191          j += 2;
20192          current = beta * x[j + 1];
20193          x[j] -= current + next;
20194        } else {
20195          break;
20196        }
20197      }
20198      if (len !== 0) {
20199        j = offset + 1;
20200        current = alpha * x[j - 1];
20201        for (n = len; n--; j += 2) {
20202          next = alpha * x[j + 1];
20203          x[j] -= current + next;
20204          if (n--) {
20205            j += 2;
20206            current = alpha * x[j + 1];
20207            x[j] -= current + next;
20208          } else {
20209            break;
20210          }
20211        }
20212      }
20213    };
20214    return IrreversibleTransform;
20215  }();
20216  var ReversibleTransform = function ReversibleTransformClosure() {
20217    function ReversibleTransform() {
20218      Transform.call(this);
20219    }
20220    ReversibleTransform.prototype = Object.create(Transform.prototype);
20221    ReversibleTransform.prototype.filter = function reversibleTransformFilter(x, offset, length) {
20222      var len = length >> 1;
20223      offset = offset | 0;
20224      var j, n;
20225      for (j = offset, n = len + 1; n--; j += 2) {
20226        x[j] -= x[j - 1] + x[j + 1] + 2 >> 2;
20227      }
20228      for (j = offset + 1, n = len; n--; j += 2) {
20229        x[j] += x[j - 1] + x[j + 1] >> 1;
20230      }
20231    };
20232    return ReversibleTransform;
20233  }();
20234  return JpxImage;
20235}();
20236exports.JpxImage = JpxImage;
20237
20238/***/ }),
20239/* 150 */
20240/***/ (function(module, exports, __w_pdfjs_require__) {
20241
20242"use strict";
20243
20244
20245Object.defineProperty(exports, "__esModule", {
20246  value: true
20247});
20248exports.calculateSHA512 = exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = undefined;
20249
20250var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
20251
20252var _util = __w_pdfjs_require__(2);
20253
20254var _primitives = __w_pdfjs_require__(138);
20255
20256var _stream = __w_pdfjs_require__(140);
20257
20258function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
20259
20260function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
20261
20262function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
20263
20264var ARCFourCipher = function ARCFourCipherClosure() {
20265  function ARCFourCipher(key) {
20266    this.a = 0;
20267    this.b = 0;
20268    var s = new Uint8Array(256);
20269    var i,
20270        j = 0,
20271        tmp,
20272        keyLength = key.length;
20273    for (i = 0; i < 256; ++i) {
20274      s[i] = i;
20275    }
20276    for (i = 0; i < 256; ++i) {
20277      tmp = s[i];
20278      j = j + tmp + key[i % keyLength] & 0xFF;
20279      s[i] = s[j];
20280      s[j] = tmp;
20281    }
20282    this.s = s;
20283  }
20284  ARCFourCipher.prototype = {
20285    encryptBlock: function ARCFourCipher_encryptBlock(data) {
20286      var i,
20287          n = data.length,
20288          tmp,
20289          tmp2;
20290      var a = this.a,
20291          b = this.b,
20292          s = this.s;
20293      var output = new Uint8Array(n);
20294      for (i = 0; i < n; ++i) {
20295        a = a + 1 & 0xFF;
20296        tmp = s[a];
20297        b = b + tmp & 0xFF;
20298        tmp2 = s[b];
20299        s[a] = tmp2;
20300        s[b] = tmp;
20301        output[i] = data[i] ^ s[tmp + tmp2 & 0xFF];
20302      }
20303      this.a = a;
20304      this.b = b;
20305      return output;
20306    }
20307  };
20308  ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;
20309  return ARCFourCipher;
20310}();
20311var calculateMD5 = function calculateMD5Closure() {
20312  var r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);
20313  var k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -64
203130364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]);
20314  function hash(data, offset, length) {
20315    var h0 = 1732584193,
20316        h1 = -271733879,
20317        h2 = -1732584194,
20318        h3 = 271733878;
20319    var paddedLength = length + 72 & ~63;
20320    var padded = new Uint8Array(paddedLength);
20321    var i, j, n;
20322    for (i = 0; i < length; ++i) {
20323      padded[i] = data[offset++];
20324    }
20325    padded[i++] = 0x80;
20326    n = paddedLength - 8;
20327    while (i < n) {
20328      padded[i++] = 0;
20329    }
20330    padded[i++] = length << 3 & 0xFF;
20331    padded[i++] = length >> 5 & 0xFF;
20332    padded[i++] = length >> 13 & 0xFF;
20333    padded[i++] = length >> 21 & 0xFF;
20334    padded[i++] = length >>> 29 & 0xFF;
20335    padded[i++] = 0;
20336    padded[i++] = 0;
20337    padded[i++] = 0;
20338    var w = new Int32Array(16);
20339    for (i = 0; i < paddedLength;) {
20340      for (j = 0; j < 16; ++j, i += 4) {
20341        w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24;
20342      }
20343      var a = h0,
20344          b = h1,
20345          c = h2,
20346          d = h3,
20347          f,
20348          g;
20349      for (j = 0; j < 64; ++j) {
20350        if (j < 16) {
20351          f = b & c | ~b & d;
20352          g = j;
20353        } else if (j < 32) {
20354          f = d & b | ~d & c;
20355          g = 5 * j + 1 & 15;
20356        } else if (j < 48) {
20357          f = b ^ c ^ d;
20358          g = 3 * j + 5 & 15;
20359        } else {
20360          f = c ^ (b | ~d);
20361          g = 7 * j & 15;
20362        }
20363        var tmp = d,
20364            rotateArg = a + f + k[j] + w[g] | 0,
20365            rotate = r[j];
20366        d = c;
20367        c = b;
20368        b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0;
20369        a = tmp;
20370      }
20371      h0 = h0 + a | 0;
20372      h1 = h1 + b | 0;
20373      h2 = h2 + c | 0;
20374      h3 = h3 + d | 0;
20375    }
20376    return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]);
20377  }
20378  return hash;
20379}();
20380var Word64 = function Word64Closure() {
20381  function Word64(highInteger, lowInteger) {
20382    this.high = highInteger | 0;
20383    this.low = lowInteger | 0;
20384  }
20385  Word64.prototype = {
20386    and: function Word64_and(word) {
20387      this.high &= word.high;
20388      this.low &= word.low;
20389    },
20390    xor: function Word64_xor(word) {
20391      this.high ^= word.high;
20392      this.low ^= word.low;
20393    },
20394    or: function Word64_or(word) {
20395      this.high |= word.high;
20396      this.low |= word.low;
20397    },
20398    shiftRight: function Word64_shiftRight(places) {
20399      if (places >= 32) {
20400        this.low = this.high >>> places - 32 | 0;
20401        this.high = 0;
20402      } else {
20403        this.low = this.low >>> places | this.high << 32 - places;
20404        this.high = this.high >>> places | 0;
20405      }
20406    },
20407    shiftLeft: function Word64_shiftLeft(places) {
20408      if (places >= 32) {
20409        this.high = this.low << places - 32;
20410        this.low = 0;
20411      } else {
20412        this.high = this.high << places | this.low >>> 32 - places;
20413        this.low = this.low << places;
20414      }
20415    },
20416    rotateRight: function Word64_rotateRight(places) {
20417      var low, high;
20418      if (places & 32) {
20419        high = this.low;
20420        low = this.high;
20421      } else {
20422        low = this.low;
20423        high = this.high;
20424      }
20425      places &= 31;
20426      this.low = low >>> places | high << 32 - places;
20427      this.high = high >>> places | low << 32 - places;
20428    },
20429    not: function Word64_not() {
20430      this.high = ~this.high;
20431      this.low = ~this.low;
20432    },
20433    add: function Word64_add(word) {
20434      var lowAdd = (this.low >>> 0) + (word.low >>> 0);
20435      var highAdd = (this.high >>> 0) + (word.high >>> 0);
20436      if (lowAdd > 0xFFFFFFFF) {
20437        highAdd += 1;
20438      }
20439      this.low = lowAdd | 0;
20440      this.high = highAdd | 0;
20441    },
20442    copyTo: function Word64_copyTo(bytes, offset) {
20443      bytes[offset] = this.high >>> 24 & 0xFF;
20444      bytes[offset + 1] = this.high >> 16 & 0xFF;
20445      bytes[offset + 2] = this.high >> 8 & 0xFF;
20446      bytes[offset + 3] = this.high & 0xFF;
20447      bytes[offset + 4] = this.low >>> 24 & 0xFF;
20448      bytes[offset + 5] = this.low >> 16 & 0xFF;
20449      bytes[offset + 6] = this.low >> 8 & 0xFF;
20450      bytes[offset + 7] = this.low & 0xFF;
20451    },
20452    assign: function Word64_assign(word) {
20453      this.high = word.high;
20454      this.low = word.low;
20455    }
20456  };
20457  return Word64;
20458}();
20459var calculateSHA256 = function calculateSHA256Closure() {
20460  function rotr(x, n) {
20461    return x >>> n | x << 32 - n;
20462  }
20463  function ch(x, y, z) {
20464    return x & y ^ ~x & z;
20465  }
20466  function maj(x, y, z) {
20467    return x & y ^ x & z ^ y & z;
20468  }
20469  function sigma(x) {
20470    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);
20471  }
20472  function sigmaPrime(x) {
20473    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);
20474  }
20475  function littleSigma(x) {
20476    return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;
20477  }
20478  function littleSigmaPrime(x) {
20479    return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;
20480  }
20481  var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];
20482  function hash(data, offset, length) {
20483    var h0 = 0x6a09e667,
20484        h1 = 0xbb67ae85,
20485        h2 = 0x3c6ef372,
20486        h3 = 0xa54ff53a,
20487        h4 = 0x510e527f,
20488        h5 = 0x9b05688c,
20489        h6 = 0x1f83d9ab,
20490        h7 = 0x5be0cd19;
20491    var paddedLength = Math.ceil((length + 9) / 64) * 64;
20492    var padded = new Uint8Array(paddedLength);
20493    var i, j, n;
20494    for (i = 0; i < length; ++i) {
20495      padded[i] = data[offset++];
20496    }
20497    padded[i++] = 0x80;
20498    n = paddedLength - 8;
20499    while (i < n) {
20500      padded[i++] = 0;
20501    }
20502    padded[i++] = 0;
20503    padded[i++] = 0;
20504    padded[i++] = 0;
20505    padded[i++] = length >>> 29 & 0xFF;
20506    padded[i++] = length >> 21 & 0xFF;
20507    padded[i++] = length >> 13 & 0xFF;
20508    padded[i++] = length >> 5 & 0xFF;
20509    padded[i++] = length << 3 & 0xFF;
20510    var w = new Uint32Array(64);
20511    for (i = 0; i < paddedLength;) {
20512      for (j = 0; j < 16; ++j) {
20513        w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];
20514        i += 4;
20515      }
20516      for (j = 16; j < 64; ++j) {
20517        w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0;
20518      }
20519      var a = h0,
20520          b = h1,
20521          c = h2,
20522          d = h3,
20523          e = h4,
20524          f = h5,
20525          g = h6,
20526          h = h7,
20527          t1,
20528          t2;
20529      for (j = 0; j < 64; ++j) {
20530        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];
20531        t2 = sigma(a) + maj(a, b, c);
20532        h = g;
20533        g = f;
20534        f = e;
20535        e = d + t1 | 0;
20536        d = c;
20537        c = b;
20538        b = a;
20539        a = t1 + t2 | 0;
20540      }
20541      h0 = h0 + a | 0;
20542      h1 = h1 + b | 0;
20543      h2 = h2 + c | 0;
20544      h3 = h3 + d | 0;
20545      h4 = h4 + e | 0;
20546      h5 = h5 + f | 0;
20547      h6 = h6 + g | 0;
20548      h7 = h7 + h | 0;
20549    }
20550    return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]);
20551  }
20552  return hash;
20553}();
20554var calculateSHA512 = function calculateSHA512Closure() {
20555  function ch(result, x, y, z, tmp) {
20556    result.assign(x);
20557    result.and(y);
20558    tmp.assign(x);
20559    tmp.not();
20560    tmp.and(z);
20561    result.xor(tmp);
20562  }
20563  function maj(result, x, y, z, tmp) {
20564    result.assign(x);
20565    result.and(y);
20566    tmp.assign(x);
20567    tmp.and(z);
20568    result.xor(tmp);
20569    tmp.assign(y);
20570    tmp.and(z);
20571    result.xor(tmp);
20572  }
20573  function sigma(result, x, tmp) {
20574    result.assign(x);
20575    result.rotateRight(28);
20576    tmp.assign(x);
20577    tmp.rotateRight(34);
20578    result.xor(tmp);
20579    tmp.assign(x);
20580    tmp.rotateRight(39);
20581    result.xor(tmp);
20582  }
20583  function sigmaPrime(result, x, tmp) {
20584    result.assign(x);
20585    result.rotateRight(14);
20586    tmp.assign(x);
20587    tmp.rotateRight(18);
20588    result.xor(tmp);
20589    tmp.assign(x);
20590    tmp.rotateRight(41);
20591    result.xor(tmp);
20592  }
20593  function littleSigma(result, x, tmp) {
20594    result.assign(x);
20595    result.rotateRight(1);
20596    tmp.assign(x);
20597    tmp.rotateRight(8);
20598    result.xor(tmp);
20599    tmp.assign(x);
20600    tmp.shiftRight(7);
20601    result.xor(tmp);
20602  }
20603  function littleSigmaPrime(result, x, tmp) {
20604    result.assign(x);
20605    result.rotateRight(19);
20606    tmp.assign(x);
20607    tmp.rotateRight(61);
20608    result.xor(tmp);
20609    tmp.assign(x);
20610    tmp.shiftRight(6);
20611    result.xor(tmp);
20612  }
20613  var k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb
20613605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];
20614  function hash(data, offset, length, mode384) {
20615    mode384 = !!mode384;
20616    var h0, h1, h2, h3, h4, h5, h6, h7;
20617    if (!mode384) {
20618      h0 = new Word64(0x6a09e667, 0xf3bcc908);
20619      h1 = new Word64(0xbb67ae85, 0x84caa73b);
20620      h2 = new Word64(0x3c6ef372, 0xfe94f82b);
20621      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);
20622      h4 = new Word64(0x510e527f, 0xade682d1);
20623      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);
20624      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);
20625      h7 = new Word64(0x5be0cd19, 0x137e2179);
20626    } else {
20627      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);
20628      h1 = new Word64(0x629a292a, 0x367cd507);
20629      h2 = new Word64(0x9159015a, 0x3070dd17);
20630      h3 = new Word64(0x152fecd8, 0xf70e5939);
20631      h4 = new Word64(0x67332667, 0xffc00b31);
20632      h5 = new Word64(0x8eb44a87, 0x68581511);
20633      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);
20634      h7 = new Word64(0x47b5481d, 0xbefa4fa4);
20635    }
20636    var paddedLength = Math.ceil((length + 17) / 128) * 128;
20637    var padded = new Uint8Array(paddedLength);
20638    var i, j, n;
20639    for (i = 0; i < length; ++i) {
20640      padded[i] = data[offset++];
20641    }
20642    padded[i++] = 0x80;
20643    n = paddedLength - 16;
20644    while (i < n) {
20645      padded[i++] = 0;
20646    }
20647    padded[i++] = 0;
20648    padded[i++] = 0;
20649    padded[i++] = 0;
20650    padded[i++] = 0;
20651    padded[i++] = 0;
20652    padded[i++] = 0;
20653    padded[i++] = 0;
20654    padded[i++] = 0;
20655    padded[i++] = 0;
20656    padded[i++] = 0;
20657    padded[i++] = 0;
20658    padded[i++] = length >>> 29 & 0xFF;
20659    padded[i++] = length >> 21 & 0xFF;
20660    padded[i++] = length >> 13 & 0xFF;
20661    padded[i++] = length >> 5 & 0xFF;
20662    padded[i++] = length << 3 & 0xFF;
20663    var w = new Array(80);
20664    for (i = 0; i < 80; i++) {
20665      w[i] = new Word64(0, 0);
20666    }
20667    var a = new Word64(0, 0),
20668        b = new Word64(0, 0),
20669        c = new Word64(0, 0);
20670    var d = new Word64(0, 0),
20671        e = new Word64(0, 0),
20672        f = new Word64(0, 0);
20673    var g = new Word64(0, 0),
20674        h = new Word64(0, 0);
20675    var t1 = new Word64(0, 0),
20676        t2 = new Word64(0, 0);
20677    var tmp1 = new Word64(0, 0),
20678        tmp2 = new Word64(0, 0),
20679        tmp3;
20680    for (i = 0; i < paddedLength;) {
20681      for (j = 0; j < 16; ++j) {
20682        w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];
20683        w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7];
20684        i += 8;
20685      }
20686      for (j = 16; j < 80; ++j) {
20687        tmp3 = w[j];
20688        littleSigmaPrime(tmp3, w[j - 2], tmp2);
20689        tmp3.add(w[j - 7]);
20690        littleSigma(tmp1, w[j - 15], tmp2);
20691        tmp3.add(tmp1);
20692        tmp3.add(w[j - 16]);
20693      }
20694      a.assign(h0);
20695      b.assign(h1);
20696      c.assign(h2);
20697      d.assign(h3);
20698      e.assign(h4);
20699      f.assign(h5);
20700      g.assign(h6);
20701      h.assign(h7);
20702      for (j = 0; j < 80; ++j) {
20703        t1.assign(h);
20704        sigmaPrime(tmp1, e, tmp2);
20705        t1.add(tmp1);
20706        ch(tmp1, e, f, g, tmp2);
20707        t1.add(tmp1);
20708        t1.add(k[j]);
20709        t1.add(w[j]);
20710        sigma(t2, a, tmp2);
20711        maj(tmp1, a, b, c, tmp2);
20712        t2.add(tmp1);
20713        tmp3 = h;
20714        h = g;
20715        g = f;
20716        f = e;
20717        d.add(t1);
20718        e = d;
20719        d = c;
20720        c = b;
20721        b = a;
20722        tmp3.assign(t1);
20723        tmp3.add(t2);
20724        a = tmp3;
20725      }
20726      h0.add(a);
20727      h1.add(b);
20728      h2.add(c);
20729      h3.add(d);
20730      h4.add(e);
20731      h5.add(f);
20732      h6.add(g);
20733      h7.add(h);
20734    }
20735    var result;
20736    if (!mode384) {
20737      result = new Uint8Array(64);
20738      h0.copyTo(result, 0);
20739      h1.copyTo(result, 8);
20740      h2.copyTo(result, 16);
20741      h3.copyTo(result, 24);
20742      h4.copyTo(result, 32);
20743      h5.copyTo(result, 40);
20744      h6.copyTo(result, 48);
20745      h7.copyTo(result, 56);
20746    } else {
20747      result = new Uint8Array(48);
20748      h0.copyTo(result, 0);
20749      h1.copyTo(result, 8);
20750      h2.copyTo(result, 16);
20751      h3.copyTo(result, 24);
20752      h4.copyTo(result, 32);
20753      h5.copyTo(result, 40);
20754    }
20755    return result;
20756  }
20757  return hash;
20758}();
20759var calculateSHA384 = function calculateSHA384Closure() {
20760  function hash(data, offset, length) {
20761    return calculateSHA512(data, offset, length, true);
20762  }
20763  return hash;
20764}();
20765var NullCipher = function NullCipherClosure() {
20766  function NullCipher() {}
20767  NullCipher.prototype = {
20768    decryptBlock: function NullCipher_decryptBlock(data) {
20769      return data;
20770    }
20771  };
20772  return NullCipher;
20773}();
20774
20775var AESBaseCipher = function () {
20776  function AESBaseCipher() {
20777    _classCallCheck(this, AESBaseCipher);
20778
20779    if (this.constructor === AESBaseCipher) {
20780      (0, _util.unreachable)('Cannot initialize AESBaseCipher.');
20781    }
20782    this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x0
207827, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]);
20783    this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]);
20784    this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 
207840x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);
20785    this._mixCol = new Uint8Array(256);
20786    for (var i = 0; i < 256; i++) {
20787      if (i < 128) {
20788        this._mixCol[i] = i << 1;
20789      } else {
20790        this._mixCol[i] = i << 1 ^ 0x1b;
20791      }
20792    }
20793    this.buffer = new Uint8Array(16);
20794    this.bufferPosition = 0;
20795  }
20796
20797  _createClass(AESBaseCipher, [{
20798    key: '_expandKey',
20799    value: function _expandKey(cipherKey) {
20800      (0, _util.unreachable)('Cannot call `_expandKey` on the base class');
20801    }
20802  }, {
20803    key: '_decrypt',
20804    value: function _decrypt(input, key) {
20805      var t = void 0,
20806          u = void 0,
20807          v = void 0;
20808      var state = new Uint8Array(16);
20809      state.set(input);
20810      for (var j = 0, k = this._keySize; j < 16; ++j, ++k) {
20811        state[j] ^= key[k];
20812      }
20813      for (var i = this._cyclesOfRepetition - 1; i >= 1; --i) {
20814        t = state[13];
20815        state[13] = state[9];
20816        state[9] = state[5];
20817        state[5] = state[1];
20818        state[1] = t;
20819        t = state[14];
20820        u = state[10];
20821        state[14] = state[6];
20822        state[10] = state[2];
20823        state[6] = t;
20824        state[2] = u;
20825        t = state[15];
20826        u = state[11];
20827        v = state[7];
20828        state[15] = state[3];
20829        state[11] = t;
20830        state[7] = u;
20831        state[3] = v;
20832        for (var _j = 0; _j < 16; ++_j) {
20833          state[_j] = this._inv_s[state[_j]];
20834        }
20835        for (var _j2 = 0, _k = i * 16; _j2 < 16; ++_j2, ++_k) {
20836          state[_j2] ^= key[_k];
20837        }
20838        for (var _j3 = 0; _j3 < 16; _j3 += 4) {
20839          var s0 = this._mix[state[_j3]];
20840          var s1 = this._mix[state[_j3 + 1]];
20841          var s2 = this._mix[state[_j3 + 2]];
20842          var s3 = this._mix[state[_j3 + 3]];
20843          t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8;
20844          state[_j3] = t >>> 24 & 0xFF;
20845          state[_j3 + 1] = t >> 16 & 0xFF;
20846          state[_j3 + 2] = t >> 8 & 0xFF;
20847          state[_j3 + 3] = t & 0xFF;
20848        }
20849      }
20850      t = state[13];
20851      state[13] = state[9];
20852      state[9] = state[5];
20853      state[5] = state[1];
20854      state[1] = t;
20855      t = state[14];
20856      u = state[10];
20857      state[14] = state[6];
20858      state[10] = state[2];
20859      state[6] = t;
20860      state[2] = u;
20861      t = state[15];
20862      u = state[11];
20863      v = state[7];
20864      state[15] = state[3];
20865      state[11] = t;
20866      state[7] = u;
20867      state[3] = v;
20868      for (var _j4 = 0; _j4 < 16; ++_j4) {
20869        state[_j4] = this._inv_s[state[_j4]];
20870        state[_j4] ^= key[_j4];
20871      }
20872      return state;
20873    }
20874  }, {
20875    key: '_encrypt',
20876    value: function _encrypt(input, key) {
20877      var s = this._s;
20878      var t = void 0,
20879          u = void 0,
20880          v = void 0;
20881      var state = new Uint8Array(16);
20882      state.set(input);
20883      for (var j = 0; j < 16; ++j) {
20884        state[j] ^= key[j];
20885      }
20886      for (var i = 1; i < this._cyclesOfRepetition; i++) {
20887        for (var _j5 = 0; _j5 < 16; ++_j5) {
20888          state[_j5] = s[state[_j5]];
20889        }
20890        v = state[1];
20891        state[1] = state[5];
20892        state[5] = state[9];
20893        state[9] = state[13];
20894        state[13] = v;
20895        v = state[2];
20896        u = state[6];
20897        state[2] = state[10];
20898        state[6] = state[14];
20899        state[10] = v;
20900        state[14] = u;
20901        v = state[3];
20902        u = state[7];
20903        t = state[11];
20904        state[3] = state[15];
20905        state[7] = v;
20906        state[11] = u;
20907        state[15] = t;
20908        for (var _j6 = 0; _j6 < 16; _j6 += 4) {
20909          var s0 = state[_j6 + 0];
20910          var s1 = state[_j6 + 1];
20911          var s2 = state[_j6 + 2];
20912          var s3 = state[_j6 + 3];
20913          t = s0 ^ s1 ^ s2 ^ s3;
20914          state[_j6 + 0] ^= t ^ this._mixCol[s0 ^ s1];
20915          state[_j6 + 1] ^= t ^ this._mixCol[s1 ^ s2];
20916          state[_j6 + 2] ^= t ^ this._mixCol[s2 ^ s3];
20917          state[_j6 + 3] ^= t ^ this._mixCol[s3 ^ s0];
20918        }
20919        for (var _j7 = 0, k = i * 16; _j7 < 16; ++_j7, ++k) {
20920          state[_j7] ^= key[k];
20921        }
20922      }
20923      for (var _j8 = 0; _j8 < 16; ++_j8) {
20924        state[_j8] = s[state[_j8]];
20925      }
20926      v = state[1];
20927      state[1] = state[5];
20928      state[5] = state[9];
20929      state[9] = state[13];
20930      state[13] = v;
20931      v = state[2];
20932      u = state[6];
20933      state[2] = state[10];
20934      state[6] = state[14];
20935      state[10] = v;
20936      state[14] = u;
20937      v = state[3];
20938      u = state[7];
20939      t = state[11];
20940      state[3] = state[15];
20941      state[7] = v;
20942      state[11] = u;
20943      state[15] = t;
20944      for (var _j9 = 0, _k2 = this._keySize; _j9 < 16; ++_j9, ++_k2) {
20945        state[_j9] ^= key[_k2];
20946      }
20947      return state;
20948    }
20949  }, {
20950    key: '_decryptBlock2',
20951    value: function _decryptBlock2(data, finalize) {
20952      var sourceLength = data.length;
20953      var buffer = this.buffer,
20954          bufferLength = this.bufferPosition;
20955      var result = [],
20956          iv = this.iv;
20957      for (var i = 0; i < sourceLength; ++i) {
20958        buffer[bufferLength] = data[i];
20959        ++bufferLength;
20960        if (bufferLength < 16) {
20961          continue;
20962        }
20963        var plain = this._decrypt(buffer, this._key);
20964        for (var j = 0; j < 16; ++j) {
20965          plain[j] ^= iv[j];
20966        }
20967        iv = buffer;
20968        result.push(plain);
20969        buffer = new Uint8Array(16);
20970        bufferLength = 0;
20971      }
20972      this.buffer = buffer;
20973      this.bufferLength = bufferLength;
20974      this.iv = iv;
20975      if (result.length === 0) {
20976        return new Uint8Array(0);
20977      }
20978      var outputLength = 16 * result.length;
20979      if (finalize) {
20980        var lastBlock = result[result.length - 1];
20981        var psLen = lastBlock[15];
20982        if (psLen <= 16) {
20983          for (var _i = 15, ii = 16 - psLen; _i >= ii; --_i) {
20984            if (lastBlock[_i] !== psLen) {
20985              psLen = 0;
20986              break;
20987            }
20988          }
20989          outputLength -= psLen;
20990          result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);
20991        }
20992      }
20993      var output = new Uint8Array(outputLength);
20994      for (var _i2 = 0, _j10 = 0, _ii = result.length; _i2 < _ii; ++_i2, _j10 += 16) {
20995        output.set(result[_i2], _j10);
20996      }
20997      return output;
20998    }
20999  }, {
21000    key: 'decryptBlock',
21001    value: function decryptBlock(data, finalize) {
21002      var iv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
21003
21004      var sourceLength = data.length;
21005      var buffer = this.buffer,
21006          bufferLength = this.bufferPosition;
21007      if (iv) {
21008        this.iv = iv;
21009      } else {
21010        for (var i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {
21011          buffer[bufferLength] = data[i];
21012        }
21013        if (bufferLength < 16) {
21014          this.bufferLength = bufferLength;
21015          return new Uint8Array(0);
21016        }
21017        this.iv = buffer;
21018        data = data.subarray(16);
21019      }
21020      this.buffer = new Uint8Array(16);
21021      this.bufferLength = 0;
21022      this.decryptBlock = this._decryptBlock2;
21023      return this.decryptBlock(data, finalize);
21024    }
21025  }, {
21026    key: 'encrypt',
21027    value: function encrypt(data, iv) {
21028      var sourceLength = data.length;
21029      var buffer = this.buffer,
21030          bufferLength = this.bufferPosition;
21031      var result = [];
21032      if (!iv) {
21033        iv = new Uint8Array(16);
21034      }
21035      for (var i = 0; i < sourceLength; ++i) {
21036        buffer[bufferLength] = data[i];
21037        ++bufferLength;
21038        if (bufferLength < 16) {
21039          continue;
21040        }
21041        for (var j = 0; j < 16; ++j) {
21042          buffer[j] ^= iv[j];
21043        }
21044        var cipher = this._encrypt(buffer, this._key);
21045        iv = cipher;
21046        result.push(cipher);
21047        buffer = new Uint8Array(16);
21048        bufferLength = 0;
21049      }
21050      this.buffer = buffer;
21051      this.bufferLength = bufferLength;
21052      this.iv = iv;
21053      if (result.length === 0) {
21054        return new Uint8Array(0);
21055      }
21056      var outputLength = 16 * result.length;
21057      var output = new Uint8Array(outputLength);
21058      for (var _i3 = 0, _j11 = 0, ii = result.length; _i3 < ii; ++_i3, _j11 += 16) {
21059        output.set(result[_i3], _j11);
21060      }
21061      return output;
21062    }
21063  }]);
21064
21065  return AESBaseCipher;
21066}();
21067
21068var AES128Cipher = function (_AESBaseCipher) {
21069  _inherits(AES128Cipher, _AESBaseCipher);
21070
21071  function AES128Cipher(key) {
21072    _classCallCheck(this, AES128Cipher);
21073
21074    var _this = _possibleConstructorReturn(this, (AES128Cipher.__proto__ || Object.getPrototypeOf(AES128Cipher)).call(this));
21075
21076    _this._cyclesOfRepetition = 10;
21077    _this._keySize = 160;
21078    _this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]);
21079    _this._key = _this._expandKey(key);
21080    return _this;
21081  }
21082
21083  _createClass(AES128Cipher, [{
21084    key: '_expandKey',
21085    value: function _expandKey(cipherKey) {
21086      var b = 176;
21087      var s = this._s;
21088      var rcon = this._rcon;
21089      var result = new Uint8Array(b);
21090      result.set(cipherKey);
21091      for (var j = 16, i = 1; j < b; ++i) {
21092        var t1 = result[j - 3];
21093        var t2 = result[j - 2];
21094        var t3 = result[j - 1];
21095        var t4 = result[j - 4];
21096        t1 = s[t1];
21097        t2 = s[t2];
21098        t3 = s[t3];
21099        t4 = s[t4];
21100        t1 = t1 ^ rcon[i];
21101        for (var n = 0; n < 4; ++n) {
21102          result[j] = t1 ^= result[j - 16];
21103          j++;
21104          result[j] = t2 ^= result[j - 16];
21105          j++;
21106          result[j] = t3 ^= result[j - 16];
21107          j++;
21108          result[j] = t4 ^= result[j - 16];
21109          j++;
21110        }
21111      }
21112      return result;
21113    }
21114  }]);
21115
21116  return AES128Cipher;
21117}(AESBaseCipher);
21118
21119var AES256Cipher = function (_AESBaseCipher2) {
21120  _inherits(AES256Cipher, _AESBaseCipher2);
21121
21122  function AES256Cipher(key) {
21123    _classCallCheck(this, AES256Cipher);
21124
21125    var _this2 = _possibleConstructorReturn(this, (AES256Cipher.__proto__ || Object.getPrototypeOf(AES256Cipher)).call(this));
21126
21127    _this2._cyclesOfRepetition = 14;
21128    _this2._keySize = 224;
21129    _this2._key = _this2._expandKey(key);
21130    return _this2;
21131  }
21132
21133  _createClass(AES256Cipher, [{
21134    key: '_expandKey',
21135    value: function _expandKey(cipherKey) {
21136      var b = 240;
21137      var s = this._s;
21138      var result = new Uint8Array(b);
21139      result.set(cipherKey);
21140      var r = 1;
21141      var t1 = void 0,
21142          t2 = void 0,
21143          t3 = void 0,
21144          t4 = void 0;
21145      for (var j = 32, i = 1; j < b; ++i) {
21146        if (j % 32 === 16) {
21147          t1 = s[t1];
21148          t2 = s[t2];
21149          t3 = s[t3];
21150          t4 = s[t4];
21151        } else if (j % 32 === 0) {
21152          t1 = result[j - 3];
21153          t2 = result[j - 2];
21154          t3 = result[j - 1];
21155          t4 = result[j - 4];
21156          t1 = s[t1];
21157          t2 = s[t2];
21158          t3 = s[t3];
21159          t4 = s[t4];
21160          t1 = t1 ^ r;
21161          if ((r <<= 1) >= 256) {
21162            r = (r ^ 0x1b) & 0xFF;
21163          }
21164        }
21165        for (var n = 0; n < 4; ++n) {
21166          result[j] = t1 ^= result[j - 32];
21167          j++;
21168          result[j] = t2 ^= result[j - 32];
21169          j++;
21170          result[j] = t3 ^= result[j - 32];
21171          j++;
21172          result[j] = t4 ^= result[j - 32];
21173          j++;
21174        }
21175      }
21176      return result;
21177    }
21178  }]);
21179
21180  return AES256Cipher;
21181}(AESBaseCipher);
21182
21183var PDF17 = function PDF17Closure() {
21184  function compareByteArrays(array1, array2) {
21185    if (array1.length !== array2.length) {
21186      return false;
vendor: 4,592 bytes, lines 21187-21301
21187    }
21188    for (var i = 0; i < array1.length; i++) {
21189      if (array1[i] !== array2[i]) {
21190        return false;
21191      }
21192    }
21193    return true;
21194  }
21195  function PDF17() {}
21196  PDF17.prototype = {
21197    checkOwnerPassword: function PDF17_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {
21198      var hashData = new Uint8Array(password.length + 56);
21199      hashData.set(password, 0);
21200      hashData.set(ownerValidationSalt, password.length);
21201      hashData.set(userBytes, password.length + ownerValidationSalt.length);
21202      var result = calculateSHA256(hashData, 0, hashData.length);
21203      return compareByteArrays(result, ownerPassword);
21204    },
21205    checkUserPassword: function PDF17_checkUserPassword(password, userValidationSalt, userPassword) {
21206      var hashData = new Uint8Array(password.length + 8);
21207      hashData.set(password, 0);
21208      hashData.set(userValidationSalt, password.length);
21209      var result = calculateSHA256(hashData, 0, hashData.length);
21210      return compareByteArrays(result, userPassword);
21211    },
21212    getOwnerKey: function PDF17_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {
21213      var hashData = new Uint8Array(password.length + 56);
21214      hashData.set(password, 0);
21215      hashData.set(ownerKeySalt, password.length);
21216      hashData.set(userBytes, password.length + ownerKeySalt.length);
21217      var key = calculateSHA256(hashData, 0, hashData.length);
21218      var cipher = new AES256Cipher(key);
21219      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));
21220    },
21221    getUserKey: function PDF17_getUserKey(password, userKeySalt, userEncryption) {
21222      var hashData = new Uint8Array(password.length + 8);
21223      hashData.set(password, 0);
21224      hashData.set(userKeySalt, password.length);
21225      var key = calculateSHA256(hashData, 0, hashData.length);
21226      var cipher = new AES256Cipher(key);
21227      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));
21228    }
21229  };
21230  return PDF17;
21231}();
21232var PDF20 = function PDF20Closure() {
21233  function concatArrays(array1, array2) {
21234    var t = new Uint8Array(array1.length + array2.length);
21235    t.set(array1, 0);
21236    t.set(array2, array1.length);
21237    return t;
21238  }
21239  function calculatePDF20Hash(password, input, userBytes) {
21240    var k = calculateSHA256(input, 0, input.length).subarray(0, 32);
21241    var e = [0];
21242    var i = 0;
21243    while (i < 64 || e[e.length - 1] > i - 32) {
21244      var arrayLength = password.length + k.length + userBytes.length;
21245      var k1 = new Uint8Array(arrayLength * 64);
21246      var array = concatArrays(password, k);
21247      array = concatArrays(array, userBytes);
21248      for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {
21249        k1.set(array, pos);
21250      }
21251      var cipher = new AES128Cipher(k.subarray(0, 16));
21252      e = cipher.encrypt(k1, k.subarray(16, 32));
21253      var remainder = 0;
21254      for (var z = 0; z < 16; z++) {
21255        remainder *= 256 % 3;
21256        remainder %= 3;
21257        remainder += (e[z] >>> 0) % 3;
21258        remainder %= 3;
21259      }
21260      if (remainder === 0) {
21261        k = calculateSHA256(e, 0, e.length);
21262      } else if (remainder === 1) {
21263        k = calculateSHA384(e, 0, e.length);
21264      } else if (remainder === 2) {
21265        k = calculateSHA512(e, 0, e.length);
21266      }
21267      i++;
21268    }
21269    return k.subarray(0, 32);
21270  }
21271  function PDF20() {}
21272  function compareByteArrays(array1, array2) {
21273    if (array1.length !== array2.length) {
21274      return false;
21275    }
21276    for (var i = 0; i < array1.length; i++) {
21277      if (array1[i] !== array2[i]) {
21278        return false;
21279      }
21280    }
21281    return true;
21282  }
21283  PDF20.prototype = {
21284    hash: function PDF20_hash(password, concatBytes, userBytes) {
21285      return calculatePDF20Hash(password, concatBytes, userBytes);
21286    },
21287    checkOwnerPassword: function PDF20_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {
21288      var hashData = new Uint8Array(password.length + 56);
21289      hashData.set(password, 0);
21290      hashData.set(ownerValidationSalt, password.length);
21291      hashData.set(userBytes, password.length + ownerValidationSalt.length);
21292      var result = calculatePDF20Hash(password, hashData, userBytes);
21293      return compareByteArrays(result, ownerPassword);
21294    },
21295    checkUserPassword: function PDF20_checkUserPassword(password, userValidationSalt, userPassword) {
21296      var hashData = new Uint8Array(password.length + 8);
21297      hashData.set(password, 0);
21298      hashData.set(userValidationSalt, password.length);
21299      var result = calculatePDF20Hash(password, hashData, []);
21300      return compareByteArrays(result, userPassword);
21301    },
21302    getOwnerKey: function PDF20_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {
21303      var hashData = new Uint8Array(password.length + 56);
21304      hashData.set(password, 0);
21305      hashData.set(ownerKeySalt, password.length);
21306      hashData.set(userBytes, password.length + ownerKeySalt.length);
21307      var key = calculatePDF20Hash(password, hashData, userBytes);
21308      var cipher = new AES256Cipher(key);
21309      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));
21310    },
21311    getUserKey: function PDF20_getUserKey(password, userKeySalt, userEncryption) {
21312      var hashData = new Uint8Array(password.length + 8);
21313      hashData.set(password, 0);
21314      hashData.set(userKeySalt, password.length);
21315      var key = calculatePDF20Hash(password, hashData, []);
21316      var cipher = new AES256Cipher(key);
21317      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));
21318    }
21319  };
21320  return PDF20;
21321}();
21322var CipherTransform = function CipherTransformClosure() {
21323  function CipherTransform(stringCipherConstructor, streamCipherConstructor) {
21324    this.StringCipherConstructor = stringCipherConstructor;
21325    this.StreamCipherConstructor = streamCipherConstructor;
21326  }
21327  CipherTransform.prototype = {
21328    createStream: function CipherTransform_createStream(stream, length) {
21329      var cipher = new this.StreamCipherConstructor();
21330      return new _stream.DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) {
21331        return cipher.decryptBlock(data, finalize);
21332      });
21333    },
21334    decryptString: function CipherTransform_decryptString(s) {
21335      var cipher = new this.StringCipherConstructor();
21336      var data = (0, _util.stringToBytes)(s);
21337      data = cipher.decryptBlock(data, true);
21338      return (0, _util.bytesToString)(data);
21339    }
21340  };
21341  return CipherTransform;
21342}();
21343var CipherTransformFactory = function CipherTransformFactoryClosure() {
21344  var defaultPasswordBytes = new Uint8Array([0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41, 0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08, 0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80, 0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);
21345  function createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) {
21346    if (password) {
21347      var passwordLength = Math.min(127, password.length);
21348      password = password.subarray(0, passwordLength);
21349    } else {
21350      password = [];
21351    }
21352    var pdfAlgorithm;
21353    if (revision === 6) {
21354      pdfAlgorithm = new PDF20();
21355    } else {
21356      pdfAlgorithm = new PDF17();
21357    }
21358    if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) {
21359      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);
21360    } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) {
21361      return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);
21362    }
21363    return null;
21364  }
21365  function prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) {
21366    var hashDataSize = 40 + ownerPassword.length + fileId.length;
21367    var hashData = new Uint8Array(hashDataSize),
21368        i = 0,
21369        j,
21370        n;
21371    if (password) {
21372      n = Math.min(32, password.length);
21373      for (; i < n; ++i) {
21374        hashData[i] = password[i];
21375      }
21376    }
21377    j = 0;
21378    while (i < 32) {
21379      hashData[i++] = defaultPasswordBytes[j++];
21380    }
21381    for (j = 0, n = ownerPassword.length; j < n; ++j) {
21382      hashData[i++] = ownerPassword[j];
21383    }
21384    hashData[i++] = flags & 0xFF;
21385    hashData[i++] = flags >> 8 & 0xFF;
21386    hashData[i++] = flags >> 16 & 0xFF;
21387    hashData[i++] = flags >>> 24 & 0xFF;
21388    for (j = 0, n = fileId.length; j < n; ++j) {
21389      hashData[i++] = fileId[j];
21390    }
21391    if (revision >= 4 && !encryptMetadata) {
21392      hashData[i++] = 0xFF;
21393      hashData[i++] = 0xFF;
21394      hashData[i++] = 0xFF;
21395      hashData[i++] = 0xFF;
21396    }
21397    var hash = calculateMD5(hashData, 0, i);
21398    var keyLengthInBytes = keyLength >> 3;
21399    if (revision >= 3) {
21400      for (j = 0; j < 50; ++j) {
21401        hash = calculateMD5(hash, 0, keyLengthInBytes);
21402      }
21403    }
21404    var encryptionKey = hash.subarray(0, keyLengthInBytes);
21405    var cipher, checkData;
21406    if (revision >= 3) {
21407      for (i = 0; i < 32; ++i) {
21408        hashData[i] = defaultPasswordBytes[i];
21409      }
21410      for (j = 0, n = fileId.length; j < n; ++j) {
21411        hashData[i++] = fileId[j];
21412      }
21413      cipher = new ARCFourCipher(encryptionKey);
21414      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));
21415      n = encryptionKey.length;
21416      var derivedKey = new Uint8Array(n),
21417          k;
21418      for (j = 1; j <= 19; ++j) {
21419        for (k = 0; k < n; ++k) {
21420          derivedKey[k] = encryptionKey[k] ^ j;
21421        }
21422        cipher = new ARCFourCipher(derivedKey);
21423        checkData = cipher.encryptBlock(checkData);
21424      }
21425      for (j = 0, n = checkData.length; j < n; ++j) {
21426        if (userPassword[j] !== checkData[j]) {
21427          return null;
21428        }
21429      }
21430    } else {
21431      cipher = new ARCFourCipher(encryptionKey);
21432      checkData = cipher.encryptBlock(defaultPasswordBytes);
21433      for (j = 0, n = checkData.length; j < n; ++j) {
21434        if (userPassword[j] !== checkData[j]) {
21435          return null;
21436        }
21437      }
21438    }
21439    return encryptionKey;
21440  }
21441  function decodeUserPassword(password, ownerPassword, revision, keyLength) {
21442    var hashData = new Uint8Array(32),
21443        i = 0,
21444        j,
21445        n;
21446    n = Math.min(32, password.length);
21447    for (; i < n; ++i) {
21448      hashData[i] = password[i];
21449    }
21450    j = 0;
21451    while (i < 32) {
21452      hashData[i++] = defaultPasswordBytes[j++];
21453    }
21454    var hash = calculateMD5(hashData, 0, i);
21455    var keyLengthInBytes = keyLength >> 3;
21456    if (revision >= 3) {
21457      for (j = 0; j < 50; ++j) {
21458        hash = calculateMD5(hash, 0, hash.length);
21459      }
21460    }
21461    var cipher, userPassword;
21462    if (revision >= 3) {
21463      userPassword = ownerPassword;
21464      var derivedKey = new Uint8Array(keyLengthInBytes),
21465          k;
21466      for (j = 19; j >= 0; j--) {
21467        for (k = 0; k < keyLengthInBytes; ++k) {
21468          derivedKey[k] = hash[k] ^ j;
21469        }
21470        cipher = new ARCFourCipher(derivedKey);
21471        userPassword = cipher.encryptBlock(userPassword);
21472      }
21473    } else {
21474      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));
21475      userPassword = cipher.encryptBlock(ownerPassword);
21476    }
21477    return userPassword;
21478  }
21479  var identityName = _primitives.Name.get('Identity');
21480  function CipherTransformFactory(dict, fileId, password) {
21481    var filter = dict.get('Filter');
21482    if (!(0, _primitives.isName)(filter, 'Standard')) {
21483      throw new _util.FormatError('unknown encryption method');
21484    }
21485    this.dict = dict;
21486    var algorithm = dict.get('V');
21487    if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) {
21488      throw new _util.FormatError('unsupported encryption algorithm');
21489    }
21490    this.algorithm = algorithm;
21491    var keyLength = dict.get('Length');
21492    if (!keyLength) {
21493      if (algorithm <= 3) {
21494        keyLength = 40;
21495      } else {
21496        var cfDict = dict.get('CF');
21497        var streamCryptoName = dict.get('StmF');
21498        if ((0, _primitives.isDict)(cfDict) && (0, _primitives.isName)(streamCryptoName)) {
21499          cfDict.suppressEncryption = true;
21500          var handlerDict = cfDict.get(streamCryptoName.name);
21501          keyLength = handlerDict && handlerDict.get('Length') || 128;
21502          if (keyLength < 40) {
21503            keyLength <<= 3;
21504          }
21505        }
21506      }
21507    }
21508    if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {
21509      throw new _util.FormatError('invalid key length');
21510    }
21511    var ownerPassword = (0, _util.stringToBytes)(dict.get('O')).subarray(0, 32);
21512    var userPassword = (0, _util.stringToBytes)(dict.get('U')).subarray(0, 32);
21513    var flags = dict.get('P');
21514    var revision = dict.get('R');
21515    var encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get('EncryptMetadata') !== false;
21516    this.encryptMetadata = encryptMetadata;
21517    var fileIdBytes = (0, _util.stringToBytes)(fileId);
21518    var passwordBytes;
21519    if (password) {
21520      if (revision === 6) {
21521        try {
21522          password = (0, _util.utf8StringToString)(password);
21523        } catch (ex) {
21524          (0, _util.warn)('CipherTransformFactory: ' + 'Unable to convert UTF8 encoded password.');
21525        }
21526      }
21527      passwordBytes = (0, _util.stringToBytes)(password);
21528    }
21529    var encryptionKey;
21530    if (algorithm !== 5) {
21531      encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);
21532    } else {
21533      var ownerValidationSalt = (0, _util.stringToBytes)(dict.get('O')).subarray(32, 40);
21534      var ownerKeySalt = (0, _util.stringToBytes)(dict.get('O')).subarray(40, 48);
21535      var uBytes = (0, _util.stringToBytes)(dict.get('U')).subarray(0, 48);
21536      var userValidationSalt = (0, _util.stringToBytes)(dict.get('U')).subarray(32, 40);
21537      var userKeySalt = (0, _util.stringToBytes)(dict.get('U')).subarray(40, 48);
21538      var ownerEncryption = (0, _util.stringToBytes)(dict.get('OE'));
21539      var userEncryption = (0, _util.stringToBytes)(dict.get('UE'));
21540      var perms = (0, _util.stringToBytes)(dict.get('Perms'));
21541      encryptionKey = createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms);
21542    }
21543    if (!encryptionKey && !password) {
21544      throw new _util.PasswordException('No password given', _util.PasswordResponses.NEED_PASSWORD);
21545    } else if (!encryptionKey && password) {
21546      var decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);
21547      encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);
21548    }
21549    if (!encryptionKey) {
21550      throw new _util.PasswordException('Incorrect Password', _util.PasswordResponses.INCORRECT_PASSWORD);
21551    }
21552    this.encryptionKey = encryptionKey;
21553    if (algorithm >= 4) {
21554      var cf = dict.get('CF');
21555      if ((0, _primitives.isDict)(cf)) {
21556        cf.suppressEncryption = true;
21557      }
21558      this.cf = cf;
21559      this.stmf = dict.get('StmF') || identityName;
21560      this.strf = dict.get('StrF') || identityName;
21561      this.eff = dict.get('EFF') || this.stmf;
21562    }
21563  }
21564  function buildObjectKey(num, gen, encryptionKey, isAes) {
21565    var key = new Uint8Array(encryptionKey.length + 9),
21566        i,
21567        n;
21568    for (i = 0, n = encryptionKey.length; i < n; ++i) {
21569      key[i] = encryptionKey[i];
21570    }
21571    key[i++] = num & 0xFF;
21572    key[i++] = num >> 8 & 0xFF;
21573    key[i++] = num >> 16 & 0xFF;
21574    key[i++] = gen & 0xFF;
21575    key[i++] = gen >> 8 & 0xFF;
21576    if (isAes) {
21577      key[i++] = 0x73;
21578      key[i++] = 0x41;
21579      key[i++] = 0x6C;
21580      key[i++] = 0x54;
21581    }
21582    var hash = calculateMD5(key, 0, i);
21583    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));
21584  }
21585  function buildCipherConstructor(cf, name, num, gen, key) {
21586    if (!(0, _primitives.isName)(name)) {
21587      throw new _util.FormatError('Invalid crypt filter name.');
21588    }
21589    var cryptFilter = cf.get(name.name);
21590    var cfm;
21591    if (cryptFilter !== null && cryptFilter !== undefined) {
21592      cfm = cryptFilter.get('CFM');
21593    }
21594    if (!cfm || cfm.name === 'None') {
21595      return function cipherTransformFactoryBuildCipherConstructorNone() {
21596        return new NullCipher();
21597      };
21598    }
21599    if (cfm.name === 'V2') {
21600      return function cipherTransformFactoryBuildCipherConstructorV2() {
21601        return new ARCFourCipher(buildObjectKey(num, gen, key, false));
21602      };
21603    }
21604    if (cfm.name === 'AESV2') {
21605      return function cipherTransformFactoryBuildCipherConstructorAESV2() {
21606        return new AES128Cipher(buildObjectKey(num, gen, key, true));
21607      };
21608    }
21609    if (cfm.name === 'AESV3') {
21610      return function cipherTransformFactoryBuildCipherConstructorAESV3() {
21611        return new AES256Cipher(key);
21612      };
21613    }
21614    throw new _util.FormatError('Unknown crypto method');
21615  }
21616  CipherTransformFactory.prototype = {
21617    createCipherTransform: function CipherTransformFactory_createCipherTransform(num, gen) {
21618      if (this.algorithm === 4 || this.algorithm === 5) {
21619        return new CipherTransform(buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey), buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey));
21620      }
21621      var key = buildObjectKey(num, gen, this.encryptionKey, false);
21622      var cipherConstructor = function buildCipherCipherConstructor() {
21623        return new ARCFourCipher(key);
21624      };
21625      return new CipherTransform(cipherConstructor, cipherConstructor);
21626    }
21627  };
21628  return CipherTransformFactory;
21629}();
21630exports.AES128Cipher = AES128Cipher;
21631exports.AES256Cipher = AES256Cipher;
21632exports.ARCFourCipher = ARCFourCipher;
21633exports.CipherTransformFactory = CipherTransformFactory;
21634exports.PDF17 = PDF17;
21635exports.PDF20 = PDF20;
21636exports.calculateMD5 = calculateMD5;
21637exports.calculateSHA256 = calculateSHA256;
21638exports.calculateSHA384 = calculateSHA384;
21639exports.calculateSHA512 = calculateSHA512;
21640
21641/***/ }),
21642/* 151 */
21643/***/ (function(module, exports, __w_pdfjs_require__) {
21644
21645"use strict";
21646
21647
21648Object.defineProperty(exports, "__esModule", {
21649  value: true
21650});
21651exports.ColorSpace = undefined;
21652
21653var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
21654
21655var _util = __w_pdfjs_require__(2);
21656
21657var _primitives = __w_pdfjs_require__(138);
21658
21659function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
21660
21661function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
21662
21663function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
21664
21665function resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {
21666  var COMPONENTS = 3;
21667  alpha01 = alpha01 !== 1 ? 0 : alpha01;
21668  var xRatio = w1 / w2;
21669  var yRatio = h1 / h2;
21670  var newIndex = 0,
21671      oldIndex = void 0;
21672  var xScaled = new Uint16Array(w2);
21673  var w1Scanline = w1 * COMPONENTS;
21674  for (var i = 0; i < w2; i++) {
21675    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;
21676  }
21677  for (var _i = 0; _i < h2; _i++) {
21678    var py = Math.floor(_i * yRatio) * w1Scanline;
21679    for (var j = 0; j < w2; j++) {
21680      oldIndex = py + xScaled[j];
21681      dest[newIndex++] = src[oldIndex++];
21682      dest[newIndex++] = src[oldIndex++];
21683      dest[newIndex++] = src[oldIndex++];
21684      newIndex += alpha01;
21685    }
21686  }
21687}
21688
21689var ColorSpace = function () {
21690  function ColorSpace(name, numComps) {
21691    _classCallCheck(this, ColorSpace);
21692
21693    if (this.constructor === ColorSpace) {
21694      (0, _util.unreachable)('Cannot initialize ColorSpace.');
21695    }
21696    this.name = name;
21697    this.numComps = numComps;
21698  }
21699
21700  _createClass(ColorSpace, [{
21701    key: 'getRgb',
21702    value: function getRgb(src, srcOffset) {
21703      var rgb = new Uint8ClampedArray(3);
21704      this.getRgbItem(src, srcOffset, rgb, 0);
21705      return rgb;
21706    }
21707  }, {
21708    key: 'getRgbItem',
21709    value: function getRgbItem(src, srcOffset, dest, destOffset) {
21710      (0, _util.unreachable)('Should not call ColorSpace.getRgbItem');
21711    }
21712  }, {
21713    key: 'getRgbBuffer',
21714    value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
21715      (0, _util.unreachable)('Should not call ColorSpace.getRgbBuffer');
21716    }
21717  }, {
21718    key: 'getOutputLength',
21719    value: function getOutputLength(inputLength, alpha01) {
21720      (0, _util.unreachable)('Should not call ColorSpace.getOutputLength');
21721    }
21722  }, {
21723    key: 'isPassthrough',
21724    value: function isPassthrough(bits) {
21725      return false;
21726    }
21727  }, {
21728    key: 'fillRgb',
21729    value: function fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {
21730      var count = originalWidth * originalHeight;
21731      var rgbBuf = null;
21732      var numComponentColors = 1 << bpc;
21733      var needsResizing = originalHeight !== height || originalWidth !== width;
21734      if (this.isPassthrough(bpc)) {
21735        rgbBuf = comps;
21736      } else if (this.numComps === 1 && count > numComponentColors && this.name !== 'DeviceGray' && this.name !== 'DeviceRGB') {
21737        var allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors);
21738        for (var i = 0; i < numComponentColors; i++) {
21739          allColors[i] = i;
21740        }
21741        var colorMap = new Uint8ClampedArray(numComponentColors * 3);
21742        this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);
21743        if (!needsResizing) {
21744          var destPos = 0;
21745          for (var _i2 = 0; _i2 < count; ++_i2) {
21746            var key = comps[_i2] * 3;
21747            dest[destPos++] = colorMap[key];
21748            dest[destPos++] = colorMap[key + 1];
21749            dest[destPos++] = colorMap[key + 2];
21750            destPos += alpha01;
21751          }
21752        } else {
21753          rgbBuf = new Uint8Array(count * 3);
21754          var rgbPos = 0;
21755          for (var _i3 = 0; _i3 < count; ++_i3) {
21756            var _key = comps[_i3] * 3;
21757            rgbBuf[rgbPos++] = colorMap[_key];
21758            rgbBuf[rgbPos++] = colorMap[_key + 1];
21759            rgbBuf[rgbPos++] = colorMap[_key + 2];
21760          }
21761        }
21762      } else {
21763        if (!needsResizing) {
21764          this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);
21765        } else {
21766          rgbBuf = new Uint8ClampedArray(count * 3);
21767          this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);
21768        }
21769      }
21770      if (rgbBuf) {
21771        if (needsResizing) {
21772          resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);
21773        } else {
21774          var _destPos = 0,
21775              _rgbPos = 0;
21776          for (var _i4 = 0, ii = width * actualHeight; _i4 < ii; _i4++) {
21777            dest[_destPos++] = rgbBuf[_rgbPos++];
21778            dest[_destPos++] = rgbBuf[_rgbPos++];
21779            dest[_destPos++] = rgbBuf[_rgbPos++];
21780            _destPos += alpha01;
21781          }
21782        }
21783      }
21784    }
21785  }, {
21786    key: 'usesZeroToOneRange',
21787    get: function get() {
21788      return (0, _util.shadow)(this, 'usesZeroToOneRange', true);
21789    }
21790  }], [{
21791    key: 'parse',
21792    value: function parse(cs, xref, res, pdfFunctionFactory) {
21793      var IR = this.parseToIR(cs, xref, res, pdfFunctionFactory);
21794      return this.fromIR(IR);
21795    }
21796  }, {
21797    key: 'fromIR',
21798    value: function fromIR(IR) {
21799      var name = Array.isArray(IR) ? IR[0] : IR;
21800      var whitePoint = void 0,
21801          blackPoint = void 0,
21802          gamma = void 0;
21803      switch (name) {
21804        case 'DeviceGrayCS':
21805          return this.singletons.gray;
21806        case 'DeviceRgbCS':
21807          return this.singletons.rgb;
21808        case 'DeviceCmykCS':
21809          return this.singletons.cmyk;
21810        case 'CalGrayCS':
21811          whitePoint = IR[1];
21812          blackPoint = IR[2];
21813          gamma = IR[3];
21814          return new CalGrayCS(whitePoint, blackPoint, gamma);
21815        case 'CalRGBCS':
21816          whitePoint = IR[1];
21817          blackPoint = IR[2];
21818          gamma = IR[3];
21819          var matrix = IR[4];
21820          return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);
21821        case 'PatternCS':
21822          var basePatternCS = IR[1];
21823          if (basePatternCS) {
21824            basePatternCS = this.fromIR(basePatternCS);
21825          }
21826          return new PatternCS(basePatternCS);
21827        case 'IndexedCS':
21828          var baseIndexedCS = IR[1];
21829          var hiVal = IR[2];
21830          var lookup = IR[3];
21831          return new IndexedCS(this.fromIR(baseIndexedCS), hiVal, lookup);
21832        case 'AlternateCS':
21833          var numComps = IR[1];
21834          var alt = IR[2];
21835          var tintFn = IR[3];
21836          return new AlternateCS(numComps, this.fromIR(alt), tintFn);
21837        case 'LabCS':
21838          whitePoint = IR[1];
21839          blackPoint = IR[2];
21840          var range = IR[3];
21841          return new LabCS(whitePoint, blackPoint, range);
21842        default:
21843          throw new _util.FormatError('Unknown colorspace name: ' + name);
21844      }
21845    }
21846  }, {
21847    key: 'parseToIR',
21848    value: function parseToIR(cs, xref) {
21849      var res = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
21850      var pdfFunctionFactory = arguments[3];
21851
21852      cs = xref.fetchIfRef(cs);
21853      if ((0, _primitives.isName)(cs)) {
21854        switch (cs.name) {
21855          case 'DeviceGray':
21856          case 'G':
21857            return 'DeviceGrayCS';
21858          case 'DeviceRGB':
21859          case 'RGB':
21860            return 'DeviceRgbCS';
21861          case 'DeviceCMYK':
21862          case 'CMYK':
21863            return 'DeviceCmykCS';
21864          case 'Pattern':
21865            return ['PatternCS', null];
21866          default:
21867            if ((0, _primitives.isDict)(res)) {
21868              var colorSpaces = res.get('ColorSpace');
21869              if ((0, _primitives.isDict)(colorSpaces)) {
21870                var resCS = colorSpaces.get(cs.name);
21871                if (resCS) {
21872                  if ((0, _primitives.isName)(resCS)) {
21873                    return this.parseToIR(resCS, xref, res, pdfFunctionFactory);
21874                  }
21875                  cs = resCS;
21876                  break;
21877                }
21878              }
21879            }
21880            throw new _util.FormatError('unrecognized colorspace ' + cs.name);
21881        }
21882      }
21883      if (Array.isArray(cs)) {
21884        var mode = xref.fetchIfRef(cs[0]).name;
21885        var numComps = void 0,
21886            params = void 0,
21887            alt = void 0,
21888            whitePoint = void 0,
21889            blackPoint = void 0,
21890            gamma = void 0;
21891        switch (mode) {
21892          case 'DeviceGray':
21893          case 'G':
21894            return 'DeviceGrayCS';
21895          case 'DeviceRGB':
21896          case 'RGB':
21897            return 'DeviceRgbCS';
21898          case 'DeviceCMYK':
21899          case 'CMYK':
21900            return 'DeviceCmykCS';
21901          case 'CalGray':
21902            params = xref.fetchIfRef(cs[1]);
21903            whitePoint = params.getArray('WhitePoint');
21904            blackPoint = params.getArray('BlackPoint');
21905            gamma = params.get('Gamma');
21906            return ['CalGrayCS', whitePoint, blackPoint, gamma];
21907          case 'CalRGB':
21908            params = xref.fetchIfRef(cs[1]);
21909            whitePoint = params.getArray('WhitePoint');
21910            blackPoint = params.getArray('BlackPoint');
21911            gamma = params.getArray('Gamma');
21912            var matrix = params.getArray('Matrix');
21913            return ['CalRGBCS', whitePoint, blackPoint, gamma, matrix];
21914          case 'ICCBased':
21915            var stream = xref.fetchIfRef(cs[1]);
21916            var dict = stream.dict;
21917            numComps = dict.get('N');
21918            alt = dict.get('Alternate');
21919            if (alt) {
21920              var altIR = this.parseToIR(alt, xref, res, pdfFunctionFactory);
21921              var altCS = this.fromIR(altIR, pdfFunctionFactory);
21922              if (altCS.numComps === numComps) {
21923                return altIR;
21924              }
21925              (0, _util.warn)('ICCBased color space: Ignoring incorrect /Alternate entry.');
21926            }
21927            if (numComps === 1) {
21928              return 'DeviceGrayCS';
21929            } else if (numComps === 3) {
21930              return 'DeviceRgbCS';
21931            } else if (numComps === 4) {
21932              return 'DeviceCmykCS';
21933            }
21934            break;
21935          case 'Pattern':
21936            var basePatternCS = cs[1] || null;
21937            if (basePatternCS) {
21938              basePatternCS = this.parseToIR(basePatternCS, xref, res, pdfFunctionFactory);
21939            }
21940            return ['PatternCS', basePatternCS];
21941          case 'Indexed':
21942          case 'I':
21943            var baseIndexedCS = this.parseToIR(cs[1], xref, res, pdfFunctionFactory);
21944            var hiVal = xref.fetchIfRef(cs[2]) + 1;
21945            var lookup = xref.fetchIfRef(cs[3]);
21946            if ((0, _primitives.isStream)(lookup)) {
21947              lookup = lookup.getBytes();
21948            }
21949            return ['IndexedCS', baseIndexedCS, hiVal, lookup];
21950          case 'Separation':
21951          case 'DeviceN':
21952            var name = xref.fetchIfRef(cs[1]);
21953            numComps = Array.isArray(name) ? name.length : 1;
21954            alt = this.parseToIR(cs[2], xref, res, pdfFunctionFactory);
21955            var tintFn = pdfFunctionFactory.create(xref.fetchIfRef(cs[3]));
21956            return ['AlternateCS', numComps, alt, tintFn];
21957          case 'Lab':
21958            params = xref.fetchIfRef(cs[1]);
21959            whitePoint = params.getArray('WhitePoint');
21960            blackPoint = params.getArray('BlackPoint');
21961            var range = params.getArray('Range');
21962            return ['LabCS', whitePoint, blackPoint, range];
21963          default:
21964            throw new _util.FormatError('unimplemented color space object "' + mode + '"');
21965        }
21966      }
21967      throw new _util.FormatError('unrecognized color space object: "' + cs + '"');
21968    }
21969  }, {
21970    key: 'isDefaultDecode',
21971    value: function isDefaultDecode(decode, n) {
21972      if (!Array.isArray(decode)) {
21973        return true;
21974      }
21975      if (n * 2 !== decode.length) {
21976        (0, _util.warn)('The decode map is not the correct length');
21977        return true;
21978      }
21979      for (var i = 0, ii = decode.length; i < ii; i += 2) {
21980        if (decode[i] !== 0 || decode[i + 1] !== 1) {
21981          return false;
21982        }
21983      }
21984      return true;
21985    }
21986  }, {
21987    key: 'singletons',
21988    get: function get() {
21989      return (0, _util.shadow)(this, 'singletons', {
21990        get gray() {
21991          return (0, _util.shadow)(this, 'gray', new DeviceGrayCS());
21992        },
21993        get rgb() {
21994          return (0, _util.shadow)(this, 'rgb', new DeviceRgbCS());
21995        },
21996        get cmyk() {
21997          return (0, _util.shadow)(this, 'cmyk', new DeviceCmykCS());
21998        }
21999      });
22000    }
22001  }]);
22002
22003  return ColorSpace;
22004}();
22005
22006var AlternateCS = function (_ColorSpace) {
22007  _inherits(AlternateCS, _ColorSpace);
22008
22009  function AlternateCS(numComps, base, tintFn) {
22010    _classCallCheck(this, AlternateCS);
22011
22012    var _this = _possibleConstructorReturn(this, (AlternateCS.__proto__ || Object.getPrototypeOf(AlternateCS)).call(this, 'Alternate', numComps));
22013
22014    _this.base = base;
22015    _this.tintFn = tintFn;
22016    _this.tmpBuf = new Float32Array(base.numComps);
22017    return _this;
22018  }
22019
22020  _createClass(AlternateCS, [{
22021    key: 'getRgbItem',
22022    value: function getRgbItem(src, srcOffset, dest, destOffset) {
22023      var tmpBuf = this.tmpBuf;
22024      this.tintFn(src, srcOffset, tmpBuf, 0);
22025      this.base.getRgbItem(tmpBuf, 0, dest, destOffset);
22026    }
22027  }, {
22028    key: 'getRgbBuffer',
22029    value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
22030      var tintFn = this.tintFn;
22031      var base = this.base;
22032      var scale = 1 / ((1 << bits) - 1);
22033      var baseNumComps = base.numComps;
22034      var usesZeroToOneRange = base.usesZeroToOneRange;
22035      var isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;
22036      var pos = isPassthrough ? destOffset : 0;
22037      var baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);
22038      var numComps = this.numComps;
22039      var scaled = new Float32Array(numComps);
22040      var tinted = new Float32Array(baseNumComps);
22041      var i = void 0,
22042          j = void 0;
22043      for (i = 0; i < count; i++) {
22044        for (j = 0; j < numComps; j++) {
22045          scaled[j] = src[srcOffset++] * scale;
22046        }
22047        tintFn(scaled, 0, tinted, 0);
22048        if (usesZeroToOneRange) {
22049          for (j = 0; j < baseNumComps; j++) {
22050            baseBuf[pos++] = tinted[j] * 255;
22051          }
22052        } else {
22053          base.getRgbItem(tinted, 0, baseBuf, pos);
22054          pos += baseNumComps;
22055        }
22056      }
22057      if (!isPassthrough) {
22058        base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);
22059      }
22060    }
22061  }, {
22062    key: 'getOutputLength',
22063    value: function getOutputLength(inputLength, alpha01) {
22064      return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01);
22065    }
22066  }, {
22067    key: 'isDefaultDecode',
22068    value: function isDefaultDecode(decodeMap) {
22069      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
22070    }
22071  }]);
22072
22073  return AlternateCS;
22074}(ColorSpace);
22075
22076var PatternCS = function (_ColorSpace2) {
22077  _inherits(PatternCS, _ColorSpace2);
22078
22079  function PatternCS(baseCS) {
22080    _classCallCheck(this, PatternCS);
22081
22082    var _this2 = _possibleConstructorReturn(this, (PatternCS.__proto__ || Object.getPrototypeOf(PatternCS)).call(this, 'Pattern', null));
22083
22084    _this2.base = baseCS;
22085    return _this2;
22086  }
22087
22088  return PatternCS;
22089}(ColorSpace);
22090
22091var IndexedCS = function (_ColorSpace3) {
22092  _inherits(IndexedCS, _ColorSpace3);
22093
22094  function IndexedCS(base, highVal, lookup) {
22095    _classCallCheck(this, IndexedCS);
22096
22097    var _this3 = _possibleConstructorReturn(this, (IndexedCS.__proto__ || Object.getPrototypeOf(IndexedCS)).call(this, 'Indexed', 1));
22098
22099    _this3.base = base;
22100    _this3.highVal = highVal;
22101    var baseNumComps = base.numComps;
22102    var length = baseNumComps * highVal;
22103    if ((0, _primitives.isStream)(lookup)) {
22104      _this3.lookup = new Uint8Array(length);
22105      var bytes = lookup.getBytes(length);
22106      _this3.lookup.set(bytes);
22107    } else if ((0, _util.isString)(lookup)) {
22108      _this3.lookup = new Uint8Array(length);
22109      for (var i = 0; i < length; ++i) {
22110        _this3.lookup[i] = lookup.charCodeAt(i);
22111      }
22112    } else if (lookup instanceof Uint8Array) {
22113      _this3.lookup = lookup;
22114    } else {
22115      throw new _util.FormatError('Unrecognized lookup table: ' + lookup);
22116    }
22117    return _this3;
22118  }
22119
22120  _createClass(IndexedCS, [{
22121    key: 'getRgbItem',
22122    value: function getRgbItem(src, srcOffset, dest, destOffset) {
22123      var numComps = this.base.numComps;
22124      var start = src[srcOffset] * numComps;
22125      this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);
22126    }
22127  }, {
22128    key: 'getRgbBuffer',
22129    value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
22130      var base = this.base;
22131      var numComps = base.numComps;
22132      var outputDelta = base.getOutputLength(numComps, alpha01);
22133      var lookup = this.lookup;
22134      for (var i = 0; i < count; ++i) {
22135        var lookupPos = src[srcOffset++] * numComps;
22136        base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);
22137        destOffset += outputDelta;
22138      }
22139    }
22140  }, {
22141    key: 'getOutputLength',
22142    value: function getOutputLength(inputLength, alpha01) {
22143      return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);
22144    }
22145  }, {
22146    key: 'isDefaultDecode',
22147    value: function isDefaultDecode(decodeMap) {
22148      return true;
22149    }
22150  }]);
22151
22152  return IndexedCS;
22153}(ColorSpace);
22154
22155var DeviceGrayCS = function (_ColorSpace4) {
22156  _inherits(DeviceGrayCS, _ColorSpace4);
22157
22158  function DeviceGrayCS() {
22159    _classCallCheck(this, DeviceGrayCS);
22160
22161    return _possibleConstructorReturn(this, (DeviceGrayCS.__proto__ || Object.getPrototypeOf(DeviceGrayCS)).call(this, 'DeviceGray', 1));
22162  }
22163
22164  _createClass(DeviceGrayCS, [{
22165    key: 'getRgbItem',
22166    value: function getRgbItem(src, srcOffset, dest, destOffset) {
22167      var c = src[srcOffset] * 255;
22168      dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;
22169    }
22170  }, {
22171    key: 'getRgbBuffer',
22172    value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
22173      var scale = 255 / ((1 << bits) - 1);
22174      var j = srcOffset,
22175          q = destOffset;
22176      for (var i = 0; i < count; ++i) {
22177        var c = scale * src[j++];
22178        dest[q++] = c;
22179        dest[q++] = c;
22180        dest[q++] = c;
22181        q += alpha01;
22182      }
22183    }
22184  }, {
22185    key: 'getOutputLength',
22186    value: function getOutputLength(inputLength, alpha01) {
22187      return inputLength * (3 + alpha01);
22188    }
22189  }, {
22190    key: 'isDefaultDecode',
22191    value: function isDefaultDecode(decodeMap) {
22192      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
22193    }
22194  }]);
22195
22196  return DeviceGrayCS;
22197}(ColorSpace);
22198
22199var DeviceRgbCS = function (_ColorSpace5) {
22200  _inherits(DeviceRgbCS, _ColorSpace5);
22201
22202  function DeviceRgbCS() {
22203    _classCallCheck(this, DeviceRgbCS);
22204
22205    return _possibleConstructorReturn(this, (DeviceRgbCS.__proto__ || Object.getPrototypeOf(DeviceRgbCS)).call(this, 'DeviceRGB', 3));
22206  }
22207
22208  _createClass(DeviceRgbCS, [{
22209    key: 'getRgbItem',
22210    value: function getRgbItem(src, srcOffset, dest, destOffset) {
22211      dest[destOffset] = src[srcOffset] * 255;
22212      dest[destOffset + 1] = src[srcOffset + 1] * 255;
22213      dest[destOffset + 2] = src[srcOffset + 2] * 255;
22214    }
22215  }, {
22216    key: 'getRgbBuffer',
22217    value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
22218      if (bits === 8 && alpha01 === 0) {
22219        dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);
22220        return;
22221      }
22222      var scale = 255 / ((1 << bits) - 1);
22223      var j = srcOffset,
22224          q = destOffset;
22225      for (var i = 0; i < count; ++i) {
22226        dest[q++] = scale * src[j++];
22227        dest[q++] = scale * src[j++];
22228        dest[q++] = scale * src[j++];
22229        q += alpha01;
22230      }
22231    }
22232  }, {
22233    key: 'getOutputLength',
22234    value: function getOutputLength(inputLength, alpha01) {
22235      return inputLength * (3 + alpha01) / 3 | 0;
22236    }
22237  }, {
22238    key: 'isPassthrough',
22239    value: function isPassthrough(bits) {
22240      return bits === 8;
22241    }
22242  }, {
22243    key: 'isDefaultDecode',
22244    value: function isDefaultDecode(decodeMap) {
22245      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
22246    }
22247  }]);
22248
22249  return DeviceRgbCS;
22250}(ColorSpace);
22251
22252var DeviceCmykCS = function DeviceCmykCSClosure() {
22253  function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {
22254    var c = src[srcOffset] * srcScale;
22255    var m = src[srcOffset + 1] * srcScale;
22256    var y = src[srcOffset + 2] * srcScale;
22257    var k = src[srcOffset + 3] * srcScale;
22258    dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);
22259    dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.
22259118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);
22260    dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);
22261  }
22262
22263  var DeviceCmykCS = function (_ColorSpace6) {
22264    _inherits(DeviceCmykCS, _ColorSpace6);
22265
22266    function DeviceCmykCS() {
22267      _classCallCheck(this, DeviceCmykCS);
22268
22269      return _possibleConstructorReturn(this, (DeviceCmykCS.__proto__ || Object.getPrototypeOf(DeviceCmykCS)).call(this, 'DeviceCMYK', 4));
22270    }
22271
22272    _createClass(DeviceCmykCS, [{
22273      key: 'getRgbItem',
22274      value: function getRgbItem(src, srcOffset, dest, destOffset) {
22275        convertToRgb(src, srcOffset, 1, dest, destOffset);
22276      }
22277    }, {
22278      key: 'getRgbBuffer',
22279      value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
22280        var scale = 1 / ((1 << bits) - 1);
22281        for (var i = 0; i < count; i++) {
22282          convertToRgb(src, srcOffset, scale, dest, destOffset);
22283          srcOffset += 4;
22284          destOffset += 3 + alpha01;
22285        }
22286      }
22287    }, {
22288      key: 'getOutputLength',
22289      value: function getOutputLength(inputLength, alpha01) {
22290        return inputLength / 4 * (3 + alpha01) | 0;
22291      }
22292    }, {
22293      key: 'isDefaultDecode',
22294      value: function isDefaultDecode(decodeMap) {
22295        return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
22296      }
22297    }]);
22298
22299    return DeviceCmykCS;
22300  }(ColorSpace);
22301
22302  return DeviceCmykCS;
22303}();
22304var CalGrayCS = function CalGrayCSClosure() {
22305  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {
22306    var A = src[srcOffset] * scale;
22307    var AG = Math.pow(A, cs.G);
22308    var L = cs.YW * AG;
22309    var val = Math.max(295.8 * Math.pow(L, 0.333333333333333333) - 40.8, 0);
22310    dest[destOffset] = val;
22311    dest[destOffset + 1] = val;
22312    dest[destOffset + 2] = val;
22313  }
22314
22315  var CalGrayCS = function (_ColorSpace7) {
22316    _inherits(CalGrayCS, _ColorSpace7);
22317
22318    function CalGrayCS(whitePoint, blackPoint, gamma) {
22319      _classCallCheck(this, CalGrayCS);
22320
22321      var _this7 = _possibleConstructorReturn(this, (CalGrayCS.__proto__ || Object.getPrototypeOf(CalGrayCS)).call(this, 'CalGray', 1));
22322
22323      if (!whitePoint) {
22324        throw new _util.FormatError('WhitePoint missing - required for color space CalGray');
22325      }
22326      blackPoint = blackPoint || [0, 0, 0];
22327      gamma = gamma || 1;
22328      _this7.XW = whitePoint[0];
22329      _this7.YW = whitePoint[1];
22330      _this7.ZW = whitePoint[2];
22331      _this7.XB = blackPoint[0];
22332      _this7.YB = blackPoint[1];
22333      _this7.ZB = blackPoint[2];
22334      _this7.G = gamma;
22335      if (_this7.XW < 0 || _this7.ZW < 0 || _this7.YW !== 1) {
22336        throw new _util.FormatError('Invalid WhitePoint components for ' + _this7.name + ', no fallback available');
22337      }
22338      if (_this7.XB < 0 || _this7.YB < 0 || _this7.ZB < 0) {
22339        (0, _util.info)('Invalid BlackPoint for ' + _this7.name + ', falling back to default.');
22340        _this7.XB = _this7.YB = _this7.ZB = 0;
22341      }
22342      if (_this7.XB !== 0 || _this7.YB !== 0 || _this7.ZB !== 0) {
22343        (0, _util.warn)(_this7.name + ', BlackPoint: XB: ' + _this7.XB + ', YB: ' + _this7.YB + ', ' + ('ZB: ' + _this7.ZB + ', only default values are supported.'));
22344      }
22345      if (_this7.G < 1) {
22346        (0, _util.info)('Invalid Gamma: ' + _this7.G + ' for ' + _this7.name + ', ' + 'falling back to default.');
22347        _this7.G = 1;
22348      }
22349      return _this7;
22350    }
22351
22352    _createClass(CalGrayCS, [{
22353      key: 'getRgbItem',
22354      value: function getRgbItem(src, srcOffset, dest, destOffset) {
vendor: 4,122 bytes, lines 22355-22463
22355        convertToRgb(this, src, srcOffset, dest, destOffset, 1);
22356      }
22357    }, {
22358      key: 'getRgbBuffer',
22359      value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
22360        var scale = 1 / ((1 << bits) - 1);
22361        for (var i = 0; i < count; ++i) {
22362          convertToRgb(this, src, srcOffset, dest, destOffset, scale);
22363          srcOffset += 1;
22364          destOffset += 3 + alpha01;
22365        }
22366      }
22367    }, {
22368      key: 'getOutputLength',
22369      value: function getOutputLength(inputLength, alpha01) {
22370        return inputLength * (3 + alpha01);
22371      }
22372    }, {
22373      key: 'isDefaultDecode',
22374      value: function isDefaultDecode(decodeMap) {
22375        return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
22376      }
22377    }]);
22378
22379    return CalGrayCS;
22380  }(ColorSpace);
22381
22382  return CalGrayCS;
22383}();
22384var CalRGBCS = function CalRGBCSClosure() {
22385  var BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]);
22386  var BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);
22387  var SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);
22388  var FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);
22389  var tempNormalizeMatrix = new Float32Array(3);
22390  var tempConvertMatrix1 = new Float32Array(3);
22391  var tempConvertMatrix2 = new Float32Array(3);
22392  var DECODE_L_CONSTANT = Math.pow((8 + 16) / 116, 3) / 8.0;
22393  function matrixProduct(a, b, result) {
22394    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
22395    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];
22396    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];
22397  }
22398  function convertToFlat(sourceWhitePoint, LMS, result) {
22399    result[0] = LMS[0] * 1 / sourceWhitePoint[0];
22400    result[1] = LMS[1] * 1 / sourceWhitePoint[1];
22401    result[2] = LMS[2] * 1 / sourceWhitePoint[2];
22402  }
22403  function convertToD65(sourceWhitePoint, LMS, result) {
22404    var D65X = 0.95047;
22405    var D65Y = 1;
22406    var D65Z = 1.08883;
22407    result[0] = LMS[0] * D65X / sourceWhitePoint[0];
22408    result[1] = LMS[1] * D65Y / sourceWhitePoint[1];
22409    result[2] = LMS[2] * D65Z / sourceWhitePoint[2];
22410  }
22411  function sRGBTransferFunction(color) {
22412    if (color <= 0.0031308) {
22413      return adjustToRange(0, 1, 12.92 * color);
22414    }
22415    return adjustToRange(0, 1, (1 + 0.055) * Math.pow(color, 1 / 2.4) - 0.055);
22416  }
22417  function adjustToRange(min, max, value) {
22418    return Math.max(min, Math.min(max, value));
22419  }
22420  function decodeL(L) {
22421    if (L < 0) {
22422      return -decodeL(-L);
22423    }
22424    if (L > 8.0) {
22425      return Math.pow((L + 16) / 116, 3);
22426    }
22427    return L * DECODE_L_CONSTANT;
22428  }
22429  function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {
22430    if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {
22431      result[0] = XYZ_Flat[0];
22432      result[1] = XYZ_Flat[1];
22433      result[2] = XYZ_Flat[2];
22434      return;
22435    }
22436    var zeroDecodeL = decodeL(0);
22437    var X_DST = zeroDecodeL;
22438    var X_SRC = decodeL(sourceBlackPoint[0]);
22439    var Y_DST = zeroDecodeL;
22440    var Y_SRC = decodeL(sourceBlackPoint[1]);
22441    var Z_DST = zeroDecodeL;
22442    var Z_SRC = decodeL(sourceBlackPoint[2]);
22443    var X_Scale = (1 - X_DST) / (1 - X_SRC);
22444    var X_Offset = 1 - X_Scale;
22445    var Y_Scale = (1 - Y_DST) / (1 - Y_SRC);
22446    var Y_Offset = 1 - Y_Scale;
22447    var Z_Scale = (1 - Z_DST) / (1 - Z_SRC);
22448    var Z_Offset = 1 - Z_Scale;
22449    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;
22450    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;
22451    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;
22452  }
22453  function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {
22454    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {
22455      result[0] = XYZ_In[0];
22456      result[1] = XYZ_In[1];
22457      result[2] = XYZ_In[2];
22458      return;
22459    }
22460    var LMS = result;
22461    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);
22462    var LMS_Flat = tempNormalizeMatrix;
22463    convertToFlat(sourceWhitePoint, LMS, LMS_Flat);
22464    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);
22465  }
22466  function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {
22467    var LMS = result;
22468    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);
22469    var LMS_D65 = tempNormalizeMatrix;
22470    convertToD65(sourceWhitePoint, LMS, LMS_D65);
22471    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);
22472  }
22473  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {
22474    var A = adjustToRange(0, 1, src[srcOffset] * scale);
22475    var B = adjustToRange(0, 1, src[srcOffset + 1] * scale);
22476    var C = adjustToRange(0, 1, src[srcOffset + 2] * scale);
22477    var AGR = Math.pow(A, cs.GR);
22478    var BGG = Math.pow(B, cs.GG);
22479    var CGB = Math.pow(C, cs.GB);
22480    var X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;
22481    var Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;
22482    var Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;
22483    var XYZ = tempConvertMatrix1;
22484    XYZ[0] = X;
22485    XYZ[1] = Y;
22486    XYZ[2] = Z;
22487    var XYZ_Flat = tempConvertMatrix2;
22488    normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);
22489    var XYZ_Black = tempConvertMatrix1;
22490    compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);
22491    var XYZ_D65 = tempConvertMatrix2;
22492    normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);
22493    var SRGB = tempConvertMatrix1;
22494    matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);
22495    dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;
22496    dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;
22497    dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;
22498  }
22499
22500  var CalRGBCS = function (_ColorSpace8) {
22501    _inherits(CalRGBCS, _ColorSpace8);
22502
22503    function CalRGBCS(whitePoint, blackPoint, gamma, matrix) {
22504      _classCallCheck(this, CalRGBCS);
22505
22506      var _this8 = _possibleConstructorReturn(this, (CalRGBCS.__proto__ || Object.getPrototypeOf(CalRGBCS)).call(this, 'CalRGB', 3));
22507
22508      if (!whitePoint) {
22509        throw new _util.FormatError('WhitePoint missing - required for color space CalRGB');
22510      }
22511      blackPoint = blackPoint || new Float32Array(3);
22512      gamma = gamma || new Float32Array([1, 1, 1]);
22513      matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);
22514      var XW = whitePoint[0];
22515      var YW = whitePoint[1];
22516      var ZW = whitePoint[2];
22517      _this8.whitePoint = whitePoint;
22518      var XB = blackPoint[0];
22519      var YB = blackPoint[1];
22520      var ZB = blackPoint[2];
22521      _this8.blackPoint = blackPoint;
22522      _this8.GR = gamma[0];
22523      _this8.GG = gamma[1];
22524      _this8.GB = gamma[2];
22525      _this8.MXA = matrix[0];
22526      _this8.MYA = matrix[1];
22527      _this8.MZA = matrix[2];
22528      _this8.MXB = matrix[3];
22529      _this8.MYB = matrix[4];
22530      _this8.MZB = matrix[5];
22531      _this8.MXC = matrix[6];
22532      _this8.MYC = matrix[7];
22533      _this8.MZC = matrix[8];
22534      if (XW < 0 || ZW < 0 || YW !== 1) {
22535        throw new _util.FormatError('Invalid WhitePoint components for ' + _this8.name + ', no fallback available');
22536      }
22537      if (XB < 0 || YB < 0 || ZB < 0) {
22538        (0, _util.info)('Invalid BlackPoint for ' + _this8.name + ' [' + XB + ', ' + YB + ', ' + ZB + '], ' + 'falling back to default.');
22539        _this8.blackPoint = new Float32Array(3);
22540      }
22541      if (_this8.GR < 0 || _this8.GG < 0 || _this8.GB < 0) {
22542        (0, _util.info)('Invalid Gamma [' + _this8.GR + ', ' + _this8.GG + ', ' + _this8.GB + '] for ' + (_this8.name + ', falling back to default.'));
22543        _this8.GR = _this8.GG = _this8.GB = 1;
22544      }
22545      return _this8;
22546    }
22547
22548    _createClass(CalRGBCS, [{
22549      key: 'getRgbItem',
22550      value: function getRgbItem(src, srcOffset, dest, destOffset) {
22551        convertToRgb(this, src, srcOffset, dest, destOffset, 1);
22552      }
22553    }, {
22554      key: 'getRgbBuffer',
22555      value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
22556        var scale = 1 / ((1 << bits) - 1);
22557        for (var i = 0; i < count; ++i) {
22558          convertToRgb(this, src, srcOffset, dest, destOffset, scale);
22559          srcOffset += 3;
22560          destOffset += 3 + alpha01;
22561        }
22562      }
22563    }, {
22564      key: 'getOutputLength',
22565      value: function getOutputLength(inputLength, alpha01) {
22566        return inputLength * (3 + alpha01) / 3 | 0;
22567      }
22568    }, {
22569      key: 'isDefaultDecode',
22570      value: function isDefaultDecode(decodeMap) {
22571        return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
22572      }
22573    }]);
22574
22575    return CalRGBCS;
22576  }(ColorSpace);
22577
22578  return CalRGBCS;
22579}();
22580var LabCS = function LabCSClosure() {
22581  function fn_g(x) {
22582    var result = void 0;
22583    if (x >= 6 / 29) {
22584      result = x * x * x;
22585    } else {
22586      result = 108 / 841 * (x - 4 / 29);
22587    }
22588    return result;
22589  }
22590  function decode(value, high1, low2, high2) {
22591    return low2 + value * (high2 - low2) / high1;
22592  }
22593  function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {
22594    var Ls = src[srcOffset];
22595    var as = src[srcOffset + 1];
22596    var bs = src[srcOffset + 2];
22597    if (maxVal !== false) {
22598      Ls = decode(Ls, maxVal, 0, 100);
22599      as = decode(as, maxVal, cs.amin, cs.amax);
22600      bs = decode(bs, maxVal, cs.bmin, cs.bmax);
22601    }
22602    as = as > cs.amax ? cs.amax : as < cs.amin ? cs.amin : as;
22603    bs = bs > cs.bmax ? cs.bmax : bs < cs.bmin ? cs.bmin : bs;
22604    var M = (Ls + 16) / 116;
22605    var L = M + as / 500;
22606    var N = M - bs / 200;
22607    var X = cs.XW * fn_g(L);
22608    var Y = cs.YW * fn_g(M);
22609    var Z = cs.ZW * fn_g(N);
22610    var r = void 0,
22611        g = void 0,
22612        b = void 0;
22613    if (cs.ZW < 1) {
22614      r = X * 3.1339 + Y * -1.6170 + Z * -0.4906;
22615      g = X * -0.9785 + Y * 1.9160 + Z * 0.0333;
22616      b = X * 0.0720 + Y * -0.2290 + Z * 1.4057;
22617    } else {
22618      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;
22619      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;
22620      b = X * 0.0557 + Y * -0.2040 + Z * 1.0570;
22621    }
22622    dest[destOffset] = Math.sqrt(r) * 255;
22623    dest[destOffset + 1] = Math.sqrt(g) * 255;
22624    dest[destOffset + 2] = Math.sqrt(b) * 255;
22625  }
22626
22627  var LabCS = function (_ColorSpace9) {
22628    _inherits(LabCS, _ColorSpace9);
22629
22630    function LabCS(whitePoint, blackPoint, range) {
22631      _classCallCheck(this, LabCS);
22632
22633      var _this9 = _possibleConstructorReturn(this, (LabCS.__proto__ || Object.getPrototypeOf(LabCS)).call(this, 'Lab', 3));
22634
22635      if (!whitePoint) {
22636        throw new _util.FormatError('WhitePoint missing - required for color space Lab');
22637      }
22638      blackPoint = blackPoint || [0, 0, 0];
22639      range = range || [-100, 100, -100, 100];
22640      _this9.XW = whitePoint[0];
22641      _this9.YW = whitePoint[1];
22642      _this9.ZW = whitePoint[2];
22643      _this9.amin = range[0];
22644      _this9.amax = range[1];
22645      _this9.bmin = range[2];
22646      _this9.bmax = range[3];
22647      _this9.XB = blackPoint[0];
22648      _this9.YB = blackPoint[1];
22649      _this9.ZB = blackPoint[2];
22650      if (_this9.XW < 0 || _this9.ZW < 0 || _this9.YW !== 1) {
22651        throw new _util.FormatError('Invalid WhitePoint components, no fallback available');
22652      }
22653      if (_this9.XB < 0 || _this9.YB < 0 || _this9.ZB < 0) {
22654        (0, _util.info)('Invalid BlackPoint, falling back to default');
22655        _this9.XB = _this9.YB = _this9.ZB = 0;
22656      }
22657      if (_this9.amin > _this9.amax || _this9.bmin > _this9.bmax) {
22658        (0, _util.info)('Invalid Range, falling back to defaults');
22659        _this9.amin = -100;
22660        _this9.amax = 100;
22661        _this9.bmin = -100;
22662        _this9.bmax = 100;
22663      }
22664      return _this9;
22665    }
22666
22667    _createClass(LabCS, [{
22668      key: 'getRgbItem',
22669      value: function getRgbItem(src, srcOffset, dest, destOffset) {
22670        convertToRgb(this, src, srcOffset, false, dest, destOffset);
22671      }
22672    }, {
22673      key: 'getRgbBuffer',
22674      value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
22675        var maxVal = (1 << bits) - 1;
22676        for (var i = 0; i < count; i++) {
22677          convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);
22678          srcOffset += 3;
22679          destOffset += 3 + alpha01;
22680        }
22681      }
22682    }, {
22683      key: 'getOutputLength',
22684      value: function getOutputLength(inputLength, alpha01) {
22685        return inputLength * (3 + alpha01) / 3 | 0;
22686      }
22687    }, {
22688      key: 'isDefaultDecode',
22689      value: function isDefaultDecode(decodeMap) {
22690        return true;
22691      }
22692    }, {
22693      key: 'usesZeroToOneRange',
22694      get: function get() {
22695        return (0, _util.shadow)(this, 'usesZeroToOneRange', false);
22696      }
22697    }]);
22698
22699    return LabCS;
22700  }(ColorSpace);
22701
22702  return LabCS;
22703}();
22704exports.ColorSpace = ColorSpace;
22705
22706/***/ }),
22707/* 152 */
22708/***/ (function(module, exports, __w_pdfjs_require__) {
22709
22710"use strict";
22711
22712
22713Object.defineProperty(exports, "__esModule", {
22714  value: true
22715});
22716exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = undefined;
22717
22718var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
22719
22720var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
22721
22722var _util = __w_pdfjs_require__(2);
22723
22724var _obj = __w_pdfjs_require__(137);
22725
22726var _primitives = __w_pdfjs_require__(138);
22727
22728var _colorspace = __w_pdfjs_require__(151);
22729
22730var _operator_list = __w_pdfjs_require__(153);
22731
22732var _stream = __w_pdfjs_require__(140);
22733
22734function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
22735
22736function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
22737
22738function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
22739
22740var AnnotationFactory = function () {
22741  function AnnotationFactory() {
22742    _classCallCheck(this, AnnotationFactory);
22743  }
22744
22745  _createClass(AnnotationFactory, null, [{
22746    key: 'create',
22747    value: function create(xref, ref, pdfManager, idFactory) {
22748      return pdfManager.ensure(this, '_create', [xref, ref, pdfManager, idFactory]);
22749    }
22750  }, {
22751    key: '_create',
22752    value: function _create(xref, ref, pdfManager, idFactory) {
22753      var dict = xref.fetchIfRef(ref);
22754      if (!(0, _primitives.isDict)(dict)) {
22755        return;
22756      }
22757      var id = (0, _primitives.isRef)(ref) ? ref.toString() : 'annot_' + idFactory.createObjId();
22758      var subtype = dict.get('Subtype');
22759      subtype = (0, _primitives.isName)(subtype) ? subtype.name : null;
22760      var parameters = {
22761        xref: xref,
22762        dict: dict,
22763        ref: (0, _primitives.isRef)(ref) ? ref : null,
22764        subtype: subtype,
22765        id: id,
22766        pdfManager: pdfManager
22767      };
22768      switch (subtype) {
22769        case 'Link':
22770          return new LinkAnnotation(parameters);
22771        case 'Text':
22772          return new TextAnnotation(parameters);
22773        case 'Widget':
22774          var fieldType = (0, _util.getInheritableProperty)({
22775            dict: dict,
22776            key: 'FT'
22777          });
22778          fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
22779          switch (fieldType) {
22780            case 'Tx':
22781              return new TextWidgetAnnotation(parameters);
22782            case 'Btn':
22783              return new ButtonWidgetAnnotation(parameters);
22784            case 'Ch':
22785              return new ChoiceWidgetAnnotation(parameters);
22786          }
22787          (0, _util.warn)('Unimplemented widget field type "' + fieldType + '", ' + 'falling back to base field type.');
22788          return new WidgetAnnotation(parameters);
22789        case 'Popup':
22790          return new PopupAnnotation(parameters);
22791        case 'Line':
22792          return new LineAnnotation(parameters);
22793        case 'Square':
22794          return new SquareAnnotation(parameters);
22795        case 'Circle':
22796          return new CircleAnnotation(parameters);
22797        case 'PolyLine':
22798          return new PolylineAnnotation(parameters);
22799        case 'Polygon':
22800          return new PolygonAnnotation(parameters);
22801        case 'Ink':
22802          return new InkAnnotation(parameters);
22803        case 'Highlight':
22804          return new HighlightAnnotation(parameters);
22805        case 'Underline':
22806          return new UnderlineAnnotation(parameters);
22807        case 'Squiggly':
22808          return new SquigglyAnnotation(parameters);
22809        case 'StrikeOut':
22810          return new StrikeOutAnnotation(parameters);
22811        case 'Stamp':
22812          return new StampAnnotation(parameters);
22813        case 'FileAttachment':
22814          return new FileAttachmentAnnotation(parameters);
22815        default:
22816          if (!subtype) {
22817            (0, _util.warn)('Annotation is missing the required /Subtype.');
22818          } else {
22819            (0, _util.warn)('Unimplemented annotation type "' + subtype + '", ' + 'falling back to base annotation.');
22820          }
22821          return new Annotation(parameters);
22822      }
22823    }
22824  }]);
22825
22826  return AnnotationFactory;
22827}();
22828
22829function getTransformMatrix(rect, bbox, matrix) {
22830  var bounds = _util.Util.getAxialAlignedBoundingBox(bbox, matrix);
22831  var minX = bounds[0];
22832  var minY = bounds[1];
22833  var maxX = bounds[2];
22834  var maxY = bounds[3];
22835  if (minX === maxX || minY === maxY) {
22836    return [1, 0, 0, 1, rect[0], rect[1]];
22837  }
22838  var xRatio = (rect[2] - rect[0]) / (maxX - minX);
22839  var yRatio = (rect[3] - rect[1]) / (maxY - minY);
22840  return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];
22841}
22842
22843var Annotation = function () {
22844  function Annotation(params) {
22845    _classCallCheck(this, Annotation);
22846
22847    var dict = params.dict;
22848    this.setFlags(dict.get('F'));
22849    this.setRectangle(dict.getArray('Rect'));
22850    this.setColor(dict.getArray('C'));
22851    this.setBorderStyle(dict);
22852    this.setAppearance(dict);
22853    this.data = {
22854      annotationFlags: this.flags,
22855      borderStyle: this.borderStyle,
22856      color: this.color,
22857      hasAppearance: !!this.appearance,
22858      id: params.id,
22859      rect: this.rectangle,
22860      subtype: params.subtype
22861    };
22862  }
22863
22864  _createClass(Annotation, [{
22865    key: '_hasFlag',
22866    value: function _hasFlag(flags, flag) {
22867      return !!(flags & flag);
22868    }
22869  }, {
22870    key: '_isViewable',
22871    value: function _isViewable(flags) {
22872      return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN) && !this._hasFlag(flags, _util.AnnotationFlag.NOVIEW);
22873    }
22874  }, {
22875    key: '_isPrintable',
22876    value: function _isPrintable(flags) {
22877      return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN);
22878    }
22879  }, {
22880    key: 'setFlags',
22881    value: function setFlags(flags) {
22882      this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;
22883    }
22884  }, {
22885    key: 'hasFlag',
22886    value: function hasFlag(flag) {
22887      return this._hasFlag(this.flags, flag);
22888    }
22889  }, {
22890    key: 'setRectangle',
22891    value: function setRectangle(rectangle) {
22892      if (Array.isArray(rectangle) && rectangle.length === 4) {
22893        this.rectangle = _util.Util.normalizeRect(rectangle);
22894      } else {
22895        this.rectangle = [0, 0, 0, 0];
22896      }
22897    }
22898  }, {
22899    key: 'setColor',
22900    value: function setColor(color) {
22901      var rgbColor = new Uint8ClampedArray(3);
22902      if (!Array.isArray(color)) {
22903        this.color = rgbColor;
22904        return;
22905      }
22906      switch (color.length) {
22907        case 0:
22908          this.color = null;
22909          break;
22910        case 1:
22911          _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);
22912          this.color = rgbColor;
22913          break;
22914        case 3:
22915          _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);
22916          this.color = rgbColor;
22917          break;
22918        case 4:
22919          _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);
22920          this.color = rgbColor;
22921          break;
22922        default:
22923          this.color = rgbColor;
22924          break;
22925      }
22926    }
22927  }, {
22928    key: 'setBorderStyle',
22929    value: function setBorderStyle(borderStyle) {
22930      this.borderStyle = new AnnotationBorderStyle();
22931      if (!(0, _primitives.isDict)(borderStyle)) {
22932        return;
22933      }
22934      if (borderStyle.has('BS')) {
22935        var dict = borderStyle.get('BS');
22936        var dictType = dict.get('Type');
22937        if (!dictType || (0, _primitives.isName)(dictType, 'Border')) {
22938          this.borderStyle.setWidth(dict.get('W'));
22939          this.borderStyle.setStyle(dict.get('S'));
22940          this.borderStyle.setDashArray(dict.getArray('D'));
22941        }
22942      } else if (borderStyle.has('Border')) {
22943        var array = borderStyle.getArray('Border');
22944        if (Array.isArray(array) && array.length >= 3) {
22945          this.borderStyle.setHorizontalCornerRadius(array[0]);
22946          this.borderStyle.setVerticalCornerRadius(array[1]);
22947          this.borderStyle.setWidth(array[2]);
22948          if (array.length === 4) {
22949            this.borderStyle.setDashArray(array[3]);
22950          }
22951        }
22952      } else {
22953        this.borderStyle.setWidth(0);
22954      }
22955    }
22956  }, {
22957    key: 'setAppearance',
22958    value: function setAppearance(dict) {
22959      this.appearance = null;
22960      var appearanceStates = dict.get('AP');
22961      if (!(0, _primitives.isDict)(appearanceStates)) {
22962        return;
22963      }
22964      var normalAppearanceState = appearanceStates.get('N');
22965      if ((0, _primitives.isStream)(normalAppearanceState)) {
22966        this.appearance = normalAppearanceState;
22967        return;
22968      }
22969      if (!(0, _primitives.isDict)(normalAppearanceState)) {
22970        return;
22971      }
22972      var as = dict.get('AS');
22973      if (!(0, _primitives.isName)(as) || !normalAppearanceState.has(as.name)) {
22974        return;
22975      }
22976      this.appearance = normalAppearanceState.get(as.name);
22977    }
22978  }, {
22979    key: '_preparePopup',
22980    value: function _preparePopup(dict) {
22981      if (!dict.has('C')) {
22982        this.data.color = null;
22983      }
22984      this.data.hasPopup = dict.has('Popup');
22985      this.data.title = (0, _util.stringToPDFString)(dict.get('T') || '');
22986      this.data.contents = (0, _util.stringToPDFString)(dict.get('Contents') || '');
22987    }
22988  }, {
22989    key: 'loadResources',
22990    value: function loadResources(keys) {
22991      return this.appearance.dict.getAsync('Resources').then(function (resources) {
22992        if (!resources) {
22993          return;
22994        }
22995        var objectLoader = new _obj.ObjectLoader(resources, keys, resources.xref);
22996        return objectLoader.load().then(function () {
22997          return resources;
22998        });
22999      });
23000    }
23001  }, {
23002    key: 'getOperatorList',
23003    value: function getOperatorList(evaluator, task, renderForms) {
23004      var _this = this;
23005
23006      if (!this.appearance) {
23007        return Promise.resolve(new _operator_list.OperatorList());
23008      }
23009      var data = this.data;
23010      var appearanceDict = this.appearance.dict;
23011      var resourcesPromise = this.loadResources(['ExtGState', 'ColorSpace', 'Pattern', 'Shading', 'XObject', 'Font']);
23012      var bbox = appearanceDict.getArray('BBox') || [0, 0, 1, 1];
23013      var matrix = appearanceDict.getArray('Matrix') || [1, 0, 0, 1, 0, 0];
23014      var transform = getTransformMatrix(data.rect, bbox, matrix);
23015      return resourcesPromise.then(function (resources) {
23016        var opList = new _operator_list.OperatorList();
23017        opList.addOp(_util.OPS.beginAnnotation, [data.rect, transform, matrix]);
23018        return evaluator.getOperatorList({
23019          stream: _this.appearance,
23020          task: task,
23021          resources: resources,
23022          operatorList: opList
23023        }).then(function () {
23024          opList.addOp(_util.OPS.endAnnotation, []);
23025          _this.appearance.reset();
23026          return opList;
23027        });
23028      });
23029    }
23030  }, {
23031    key: 'viewable',
23032    get: function get() {
23033      if (this.flags === 0) {
23034        return true;
23035      }
23036      return this._isViewable(this.flags);
23037    }
23038  }, {
23039    key: 'printable',
23040    get: function get() {
23041      if (this.flags === 0) {
23042        return false;
23043      }
23044      return this._isPrintable(this.flags);
23045    }
23046  }]);
23047
23048  return Annotation;
23049}();
23050
23051var AnnotationBorderStyle = function () {
23052  function AnnotationBorderStyle() {
23053    _classCallCheck(this, AnnotationBorderStyle);
23054
23055    this.width = 1;
23056    this.style = _util.AnnotationBorderStyleType.SOLID;
23057    this.dashArray = [3];
23058    this.horizontalCornerRadius = 0;
23059    this.verticalCornerRadius = 0;
23060  }
23061
23062  _createClass(AnnotationBorderStyle, [{
23063    key: 'setWidth',
23064    value: function setWidth(width) {
23065      if (Number.isInteger(width)) {
23066        this.width = width;
23067      }
23068    }
23069  }, {
23070    key: 'setStyle',
23071    value: function setStyle(style) {
23072      if (!style) {
23073        return;
23074      }
23075      switch (style.name) {
23076        case 'S':
23077          this.style = _util.AnnotationBorderStyleType.SOLID;
23078          break;
23079        case 'D':
23080          this.style = _util.AnnotationBorderStyleType.DASHED;
23081          break;
23082        case 'B':
23083          this.style = _util.AnnotationBorderStyleType.BEVELED;
23084          break;
23085        case 'I':
23086          this.style = _util.AnnotationBorderStyleType.INSET;
23087          break;
23088        case 'U':
23089          this.style = _util.AnnotationBorderStyleType.UNDERLINE;
23090          break;
23091        default:
23092          break;
23093      }
23094    }
23095  }, {
23096    key: 'setDashArray',
23097    value: function setDashArray(dashArray) {
23098      if (Array.isArray(dashArray) && dashArray.length > 0) {
23099        var isValid = true;
23100        var allZeros = true;
23101        for (var i = 0, len = dashArray.length; i < len; i++) {
23102          var element = dashArray[i];
23103          var validNumber = +element >= 0;
23104          if (!validNumber) {
23105            isValid = false;
23106            break;
23107          } else if (element > 0) {
23108            allZeros = false;
23109          }
23110        }
23111        if (isValid && !allZeros) {
23112          this.dashArray = dashArray;
23113        } else {
23114          this.width = 0;
23115        }
23116      } else if (dashArray) {
23117        this.width = 0;
23118      }
23119    }
23120  }, {
23121    key: 'setHorizontalCornerRadius',
23122    value: function setHorizontalCornerRadius(radius) {
23123      if (Number.isInteger(radius)) {
23124        this.horizontalCornerRadius = radius;
23125      }
23126    }
23127  }, {
23128    key: 'setVerticalCornerRadius',
23129    value: function setVerticalCornerRadius(radius) {
23130      if (Number.isInteger(radius)) {
23131        this.verticalCornerRadius = radius;
23132      }
23133    }
23134  }]);
23135
23136  return AnnotationBorderStyle;
23137}();
23138
23139var WidgetAnnotation = function (_Annotation) {
23140  _inherits(WidgetAnnotation, _Annotation);
23141
23142  function WidgetAnnotation(params) {
23143    _classCallCheck(this, WidgetAnnotation);
23144
23145    var _this2 = _possibleConstructorReturn(this, (WidgetAnnotation.__proto__ || Object.getPrototypeOf(WidgetAnnotation)).call(this, params));
23146
23147    var dict = params.dict;
23148    var data = _this2.data;
23149    data.annotationType = _util.AnnotationType.WIDGET;
23150    data.fieldName = _this2._constructFieldName(dict);
23151    data.fieldValue = (0, _util.getInheritableProperty)({
23152      dict: dict,
23153      key: 'V',
23154      getArray: true
23155    });
23156    data.alternativeText = (0, _util.stringToPDFString)(dict.get('TU') || '');
23157    data.defaultAppearance = (0, _util.getInheritableProperty)({
23158      dict: dict,
23159      key: 'DA'
23160    }) || '';
23161    var fieldType = (0, _util.getInheritableProperty)({
23162      dict: dict,
23163      key: 'FT'
23164    });
23165    data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
23166    _this2.fieldResources = (0, _util.getInheritableProperty)({
23167      dict: dict,
23168      key: 'DR'
23169    }) || _primitives.Dict.empty;
23170    data.fieldFlags = (0, _util.getInheritableProperty)({
23171      dict: dict,
23172      key: 'Ff'
23173    });
23174    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {
23175      data.fieldFlags = 0;
23176    }
23177    data.readOnly = _this2.hasFieldFlag(_util.AnnotationFieldFlag.READONLY);
23178    if (data.fieldType === 'Sig') {
23179      _this2.setFlags(_util.AnnotationFlag.HIDDEN);
23180    }
23181    return _this2;
23182  }
23183
23184  _createClass(WidgetAnnotation, [{
23185    key: '_constructFieldName',
23186    value: function _constructFieldName(dict) {
23187      if (!dict.has('T') && !dict.has('Parent')) {
23188        (0, _util.warn)('Unknown field name, falling back to empty field name.');
23189        return '';
23190      }
23191      if (!dict.has('Parent')) {
23192        return (0, _util.stringToPDFString)(dict.get('T'));
23193      }
23194      var fieldName = [];
23195      if (dict.has('T')) {
23196        fieldName.unshift((0, _util.stringToPDFString)(dict.get('T')));
23197      }
23198      var loopDict = dict;
23199      while (loopDict.has('Parent')) {
23200        loopDict = loopDict.get('Parent');
23201        if (!(0, _primitives.isDict)(loopDict)) {
23202          break;
23203        }
23204        if (loopDict.has('T')) {
23205          fieldName.unshift((0, _util.stringToPDFString)(loopDict.get('T')));
23206        }
23207      }
23208      return fieldName.join('.');
23209    }
23210  }, {
23211    key: 'hasFieldFlag',
23212    value: function hasFieldFlag(flag) {
23213      return !!(this.data.fieldFlags & flag);
23214    }
23215  }, {
23216    key: 'getOperatorList',
23217    value: function getOperatorList(evaluator, task, renderForms) {
23218      if (renderForms) {
23219        return Promise.resolve(new _operator_list.OperatorList());
23220      }
23221      return _get(WidgetAnnotation.prototype.__proto__ || Object.getPrototypeOf(WidgetAnnotation.prototype), 'getOperatorList', this).call(this, evaluator, task, renderForms);
23222    }
23223  }]);
23224
23225  return WidgetAnnotation;
23226}(Annotation);
23227
23228var TextWidgetAnnotation = function (_WidgetAnnotation) {
23229  _inherits(TextWidgetAnnotation, _WidgetAnnotation);
23230
23231  function TextWidgetAnnotation(params) {
23232    _classCallCheck(this, TextWidgetAnnotation);
23233
23234    var _this3 = _possibleConstructorReturn(this, (TextWidgetAnnotation.__proto__ || Object.getPrototypeOf(TextWidgetAnnotation)).call(this, params));
23235
23236    var dict = params.dict;
23237    _this3.data.fieldValue = (0, _util.stringToPDFString)(_this3.data.fieldValue || '');
23238    var alignment = (0, _util.getInheritableProperty)({
23239      dict: dict,
23240      key: 'Q'
23241    });
23242    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {
23243      alignment = null;
23244    }
23245    _this3.data.textAlignment = alignment;
23246    var maximumLength = (0, _util.getInheritableProperty)({
23247      dict: dict,
23248      key: 'MaxLen'
23249    });
23250    if (!Number.isInteger(maximumLength) || maximumLength < 0) {
23251      maximumLength = null;
23252    }
23253    _this3.data.maxLen = maximumLength;
23254    _this3.data.multiLine = _this3.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE);
23255    _this3.data.comb = _this3.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && !_this3.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && !_this3.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && !_this3.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && _this3.data.maxLen !== null;
23256    return _this3;
23257  }
23258
23259  _createClass(TextWidgetAnnotation, [{
23260    key: 'getOperatorList',
23261    value: function getOperatorList(evaluator, task, renderForms) {
23262      if (renderForms || this.appearance) {
23263        return _get(TextWidgetAnnotation.prototype.__proto__ || Object.getPrototypeOf(TextWidgetAnnotation.prototype), 'getOperatorList', this).call(this, evaluator, task, renderForms);
23264      }
23265      var operatorList = new _operator_list.OperatorList();
23266      if (!this.data.defaultAppearance) {
23267        return Promise.resolve(operatorList);
23268      }
23269      var stream = new _stream.Stream((0, _util.stringToBytes)(this.data.defaultAppearance));
23270      return evaluator.getOperatorList({
23271        stream: stream,
23272        task: task,
23273        resources: this.fieldResources,
23274        operatorList: operatorList
23275      }).then(function () {
23276        return operatorList;
23277      });
23278    }
23279  }]);
23280
23281  return TextWidgetAnnotation;
23282}(WidgetAnnotation);
23283
23284var ButtonWidgetAnnotation = function (_WidgetAnnotation2) {
23285  _inherits(ButtonWidgetAnnotation, _WidgetAnnotation2);
23286
23287  function ButtonWidgetAnnotation(params) {
23288    _classCallCheck(this, ButtonWidgetAnnotation);
23289
23290    var _this4 = _possibleConstructorReturn(this, (ButtonWidgetAnnotation.__proto__ || Object.getPrototypeOf(ButtonWidgetAnnotation)).call(this, params));
23291
23292    _this4.data.checkBox = !_this4.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !_this4.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
23293    _this4.data.radioButton = _this4.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !_this4.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
23294    _this4.data.pushButton = _this4.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
23295    if (_this4.data.checkBox) {
23296      _this4._processCheckBox(params);
23297    } else if (_this4.data.radioButton) {
23298      _this4._processRadioButton(params);
23299    } else if (_this4.data.pushButton) {
23300      _this4._processPushButton(params);
23301    } else {
23302      (0, _util.warn)('Invalid field flags for button widget annotation');
23303    }
23304    return _this4;
23305  }
23306
23307  _createClass(ButtonWidgetAnnotation, [{
23308    key: '_processCheckBox',
23309    value: function _processCheckBox(params) {
23310      if ((0, _primitives.isName)(this.data.fieldValue)) {
23311        this.data.fieldValue = this.data.fieldValue.name;
23312      }
23313      var customAppearance = params.dict.get('AP');
23314      if (!(0, _primitives.isDict)(customAppearance)) {
23315        return;
23316      }
23317      var exportValueOptionsDict = customAppearance.get('D');
23318      if (!(0, _primitives.isDict)(exportValueOptionsDict)) {
23319        return;
23320      }
23321      var exportValues = exportValueOptionsDict.getKeys();
23322      var hasCorrectOptionCount = exportValues.length === 2;
23323      if (!hasCorrectOptionCount) {
23324        return;
23325      }
23326      this.data.exportValue = exportValues[0] === 'Off' ? exportValues[1] : exportValues[0];
23327    }
23328  }, {
23329    key: '_processRadioButton',
23330    value: function _processRadioButton(params) {
23331      this.data.fieldValue = this.data.buttonValue = null;
23332      var fieldParent = params.dict.get('Parent');
23333      if ((0, _primitives.isDict)(fieldParent) && fieldParent.has('V')) {
23334        var fieldParentValue = fieldParent.get('V');
23335        if ((0, _primitives.isName)(fieldParentValue)) {
23336          this.data.fieldValue = fieldParentValue.name;
23337        }
23338      }
23339      var appearanceStates = params.dict.get('AP');
23340      if (!(0, _primitives.isDict)(appearanceStates)) {
23341        return;
23342      }
23343      var normalAppearanceState = appearanceStates.get('N');
23344      if (!(0, _primitives.isDict)(normalAppearanceState)) {
23345        return;
23346      }
23347      var keys = normalAppearanceState.getKeys();
23348      for (var i = 0, ii = keys.length; i < ii; i++) {
23349        if (keys[i] !== 'Off') {
23350          this.data.buttonValue = keys[i];
23351          break;
23352        }
23353      }
23354    }
23355  }, {
23356    key: '_processPushButton',
23357    value: function _processPushButton(params) {
23358      if (!params.dict.has('A')) {
23359        (0, _util.warn)('Push buttons without action dictionaries are not supported');
23360        return;
23361      }
23362      _obj.Catalog.parseDestDictionary({
23363        destDict: params.dict,
23364        resultObj: this.data,
23365        docBaseUrl: params.pdfManager.docBaseUrl
23366      });
23367    }
23368  }]);
23369
23370  return ButtonWidgetAnnotation;
23371}(WidgetAnnotation);
23372
23373var ChoiceWidgetAnnotation = function (_WidgetAnnotation3) {
23374  _inherits(ChoiceWidgetAnnotation, _WidgetAnnotation3);
23375
23376  function ChoiceWidgetAnnotation(params) {
23377    _classCallCheck(this, ChoiceWidgetAnnotation);
23378
23379    var _this5 = _possibleConstructorReturn(this, (ChoiceWidgetAnnotation.__proto__ || Object.getPrototypeOf(ChoiceWidgetAnnotation)).call(this, params));
23380
23381    _this5.data.options = [];
23382    var options = (0, _util.getInheritableProperty)({
23383      dict: params.dict,
23384      key: 'Opt'
23385    });
23386    if (Array.isArray(options)) {
23387      var xref = params.xref;
23388      for (var i = 0, ii = options.length; i < ii; i++) {
23389        var option = xref.fetchIfRef(options[i]);
23390        var isOptionArray = Array.isArray(option);
23391        _this5.data.options[i] = {
23392          exportValue: isOptionArray ? xref.fetchIfRef(option[0]) : option,
23393          displayValue: (0, _util.stringToPDFString)(isOptionArray ? xref.fetchIfRef(option[1]) : option)
23394        };
23395      }
23396    }
23397    if (!Array.isArray(_this5.data.fieldValue)) {
23398      _this5.data.fieldValue = [_this5.data.fieldValue];
23399    }
23400    _this5.data.combo = _this5.hasFieldFlag(_util.AnnotationFieldFlag.COMBO);
23401    _this5.data.multiSelect = _this5.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT);
23402    return _this5;
23403  }
23404
23405  return ChoiceWidgetAnnotation;
23406}(WidgetAnnotation);
23407
23408var TextAnnotation = function (_Annotation2) {
23409  _inherits(TextAnnotation, _Annotation2);
23410
23411  function TextAnnotation(parameters) {
23412    _classCallCheck(this, TextAnnotation);
23413
23414    var DEFAULT_ICON_SIZE = 22;
23415
23416    var _this6 = _possibleConstructorReturn(this, (TextAnnotation.__proto__ || Object.getPrototypeOf(TextAnnotation)).call(this, parameters));
23417
23418    _this6.data.annotationType = _util.AnnotationType.TEXT;
23419    if (_this6.data.hasAppearance) {
23420      _this6.data.name = 'NoIcon';
23421    } else {
23422      _this6.data.rect[1] = _this6.data.rect[3] - DEFAULT_ICON_SIZE;
23423      _this6.data.rect[2] = _this6.data.rect[0] + DEFAULT_ICON_SIZE;
23424      _this6.data.name = parameters.dict.has('Name') ? parameters.dict.get('Name').name : 'Note';
23425    }
23426    _this6._preparePopup(parameters.dict);
23427    return _this6;
23428  }
23429
23430  return TextAnnotation;
23431}(Annotation);
23432
23433var LinkAnnotation = function (_Annotation3) {
23434  _inherits(LinkAnnotation, _Annotation3);
23435
23436  function LinkAnnotation(params) {
23437    _classCallCheck(this, LinkAnnotation);
23438
23439    var _this7 = _possibleConstructorReturn(this, (LinkAnnotation.__proto__ || Object.getPrototypeOf(LinkAnnotation)).call(this, params));
23440
23441    _this7.data.annotationType = _util.AnnotationType.LINK;
23442    _obj.Catalog.parseDestDictionary({
23443      destDict: params.dict,
23444      resultObj: _this7.data,
23445      docBaseUrl: params.pdfManager.docBaseUrl
23446    });
23447    return _this7;
23448  }
23449
23450  return LinkAnnotation;
23451}(Annotation);
23452
23453var PopupAnnotation = function (_Annotation4) {
23454  _inherits(PopupAnnotation, _Annotation4);
23455
23456  function PopupAnnotation(parameters) {
23457    _classCallCheck(this, PopupAnnotation);
23458
23459    var _this8 = _possibleConstructorReturn(this, (PopupAnnotation.__proto__ || Object.getPrototypeOf(PopupAnnotation)).call(this, parameters));
23460
23461    _this8.data.annotationType = _util.AnnotationType.POPUP;
23462    var dict = parameters.dict;
23463    var parentItem = dict.get('Parent');
23464    if (!parentItem) {
23465      (0, _util.warn)('Popup annotation has a missing or invalid parent annotation.');
23466      return _possibleConstructorReturn(_this8);
23467    }
23468    var parentSubtype = parentItem.get('Subtype');
23469    _this8.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null;
23470    _this8.data.parentId = dict.getRaw('Parent').toString();
23471    _this8.data.title = (0, _util.stringToPDFString)(parentItem.get('T') || '');
23472    _this8.data.contents = (0, _util.stringToPDFString)(parentItem.get('Contents') || '');
23473    if (!parentItem.has('C')) {
23474      _this8.data.color = null;
23475    } else {
23476      _this8.setColor(parentItem.getArray('C'));
23477      _this8.data.color = _this8.color;
23478    }
23479    if (!_this8.viewable) {
23480      var parentFlags = parentItem.get('F');
23481      if (_this8._isViewable(parentFlags)) {
23482        _this8.setFlags(parentFlags);
23483      }
23484    }
23485    return _this8;
23486  }
23487
23488  return PopupAnnotation;
23489}(Annotation);
23490
23491var LineAnnotation = function (_Annotation5) {
23492  _inherits(LineAnnotation, _Annotation5);
23493
23494  function LineAnnotation(parameters) {
23495    _classCallCheck(this, LineAnnotation);
23496
23497    var _this9 = _possibleConstructorReturn(this, (LineAnnotation.__proto__ || Object.getPrototypeOf(LineAnnotation)).call(this, parameters));
23498
23499    _this9.data.annotationType = _util.AnnotationType.LINE;
23500    var dict = parameters.dict;
23501    _this9.data.lineCoordinates = _util.Util.normalizeRect(dict.getArray('L'));
23502    _this9._preparePopup(dict);
23503    return _this9;
23504  }
23505
23506  return LineAnnotation;
23507}(Annotation);
23508
23509var SquareAnnotation = function (_Annotation6) {
23510  _inherits(SquareAnnotation, _Annotation6);
23511
23512  function SquareAnnotation(parameters) {
23513    _classCallCheck(this, SquareAnnotation);
23514
23515    var _this10 = _possibleConstructorReturn(this, (SquareAnnotation.__proto__ || Object.getPrototypeOf(SquareAnnotation)).call(this, parameters));
23516
23517    _this10.data.annotationType = _util.AnnotationType.SQUARE;
23518    _this10._preparePopup(parameters.dict);
23519    return _this10;
23520  }
23521
23522  return SquareAnnotation;
23523}(Annotation);
23524
23525var CircleAnnotation = function (_Annotation7) {
23526  _inherits(CircleAnnotation, _Annotation7);
23527
23528  function CircleAnnotation(parameters) {
23529    _classCallCheck(this, CircleAnnotation);
23530
23531    var _this11 = _possibleConstructorReturn(this, (CircleAnnotation.__proto__ || Object.getPrototypeOf(CircleAnnotation)).call(this, parameters));
23532
23533    _this11.data.annotationType = _util.AnnotationType.CIRCLE;
23534    _this11._preparePopup(parameters.dict);
23535    return _this11;
23536  }
23537
23538  return CircleAnnotation;
23539}(Annotation);
23540
23541var PolylineAnnotation = function (_Annotation8) {
23542  _inherits(PolylineAnnotation, _Annotation8);
23543
23544  function PolylineAnnotation(parameters) {
23545    _classCallCheck(this, PolylineAnnotation);
23546
23547    var _this12 = _possibleConstructorReturn(this, (PolylineAnnotation.__proto__ || Object.getPrototypeOf(PolylineAnnotation)).call(this, parameters));
23548
23549    _this12.data.annotationType = _util.AnnotationType.POLYLINE;
23550    var dict = parameters.dict;
23551    var rawVertices = dict.getArray('Vertices');
23552    _this12.data.vertices = [];
23553    for (var i = 0, ii = rawVertices.length; i < ii; i += 2) {
23554      _this12.data.vertices.push({
23555        x: rawVertices[i],
23556        y: rawVertices[i + 1]
23557      });
23558    }
23559    _this12._preparePopup(dict);
23560    return _this12;
23561  }
23562
23563  return PolylineAnnotation;
23564}(Annotation);
23565
23566var PolygonAnnotation = function (_PolylineAnnotation) {
23567  _inherits(PolygonAnnotation, _PolylineAnnotation);
23568
23569  function PolygonAnnotation(parameters) {
23570    _classCallCheck(this, PolygonAnnotation);
23571
23572    var _this13 = _possibleConstructorReturn(this, (PolygonAnnotation.__proto__ || Object.getPrototypeOf(PolygonAnnotation)).call(this, parameters));
23573
23574    _this13.data.annotationType = _util.AnnotationType.POLYGON;
23575    return _this13;
23576  }
23577
23578  return PolygonAnnotation;
23579}(PolylineAnnotation);
23580
23581var InkAnnotation = function (_Annotation9) {
23582  _inherits(InkAnnotation, _Annotation9);
23583
23584  function InkAnnotation(parameters) {
23585    _classCallCheck(this, InkAnnotation);
23586
23587    var _this14 = _possibleConstructorReturn(this, (InkAnnotation.__proto__ || Object.getPrototypeOf(InkAnnotation)).call(this, parameters));
23588
23589    _this14.data.annotationType = _util.AnnotationType.INK;
23590    var dict = parameters.dict;
23591    var xref = parameters.xref;
23592    var originalInkLists = dict.getArray('InkList');
23593    _this14.data.inkLists = [];
23594    for (var i = 0, ii = originalInkLists.length; i < ii; ++i) {
23595      _this14.data.inkLists.push([]);
23596      for (var j = 0, jj = originalInkLists[i].length; j < jj; j += 2) {
23597        _this14.data.inkLists[i].push({
23598          x: xref.fetchIfRef(originalInkLists[i][j]),
23599          y: xref.fetchIfRef(originalInkLists[i][j + 1])
23600        });
23601      }
23602    }
23603    _this14._preparePopup(dict);
23604    return _this14;
23605  }
23606
23607  return InkAnnotation;
23608}(Annotation);
23609
23610var HighlightAnnotation = function (_Annotation10) {
23611  _inherits(HighlightAnnotation, _Annotation10);
23612
23613  function HighlightAnnotation(parameters) {
23614    _classCallCheck(this, HighlightAnnotation);
23615
23616    var _this15 = _possibleConstructorReturn(this, (HighlightAnnotation.__proto__ || Object.getPrototypeOf(HighlightAnnotation)).call(this, parameters));
23617
23618    _this15.data.annotationType = _util.AnnotationType.HIGHLIGHT;
23619    _this15._preparePopup(parameters.dict);
23620    return _this15;
23621  }
23622
23623  return HighlightAnnotation;
23624}(Annotation);
23625
23626var UnderlineAnnotation = function (_Annotation11) {
23627  _inherits(UnderlineAnnotation, _Annotation11);
23628
23629  function UnderlineAnnotation(parameters) {
23630    _classCallCheck(this, UnderlineAnnotation);
23631
23632    var _this16 = _possibleConstructorReturn(this, (UnderlineAnnotation.__proto__ || Object.getPrototypeOf(UnderlineAnnotation)).call(this, parameters));
23633
23634    _this16.data.annotationType = _util.AnnotationType.UNDERLINE;
23635    _this16._preparePopup(parameters.dict);
23636    return _this16;
23637  }
23638
23639  return UnderlineAnnotation;
23640}(Annotation);
23641
23642var SquigglyAnnotation = function (_Annotation12) {
23643  _inherits(SquigglyAnnotation, _Annotation12);
23644
23645  function SquigglyAnnotation(parameters) {
23646    _classCallCheck(this, SquigglyAnnotation);
23647
23648    var _this17 = _possibleConstructorReturn(this, (SquigglyAnnotation.__proto__ || Object.getPrototypeOf(SquigglyAnnotation)).call(this, parameters));
23649
23650    _this17.data.annotationType = _util.AnnotationType.SQUIGGLY;
23651    _this17._preparePopup(parameters.dict);
23652    return _this17;
23653  }
23654
23655  return SquigglyAnnotation;
23656}(Annotation);
23657
23658var StrikeOutAnnotation = function (_Annotation13) {
23659  _inherits(StrikeOutAnnotation, _Annotation13);
23660
23661  function StrikeOutAnnotation(parameters) {
23662    _classCallCheck(this, StrikeOutAnnotation);
23663
23664    var _this18 = _possibleConstructorReturn(this, (StrikeOutAnnotation.__proto__ || Object.getPrototypeOf(StrikeOutAnnotation)).call(this, parameters));
23665
23666    _this18.data.annotationType = _util.AnnotationType.STRIKEOUT;
23667    _this18._preparePopup(parameters.dict);
23668    return _this18;
23669  }
23670
23671  return StrikeOutAnnotation;
23672}(Annotation);
23673
23674var StampAnnotation = function (_Annotation14) {
23675  _inherits(StampAnnotation, _Annotation14);
23676
23677  function StampAnnotation(parameters) {
23678    _classCallCheck(this, StampAnnotation);
23679
23680    var _this19 = _possibleConstructorReturn(this, (StampAnnotation.__proto__ || Object.getPrototypeOf(StampAnnotation)).call(this, parameters));
23681
23682    _this19.data.annotationType = _util.AnnotationType.STAMP;
23683    _this19._preparePopup(parameters.dict);
23684    return _this19;
23685  }
23686
23687  return StampAnnotation;
23688}(Annotation);
23689
23690var FileAttachmentAnnotation = function (_Annotation15) {
23691  _inherits(FileAttachmentAnnotation, _Annotation15);
23692
23693  function FileAttachmentAnnotation(parameters) {
23694    _classCallCheck(this, FileAttachmentAnnotation);
23695
23696    var _this20 = _possibleConstructorReturn(this, (FileAttachmentAnnotation.__proto__ || Object.getPrototypeOf(FileAttachmentAnnotation)).call(this, parameters));
23697
23698    var file = new _obj.FileSpec(parameters.dict.get('FS'), parameters.xref);
23699    _this20.data.annotationType = _util.AnnotationType.FILEATTACHMENT;
23700    _this20.data.file = file.serializable;
23701    _this20._preparePopup(parameters.dict);
23702    return _this20;
23703  }
23704
23705  return FileAttachmentAnnotation;
23706}(Annotation);
23707
23708exports.Annotation = Annotation;
23709exports.AnnotationBorderStyle = AnnotationBorderStyle;
23710exports.AnnotationFactory = AnnotationFactory;
23711
23712/***/ }),
23713/* 153 */
23714/***/ (function(module, exports, __w_pdfjs_require__) {
23715
23716"use strict";
23717
23718
23719Object.defineProperty(exports, "__esModule", {
23720  value: true
23721});
23722exports.OperatorList = undefined;
23723
23724var _util = __w_pdfjs_require__(2);
23725
23726var QueueOptimizer = function QueueOptimizerClosure() {
23727  function addState(parentState, pattern, checkFn, iterateFn, processFn) {
23728    var state = parentState;
23729    for (var i = 0, ii = pattern.length - 1; i < ii; i++) {
23730      var item = pattern[i];
23731      state = state[item] || (state[item] = []);
23732    }
23733    state[pattern[pattern.length - 1]] = {
23734      checkFn: checkFn,
23735      iterateFn: iterateFn,
vendor: 4,313 bytes, lines 23736-23845
23736      processFn: processFn
23737    };
23738  }
23739  function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {
23740    var iFirstPIMXO = iFirstSave + 2;
23741    for (var i = 0; i < count; i++) {
23742      var arg = argsArray[iFirstPIMXO + 4 * i];
23743      var imageMask = arg.length === 1 && arg[0];
23744      if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || imageMask.data.length === 1 && imageMask.data[0] === 0)) {
23745        fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask;
23746        continue;
23747      }
23748      break;
23749    }
23750    return count - i;
23751  }
23752  var InitialState = [];
23753  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) {
23754    var fnArray = context.fnArray;
23755    var iFirstSave = context.iCurr - 3;
23756    var pos = (i - iFirstSave) % 4;
23757    switch (pos) {
23758      case 0:
23759        return fnArray[i] === _util.OPS.save;
23760      case 1:
23761        return fnArray[i] === _util.OPS.transform;
23762      case 2:
23763        return fnArray[i] === _util.OPS.paintInlineImageXObject;
23764      case 3:
23765        return fnArray[i] === _util.OPS.restore;
23766    }
23767  }, function foundInlineImageGroup(context, i) {
23768    var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;
23769    var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;
23770    var MAX_WIDTH = 1000;
23771    var IMAGE_PADDING = 1;
23772    var fnArray = context.fnArray,
23773        argsArray = context.argsArray;
23774    var curr = context.iCurr;
23775    var iFirstSave = curr - 3;
23776    var iFirstTransform = curr - 2;
23777    var iFirstPIIXO = curr - 1;
23778    var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);
23779    if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {
23780      return i - (i - iFirstSave) % 4;
23781    }
23782    var maxX = 0;
23783    var map = [],
23784        maxLineHeight = 0;
23785    var currentX = IMAGE_PADDING,
23786        currentY = IMAGE_PADDING;
23787    var q;
23788    for (q = 0; q < count; q++) {
23789      var transform = argsArray[iFirstTransform + (q << 2)];
23790      var img = argsArray[iFirstPIIXO + (q << 2)][0];
23791      if (currentX + img.width > MAX_WIDTH) {
23792        maxX = Math.max(maxX, currentX);
23793        currentY += maxLineHeight + 2 * IMAGE_PADDING;
23794        currentX = 0;
23795        maxLineHeight = 0;
23796      }
23797      map.push({
23798        transform: transform,
23799        x: currentX,
23800        y: currentY,
23801        w: img.width,
23802        h: img.height
23803      });
23804      currentX += img.width + 2 * IMAGE_PADDING;
23805      maxLineHeight = Math.max(maxLineHeight, img.height);
23806    }
23807    var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;
23808    var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;
23809    var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);
23810    var imgRowSize = imgWidth << 2;
23811    for (q = 0; q < count; q++) {
23812      var data = argsArray[iFirstPIIXO + (q << 2)][0].data;
23813      var rowSize = map[q].w << 2;
23814      var dataOffset = 0;
23815      var offset = map[q].x + map[q].y * imgWidth << 2;
23816      imgData.set(data.subarray(0, rowSize), offset - imgRowSize);
23817      for (var k = 0, kk = map[q].h; k < kk; k++) {
23818        imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);
23819        dataOffset += rowSize;
23820        offset += imgRowSize;
23821      }
23822      imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);
23823      while (offset >= 0) {
23824        data[offset - 4] = data[offset];
23825        data[offset - 3] = data[offset + 1];
23826        data[offset - 2] = data[offset + 2];
23827        data[offset - 1] = data[offset + 3];
23828        data[offset + rowSize] = data[offset + rowSize - 4];
23829        data[offset + rowSize + 1] = data[offset + rowSize - 3];
23830        data[offset + rowSize + 2] = data[offset + rowSize - 2];
23831        data[offset + rowSize + 3] = data[offset + rowSize - 1];
23832        offset -= imgRowSize;
23833      }
23834    }
23835    fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup);
23836    argsArray.splice(iFirstSave, count * 4, [{
23837      width: imgWidth,
23838      height: imgHeight,
23839      kind: _util.ImageKind.RGBA_32BPP,
23840      data: imgData
23841    }, map]);
23842    return iFirstSave + 1;
23843  });
23844  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, _util.OPS.restore], null, function iterateImageMaskGroup(context, i) {
23845    var fnArray = context.fnArray;
23846    var iFirstSave = context.iCurr - 3;
23847    var pos = (i - iFirstSave) % 4;
23848    switch (pos) {
23849      case 0:
23850        return fnArray[i] === _util.OPS.save;
23851      case 1:
23852        return fnArray[i] === _util.OPS.transform;
23853      case 2:
23854        return fnArray[i] === _util.OPS.paintImageMaskXObject;
23855      case 3:
23856        return fnArray[i] === _util.OPS.restore;
23857    }
23858  }, function foundImageMaskGroup(context, i) {
23859    var MIN_IMAGES_IN_MASKS_BLOCK = 10;
23860    var MAX_IMAGES_IN_MASKS_BLOCK = 100;
23861    var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;
23862    var fnArray = context.fnArray,
23863        argsArray = context.argsArray;
23864    var curr = context.iCurr;
23865    var iFirstSave = curr - 3;
23866    var iFirstTransform = curr - 2;
23867    var iFirstPIMXO = curr - 1;
23868    var count = Math.floor((i - iFirstSave) / 4);
23869    count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray);
23870    if (count < MIN_IMAGES_IN_MASKS_BLOCK) {
23871      return i - (i - iFirstSave) % 4;
23872    }
23873    var q;
23874    var isSameImage = false;
23875    var iTransform, transformArgs;
23876    var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];
23877    if (argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0) {
23878      isSameImage = true;
23879      var firstTransformArg0 = argsArray[iFirstTransform][0];
23880      var firstTransformArg3 = argsArray[iFirstTransform][3];
23881      iTransform = iFirstTransform + 4;
23882      var iPIMXO = iFirstPIMXO + 4;
23883      for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {
23884        transformArgs = argsArray[iTransform];
23885        if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== 0 || transformArgs[2] !== 0 || transformArgs[3] !== firstTransformArg3) {
23886          if (q < MIN_IMAGES_IN_MASKS_BLOCK) {
23887            isSameImage = false;
23888          } else {
23889            count = q;
23890          }
23891          break;
23892        }
23893      }
23894    }
23895    if (isSameImage) {
23896      count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);
23897      var positions = new Float32Array(count * 2);
23898      iTransform = iFirstTransform;
23899      for (q = 0; q < count; q++, iTransform += 4) {
23900        transformArgs = argsArray[iTransform];
23901        positions[q << 1] = transformArgs[4];
23902        positions[(q << 1) + 1] = transformArgs[5];
23903      }
23904      fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat);
23905      argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg3, positions]);
23906    } else {
23907      count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);
23908      var images = [];
23909      for (q = 0; q < count; q++) {
23910        transformArgs = argsArray[iFirstTransform + (q << 2)];
23911        var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];
23912        images.push({
23913          data: maskParams.data,
23914          width: maskParams.width,
23915          height: maskParams.height,
23916          transform: transformArgs
23917        });
23918      }
23919      fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup);
23920      argsArray.splice(iFirstSave, count * 4, [images]);
23921    }
23922    return iFirstSave + 1;
23923  });
23924  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, _util.OPS.restore], function (context) {
23925    var argsArray = context.argsArray;
23926    var iFirstTransform = context.iCurr - 2;
23927    return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;
23928  }, function (context, i) {
23929    var fnArray = context.fnArray,
23930        argsArray = context.argsArray;
23931    var iFirstSave = context.iCurr - 3;
23932    var pos = (i - iFirstSave) % 4;
23933    switch (pos) {
23934      case 0:
23935        return fnArray[i] === _util.OPS.save;
23936      case 1:
23937        if (fnArray[i] !== _util.OPS.transform) {
23938          return false;
23939        }
23940        var iFirstTransform = context.iCurr - 2;
23941        var firstTransformArg0 = argsArray[iFirstTransform][0];
23942        var firstTransformArg3 = argsArray[iFirstTransform][3];
23943        if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) {
23944          return false;
23945        }
23946        return true;
23947      case 2:
23948        if (fnArray[i] !== _util.OPS.paintImageXObject) {
23949          return false;
23950        }
23951        var iFirstPIXO = context.iCurr - 1;
23952        var firstPIXOArg0 = argsArray[iFirstPIXO][0];
23953        if (argsArray[i][0] !== firstPIXOArg0) {
23954          return false;
23955        }
23956        return true;
23957      case 3:
23958        return fnArray[i] === _util.OPS.restore;
23959    }
23960  }, function (context, i) {
23961    var MIN_IMAGES_IN_BLOCK = 3;
23962    var MAX_IMAGES_IN_BLOCK = 1000;
23963    var fnArray = context.fnArray,
23964        argsArray = context.argsArray;
23965    var curr = context.iCurr;
23966    var iFirstSave = curr - 3;
23967    var iFirstTransform = curr - 2;
23968    var iFirstPIXO = curr - 1;
23969    var firstPIXOArg0 = argsArray[iFirstPIXO][0];
23970    var firstTransformArg0 = argsArray[iFirstTransform][0];
23971    var firstTransformArg3 = argsArray[iFirstTransform][3];
23972    var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);
23973    if (count < MIN_IMAGES_IN_BLOCK) {
23974      return i - (i - iFirstSave) % 4;
23975    }
23976    var positions = new Float32Array(count * 2);
23977    var iTransform = iFirstTransform;
23978    for (var q = 0; q < count; q++, iTransform += 4) {
23979      var transformArgs = argsArray[iTransform];
23980      positions[q << 1] = transformArgs[4];
23981      positions[(q << 1) + 1] = transformArgs[5];
23982    }
23983    var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];
23984    fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat);
23985    argsArray.splice(iFirstSave, count * 4, args);
23986    return iFirstSave + 1;
23987  });
23988  addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], null, function (context, i) {
23989    var fnArray = context.fnArray,
23990        argsArray = context.argsArray;
23991    var iFirstSave = context.iCurr - 4;
23992    var pos = (i - iFirstSave) % 5;
23993    switch (pos) {
23994      case 0:
23995        return fnArray[i] === _util.OPS.beginText;
23996      case 1:
23997        return fnArray[i] === _util.OPS.setFont;
23998      case 2:
23999        return fnArray[i] === _util.OPS.setTextMatrix;
24000      case 3:
24001        if (fnArray[i] !== _util.OPS.showText) {
24002          return false;
24003        }
24004        var iFirstSetFont = context.iCurr - 3;
24005        var firstSetFontArg0 = argsArray[iFirstSetFont][0];
24006        var firstSetFontArg1 = argsArray[iFirstSetFont][1];
24007        if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {
24008          return false;
24009        }
24010        return true;
24011      case 4:
24012        return fnArray[i] === _util.OPS.endText;
24013    }
24014  }, function (context, i) {
24015    var MIN_CHARS_IN_BLOCK = 3;
24016    var MAX_CHARS_IN_BLOCK = 1000;
24017    var fnArray = context.fnArray,
24018        argsArray = context.argsArray;
24019    var curr = context.iCurr;
24020    var iFirstBeginText = curr - 4;
24021    var iFirstSetFont = curr - 3;
24022    var iFirstSetTextMatrix = curr - 2;
24023    var iFirstShowText = curr - 1;
24024    var iFirstEndText = curr;
24025    var firstSetFontArg0 = argsArray[iFirstSetFont][0];
24026    var firstSetFontArg1 = argsArray[iFirstSetFont][1];
24027    var count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);
24028    if (count < MIN_CHARS_IN_BLOCK) {
24029      return i - (i - iFirstBeginText) % 5;
24030    }
24031    var iFirst = iFirstBeginText;
24032    if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {
24033      count++;
24034      iFirst -= 5;
24035    }
24036    var iEndText = iFirst + 4;
24037    for (var q = 1; q < count; q++) {
24038      fnArray.splice(iEndText, 3);
24039      argsArray.splice(iEndText, 3);
24040      iEndText += 2;
24041    }
24042    return iEndText + 1;
24043  });
24044  function QueueOptimizer(queue) {
24045    this.queue = queue;
24046    this.state = null;
24047    this.context = {
24048      iCurr: 0,
24049      fnArray: queue.fnArray,
24050      argsArray: queue.argsArray
24051    };
24052    this.match = null;
24053    this.lastProcessed = 0;
24054  }
24055  QueueOptimizer.prototype = {
24056    _optimize: function _optimize() {
24057      var fnArray = this.queue.fnArray;
24058      var i = this.lastProcessed,
24059          ii = fnArray.length;
24060      var state = this.state;
24061      var match = this.match;
24062      if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {
24063        this.lastProcessed = ii;
24064        return;
24065      }
24066      var context = this.context;
24067      while (i < ii) {
24068        if (match) {
24069          var iterate = (0, match.iterateFn)(context, i);
24070          if (iterate) {
24071            i++;
24072            continue;
24073          }
24074          i = (0, match.processFn)(context, i + 1);
24075          ii = fnArray.length;
24076          match = null;
24077          state = null;
24078          if (i >= ii) {
24079            break;
24080          }
24081        }
24082        state = (state || InitialState)[fnArray[i]];
24083        if (!state || Array.isArray(state)) {
24084          i++;
24085          continue;
24086        }
24087        context.iCurr = i;
24088        i++;
24089        if (state.checkFn && !(0, state.checkFn)(context)) {
24090          state = null;
24091          continue;
24092        }
24093        match = state;
24094        state = null;
24095      }
24096      this.state = state;
24097      this.match = match;
24098      this.lastProcessed = i;
24099    },
24100    push: function push(fn, args) {
24101      this.queue.fnArray.push(fn);
24102      this.queue.argsArray.push(args);
24103      this._optimize();
24104    },
24105    flush: function flush() {
24106      while (this.match) {
24107        var length = this.queue.fnArray.length;
24108        this.lastProcessed = (0, this.match.processFn)(this.context, length);
24109        this.match = null;
24110        this.state = null;
24111        this._optimize();
24112      }
24113    },
24114    reset: function reset() {
24115      this.state = null;
24116      this.match = null;
24117      this.lastProcessed = 0;
24118    }
24119  };
24120  return QueueOptimizer;
24121}();
24122var NullOptimizer = function NullOptimizerClosure() {
24123  function NullOptimizer(queue) {
24124    this.queue = queue;
24125  }
24126  NullOptimizer.prototype = {
24127    push: function push(fn, args) {
24128      this.queue.fnArray.push(fn);
24129      this.queue.argsArray.push(args);
24130    },
24131    flush: function flush() {}
24132  };
24133  return NullOptimizer;
24134}();
24135var OperatorList = function OperatorListClosure() {
24136  var CHUNK_SIZE = 1000;
24137  var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5;
24138  function getTransfers(queue) {
24139    var transfers = [];
24140    var fnArray = queue.fnArray,
24141        argsArray = queue.argsArray;
24142    for (var i = 0, ii = queue.length; i < ii; i++) {
24143      switch (fnArray[i]) {
24144        case _util.OPS.paintInlineImageXObject:
24145        case _util.OPS.paintInlineImageXObjectGroup:
24146        case _util.OPS.paintImageMaskXObject:
24147          var arg = argsArray[i][0];
24148          ;
24149          if (!arg.cached) {
24150            transfers.push(arg.data.buffer);
24151          }
24152          break;
24153      }
24154    }
24155    return transfers;
24156  }
24157  function OperatorList(intent, messageHandler, pageIndex) {
24158    this.messageHandler = messageHandler;
24159    this.fnArray = [];
24160    this.argsArray = [];
24161    if (messageHandler && this.intent !== 'oplist') {
24162      this.optimizer = new QueueOptimizer(this);
24163    } else {
24164      this.optimizer = new NullOptimizer(this);
24165    }
24166    this.dependencies = Object.create(null);
24167    this._totalLength = 0;
24168    this.pageIndex = pageIndex;
24169    this.intent = intent;
24170    this.weight = 0;
24171  }
24172  OperatorList.prototype = {
24173    get length() {
24174      return this.argsArray.length;
24175    },
24176    get totalLength() {
24177      return this._totalLength + this.length;
24178    },
24179    addOp: function addOp(fn, args) {
24180      this.optimizer.push(fn, args);
24181      this.weight++;
24182      if (this.messageHandler) {
24183        if (this.weight >= CHUNK_SIZE) {
24184          this.flush();
24185        } else if (this.weight >= CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === _util.OPS.endText)) {
24186          this.flush();
24187        }
24188      }
24189    },
24190    addDependency: function addDependency(dependency) {
24191      if (dependency in this.dependencies) {
24192        return;
24193      }
24194      this.dependencies[dependency] = true;
24195      this.addOp(_util.OPS.dependency, [dependency]);
24196    },
24197    addDependencies: function addDependencies(dependencies) {
24198      for (var key in dependencies) {
24199        this.addDependency(key);
24200      }
24201    },
24202    addOpList: function addOpList(opList) {
24203      Object.assign(this.dependencies, opList.dependencies);
24204      for (var i = 0, ii = opList.length; i < ii; i++) {
24205        this.addOp(opList.fnArray[i], opList.argsArray[i]);
24206      }
24207    },
24208    getIR: function getIR() {
24209      return {
24210        fnArray: this.fnArray,
24211        argsArray: this.argsArray,
24212        length: this.length
24213      };
24214    },
24215    flush: function flush(lastChunk) {
24216      this.optimizer.flush();
24217      var transfers = getTransfers(this);
24218      var length = this.length;
24219      this._totalLength += length;
24220      this.messageHandler.send('RenderPageChunk', {
24221        operatorList: {
24222          fnArray: this.fnArray,
24223          argsArray: this.argsArray,
24224          lastChunk: lastChunk,
24225          length: length
24226        },
24227        pageIndex: this.pageIndex,
24228        intent: this.intent
24229      }, transfers);
24230      this.dependencies = Object.create(null);
24231      this.fnArray.length = 0;
24232      this.argsArray.length = 0;
24233      this.weight = 0;
24234      this.optimizer.reset();
24235    }
24236  };
24237  return OperatorList;
24238}();
24239exports.OperatorList = OperatorList;
24240
24241/***/ }),
24242/* 154 */
24243/***/ (function(module, exports, __w_pdfjs_require__) {
24244
24245"use strict";
24246
24247
24248Object.defineProperty(exports, "__esModule", {
24249  value: true
24250});
24251exports.PartialEvaluator = undefined;
24252
24253var _regenerator = __w_pdfjs_require__(131);
24254
24255var _regenerator2 = _interopRequireDefault(_regenerator);
24256
24257var _util = __w_pdfjs_require__(2);
24258
24259var _cmap = __w_pdfjs_require__(155);
24260
24261var _stream = __w_pdfjs_require__(140);
24262
24263var _primitives = __w_pdfjs_require__(138);
24264
24265var _fonts = __w_pdfjs_require__(156);
24266
24267var _encodings = __w_pdfjs_require__(159);
24268
24269var _unicode = __w_pdfjs_require__(162);
24270
24271var _standard_fonts = __w_pdfjs_require__(161);
24272
24273var _pattern = __w_pdfjs_require__(165);
24274
24275var _parser = __w_pdfjs_require__(139);
24276
24277var _bidi = __w_pdfjs_require__(166);
24278
24279var _colorspace = __w_pdfjs_require__(151);
24280
24281var _glyphlist = __w_pdfjs_require__(160);
24282
24283var _metrics = __w_pdfjs_require__(167);
24284
24285var _function = __w_pdfjs_require__(168);
24286
24287var _jpeg_stream = __w_pdfjs_require__(146);
24288
24289var _murmurhash = __w_pdfjs_require__(170);
24290
24291var _operator_list = __w_pdfjs_require__(153);
24292
24293var _image = __w_pdfjs_require__(171);
24294
24295function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24296
24297function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
24298
24299var PartialEvaluator = function PartialEvaluatorClosure() {
24300  var DefaultPartialEvaluatorOptions = {
24301    forceDataSchema: false,
24302    maxImageSize: -1,
24303    disableFontFace: false,
24304    nativeImageDecoderSupport: _util.NativeImageDecoding.DECODE,
24305    ignoreErrors: false,
24306    isEvalSupported: true
24307  };
24308  function NativeImageDecoder(_ref) {
24309    var xref = _ref.xref,
24310        resources = _ref.resources,
24311        handler = _ref.handler,
24312        _ref$forceDataSchema = _ref.forceDataSchema,
24313        forceDataSchema = _ref$forceDataSchema === undefined ? false : _ref$forceDataSchema,
24314        pdfFunctionFactory = _ref.pdfFunctionFactory;
24315
24316    this.xref = xref;
24317    this.resources = resources;
24318    this.handler = handler;
24319    this.forceDataSchema = forceDataSchema;
24320    this.pdfFunctionFactory = pdfFunctionFactory;
24321  }
24322  NativeImageDecoder.prototype = {
24323    canDecode: function canDecode(image) {
24324      return image instanceof _jpeg_stream.JpegStream && NativeImageDecoder.isDecodable(image, this.xref, this.resources, this.pdfFunctionFactory);
24325    },
24326    decode: function decode(image) {
24327      var dict = image.dict;
24328      var colorSpace = dict.get('ColorSpace', 'CS');
24329      colorSpace = _colorspace.ColorSpace.parse(colorSpace, this.xref, this.resources, this.pdfFunctionFactory);
24330      return this.handler.sendWithPromise('JpegDecode', [image.getIR(this.forceDataSchema), colorSpace.numComps]).then(function (_ref2) {
24331        var data = _ref2.data,
24332            width = _ref2.width,
24333            height = _ref2.height;
24334
24335        return new _stream.Stream(data, 0, data.length, image.dict);
24336      });
24337    }
24338  };
24339  NativeImageDecoder.isSupported = function (image, xref, res, pdfFunctionFactory) {
24340    var dict = image.dict;
24341    if (dict.has('DecodeParms') || dict.has('DP')) {
24342      return false;
24343    }
24344    var cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res, pdfFunctionFactory);
24345    return (cs.name === 'DeviceGray' || cs.name === 'DeviceRGB') && cs.isDefaultDecode(dict.getArray('Decode', 'D'));
24346  };
24347  NativeImageDecoder.isDecodable = function (image, xref, res, pdfFunctionFactory) {
24348    var dict = image.dict;
24349    if (dict.has('DecodeParms') || dict.has('DP')) {
24350      return false;
24351    }
24352    var cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res, pdfFunctionFactory);
24353    return (cs.numComps === 1 || cs.numComps === 3) && cs.isDefaultDecode(dict.getArray('Decode', 'D'));
24354  };
24355  function PartialEvaluator(_ref3) {
24356    var _this = this;
24357
24358    var pdfManager = _ref3.pdfManager,
24359        xref = _ref3.xref,
24360        handler = _ref3.handler,
24361        pageIndex = _ref3.pageIndex,
24362        idFactory = _ref3.idFactory,
24363        fontCache = _ref3.fontCache,
24364        builtInCMapCache = _ref3.builtInCMapCache,
24365        _ref3$options = _ref3.options,
24366        options = _ref3$options === undefined ? null : _ref3$options,
24367        pdfFunctionFactory = _ref3.pdfFunctionFactory;
24368
24369    this.pdfManager = pdfManager;
24370    this.xref = xref;
24371    this.handler = handler;
24372    this.pageIndex = pageIndex;
24373    this.idFactory = idFactory;
24374    this.fontCache = fontCache;
24375    this.builtInCMapCache = builtInCMapCache;
24376    this.options = options || DefaultPartialEvaluatorOptions;
24377    this.pdfFunctionFactory = pdfFunctionFactory;
24378    this.fetchBuiltInCMap = function () {
24379      var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(name) {
24380        var data;
24381        return _regenerator2.default.wrap(function _callee$(_context) {
24382          while (1) {
24383            switch (_context.prev = _context.next) {
24384              case 0:
24385                if (!_this.builtInCMapCache.has(name)) {
24386                  _context.next = 2;
24387                  break;
24388                }
24389
24390                return _context.abrupt('return', _this.builtInCMapCache.get(name));
24391
24392              case 2:
24393                _context.next = 4;
24394                return _this.handler.sendWithPromise('FetchBuiltInCMap', { name: name });
24395
24396              case 4:
24397                data = _context.sent;
24398
24399                if (data.compressionType !== _util.CMapCompressionType.NONE) {
24400                  _this.builtInCMapCache.set(name, data);
24401                }
24402                return _context.abrupt('return', data);
24403
24404              case 7:
24405              case 'end':
24406                return _context.stop();
24407            }
24408          }
24409        }, _callee, _this);
24410      }));
24411
24412      return function (_x) {
24413        return _ref4.apply(this, arguments);
24414      };
24415    }();
24416  }
24417  var TIME_SLOT_DURATION_MS = 20;
24418  var CHECK_TIME_EVERY = 100;
24419  function TimeSlotManager() {
24420    this.reset();
24421  }
24422  TimeSlotManager.prototype = {
24423    check: function TimeSlotManager_check() {
24424      if (++this.checked < CHECK_TIME_EVERY) {
24425        return false;
24426      }
24427      this.checked = 0;
24428      return this.endTime <= Date.now();
24429    },
24430    reset: function TimeSlotManager_reset() {
24431      this.endTime = Date.now() + TIME_SLOT_DURATION_MS;
24432      this.checked = 0;
24433    }
24434  };
24435  function normalizeBlendMode(value) {
24436    if (!(0, _primitives.isName)(value)) {
24437      return 'source-over';
24438    }
24439    switch (value.name) {
24440      case 'Normal':
24441      case 'Compatible':
24442        return 'source-over';
24443      case 'Multiply':
24444        return 'multiply';
24445      case 'Screen':
24446        return 'screen';
24447      case 'Overlay':
24448        return 'overlay';
24449      case 'Darken':
24450        return 'darken';
24451      case 'Lighten':
24452        return 'lighten';
24453      case 'ColorDodge':
24454        return 'color-dodge';
24455      case 'ColorBurn':
24456        return 'color-burn';
24457      case 'HardLight':
24458        return 'hard-light';
24459      case 'SoftLight':
24460        return 'soft-light';
24461      case 'Difference':
24462        return 'difference';
24463      case 'Exclusion':
24464        return 'exclusion';
24465      case 'Hue':
24466        return 'hue';
24467      case 'Saturation':
24468        return 'saturation';
24469      case 'Color':
24470        return 'color';
24471      case 'Luminosity':
24472        return 'luminosity';
24473    }
24474    (0, _util.warn)('Unsupported blend mode: ' + value.name);
24475    return 'source-over';
24476  }
24477  var deferred = Promise.resolve();
24478  var TILING_PATTERN = 1,
24479      SHADING_PATTERN = 2;
24480  PartialEvaluator.prototype = {
24481    clone: function clone() {
24482      var newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DefaultPartialEvaluatorOptions;
24483
24484      var newEvaluator = Object.create(this);
24485      newEvaluator.options = newOptions;
24486      return newEvaluator;
24487    },
24488
24489    hasBlendModes: function PartialEvaluator_hasBlendModes(resources) {
24490      if (!(0, _primitives.isDict)(resources)) {
24491        return false;
24492      }
24493      var processed = Object.create(null);
24494      if (resources.objId) {
24495        processed[resources.objId] = true;
24496      }
24497      var nodes = [resources],
24498          xref = this.xref;
24499      while (nodes.length) {
24500        var key, i, ii;
24501        var node = nodes.shift();
24502        var graphicStates = node.get('ExtGState');
24503        if ((0, _primitives.isDict)(graphicStates)) {
24504          var graphicStatesKeys = graphicStates.getKeys();
24505          for (i = 0, ii = graphicStatesKeys.length; i < ii; i++) {
24506            key = graphicStatesKeys[i];
24507            var graphicState = graphicStates.get(key);
24508            var bm = graphicState.get('BM');
24509            if ((0, _primitives.isName)(bm) && bm.name !== 'Normal') {
24510              return true;
24511            }
24512          }
24513        }
24514        var xObjects = node.get('XObject');
24515        if (!(0, _primitives.isDict)(xObjects)) {
24516          continue;
24517        }
24518        var xObjectsKeys = xObjects.getKeys();
24519        for (i = 0, ii = xObjectsKeys.length; i < ii; i++) {
24520          key = xObjectsKeys[i];
24521          var xObject = xObjects.getRaw(key);
24522          if ((0, _primitives.isRef)(xObject)) {
24523            if (processed[xObject.toString()]) {
24524              continue;
24525            }
24526            xObject = xref.fetch(xObject);
24527          }
24528          if (!(0, _primitives.isStream)(xObject)) {
24529            continue;
24530          }
24531          if (xObject.dict.objId) {
24532            if (processed[xObject.dict.objId]) {
24533              continue;
24534            }
24535            processed[xObject.dict.objId] = true;
24536          }
24537          var xResources = xObject.dict.get('Resources');
24538          if ((0, _primitives.isDict)(xResources) && (!xResources.objId || !processed[xResources.objId])) {
24539            nodes.push(xResources);
24540            if (xResources.objId) {
24541              processed[xResources.objId] = true;
24542            }
24543          }
24544        }
24545      }
24546      return false;
24547    },
24548    buildFormXObject: function PartialEvaluator_buildFormXObject(resources, xobj, smask, operatorList, task, initialState) {
24549      var dict = xobj.dict;
24550      var matrix = dict.getArray('Matrix');
24551      var bbox = dict.getArray('BBox');
24552      var group = dict.get('Group');
24553      if (group) {
24554        var groupOptions = {
24555          matrix: matrix,
24556          bbox: bbox,
24557          smask: smask,
24558          isolated: false,
24559          knockout: false
24560        };
24561        var groupSubtype = group.get('S');
24562        var colorSpace = null;
24563        if ((0, _primitives.isName)(groupSubtype, 'Transparency')) {
24564          groupOptions.isolated = group.get('I') || false;
24565          groupOptions.knockout = group.get('K') || false;
24566          if (group.has('CS')) {
24567            colorSpace = _colorspace.ColorSpace.parse(group.get('CS'), this.xref, resources, this.pdfFunctionFactory);
24568          }
24569        }
24570        if (smask && smask.backdrop) {
24571          colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb;
24572          smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);
24573        }
24574        operatorList.addOp(_util.OPS.beginGroup, [groupOptions]);
24575      }
24576      operatorList.addOp(_util.OPS.paintFormXObjectBegin, [matrix, bbox]);
24577      return this.getOperatorList({
24578        stream: xobj,
24579        task: task,
24580        resources: dict.get('Resources') || resources,
24581        operatorList: operatorList,
24582        initialState: initialState
24583      }).then(function () {
24584        operatorList.addOp(_util.OPS.paintFormXObjectEnd, []);
24585        if (group) {
24586          operatorList.addOp(_util.OPS.endGroup, [groupOptions]);
24587        }
24588      });
24589    },
24590    buildPaintImageXObject: function buildPaintImageXObject(_ref5) {
24591      var _this2 = this;
24592
24593      var resources = _ref5.resources,
24594          image = _ref5.image,
24595          _ref5$isInline = _ref5.isInline,
24596          isInline = _ref5$isInline === undefined ? false : _ref5$isInline,
24597          operatorList = _ref5.operatorList,
24598          cacheKey = _ref5.cacheKey,
24599          imageCache = _ref5.imageCache,
24600          _ref5$forceDisableNat = _ref5.forceDisableNativeImageDecoder,
24601          forceDisableNativeImageDecoder = _ref5$forceDisableNat === undefined ? false : _ref5$forceDisableNat;
24602
24603      var dict = image.dict;
24604      var w = dict.get('Width', 'W');
24605      var h = dict.get('Height', 'H');
24606      if (!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h))) {
24607        (0, _util.warn)('Image dimensions are missing, or not numbers.');
24608        return Promise.resolve();
24609      }
24610      var maxImageSize = this.options.maxImageSize;
24611      if (maxImageSize !== -1 && w * h > maxImageSize) {
24612        (0, _util.warn)('Image exceeded maximum allowed size and was removed.');
24613        return Promise.resolve();
24614      }
24615      var imageMask = dict.get('ImageMask', 'IM') || false;
24616      var imgData, args;
24617      if (imageMask) {
24618        var width = dict.get('Width', 'W');
24619        var height = dict.get('Height', 'H');
24620        var bitStrideLength = width + 7 >> 3;
24621        var imgArray = image.getBytes(bitStrideLength * height, true);
24622        var decode = dict.getArray('Decode', 'D');
24623        imgData = _image.PDFImage.createMask({
24624          imgArray: imgArray,
24625          width: width,
24626          height: height,
24627          imageIsFromDecodeStream: image instanceof _stream.DecodeStream,
24628          inverseDecode: !!decode && decode[0] > 0
24629        });
24630        imgData.cached = true;
24631        args = [imgData];
24632        operatorList.addOp(_util.OPS.paintImageMaskXObject, args);
24633        if (cacheKey) {
24634          imageCache[cacheKey] = {
24635            fn: _util.OPS.paintImageMaskXObject,
24636            args: args
24637          };
24638        }
24639        return Promise.resolve();
24640      }
24641      var softMask = dict.get('SMask', 'SM') || false;
24642      var mask = dict.get('Mask') || false;
24643      var SMALL_IMAGE_DIMENSIONS = 200;
24644      if (isInline && !softMask && !mask && !(image instanceof _jpeg_stream.JpegStream) && w + h < SMALL_IMAGE_DIMENSIONS) {
24645        var imageObj = new _image.PDFImage({
24646          xref: this.xref,
24647          res: resources,
24648          image: image,
24649          isInline: isInline,
24650          pdfFunctionFactory: this.pdfFunctionFactory
24651        });
24652        imgData = imageObj.createImageData(true);
24653        operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);
24654        return Promise.resolve();
24655      }
24656      var nativeImageDecoderSupport = forceDisableNativeImageDecoder ? _util.NativeImageDecoding.NONE : this.options.nativeImageDecoderSupport;
24657      var objId = 'img_' + this.idFactory.createObjId();
24658      if (nativeImageDecoderSupport !== _util.NativeImageDecoding.NONE && !softMask && !mask && image instanceof _jpeg_stream.JpegStream && NativeImageDecoder.isSupported(image, this.xref, resources, this.pdfFunctionFactory)) {
24659        return this.handler.sendWithPromise('obj', [objId, this.pageIndex, 'JpegStream', image.getIR(this.options.forceDataSchema)]).then(function () {
24660          operatorList.addDependency(objId);
24661          args = [objId, w, h];
24662          operatorList.addOp(_util.OPS.paintJpegXObject, args);
24663          if (cacheKey) {
24664            imageCache[cacheKey] = {
24665              fn: _util.OPS.paintJpegXObject,
24666              args: args
24667            };
24668          }
24669        }, function (reason) {
24670          (0, _util.warn)('Native JPEG decoding failed -- trying to recover: ' + (reason && reason.message));
24671          return _this2.buildPaintImageXObject({
24672            resources: resources,
24673            image: image,
24674            isInline: isInline,
24675            operatorList: operatorList,
24676            cacheKey: cacheKey,
24677            imageCache: imageCache,
24678            forceDisableNativeImageDecoder: true
24679          });
24680        });
24681      }
24682      var nativeImageDecoder = null;
24683      if (nativeImageDecoderSupport === _util.NativeImageDecoding.DECODE && (image instanceof _jpeg_stream.JpegStream || mask instanceof _jpeg_stream.JpegStream || softMask instanceof _jpeg_stream.JpegStream)) {
24684        nativeImageDecoder = new NativeImageDecoder({
24685          xref: this.xref,
24686          resources: resources,
24687          handler: this.handler,
24688          forceDataSchema: this.options.forceDataSchema,
24689          pdfFunctionFactory: this.pdfFunctionFactory
24690        });
24691      }
24692      operatorList.addDependency(objId);
24693      args = [objId, w, h];
24694      _image.PDFImage.buildImage({
24695        handler: this.handler,
24696        xref: this.xref,
24697        res: resources,
24698        image: image,
24699        isInline: isInline,
24700        nativeDecoder: nativeImageDecoder,
24701        pdfFunctionFactory: this.pdfFunctionFactory
24702      }).then(function (imageObj) {
24703        var imgData = imageObj.createImageData(false);
24704        _this2.handler.send('obj', [objId, _this2.pageIndex, 'Image', imgData], [imgData.data.buffer]);
24705      }).catch(function (reason) {
24706        (0, _util.warn)('Unable to decode image: ' + reason);
24707        _this2.handler.send('obj', [objId, _this2.pageIndex, 'Image', null]);
24708      });
24709      operatorList.addOp(_util.OPS.paintImageXObject, args);
24710      if (cacheKey) {
24711        imageCache[cacheKey] = {
24712          fn: _util.OPS.paintImageXObject,
24713          args: args
24714        };
24715      }
24716      return Promise.resolve();
24717    },
24718
24719    handleSMask: function PartialEvaluator_handleSmask(smask, resources, operatorList, task, stateManager) {
24720      var smaskContent = smask.get('G');
24721      var smaskOptions = {
24722        subtype: smask.get('S').name,
24723        backdrop: smask.get('BC')
24724      };
24725      var transferObj = smask.get('TR');
24726      if ((0, _function.isPDFFunction)(transferObj)) {
24727        var transferFn = this.pdfFunctionFactory.create(transferObj);
24728        var transferMap = new Uint8Array(256);
24729        var tmp = new Float32Array(1);
24730        for (var i = 0; i < 256; i++) {
24731          tmp[0] = i / 255;
24732          transferFn(tmp, 0, tmp, 0);
24733          transferMap[i] = tmp[0] * 255 | 0;
24734        }
24735        smaskOptions.transferMap = transferMap;
24736      }
24737      return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone());
24738    },
24739    handleTilingType: function handleTilingType(fn, args, resources, pattern, patternDict, operatorList, task) {
24740      var _this3 = this;
24741
24742      var tilingOpList = new _operator_list.OperatorList();
24743      var resourcesArray = [patternDict.get('Resources'), resources];
24744      var patternResources = _primitives.Dict.merge(this.xref, resourcesArray);
24745      return this.getOperatorList({
24746        stream: pattern,
24747        task: task,
24748        resources: patternResources,
24749        operatorList: tilingOpList
24750      }).then(function () {
24751        return (0, _pattern.getTilingPatternIR)({
24752          fnArray: tilingOpList.fnArray,
24753          argsArray: tilingOpList.argsArray
24754        }, patternDict, args);
24755      }).then(function (tilingPatternIR) {
24756        operatorList.addDependencies(tilingOpList.dependencies);
24757        operatorList.addOp(fn, tilingPatternIR);
24758      }, function (reason) {
24759        if (_this3.options.ignoreErrors) {
24760          _this3.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.unknown });
24761          (0, _util.warn)('handleTilingType - ignoring pattern: "' + reason + '".');
24762          return;
24763        }
24764        throw reason;
24765      });
24766    },
24767
24768    handleSetFont: function PartialEvaluator_handleSetFont(resources, fontArgs, fontRef, operatorList, task, state) {
24769      var _this4 = this;
24770
24771      var fontName;
24772      if (fontArgs) {
24773        fontArgs = fontArgs.slice();
24774        fontName = fontArgs[0].name;
24775      }
24776      return this.loadFont(fontName, fontRef, resources).then(function (translated) {
24777        if (!translated.font.isType3Font) {
24778          return translated;
24779        }
24780        return translated.loadType3Data(_this4, resources, operatorList, task).then(function () {
24781          return translated;
24782        }).catch(function (reason) {
24783          _this4.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.font });
24784          return new TranslatedFont('g_font_error', new _fonts.ErrorFont('Type3 font load error: ' + reason), translated.font);
24785        });
24786      }).then(function (translated) {
24787        state.font = translated.font;
24788        translated.send(_this4.handler);
24789        return translated.loadedName;
24790      });
24791    },
24792    handleText: function PartialEvaluator_handleText(chars, state) {
24793      var _this5 = this;
24794
24795      var font = state.font;
24796      var glyphs = font.charsToGlyphs(chars);
24797      var isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
24798      if (font.data && (isAddToPathSet || this.options.disableFontFace || state.fillColorSpace.name === 'Pattern')) {
24799        var buildPath = function buildPath(fontChar) {
24800          if (!font.renderer.hasBuiltPath(fontChar)) {
24801            var path = font.renderer.getPathJs(fontChar);
24802            _this5.handler.send('commonobj', [font.loadedName + '_path_' + fontChar, 'FontPath', path]);
24803          }
24804        };
24805        for (var i = 0, ii = glyphs.length; i < ii; i++) {
24806          var glyph = glyphs[i];
24807          buildPath(glyph.fontChar);
24808          var accent = glyph.accent;
24809          if (accent && accent.fontChar) {
24810            buildPath(accent.fontChar);
24811          }
24812        }
24813      }
24814      return glyphs;
24815    },
24816    setGState: function PartialEvaluator_setGState(resources, gState, operatorList, task, stateManager) {
24817      var _this6 = this;
24818
24819      var gStateObj = [];
24820      var gStateKeys = gState.getKeys();
24821      var promise = Promise.resolve();
24822
24823      var _loop = function _loop() {
24824        var key = gStateKeys[i];
24825        var value = gState.get(key);
24826        switch (key) {
24827          case 'Type':
24828            break;
24829          case 'LW':
24830          case 'LC':
24831          case 'LJ':
24832          case 'ML':
24833          case 'D':
24834          case 'RI':
24835          case 'FL':
24836          case 'CA':
24837          case 'ca':
24838            gStateObj.push([key, value]);
24839            break;
24840          case 'Font':
24841            promise = promise.then(function () {
24842              return _this6.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) {
24843                operatorList.addDependency(loadedName);
24844                gStateObj.push([key, [loadedName, value[1]]]);
24845              });
24846            });
24847            break;
24848          case 'BM':
24849            gStateObj.push([key, normalizeBlendMode(value)]);
24850            break;
24851          case 'SMask':
24852            if ((0, _primitives.isName)(value, 'None')) {
24853              gStateObj.push([key, false]);
24854              break;
24855            }
24856            if ((0, _primitives.isDict)(value)) {
24857              promise = promise.then(function () {
24858                return _this6.handleSMask(value, resources, operatorList, task, stateManager);
24859              });
24860              gStateObj.push([key, true]);
24861            } else {
24862              (0, _util.warn)('Unsupported SMask type');
24863            }
24864            break;
24865          case 'OP':
24866          case 'op':
24867          case 'OPM':
24868          case 'BG':
24869          case 'BG2':
24870          case 'UCR':
24871          case 'UCR2':
24872          case 'TR':
24873          case 'TR2':
24874          case 'HT':
24875          case 'SM':
24876          case 'SA':
24877          case 'AIS':
24878          case 'TK':
24879            (0, _util.info)('graphic state operator ' + key);
24880            break;
24881          default:
24882            (0, _util.info)('Unknown graphic state operator ' + key);
24883            break;
24884        }
24885      };
24886
24887      for (var i = 0, ii = gStateKeys.length; i < ii; i++) {
24888        _loop();
24889      }
24890      return promise.then(function () {
24891        if (gStateObj.length > 0) {
24892          operatorList.addOp(_util.OPS.setGState, [gStateObj]);
24893        }
24894      });
24895    },
24896    loadFont: function PartialEvaluator_loadFont(fontName, font, resources) {
24897      var _this7 = this;
24898
24899      function errorFont() {
24900        return Promise.resolve(new TranslatedFont('g_font_error', new _fonts.ErrorFont('Font ' + fontName + ' is not available'), font));
24901      }
24902      var fontRef,
24903          xref = this.xref;
24904      if (font) {
24905        if (!(0, _primitives.isRef)(font)) {
24906          throw new Error('The "font" object should be a reference.');
24907        }
24908        fontRef = font;
24909      } else {
24910        var fontRes = resources.get('Font');
24911        if (fontRes) {
24912          fontRef = fontRes.getRaw(fontName);
24913        } else {
24914          (0, _util.warn)('fontRes not available');
24915          return errorFont();
24916        }
24917      }
24918      if (!fontRef) {
24919        (0, _util.warn)('fontRef not available');
24920        return errorFont();
24921      }
24922      if (this.fontCache.has(fontRef)) {
24923        return this.fontCache.get(fontRef);
24924      }
24925      font = xref.fetchIfRef(fontRef);
24926      if (!(0, _primitives.isDict)(font)) {
24927        return errorFont();
24928      }
24929      if (font.translated) {
24930        return font.translated;
24931      }
24932      var fontCapability = (0, _util.createPromiseCapability)();
24933      var preEvaluatedFont = this.preEvaluateFont(font);
24934      var descriptor = preEvaluatedFont.descriptor;
24935      var fontRefIsRef = (0, _primitives.isRef)(fontRef),
24936          fontID;
24937      if (fontRefIsRef) {
24938        fontID = fontRef.toString();
24939      }
24940      if ((0, _primitives.isDict)(descriptor)) {
24941        if (!descriptor.fontAliases) {
24942          descriptor.fontAliases = Object.create(null);
24943        }
24944        var fontAliases = descriptor.fontAliases;
24945        var hash = preEvaluatedFont.hash;
24946        if (fontAliases[hash]) {
24947          var aliasFontRef = fontAliases[hash].aliasRef;
24948          if (fontRefIsRef && aliasFontRef && this.fontCache.has(ali
24948asFontRef)) {
24949            this.fontCache.putAlias(fontRef, aliasFontRef);
24950            return this.fontCache.get(fontRef);
24951          }
24952        } else {
24953          fontAliases[hash] = { fontID: _fonts.Font.getFontID() };
24954        }
24955        if (fontRefIsRef) {
24956          fontAliases[hash].aliasRef = fontRef;
24957        }
24958        fontID = fontAliases[hash].fontID;
24959      }
24960      if (fontRefIsRef) {
24961        this.fontCache.put(fontRef, fontCapability.promise);
24962      } else {
24963        if (!fontID) {
24964          fontID = this.idFactory.createObjId();
24965        }
24966        this.fontCache.put('id_' + fontID, fontCapability.promise);
24967      }
24968      (0, _util.assert)(fontID, 'The "fontID" must be defined.');
24969      font.loadedName = 'g_' + this.pdfManager.docId + '_f' + fontID;
24970      font.translated = fontCapability.promise;
24971      var translatedPromise;
24972      try {
24973        translatedPromise = this.translateFont(preEvaluatedFont);
24974      } catch (e) {
24975        translatedPromise = Promise.reject(e);
24976      }
24977      translatedPromise.then(function (translatedFont) {
24978        if (translatedFont.fontType !== undefined) {
24979          var xrefFontStats = xref.stats.fontTypes;
24980          xrefFontStats[translatedFont.fontType] = true;
24981        }
24982        fontCapability.resolve(new TranslatedFont(font.loadedName, translatedFont, font));
24983      }).catch(function (reason) {
24984        _this7.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.font });
24985        try {
24986          var descriptor = preEvaluatedFont.descriptor;
24987          var fontFile3 = descriptor && descriptor.get('FontFile3');
24988          var subtype = fontFile3 && fontFile3.get('Subtype');
24989          var fontType = (0, _fonts.getFontType)(preEvaluatedFont.type, subtype && subtype.name);
24990          var xrefFontStats = xref.stats.fontTypes;
24991          xrefFontStats[fontType] = true;
24992        } catch (ex) {}
24993        fontCapability.resolve(new TranslatedFont(font.loadedName, new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason), font));
24994      });
24995      return fontCapability.promise;
24996    },
24997    buildPath: function PartialEvaluator_buildPath(operatorList, fn, args) {
24998      var lastIndex = operatorList.length - 1;
24999      if (!args) {
25000        args = [];
25001      }
25002      if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) {
25003        operatorList.addOp(_util.OPS.constructPath, [[fn], args]);
25004      } else {
25005        var opArgs = operatorList.argsArray[lastIndex];
25006        opArgs[0].push(fn);
25007        Array.prototype.push.apply(opArgs[1], args);
25008      }
25009    },
25010    handleColorN: function PartialEvaluator_handleColorN(operatorList, fn, args, cs, patterns, resources, task) {
25011      var patternName = args[args.length - 1];
25012      var pattern;
25013      if ((0, _primitives.isName)(patternName) && (pattern = patterns.get(patternName.name))) {
25014        var dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;
25015        var typeNum = dict.get('PatternType');
25016        if (typeNum === TILING_PATTERN) {
25017          var color = cs.base ? cs.base.getRgb(args, 0) : null;
25018          return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task);
25019        } else if (typeNum === SHADING_PATTERN) {
25020          var shading = dict.get('Shading');
25021          var matrix = dict.getArray('Matrix');
25022          pattern = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, this.pdfFunctionFactory);
25023          operatorList.addOp(fn, pattern.getIR());
25024          return Promise.resolve();
25025        }
25026        return Promise.reject(new Error('Unknown PatternType: ' + typeNum));
25027      }
25028      operatorList.addOp(fn, args);
25029      return Promise.resolve();
25030    },
25031    getOperatorList: function getOperatorList(_ref6) {
25032      var _this8 = this;
25033
25034      var stream = _ref6.stream,
25035          task = _ref6.task,
25036          resources = _ref6.resources,
25037          operatorList = _ref6.operatorList,
25038          _ref6$initialState = _ref6.initialState,
25039          initialState = _ref6$initialState === undefined ? null : _ref6$initialState;
25040
25041      resources = resources || _primitives.Dict.empty;
25042      initialState = initialState || new EvalState();
25043      if (!operatorList) {
25044        throw new Error('getOperatorList: missing "operatorList" parameter');
25045      }
25046      var self = this;
25047      var xref = this.xref;
25048      var imageCache = Object.create(null);
25049      var xobjs = resources.get('XObject') || _primitives.Dict.empty;
25050      var patterns = resources.get('Pattern') || _primitives.Dict.empty;
25051      var stateManager = new StateManager(initialState);
25052      var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
25053      var timeSlotManager = new TimeSlotManager();
25054      function closePendingRestoreOPS(argument) {
25055        for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {
25056          operatorList.addOp(_util.OPS.restore, []);
25057        }
25058      }
25059      return new Promise(function promiseBody(resolve, reject) {
25060        var next = function next(promise) {
25061          promise.then(function () {
25062            try {
25063              promiseBody(resolve, reject);
25064            } catch (ex) {
25065              reject(ex);
25066            }
25067          }, reject);
25068        };
25069        task.ensureNotTerminated();
25070        timeSlotManager.reset();
25071        var stop,
25072            operation = {},
25073            i,
25074            ii,
25075            cs;
25076        while (!(stop = timeSlotManager.check())) {
25077          operation.args = null;
25078          if (!preprocessor.read(operation)) {
25079            break;
25080          }
25081          var args = operation.args;
25082          var fn = operation.fn;
25083          switch (fn | 0) {
25084            case _util.OPS.paintXObject:
25085              var name = args[0].name;
25086              if (name && imageCache[name] !== undefined) {
25087                operatorList.addOp(imageCache[name].fn, imageCache[name].args);
25088                args = null;
25089                continue;
25090              }
25091              next(new Promise(function (resolveXObject, rejectXObject) {
25092                if (!name) {
25093                  throw new _util.FormatError('XObject must be referred to by name.');
25094                }
25095                var xobj = xobjs.get(name);
25096                if (!xobj) {
25097                  operatorList.addOp(fn, args);
25098                  resolveXObject();
25099                  return;
25100                }
25101                if (!(0, _primitives.isStream)(xobj)) {
25102                  throw new _util.FormatError('XObject should be a stream');
25103                }
25104                var type = xobj.dict.get('Subtype');
25105                if (!(0, _primitives.isName)(type)) {
25106                  throw new _util.FormatError('XObject should have a Name subtype');
25107                }
25108                if (type.name === 'Form') {
25109                  stateManager.save();
25110                  self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone()).then(function () {
25111                    stateManager.restore();
25112                    resolveXObject();
25113                  }, rejectXObject);
25114                  return;
25115                } else if (type.name === 'Image') {
25116                  self.buildPaintImageXObject({
25117                    resources: resources,
25118                    image: xobj,
25119                    operatorList: operatorList,
25120                    cacheKey: name,
25121                    imageCache: imageCache
25122                  }).then(resolveXObject, rejectXObject);
25123                  return;
25124                } else if (type.name === 'PS') {
25125                  (0, _util.info)('Ignored XObject subtype PS');
25126                } else {
25127                  throw new _util.FormatError('Unhandled XObject subtype ' + type.name);
25128                }
25129                resolveXObject();
25130              }).catch(function (reason) {
25131                if (self.options.ignoreErrors) {
25132                  self.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.unknown });
25133                  (0, _util.warn)('getOperatorList - ignoring XObject: "' + reason + '".');
25134                  return;
25135                }
25136                throw reason;
25137              }));
25138              return;
25139            case _util.OPS.setFont:
25140              var fontSize = args[1];
25141              next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state).then(function (loadedName) {
25142                operatorList.addDependency(loadedName);
25143                operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]);
25144              }));
25145              return;
25146            case _util.OPS.endInlineImage:
25147              var cacheKey = args[0].cacheKey;
25148              if (cacheKey) {
25149                var cacheEntry = imageCache[cacheKey];
25150                if (cacheEntry !== undefined) {
25151                  operatorList.addOp(cacheEntry.fn, cacheEntry.args);
25152                  args = null;
25153                  continue;
25154                }
25155              }
25156              next(self.buildPaintImageXObject({
25157                resources: resources,
25158                image: args[0],
25159                isInline: true,
25160                operatorList: operatorList,
25161                cacheKey: cacheKey,
25162                imageCache: imageCache
25163              }));
25164              return;
25165            case _util.OPS.showText:
25166              args[0] = self.handleText(args[0], stateManager.state);
25167              break;
25168            case _util.OPS.showSpacedText:
25169              var arr = args[0];
25170              var combinedGlyphs = [];
25171              var arrLength = arr.length;
25172              var state = stateManager.state;
25173              for (i = 0; i < arrLength; ++i) {
25174                var arrItem = arr[i];
25175                if ((0, _util.isString)(arrItem)) {
25176                  Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state));
25177                } else if ((0, _util.isNum)(arrItem)) {
25178                  combinedGlyphs.push(arrItem);
25179                }
25180              }
25181              args[0] = combinedGlyphs;
25182              fn = _util.OPS.showText;
25183              break;
25184            case _util.OPS.nextLineShowText:
25185              operatorList.addOp(_util.OPS.nextLine);
25186              args[0] = self.handleText(args[0], stateManager.state);
25187              fn = _util.OPS.showText;
25188              break;
25189            case _util.OPS.nextLineSetSpacingShowText:
25190              operatorList.addOp(_util.OPS.nextLine);
25191              operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]);
25192              operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]);
25193              args[0] = self.handleText(args[0], stateManager.state);
25194              fn = _util.OPS.showText;
25195              break;
25196            case _util.OPS.setTextRenderingMode:
25197              stateManager.state.textRenderingMode = args[0];
25198              break;
25199            case _util.OPS.setFillColorSpace:
25200              stateManager.state.fillColorSpace = _colorspace.ColorSpace.parse(args[0], xref, resources, self.pdfFunctionFactory);
25201              continue;
25202            case _util.OPS.setStrokeColorSpace:
25203              stateManager.state.strokeColorSpace = _colorspace.ColorSpace.parse(args[0], xref, resources, self.pdfFunctionFactory);
25204              continue;
25205            case _util.OPS.setFillColor:
25206              cs = stateManager.state.fillColorSpace;
25207              args = cs.getRgb(args, 0);
25208              fn = _util.OPS.setFillRGBColor;
25209              break;
25210            case _util.OPS.setStrokeColor:
25211              cs = stateManager.state.strokeColorSpace;
25212              args = cs.getRgb(args, 0);
25213              fn = _util.OPS.setStrokeRGBColor;
25214              break;
25215            case _util.OPS.setFillGray:
25216              stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray;
25217              args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
25218              fn = _util.OPS.setFillRGBColor;
25219              break;
25220            case _util.OPS.setStrokeGray:
25221              stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
25222              args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
25223              fn = _util.OPS.setStrokeRGBColor;
25224              break;
25225            case _util.OPS.setFillCMYKColor:
25226              stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk;
25227              args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
25228              fn = _util.OPS.setFillRGBColor;
25229              break;
25230            case _util.OPS.setStrokeCMYKColor:
25231              stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk;
25232              args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
25233              fn = _util.OPS.setStrokeRGBColor;
25234              break;
25235            case _util.OPS.setFillRGBColor:
25236              stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb;
25237              args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
25238              break;
25239            case _util.OPS.setStrokeRGBColor:
25240              stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb;
25241              args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
25242              break;
25243            case _util.OPS.setFillColorN:
25244              cs = stateManager.state.fillColorSpace;
25245              if (cs.name === 'Pattern') {
25246                next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task));
25247                return;
25248              }
25249              args = cs.getRgb(args, 0);
25250              fn = _util.OPS.setFillRGBColor;
25251              break;
25252            case _util.OPS.setStrokeColorN:
25253              cs = stateManager.state.strokeColorSpace;
25254              if (cs.name === 'Pattern') {
25255                next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task));
25256                return;
25257              }
25258              args = cs.getRgb(args, 0);
25259              fn = _util.OPS.setStrokeRGBColor;
25260              break;
25261            case _util.OPS.shadingFill:
25262              var shadingRes = resources.get('Shading');
25263              if (!shadingRes) {
25264                throw new _util.FormatError('No shading resource found');
25265              }
25266              var shading = shadingRes.get(args[0].name);
25267              if (!shading) {
25268                throw new _util.FormatError('No shading object found');
25269              }
25270              var shadingFill = _pattern.Pattern.parseShading(shading, null, xref, resources, self.handler, self.pdfFunctionFactory);
25271              var patternIR = shadingFill.getIR();
25272              args = [patternIR];
25273              fn = _util.OPS.shadingFill;
25274              break;
25275            case _util.OPS.setGState:
25276              var dictName = args[0];
25277              var extGState = resources.get('ExtGState');
25278              if (!(0, _primitives.isDict)(extGState) || !extGState.has(dictName.name)) {
25279                break;
25280              }
25281              var gState = extGState.get(dictName.name);
25282              next(self.setGState(resources, gState, operatorList, task, stateManager));
25283              return;
25284            case _util.OPS.moveTo:
25285            case _util.OPS.lineTo:
25286            case _util.OPS.curveTo:
25287            case _util.OPS.curveTo2:
25288            case _util.OPS.curveTo3:
25289            case _util.OPS.closePath:
25290              self.buildPath(operatorList, fn, args);
25291              continue;
25292            case _util.OPS.rectangle:
25293              self.buildPath(operatorList, fn, args);
25294              continue;
25295            case _util.OPS.markPoint:
25296            case _util.OPS.markPointProps:
25297            case _util.OPS.beginMarkedContent:
25298            case _util.OPS.beginMarkedContentProps:
25299            case _util.OPS.endMarkedContent:
25300            case _util.OPS.beginCompat:
25301            case _util.OPS.endCompat:
25302              continue;
25303            default:
25304              if (args !== null) {
25305                for (i = 0, ii = args.length; i < ii; i++) {
25306                  if (args[i] instanceof _primitives.Dict) {
25307                    break;
25308                  }
25309                }
25310                if (i < ii) {
25311                  (0, _util.warn)('getOperatorList - ignoring operator: ' + fn);
25312                  continue;
25313                }
25314              }
25315          }
25316          operatorList.addOp(fn, args);
25317        }
25318        if (stop) {
25319          next(deferred);
25320          return;
25321        }
25322        closePendingRestoreOPS();
25323        resolve();
25324      }).catch(function (reason) {
25325        if (_this8.options.ignoreErrors) {
25326          _this8.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.unknown });
25327          (0, _util.warn)('getOperatorList - ignoring errors during "' + task.name + '" ' + ('task: "' + reason + '".'));
25328          closePendingRestoreOPS();
25329          return;
25330        }
25331        throw reason;
25332      });
25333    },
25334    getTextContent: function getTextContent(_ref7) {
25335      var _this9 = this;
25336
25337      var stream = _ref7.stream,
25338          task = _ref7.task,
25339          resources = _ref7.resources,
25340          _ref7$stateManager = _ref7.stateManager,
25341          stateManager = _ref7$stateManager === undefined ? null : _ref7$stateManager,
25342          _ref7$normalizeWhites = _ref7.normalizeWhitespace,
25343          normalizeWhitespace = _ref7$normalizeWhites === undefined ? false : _ref7$normalizeWhites,
25344          _ref7$combineTextItem = _ref7.combineTextItems,
25345          combineTextItems = _ref7$combineTextItem === undefined ? false : _ref7$combineTextItem,
25346          sink = _ref7.sink,
25347          _ref7$seenStyles = _ref7.seenStyles,
25348          seenStyles = _ref7$seenStyles === undefined ? Object.create(null) : _ref7$seenStyles;
25349
25350      resources = resources || _primitives.Dict.empty;
25351      stateManager = stateManager || new StateManager(new TextState());
25352      var WhitespaceRegexp = /\s/g;
25353      var textContent = {
25354        items: [],
25355        styles: Object.create(null)
25356      };
25357      var textContentItem = {
25358        initialized: false,
25359        str: [],
25360        width: 0,
25361        height: 0,
25362        vertical: false,
25363        lastAdvanceWidth: 0,
25364        lastAdvanceHeight: 0,
25365        textAdvanceScale: 0,
25366        spaceWidth: 0,
25367        fakeSpaceMin: Infinity,
25368        fakeMultiSpaceMin: Infinity,
25369        fakeMultiSpaceMax: -0,
vendor: 1,726 bytes, lines 25370-25411
25370        textRunBreakAllowed: false,
25371        transform: null,
25372        fontName: null
25373      };
25374      var SPACE_FACTOR = 0.3;
25375      var MULTI_SPACE_FACTOR = 1.5;
25376      var MULTI_SPACE_FACTOR_MAX = 4;
25377      var self = this;
25378      var xref = this.xref;
25379      var xobjs = null;
25380      var skipEmptyXObjs = Object.create(null);
25381      var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
25382      var textState;
25383      function ensureTextContentItem() {
25384        if (textContentItem.initialized) {
25385          return textContentItem;
25386        }
25387        var font = textState.font;
25388        if (!(font.loadedName in seenStyles)) {
25389          seenStyles[font.loadedName] = true;
25390          textContent.styles[font.loadedName] = {
25391            fontFamily: font.fallbackName,
25392            ascent: font.ascent,
25393            descent: font.descent,
25394            vertical: font.vertical
25395          };
25396        }
25397        textContentItem.fontName = font.loadedName;
25398        var tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];
25399        if (font.isType3Font && textState.fontMatrix !== _util.FONT_IDENTITY_MATRIX && textState.fontSize === 1) {
25400          var glyphHeight = font.bbox[3] - font.bbox[1];
25401          if (glyphHeight > 0) {
25402            glyphHeight = glyphHeight * textState.fontMatrix[3];
25403            tsm[3] *= glyphHeight;
25404          }
25405        }
25406        var trm = _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm));
25407        textContentItem.transform = trm;
25408        if (!font.vertical) {
25409          textContentItem.width = 0;
25410          textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);
25411          textContentItem.vertical = false;
25412        } else {
25413          textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);
25414          textContentItem.height = 0;
25415          textContentItem.vertical = true;
25416        }
25417        var a = textState.textLineMatrix[0];
25418        var b = textState.textLineMatrix[1];
25419        var scaleLineX = Math.sqrt(a * a + b * b);
25420        a = textState.ctm[0];
25421        b = textState.ctm[1];
25422        var scaleCtmX = Math.sqrt(a * a + b * b);
25423        textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;
25424        textContentItem.lastAdvanceWidth = 0;
25425        textContentItem.lastAdvanceHeight = 0;
25426        var spaceWidth = font.spaceWidth / 1000 * textState.fontSize;
25427        if (spaceWidth) {
25428          textContentItem.spaceWidth = spaceWidth;
25429          textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR;
25430          textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR;
25431          textContentItem.fakeMultiSpaceMax = spaceWidth * MULTI_SPACE_FACTOR_MAX;
25432          textContentItem.textRunBreakAllowed = !font.isMonospace;
25433        } else {
25434          textContentItem.spaceWidth = 0;
25435          textContentItem.fakeSpaceMin = Infinity;
25436          textContentItem.fakeMultiSpaceMin = Infinity;
25437          textContentItem.fakeMultiSpaceMax = 0;
25438          textContentItem.textRunBreakAllowed = false;
25439        }
25440        textContentItem.initialized = true;
25441        return textContentItem;
25442      }
25443      function replaceWhitespace(str) {
25444        var i = 0,
25445            ii = str.length,
25446            code;
25447        while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7F) {
25448          i++;
25449        }
25450        return i < ii ? str.replace(WhitespaceRegexp, ' ') : str;
25451      }
25452      function runBidiTransform(textChunk) {
25453        var str = textChunk.str.join('');
25454        var bidiResult = (0, _bidi.bidi)(str, -1, textChunk.vertical);
25455        return {
25456          str: normalizeWhitespace ? replaceWhitespace(bidiResult.str) : bidiResult.str,
25457          dir: bidiResult.dir,
25458          width: textChunk.width,
25459          height: textChunk.height,
25460          transform: textChunk.transform,
25461          fontName: textChunk.fontName
25462        };
25463      }
25464      function handleSetFont(fontName, fontRef) {
25465        return self.loadFont(fontName, fontRef, resources).then(function (translated) {
25466          textState.font = translated.font;
25467          textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX;
25468        });
25469      }
25470      function buildTextContentItem(chars) {
25471        var font = textState.font;
25472        var textChunk = ensureTextContentItem();
25473        var width = 0;
25474        var height = 0;
25475        var glyphs = font.charsToGlyphs(chars);
25476        for (var i = 0; i < glyphs.length; i++) {
25477          var glyph = glyphs[i];
25478          var glyphWidth = null;
25479          if (font.vertical && glyph.vmetric) {
25480            glyphWidth = glyph.vmetric[0];
25481          } else {
25482            glyphWidth = glyph.width;
25483          }
25484          var glyphUnicode = glyph.unicode;
25485          var NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();
25486          if (NormalizedUnicodes[glyphUnicode] !== undefined) {
25487            glyphUnicode = NormalizedUnicodes[glyphUnicode];
25488          }
25489          glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);
25490          var charSpacing = textState.charSpacing;
25491          if (glyph.isSpace) {
25492            var wordSpacing = textState.wordSpacing;
25493            charSpacing += wordSpacing;
25494            if (wordSpacing > 0) {
25495              addFakeSpaces(wordSpacing, textChunk.str);
25496            }
25497          }
25498          var tx = 0;
25499          var ty = 0;
25500          if (!font.vertical) {
25501            var w0 = glyphWidth * textState.fontMatrix[0];
25502            tx = (w0 * textState.fontSize + charSpacing) * textState.textHScale;
25503            width += tx;
25504          } else {
25505            var w1 = glyphWidth * textState.fontMatrix[0];
25506            ty = w1 * textState.fontSize + charSpacing;
25507            height += ty;
25508          }
25509          textState.translateTextMatrix(tx, ty);
25510          textChunk.str.push(glyphUnicode);
25511        }
25512        if (!font.vertical) {
25513          textChunk.lastAdvanceWidth = width;
25514          textChunk.width += width;
25515        } else {
25516          textChunk.lastAdvanceHeight = height;
25517          textChunk.height += Math.abs(height);
25518        }
25519        return textChunk;
25520      }
25521      function addFakeSpaces(width, strBuf) {
25522        if (width < textContentItem.fakeSpaceMin) {
25523          return;
25524        }
25525        if (width < textContentItem.fakeMultiSpaceMin) {
25526          strBuf.push(' ');
25527          return;
25528        }
25529        var fakeSpaces = Math.round(width / textContentItem.spaceWi
25529dth);
25530        while (fakeSpaces-- > 0) {
25531          strBuf.push(' ');
25532        }
25533      }
25534      function flushTextContentItem() {
25535        if (!textContentItem.initialized) {
25536          return;
25537        }
25538        textContentItem.width *= textContentItem.textAdvanceScale;
25539        textContentItem.height *= textContentItem.textAdvanceScale;
25540        textContent.items.push(runBidiTransform(textContentItem));
25541        textContentItem.initialized = false;
25542        textContentItem.str.length = 0;
25543      }
25544      function enqueueChunk() {
25545        var length = textContent.items.length;
25546        if (length > 0) {
25547          sink.enqueue(textContent, length);
25548          textContent.items = [];
25549          textContent.styles = Object.create(null);
25550        }
25551      }
25552      var timeSlotManager = new TimeSlotManager();
25553      return new Promise(function promiseBody(resolve, reject) {
25554        var next = function next(promise) {
25555          enqueueChunk();
25556          Promise.all([promise, sink.ready]).then(function () {
25557            try {
25558              promiseBody(resolve, reject);
25559            } catch (ex) {
25560              reject(ex);
25561            }
25562          }, reject);
25563        };
25564        task.ensureNotTerminated();
25565        timeSlotManager.reset();
25566        var stop,
25567            operation = {},
25568            args = [];
25569        while (!(stop = timeSlotManager.check())) {
25570          args.length = 0;
25571          operation.args = args;
25572          if (!preprocessor.read(operation)) {
25573            break;
25574          }
25575          textState = stateManager.state;
25576          var fn = operation.fn;
25577          args = operation.args;
25578          var advance, diff;
25579          switch (fn | 0) {
25580            case _util.OPS.setFont:
25581              var fontNameArg = args[0].name,
25582                  fontSizeArg = args[1];
25583              if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {
25584                break;
25585              }
25586              flushTextContentItem();
25587              textState.fontName = fontNameArg;
25588              textState.fontSize = fontSizeArg;
25589              next(handleSetFont(fontNameArg, null));
25590              return;
25591            case _util.OPS.setTextRise:
25592              flushTextContentItem();
25593              textState.textRise = args[0];
25594              break;
25595            case _util.OPS.setHScale:
25596              flushTextContentItem();
25597              textState.textHScale = args[0] / 100;
25598              break;
25599            case _util.OPS.setLeading:
25600              flushTextContentItem();
25601              textState.leading = args[0];
25602              break;
25603            case _util.OPS.moveText:
25604              var isSameTextLine = !textState.font ? false : (textState.font.vertical ? args[0] : args[1]) === 0;
25605              advance = args[0] - args[1];
25606              if (combineTextItems && isSameTextLine && textContentItem.initialized && advance > 0 && advance <= textContentItem.fakeMultiSpaceMax) {
25607                textState.translateTextLineMatrix(args[0], args[1]);
25608                textContentItem.width += args[0] - textContentItem.lastAdvanceWidth;
25609                textContentItem.height += args[1] - textContentItem.lastAdvanceHeight;
25610                diff = args[0] - textContentItem.lastAdvanceWidth - (args[1] - textContentItem.lastAdvanceHeight);
25611                addFakeSpaces(diff, textContentItem.str);
25612                break;
25613              }
25614              flushTextContentItem();
25615              textState.translateTextLineMatrix(args[0], args[1]);
vendor: 1,946 bytes, lines 25616-25650
25616              textState.textMatrix = textState.textLineMatrix.slice();
25617              break;
25618            case _util.OPS.setLeadingMoveText:
25619              flushTextContentItem();
25620              textState.leading = -args[1];
25621              textState.translateTextLineMatrix(args[0], args[1]);
25622              textState.textMatrix = textState.textLineMatrix.slice();
25623              break;
25624            case _util.OPS.nextLine:
25625              flushTextContentItem();
25626              textState.carriageReturn();
25627              break;
25628            case _util.OPS.setTextMatrix:
25629              advance = textState.calcTextLineMatrixAdvance(args[0], args[1], args[2], args[3], args[4], args[5]);
25630              if (combineTextItems && advance !== null && textContentItem.initialized && advance.value > 0 && advance.value <= textContentItem.fakeMultiSpaceMax) {
25631                textState.translateTextLineMatrix(advance.width, advance.height);
25632                textContentItem.width += advance.width - textContentItem.lastAdvanceWidth;
25633                textContentItem.height += advance.height - textContentItem.lastAdvanceHeight;
25634                diff = advance.width - textContentItem.lastAdvanceWidth - (advance.height - textContentItem.lastAdvanceHeight);
25635                addFakeSpaces(diff, textContentItem.str);
25636                break;
25637              }
25638              flushTextContentItem();
25639              textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
25640              textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
25641              break;
25642            case _util.OPS.setCharSpacing:
25643              textState.charSpacing = args[0];
25644              break;
25645            case _util.OPS.setWordSpacing:
25646              textState.wordSpacing = args[0];
25647              break;
25648            case _util.OPS.beginText:
25649              flushTextContentItem();
25650              textState.textMatrix = _util.IDENTITY_MATRIX.slice();
25651              textState.textLineMatrix = _util.IDENTITY_MATRIX.slice();
25652              break;
25653            case _util.OPS.showSpacedText:
25654              var items = args[0];
25655              var offset;
25656              for (var j = 0, jj = items.length; j < jj; j++) {
25657                if (typeof items[j] === 'string') {
25658                  buildTextContentItem(items[j]);
25659                } else if ((0, _util.isNum)(items[j])) {
25660                  ensureTextContentItem();
25661                  advance = items[j] * textState.fontSize / 1000;
25662                  var breakTextRun = false;
25663                  if (textState.font.vertical) {
25664                    offset = advance;
25665                    textState.translateTextMatrix(0, offset);
25666                    breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax;
25667                    if (!breakTextRun) {
25668                      textContentItem.height += offset;
25669                    }
25670                  } else {
25671                    advance = -advance;
25672                    offset = advance * textState.textHScale;
25673                    textState.translateTextMatrix(offset, 0);
25674                    breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax;
25675                    if (!breakTextRun) {
25676                      textContentItem.width += offset;
25677                    }
25678                  }
25679                  if (breakTextRun) {
25680                    flushTextContentItem();
25681                  } else if (advance > 0) {
25682                    addFakeSpaces(advance, textContentItem.str);
25683                  }
25684                }
25685              }
25686              break;
25687            case _util.OPS.showText:
25688              buildTextContentItem(args[0]);
25689              break;
25690            case _util.OPS.nextLineShowText:
25691              flushTextContentItem();
25692              textState.carriageReturn();
25693              buildTextContentItem(args[0]);
25694              break;
25695            case _util.OPS.nextLineSetSpacingShowText:
25696              flushTextContentItem();
25697              textState.wordSpacing = args[0];
25698              textState.charSpacing = args[1];
25699              textState.carriageReturn();
25700              buildTextContentItem(args[2]);
25701              break;
25702            case _util.OPS.paintXObject:
25703              flushTextContentItem();
25704              if (!xobjs) {
25705                xobjs = resources.get('XObject') || _primitives.Dict.empty;
25706              }
25707              var name = args[0].name;
25708              if (name && skipEmptyXObjs[name] !== undefined) {
25709                break;
25710              }
25711              next(new Promise(function (resolveXObject, rejectXObject) {
25712                if (!name) {
25713                  throw new _util.FormatError('XObject must be referred to by name.');
25714                }
25715                var xobj = xobjs.get(name);
25716                if (!xobj) {
25717                  resolveXObject();
25718                  return;
25719                }
25720                if (!(0, _primitives.isStream)(xobj)) {
25721                  throw new _util.FormatError('XObject should be a stream');
25722                }
25723                var type = xobj.dict.get('Subtype');
25724                if (!(0, _primitives.isName)(type)) {
25725                  throw new _util.FormatError('XObject should have a Name subtype');
25726                }
25727                if (type.name !== 'Form') {
25728                  skipEmptyXObjs[name] = true;
25729                  resolveXObject();
25730                  return;
25731                }
25732                var currentState = stateManager.state.clone();
25733                var xObjStateManager = new StateManager(currentState);
25734                var matrix = xobj.dict.getArray('Matrix');
25735                if (Array.isArray(matrix) && matrix.length === 6) {
25736                  xObjStateManager.transform(matrix);
25737                }
25738                enqueueChunk();
25739                var sinkWrapper = {
25740                  enqueueInvoked: false,
25741                  enqueue: function enqueue(chunk, size) {
25742                    this.enqueueInvoked = true;
25743                    sink.enqueue(chunk, size);
25744                  },
25745
25746                  get desiredSize() {
25747                    return sink.desiredSize;
25748                  },
25749                  get ready() {
25750                    return sink.ready;
25751                  }
25752                };
25753                self.getTextContent({
25754                  stream: xobj,
25755                  task: task,
25756                  resources: xobj.dict.get('Resources') || resources,
25757                  stateManager: xObjStateManager,
25758                  normalizeWhitespace: normalizeWhitespace,
25759                  combineTextItems: combineTextItems,
25760                  sink: sinkWrapper,
25761                  seenStyles: seenStyles
25762                }).then(function () {
25763                  if (!sinkWrapper.enqueueInvoked) {
25764                    skipEmptyXObjs[name] = true;
25765                  }
25766                  resolveXObject();
25767                }, rejectXObject);
25768              }).catch(function (reason) {
25769                if (reason instanceof _util.AbortException) {
25770                  return;
25771                }
25772                if (self.options.ignoreErrors) {
25773                  (0, _util.warn)('getTextContent - ignoring XObject: "' + reason + '".');
25774                  return;
25775                }
25776                throw reason;
25777              }));
25778              return;
25779            case _util.OPS.setGState:
25780              flushTextContentItem();
25781              var dictName = args[0];
25782              var extGState = resources.get('ExtGState');
25783              if (!(0, _primitives.isDict)(extGState) || !(0, _primitives.isName)(dictName)) {
25784                break;
25785              }
25786              var gState = extGState.get(dictName.name);
25787              if (!(0, _primitives.isDict)(gState)) {
25788                break;
25789              }
25790              var gStateFont = gState.get('Font');
25791              if (gStateFont) {
25792                textState.fontName = null;
25793                textState.fontSize = gStateFont[1];
25794                next(handleSetFont(null, gStateFont[0]));
25795                return;
25796              }
25797              break;
25798          }
25799          if (textContent.items.length >= sink.desiredSize) {
25800            stop = true;
25801            break;
25802          }
25803        }
25804        if (stop) {
25805          next(deferred);
25806          return;
25807        }
25808        flushTextContentItem();
25809        enqueueChunk();
25810        resolve();
25811      }).catch(function (reason) {
25812        if (reason instanceof _util.AbortException) {
25813          return;
25814        }
25815        if (_this9.options.ignoreErrors) {
25816          (0, _util.warn)('getTextContent - ignoring errors during "' + task.name + '" ' + ('task: "' + reason + '".'));
25817          flushTextContentItem();
25818          enqueueChunk();
25819          return;
25820        }
25821        throw reason;
25822      });
25823    },
25824
25825    extractDataStructures: function PartialEvaluator_extractDataStructures(dict, baseDict, properties) {
25826      var _this10 = this;
25827
25828      var xref = this.xref;
25829      var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode');
25830      var toUnicodePromise = toUnicode ? this.readToUnicode(toUnicode) : Promise.resolve(undefined);
25831      if (properties.composite) {
25832        var cidSystemInfo = dict.get('CIDSystemInfo');
25833        if ((0, _primitives.isDict)(cidSystemInfo)) {
25834          properties.cidSystemInfo = {
25835            registry: (0, _util.stringToPDFString)(cidSystemInfo.get('Registry')),
25836            ordering: (0, _util.stringToPDFString)(cidSystemInfo.get('Ordering')),
25837            supplement: cidSystemInfo.get('Supplement')
25838          };
25839        }
25840        var cidToGidMap = dict.get('CIDToGIDMap');
25841        if ((0, _primitives.isStream)(cidToGidMap)) {
25842          properties.cidToGidMap = this.readCidToGidMap(cidToGidMap);
25843        }
25844      }
25845      var differences = [];
25846      var baseEncodingName = null;
25847      var encoding;
25848      if (dict.has('Encoding')) {
25849        encoding = dict.get('Encoding');
25850        if ((0, _primitives.isDict)(encoding)) {
25851          baseEncodingName = encoding.get('BaseEncoding');
25852          baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null;
25853          if (encoding.has('Differences')) {
25854            var diffEncoding = encoding.get('Differences');
25855            var index = 0;
25856            for (var j = 0, jj = diffEncoding.length; j < jj; j++) {
25857              var data = xref.fetchIfRef(diffEncoding[j]);
25858              if ((0, _util.isNum)(data)) {
25859                index = data;
25860              } else if ((0, _primitives.isName)(data)) {
25861                differences[index++] = data.name;
25862              } else {
25863                throw new _util.FormatError('Invalid entry in \'Differences\' array: ' + data);
25864              }
25865            }
25866          }
25867        } else if ((0, _primitives.isName)(encoding)) {
25868          baseEncodingName = encoding.name;
25869        } else {
25870          throw new _util.FormatError('Encoding is not a Name nor a Dict');
25871        }
25872        if (baseEncodingName !== 'MacRomanEncoding' && baseEncodingName !== 'MacExpertEncoding' && baseEncodingName !== 'WinAnsiEncoding') {
25873          baseEncodingName = null;
25874        }
25875      }
25876      if (baseEncodingName) {
25877        properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName).slice();
25878      } else {
25879        var isSymbolicFont = !!(properties.flags & _fonts.FontFlags.Symbolic);
25880        var isNonsymbolicFont = !!(properties.flags & _fonts.FontFlags.Nonsymbolic);
25881        encoding = _encodings.StandardEncoding;
25882        if (properties.type === 'TrueType' && !isNonsymbolicFont) {
25883          encoding = _encodings.WinAnsiEncoding;
25884        }
25885        if (isSymbolicFont) {
25886          encoding = _encodings.MacRomanEncoding;
25887          if (!properties.file) {
25888            if (/Symbol/i.test(properties.name)) {
25889              encoding = _encodings.SymbolSetEncoding;
25890            } else if (/Dingbats/i.test(properties.name)) {
25891              encoding = _encodings.ZapfDingbatsEncoding;
25892            }
25893          }
25894        }
25895        properties.defaultEncoding = encoding;
25896      }
25897      properties.differences = differences;
25898      properties.baseEncodingName = baseEncodingName;
25899      properties.hasEncoding = !!baseEncodingName || differences.length > 0;
25900      properties.dict = dict;
25901      return toUnicodePromise.then(function (toUnicode) {
25902        properties.toUnicode = toUnicode;
25903        return _this10.buildToUnicode(properties);
25904      }).then(function (toUnicode) {
25905        properties.toUnicode = toUnicode;
25906        return properties;
25907      });
25908    },
25909    _buildSimpleFontToUnicode: function _buildSimpleFontToUnicode(properties) {
25910      (0, _util.assert)(!properties.composite, 'Must be a simple font.');
25911      var toUnicode = [],
25912          charcode = void 0,
25913          glyphName = void 0;
25914      var encoding = properties.defaultEncoding.slice();
25915      var baseEncodingName = properties.baseEncodingName;
25916      var differences = properties.differences;
25917      for (charcode in differences) {
25918        glyphName = differences[charcode];
25919        if (glyphName === '.notdef') {
25920          continue;
25921        }
25922        encoding[charcode] = glyphName;
25923      }
25924      var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
25925      for (charcode in encoding) {
25926        glyphName = encoding[charcode];
25927        if (glyphName === '') {
25928          continue;
25929        } else if (glyphsUnicodeMap[glyphName] === undefined) {
25930          var code = 0;
25931          switch (glyphName[0]) {
25932            case 'G':
25933              if (glyphName.length === 3) {
25934                code = parseInt(glyphName.substring(1), 16);
25935              }
25936              break;
25937            case 'g':
25938              if (glyphName.length === 5) {
25939                code = parseInt(glyphName.substring(1), 16);
25940              }
25941              break;
25942            case 'C':
25943            case 'c':
25944              if (glyphName.length >= 3) {
25945                code = +glyphName.substring(1);
25946              }
25947              break;
25948            default:
25949              var unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
25950              if (unicode !== -1) {
25951                code = unicode;
25952              }
25953          }
25954          if (code) {
25955            if (baseEncodingName && code === +charcode) {
25956              var baseEncoding = (0, _encodings.getEncoding)(baseEncodingName);
25957              if (baseEncoding && (glyphName = baseEncoding[charcode])) {
25958                toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
25959                continue;
25960              }
25961            }
25962            toUnicode[charcode] = String.fromCharCode(code);
25963          }
25964          continue;
25965        }
25966        toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
25967      }
25968      return new _fonts.ToUnicodeMap(toUnicode);
25969    },
25970    buildToUnicode: function buildToUnicode(properties) {
25971      properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0;
25972      if (properties.hasIncludedToUnicodeMap) {
25973        if (!properties.composite && properties.hasEncoding) {
25974          properties.fallbackToUnicode = this._buildSimpleFontToUnicode(properties);
25975        }
25976        return Promise.resolve(properties.toUnicode);
25977      }
25978      if (!properties.composite) {
25979        return Promise.resolve(this._buildSimpleFontToUnicode(properties));
25980      }
25981      if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof _cmap.IdentityCMap) || properties.cidSystemInfo.registry === 'Adobe' && (properties.cidSystemInfo.ordering === 'GB1' || properties.cidSystemInfo.ordering === 'CNS1' || properties.cidSystemInfo.ordering === 'Japan1' || properties.cidSystemInfo.ordering === 'Korea1'))) {
25982        var registry = properties.cidSystemInfo.registry;
25983        var ordering = properties.cidSystemInfo.ordering;
25984        var ucs2CMapName = _primitives.Name.get(registry + '-' + ordering + '-UCS2');
25985        return _cmap.CMapFactory.create({
25986          encoding: ucs2CMapName,
25987          fetchBuiltInCMap: this.fetchBuiltInCMap,
25988          useCMap: null
25989        }).then(function (ucs2CMap) {
25990          var cMap = properties.cMap;
25991          var toUnicode = [];
25992          cMap.forEach(function (charcode, cid) {
25993            if (cid > 0xffff) {
25994              throw new _util.FormatError('Max size of CID is 65,535');
25995            }
25996            var ucs2 = ucs2CMap.lookup(cid);
25997            if (ucs2) {
25998              toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1));
25999            }
26000          });
26001          return new _fonts.ToUnicodeMap(toUnicode);
26002        });
26003      }
26004      return Promise.resolve(new _fonts.IdentityToUnicodeMap(properties.firstChar, properties.lastChar));
26005    },
26006
26007    readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) {
26008      var cmapObj = toUnicode;
26009      if ((0, _primitives.isName)(cmapObj)) {
26010        return _cmap.CMapFactory.create({
26011          encoding: cmapObj,
26012          fetchBuiltInCMap: this.fetchBuiltInCMap,
26013          useCMap: null
26014        }).then(function (cmap) {
26015          if (cmap instanceof _cmap.IdentityCMap) {
26016            return new _fonts.IdentityToUnicodeMap(0, 0xFFFF);
26017          }
26018          return new _fonts.ToUnicodeMap(cmap.getMap());
26019        });
26020      } else if ((0, _primitives.isStream)(cmapObj)) {
26021        return _cmap.CMapFactory.create({
26022          encoding: cmapObj,
26023          fetchBuiltInCMap: this.fetchBuiltInCMap,
26024          useCMap: null
26025        }).then(function (cmap) {
26026          if (cmap instanceof _cmap.IdentityCMap) {
26027            return new _fonts.IdentityToUnicodeMap(0, 0xFFFF);
26028          }
26029          var map = new Array(cmap.length);
26030          cmap.forEach(function (charCode, token) {
26031            var str = [];
26032            for (var k = 0; k < token.length; k += 2) {
26033              var w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
26034              if ((w1 & 0xF800) !== 0xD800) {
26035                str.push(w1);
26036                continue;
26037              }
26038              k += 2;
26039              var w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
26040              str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);
26041            }
26042            map[charCode] = String.fromCharCode.apply(String, str);
26043          });
26044          return new _fonts.ToUnicodeMap(map);
26045        });
26046      }
26047      return Promise.resolve(null);
26048    },
26049    readCidToGidMap: function PartialEvaluator_readCidToGidMap(cidToGidStream) {
26050      var glyphsData = cidToGidStream.getBytes();
26051      var result = [];
26052      for (var j = 0, jj = glyphsData.length; j < jj; j++) {
26053        var glyphID = glyphsData[j++] << 8 | glyphsData[j];
26054        if (glyphID === 0) {
26055          continue;
26056        }
26057        var code = j >> 1;
26058        result[code] = glyphID;
26059      }
26060      return result;
26061    },
26062    extractWidths: function PartialEvaluator_extractWidths(dict, descriptor, properties) {
26063      var xref = this.xref;
26064      var glyphsWidths = [];
26065      var defaultWidth = 0;
26066      var glyphsVMetrics = [];
26067      var defaultVMetrics;
26068      var i, ii, j, jj, start, code, widths;
26069      if (properties.composite) {
26070        defaultWidth = dict.has('DW') ? dict.get('DW') : 1000;
26071        widths = dict.get('W');
26072        if (widths) {
26073          for (i = 0, ii = widths.length; i < ii; i++) {
26074            start = xref.fetchIfRef(widths[i++]);
26075            code = xref.fetchIfRef(widths[i]);
26076            if (Array.isArray(code)) {
26077              for (j = 0, jj = code.length; j < jj; j++) {
26078                glyphsWidths[start++] = xref.fetchIfRef(code[j]);
26079              }
26080            } else {
26081              var width = xref.fetchIfRef(widths[++i]);
26082              for (j = start; j <= code; j++) {
26083                glyphsWidths[j] = width;
26084              }
26085            }
26086          }
26087        }
26088        if (properties.vertical) {
26089          var vmetrics = dict.getArray('DW2') || [880, -1000];
26090          defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];
26091          vmetrics = dict.get('W2');
26092          if (vmetrics) {
26093            for (i = 0, ii = vmetrics.length; i < ii; i++) {
26094              start = xref.fetchIfRef(vmetrics[i++]);
26095              code = xref.fetchIfRef(vmetrics[i]);
26096              if (Array.isArray(code)) {
26097                for (j = 0, jj = code.length; j < jj; j++) {
26098                  glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])];
26099                }
26100              } else {
26101                var vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])];
26102                for (j = start; j <= code; j++) {
26103                  glyphsVMetrics[j] = vmetric;
26104                }
26105              }
26106            }
26107          }
26108        }
26109      } else {
26110        var firstChar = properties.firstChar;
26111        widths = dict.get('Widths');
26112        if (widths) {
26113          j = firstChar;
26114          for (i = 0, ii = widths.length; i < ii; i++) {
26115            glyphsWidths[j++] = xref.fetchIfRef(widths[i]);
26116          }
26117          defaultWidth = parseFloat(descriptor.get('MissingWidth')) || 0;
26118        } else {
26119          var baseFontName = dict.get('BaseFont');
26120          if ((0, _primitives.isName)(baseFontName)) {
26121            var metrics = this.getBaseFontMetrics(baseFontName.name);
26122            glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);
26123            defaultWidth = metrics.defaultWidth;
26124          }
26125        }
26126      }
26127      var isMonospace = true;
26128      var firstWidth = defaultWidth;
26129      for (var glyph in glyphsWidths) {
26130        var glyphWidth = glyphsWidths[glyph];
26131        if (!glyphWidth) {
26132          continue;
26133        }
26134        if (!firstWidth) {
26135          firstWidth = glyphWidth;
26136          continue;
26137        }
26138        if (firstWidth !== glyphWidth) {
26139          isMonospace = false;
26140          break;
26141        }
26142      }
26143      if (isMonospace) {
26144        properties.flags |= _fonts.FontFlags.FixedPitch;
26145      }
26146      properties.defaultWidth = defaultWidth;
26147      properties.widths = glyphsWidths;
26148      properties.defaultVMetrics = defaultVMetrics;
26149      properties.vmetrics = glyphsVMetrics;
26150    },
26151    isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) {
26152      var fontNameWoStyle = baseFontName.split('-')[0];
26153      return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== -1;
26154    },
26155    getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) {
26156      var defaultWidth = 0;
26157      var widths = [];
26158      var monospace = false;
26159      var stdFontMap = (0, _standard_fonts.getStdFontMap)();
26160      var lookupName = stdFontMap[name] || name;
26161      var Metrics = (0, _metrics.getMetrics)();
26162      if (!(lookupName in Metrics)) {
26163        if (this.isSerifFont(name)) {
26164          lookupName = 'Times-Roman';
26165        } else {
26166          lookupName = 'Helvetica';
26167        }
26168      }
26169      var glyphWidths = Metrics[lookupName];
26170      if ((0, _util.isNum)(glyphWidths)) {
26171        defaultWidth = glyphWidths;
26172        monospace = true;
26173      } else {
26174        widths = glyphWidths();
26175      }
26176      return {
26177        defaultWidth: defaultWidth,
26178        monospace: monospace,
26179        widths: widths
26180      };
26181    },
26182    buildCharCodeToWidth: function PartialEvaluator_bulildCharCodeToWidth(widthsByGlyphName, properties) {
26183      var widths = Object.create(null);
26184      var differences = properties.differences;
26185      var encoding = properties.defaultEncoding;
26186      for (var charCode = 0; charCode < 256; charCode++) {
26187        if (charCode in differences && widthsByGlyphName[differences[charCode]]) {
26188          widths[charCode] = widthsByGlyphName[differences[charCode]];
26189          continue;
26190        }
26191        if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {
26192          widths[charCode] = widthsByGlyphName[encoding[charCode]];
26193          continue;
26194        }
26195      }
26196      return widths;
26197    },
26198    preEvaluateFont: function PartialEvaluator_preEvaluateFont(dict) {
26199      var baseDict = dict;
26200      var type = dict.get('Subtype');
26201      if (!(0, _primitives.isName)(type)) {
26202        throw new _util.FormatError('invalid font Subtype');
26203      }
26204      var composite = false;
26205      var uint8array;
26206      if (type.name === 'Type0') {
26207        var df = dict.get('DescendantFonts');
26208        if (!df) {
26209          throw new _util.FormatError('Descendant fonts are not specified');
26210        }
26211        dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;
26212        type = dict.get('Subtype');
26213        if (!(0, _primitives.isName)(type)) {
26214          throw new _util.FormatError('invalid font Subtype');
26215        }
26216        composite = true;
26217      }
26218      var descriptor = dict.get('FontDescriptor');
26219      if (descriptor) {
26220        var hash = new _murmurhash.MurmurHash3_64();
26221        var encoding = baseDict.getRaw('Encoding');
26222        if ((0, _primitives.isName)(encoding)) {
26223          hash.update(encoding.name);
26224        } else if ((0, _primitives.isRef)(encoding)) {
26225          hash.update(encoding.toString());
26226        } else if ((0, _primitives.isDict)(encoding)) {
26227          var keys = encoding.getKeys();
26228          for (var i = 0, ii = keys.length; i < ii; i++) {
26229            var entry = encoding.getRaw(keys[i]);
26230            if ((0, _primitives.isName)(entry)) {
26231              hash.update(entry.name);
26232            } else if ((0, _primitives.isRef)(entry)) {
26233              hash.update(entry.toString());
26234            } else if (Array.isArray(entry)) {
26235              var diffLength = entry.length,
26236                  diffBuf = new Array(diffLength);
26237              for (var j = 0; j < diffLength; j++) {
26238                var diffEntry = entry[j];
26239                if ((0, _primitives.isName)(diffEntry)) {
26240                  diffBuf[j] = diffEntry.name;
26241                } else if ((0, _util.isNum)(diffEntry) || (0, _primitives.isRef)(diffEntry)) {
26242                  diffBuf[j] = diffEntry.toString();
26243                }
26244              }
26245              hash.update(diffBuf.join());
26246            }
26247          }
26248        }
26249        var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode');
26250        if ((0, _primitives.isStream)(toUnicode)) {
26251          var stream = toUnicode.str || toUnicode;
26252          uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);
26253          hash.update(uint8array);
26254        } else if ((0, _primitives.isName)(toUnicode)) {
26255          hash.update(toUnicode.name);
26256        }
26257        var widths = dict.get('Widths') || baseDict.get('Widths');
26258        if (widths) {
26259          uint8array = new Uint8Array(new Uint32Array(widths).buffer);
26260          hash.update(uint8array);
26261        }
26262      }
26263      return {
26264        descriptor: descriptor,
26265        dict: dict,
26266        baseDict: baseDict,
26267        composite: composite,
26268        type: type.name,
26269        hash: hash ? hash.hexdigest() : ''
26270      };
26271    },
26272    translateFont: function PartialEvaluator_translateFont(preEvaluatedFont) {
26273      var _this11 = this;
26274
26275      var baseDict = preEvaluatedFont.baseDict;
26276      var dict = preEvaluatedFont.dict;
26277      var composite = preEvaluatedFont.composite;
26278      var descriptor = preEvaluatedFont.descriptor;
26279      var type = preEvaluatedFont.type;
26280      var maxCharIndex = composite ? 0xFFFF : 0xFF;
26281      var properties;
26282      if (!descriptor) {
26283        if (type === 'Type3') {
26284          descriptor = new _primitives.Dict(null);
26285          descriptor.set('FontName', _primitives.Name.get(type));
26286          descriptor.set('FontBBox', dict.getArray('FontBBox'));
26287        } else {
26288          var baseFontName = dict.get('BaseFont');
26289          if (!(0, _primitives.isName)(baseFontName)) {
26290            throw new _util.FormatError('Base font is not specified');
26291          }
26292          baseFontName = baseFontName.name.replace(/[,_]/g, '-');
26293          var metrics = this.getBaseFontMetrics(baseFontName);
26294          var fontNameWoStyle = baseFontName.split('-')[0];
26295          var flags = (this.isSerifFont(fontNameWoStyle) ? _fonts.FontFlags.Serif : 0) | (metrics.monospace ? _fonts.FontFlags.FixedPitch : 0) | ((0, _standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? _fonts.FontFlags.Symbolic : _fonts.FontFlags.Nonsymbolic);
26296          properties = {
26297            type: type,
26298            name: baseFontName,
26299            widths: metrics.widths,
26300            defaultWidth: metrics.defaultWidth,
26301            flags: flags,
26302            firstChar: 0,
26303            lastChar: maxCharIndex
26304          };
26305          return this.extractDataStructures(dict, dict, properties).then(function (properties) {
26306            properties.widths = _this11.buildCharCodeToWidth(metrics.widths, properties);
26307            return new _fonts.Font(baseFontName, null, properties);
26308          });
26309        }
26310      }
26311      var firstChar = dict.get('FirstChar') || 0;
26312      var lastChar = dict.get('LastChar') || maxCharIndex;
26313      var fontName = descriptor.get('FontName');
26314      var baseFont = dict.get('BaseFont');
26315      if ((0, _util.isString)(fontName)) {
26316        fontName = _primitives.Name.get(fontName);
26317      }
26318      if ((0, _util.isString)(baseFont)) {
26319        baseFont = _primitives.Name.get(baseFont);
26320      }
26321      if (type !== 'Type3') {
26322        var fontNameStr = fontName && fontName.name;
26323        var baseFontStr = baseFont && baseFont.name;
26324        if (fontNameStr !== baseFontStr) {
26325          (0, _util.info)('The FontDescriptor\'s FontName is "' + fontNameStr + '" but should be the same as the Font\'s BaseFont "' + baseFontStr + '"');
26326          if (fontNameStr && baseFontStr && baseFontStr.indexOf(fontNameStr) === 0) {
26327            fontName = baseFont;
26328          }
26329        }
26330      }
26331      fontName = fontName || baseFont;
26332      if (!(0, _primitives.isName)(fontName)) {
26333        throw new _util.FormatError('invalid font name');
26334      }
26335      var fontFile = descriptor.get('FontFile', 'FontFile2', 'FontFile3');
26336      if (fontFile) {
26337        if (fontFile.dict) {
26338          var subtype = fontFile.dict.get('Subtype');
26339          if (subtype) {
26340            subtype = subtype.name;
26341          }
26342          var length1 = fontFile.dict.get('Length1');
26343          var length2 = fontFile.dict.get('Length2');
26344          var length3 = fontFile.dict.get('Length3');
26345        }
26346      }
26347      properties = {
26348        type: type,
26349        name: fontName.name,
26350        subtype: subtype,
26351        file: fontFile,
26352        length1: length1,
26353        length2: length2,
26354        length3: length3,
26355        loadedName: baseDict.loadedName,
26356        composite: composite,
26357        wideChars: composite,
26358        fixedPitch: false,
26359        fontMatrix: dict.getArray('FontMatrix') || _util.FONT_IDENTITY_MATRIX,
26360        firstChar: firstChar || 0,
26361        lastChar: lastChar || maxCharIndex,
26362        bbox: descriptor.getArray('FontBBox'),
26363        ascent: descriptor.get('Ascent'),
26364        descent: descriptor.get('Descent'),
26365        xHeight: descriptor.get('XHeight'),
26366        capHeight: descriptor.get('CapHeight'),
26367        flags: descriptor.get('Flags'),
26368        italicAngle: descriptor.get('ItalicAngle'),
26369        isType3Font: false
26370      };
26371      var cMapPromise;
26372      if (composite) {
26373        var cidEncoding = baseDict.get('Encoding');
26374        if ((0, _primitives.isName)(cidEncoding)) {
26375          properties.cidEncoding = cidEncoding.name;
26376        }
26377        cMapPromise = _cmap.CMapFactory.create({
26378          encoding: cidEncoding,
26379          fetchBuiltInCMap: this.fetchBuiltInCMap,
26380          useCMap: null
26381        }).then(function (cMap) {
26382          properties.cMap = cMap;
26383          properties.vertical = properties.cMap.vertical;
26384        });
26385      } else {
26386        cMapPromise = Promise.resolve(undefined);
26387      }
26388      return cMapPromise.then(function () {
26389        return _this11.extractDataStructures(dict, baseDict, properties);
26390      }).then(function (properties) {
26391        _this11.extractWidths(dict, descriptor, properties);
26392        if (type === 'Type3') {
26393          properties.isType3Font = true;
26394        }
26395        return new _fonts.Font(fontName.name, fontFile, properties);
26396      });
26397    }
26398  };
26399  return PartialEvaluator;
26400}();
26401var TranslatedFont = function TranslatedFontClosure() {
26402  function TranslatedFont(loadedName, font, dict) {
26403    this.loadedName = loadedName;
26404    this.font = font;
26405    this.dict = dict;
26406    this.type3Loaded = null;
26407    this.sent = false;
26408  }
26409  TranslatedFont.prototype = {
26410    send: function send(handler) {
26411      if (this.sent) {
26412        return;
26413      }
26414      var fontData = this.font.exportData();
26415      handler.send('commonobj', [this.loadedName, 'Font', fontData]);
26416      this.sent = true;
26417    },
26418    loadType3Data: function loadType3Data(evaluator, resources, parentOperatorList, task) {
26419      if (!this.font.isType3Font) {
26420        throw new Error('Must be a Type3 font.');
26421      }
26422      if (this.type3Loaded) {
26423        return this.type3Loaded;
26424      }
26425      var type3Options = Object.create(evaluator.options);
26426      type3Options.ignoreErrors = false;
26427      var type3Evaluator = evaluator.clone(type3Options);
26428      var translatedFont = this.font;
26429      var loadCharProcsPromise = Promise.resolve();
26430      var charProcs = this.dict.get('CharProcs');
26431      var fontResources = this.dict.get('Resources') || resources;
26432      var charProcKeys = charProcs.getKeys();
26433      var charProcOperatorList = Object.create(null);
26434
26435      var _loop2 = function _loop2() {
26436        var key = charProcKeys[i];
26437        loadCharProcsPromise = loadCharProcsPromise.then(function () {
26438          var glyphStream = charProcs.get(key);
26439          var operatorList = new _operator_list.OperatorList();
26440          return type3Evaluator.getOperatorList({
26441            stream: glyphStream,
26442            task: task,
26443            resources: fontResources,
26444            operatorList: operatorList
26445          }).then(function () {
26446            charProcOperatorList[key] = operatorList.getIR();
26447            parentOperatorList.addDependencies(operatorList.dependencies);
26448          }).catch(function (reason) {
26449            (0, _util.warn)('Type3 font resource "' + key + '" is not available.');
26450            var operatorList = new _operator_list.OperatorList();
26451            charProcOperatorList[key] = operatorList.getIR();
26452          });
26453        });
26454      };
26455
26456      for (var i = 0, n = charProcKeys.length; i < n; ++i) {
26457        _loop2();
26458      }
26459      this.type3Loaded = loadCharProcsPromise.then(function () {
26460        translatedFont.charProcOperatorList = charProcOperatorList;
26461      });
26462      return this.type3Loaded;
26463    }
26464  };
26465  return TranslatedFont;
26466}();
26467var StateManager = function StateManagerClosure() {
26468  function StateManager(initialState) {
26469    this.state = initialState;
26470    this.stateStack = [];
26471  }
26472  StateManager.prototype = {
26473    save: function save() {
26474      var old = this.state;
26475      this.stateStack.push(this.state);
26476      this.state = old.clone();
26477    },
26478    restore: function restore() {
26479      var prev = this.stateStack.pop();
26480      if (prev) {
26481        this.state = prev;
26482      }
26483    },
26484    transform: function transform(args) {
26485      this.state.ctm = _util.Util.transform(this.state.ctm, args);
26486    }
26487  };
26488  return StateManager;
26489}();
26490var TextState = function TextStateClosure() {
26491  function TextState() {
26492    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);
26493    this.fontName = null;
26494    this.fontSize = 0;
26495    this.font = null;
26496    this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
26497    this.textMatrix = _util.IDENTITY_MATRIX.slice();
26498    this.textLineMatrix = _util.IDENTITY_MATRIX.slice();
26499    this.charSpacing = 0;
26500    this.wordSpacing = 0;
26501    this.leading = 0;
26502    this.textHScale = 1;
26503    this.textRise = 0;
26504  }
26505  TextState.prototype = {
26506    setTextMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {
26507      var m = this.textMatrix;
26508      m[0] = a;
26509      m[1] = b;
26510      m[2] = c;
26511      m[3] = d;
26512      m[4] = e;
26513      m[5] = f;
26514    },
26515    setTextLineMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {
26516      var m = this.textLineMatrix;
26517      m[0] = a;
26518      m[1] = b;
26519      m[2] = c;
26520      m[3] = d;
26521      m[4] = e;
26522      m[5] = f;
26523    },
26524    translateTextMatrix: function TextState_translateTextMatrix(x, y) {
26525      var m = this.textMatrix;
26526      m[4] = m[0] * x + m[2] * y + m[4];
26527      m[5] = m[1] * x + m[3] * y + m[5];
26528    },
26529    translateTextLineMatrix: function TextState_translateTextMatrix(x, y) {
26530      var m = this.textLineMatrix;
26531      m[4] = m[0] * x + m[2] * y + m[4];
26532      m[5] = m[1] * x + m[3] * y + m[5];
26533    },
26534    calcTextLineMatr
26534ixAdvance: function TextState_calcTextLineMatrixAdvance(a, b, c, d, e, f) {
26535      var font = this.font;
26536      if (!font) {
26537        return null;
26538      }
26539      var m = this.textLineMatrix;
26540      if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) {
26541        return null;
26542      }
26543      var txDiff = e - m[4],
26544          tyDiff = f - m[5];
26545      if (font.vertical && txDiff !== 0 || !font.vertical && tyDiff !== 0) {
26546        return null;
26547      }
26548      var tx,
26549          ty,
26550          denominator = a * d - b * c;
26551      if (font.vertical) {
26552        tx = -tyDiff * c / denominator;
26553        ty = tyDiff * a / denominator;
26554      } else {
26555        tx = txDiff * d / denominator;
26556        ty = -txDiff * b / denominator;
26557      }
26558      return {
26559        width: tx,
26560        height: ty,
26561        value: font.vertical ? ty : tx
26562      };
26563    },
26564    calcRenderMatrix: function TextState_calcRendeMatrix(ctm) {
26565      var tsm = [this.fontSize * this.textHScale, 0, 0, this.fontSize, 0, this.textRise];
26566      return _util.Util.transform(ctm, _util.Util.transform(this.textMatrix, tsm));
26567    },
26568    carriageReturn: function TextState_carriageReturn() {
26569      this.translateTextLineMatrix(0, -this.leading);
26570      this.textMatrix = this.textLineMatrix.slice();
26571    },
26572    clone: function TextState_clone() {
26573      var clone = Object.create(this);
26574      clone.textMatrix = this.textMatrix.slice();
26575      clone.textLineMatrix = this.textLineMatrix.slice();
26576      clone.fontMatrix = this.fontMatrix.slice();
26577      return clone;
26578    }
26579  };
26580  return TextState;
26581}();
26582var EvalState = function EvalStateClosure() {
26583  function EvalState() {
26584    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);
26585    this.font = null;
26586    this.textRenderingMode = _util.TextRenderingMode.FILL;
26587    this.fillColorSpace = _colorspace.ColorSpace.singletons.gray;
26588    this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
26589  }
26590  EvalState.prototype = {
26591    clone: function CanvasExtraState_clone() {
26592      return Object.create(this);
26593    }
26594  };
26595  return EvalState;
26596}();
26597var EvaluatorPreprocessor = function EvaluatorPreprocessorClosure() {
26598  var getOPMap = (0, _util.getLookupTableFactory)(function (t) {
26599    t['w'] = {
26600      id: _util.OPS.setLineWidth,
26601      numArgs: 1,
26602      variableArgs: false
26603    };
26604    t['J'] = {
26605      id: _util.OPS.setLineCap,
26606      numArgs: 1,
26607      variableArgs: false
26608    };
26609    t['j'] = {
26610      id: _util.OPS.setLineJoin,
26611      numArgs: 1,
26612      variableArgs: false
26613    };
26614    t['M'] = {
26615      id: _util.OPS.setMiterLimit,
26616      numArgs: 1,
26617      variableArgs: false
26618    };
26619    t['d'] = {
26620      id: _util.OPS.setDash,
26621      numArgs: 2,
26622      variableArgs: false
26623    };
26624    t['ri'] = {
26625      id: _util.OPS.setRenderingIntent,
26626      numArgs: 1,
26627      variableArgs: false
26628    };
26629    t['i'] = {
26630      id: _util.OPS.setFlatness,
26631      numArgs: 1,
26632      variableArgs: false
26633    };
26634    t['gs'] = {
26635      id: _util.OPS.setGState,
26636      numArgs: 1,
26637      variableArgs: false
26638    };
26639    t['q'] = {
26640      id: _util.OPS.save,
26641      numArgs: 0,
26642      variableArgs: false
26643    };
26644    t['Q'] = {
26645      id: _util.OPS.restore,
26646      numArgs: 0,
26647      variableArgs: false
26648    };
26649    t['cm'] = {
26650      id: _util.OPS.transform,
26651      numArgs: 6,
26652      variableArgs: false
26653    };
26654    t['m'] = {
26655      id: _util.OPS.moveTo,
26656      numArgs: 2,
26657      variableArgs: false
26658    };
26659    t['l'] = {
26660      id: _util.OPS.lineTo,
26661      numArgs: 2,
26662      variableArgs: false
26663    };
26664    t['c'] = {
26665      id: _util.OPS.curveTo,
26666      numArgs: 6,
26667      variableArgs: false
26668    };
26669    t['v'] = {
26670      id: _util.OPS.curveTo2,
26671      numArgs: 4,
26672      variableArgs: false
26673    };
26674    t['y'] = {
26675      id: _util.OPS.curveTo3,
26676      numArgs: 4,
26677      variableArgs: false
26678    };
26679    t['h'] = {
26680      id: _util.OPS.closePath,
26681      numArgs: 0,
26682      variableArgs: false
26683    };
26684    t['re'] = {
26685      id: _util.OPS.rectangle,
26686      numArgs: 4,
26687      variableArgs: false
26688    };
26689    t['S'] = {
26690      id: _util.OPS.stroke,
26691      numArgs: 0,
26692      variableArgs: false
26693    };
26694    t['s'] = {
26695      id: _util.OPS.closeStroke,
26696      numArgs: 0,
26697      variableArgs: false
26698    };
26699    t['f'] = {
26700      id: _util.OPS.fill,
26701      numArgs: 0,
26702      variableArgs: false
26703    };
26704    t['F'] = {
26705      id: _util.OPS.fill,
26706      numArgs: 0,
26707      variableArgs: false
26708    };
26709    t['f*'] = {
26710      id: _util.OPS.eoFill,
26711      numArgs: 0,
26712      variableArgs: false
26713    };
26714    t['B'] = {
26715      id: _util.OPS.fillStroke,
26716      numArgs: 0,
26717      variableArgs: false
26718    };
26719    t['B*'] = {
26720      id: _util.OPS.eoFillStroke,
26721      numArgs: 0,
26722      variableArgs: false
26723    };
26724    t['b'] = {
26725      id: _util.OPS.closeFillStroke,
26726      numArgs: 0,
26727      variableArgs: false
26728    };
26729    t['b*'] = {
26730      id: _util.OPS.closeEOFillStroke,
26731      numArgs: 0,
26732      variableArgs: false
26733    };
26734    t['n'] = {
26735      id: _util.OPS.endPath,
26736      numArgs: 0,
26737      variableArgs: false
26738    };
26739    t['W'] = {
26740      id: _util.OPS.clip,
26741      numArgs: 0,
26742      variableArgs: false
26743    };
26744    t['W*'] = {
26745      id: _util.OPS.eoClip,
26746      numArgs: 0,
26747      variableArgs: false
26748    };
26749    t['BT'] = {
26750      id: _util.OPS.beginText,
26751      numArgs: 0,
26752      variableArgs: false
26753    };
26754    t['ET'] = {
26755      id: _util.OPS.endText,
26756      numArgs: 0,
26757      variableArgs: false
26758    };
26759    t['Tc'] = {
26760      id: _util.OPS.setCharSpacing,
26761      numArgs: 1,
26762      variableArgs: false
26763    };
26764    t['Tw'] = {
26765      id: _util.OPS.setWordSpacing,
26766      numArgs: 1,
26767      variableArgs: false
26768    };
26769    t['Tz'] = {
26770      id: _util.OPS.setHScale,
26771      numArgs: 1,
26772      variableArgs: false
26773    };
26774    t['TL'] = {
26775      id: _util.OPS.setLeading,
26776      numArgs: 1,
26777      variableArgs: false
26778    };
26779    t['Tf'] = {
26780      id: _util.OPS.setFont,
26781      numArgs: 2,
26782      variableArgs: false
26783    };
26784    t['Tr'] = {
26785      id: _util.OPS.setTextRenderingMode,
26786      numArgs: 1,
26787      variableArgs: false
26788    };
26789    t['Ts'] = {
26790      id: _util.OPS.setTextRise,
26791      numArgs: 1,
26792      variableArgs: false
26793    };
26794    t['Td'] = {
26795      id: _util.OPS.moveText,
26796      numArgs: 2,
26797      variableArgs: false
26798    };
26799    t['TD'] = {
26800      id: _util.OPS.setLeadingMoveText,
26801      numArgs: 2,
26802      variableArgs: false
26803    };
26804    t['Tm'] = {
26805      id: _util.OPS.setTextMatrix,
26806      numArgs: 6,
26807      variableArgs: false
26808    };
26809    t['T*'] = {
26810      id: _util.OPS.nextLine,
26811      numArgs: 0,
26812      variableArgs: false
26813    };
26814    t['Tj'] = {
26815      id: _util.OPS.showText,
26816      numArgs: 1,
26817      variableArgs: false
26818    };
26819    t['TJ'] = {
26820      id: _util.OPS.showSpacedText,
26821      numArgs: 1,
26822      variableArgs: false
26823    };
26824    t['\''] = {
26825      id: _util.OPS.nextLineShowText,
26826      numArgs: 1,
26827      variableArgs: false
26828    };
26829    t['"'] = {
26830      id: _util.OPS.nextLineSetSpacingShowText,
26831      numArgs: 3,
26832      variableArgs: false
26833    };
26834    t['d0'] = {
26835      id: _util.OPS.setCharWidth,
26836      numArgs: 2,
26837      variableArgs: false
26838    };
26839    t['d1'] = {
26840      id: _util.OPS.setCharWidthAndBounds,
26841      numArgs: 6,
26842      variableArgs: false
26843    };
26844    t['CS'] = {
26845      id: _util.OPS.setStrokeColorSpace,
26846      numArgs: 1,
26847      variableArgs: false
26848    };
26849    t['cs'] = {
26850      id: _util.OPS.setFillColorSpace,
26851      numArgs: 1,
26852      variableArgs: false
26853    };
26854    t['SC'] = {
26855      id: _util.OPS.setStrokeColor,
26856      numArgs: 4,
26857      variableArgs: true
26858    };
26859    t['SCN'] = {
26860      id: _util.OPS.setStrokeColorN,
26861      numArgs: 33,
26862      variableArgs: true
26863    };
26864    t['sc'] = {
26865      id: _util.OPS.setFillColor,
26866      numArgs: 4,
26867      variableArgs: true
26868    };
26869    t['scn'] = {
26870      id: _util.OPS.setFillColorN,
26871      numArgs: 33,
26872      variableArgs: true
26873    };
26874    t['G'] = {
26875      id: _util.OPS.setStrokeGray,
26876      numArgs: 1,
26877      variableArgs: false
26878    };
26879    t['g'] = {
26880      id: _util.OPS.setFillGray,
26881      numArgs: 1,
26882      variableArgs: false
26883    };
26884    t['RG'] = {
26885      id: _util.OPS.setStrokeRGBColor,
26886      numArgs: 3,
26887      variableArgs: false
26888    };
26889    t['rg'] = {
26890      id: _util.OPS.setFillRGBColor,
26891      numArgs: 3,
26892      variableArgs: false
26893    };
26894    t['K'] = {
26895      id: _util.OPS.setStrokeCMYKColor,
26896      numArgs: 4,
26897      variableArgs: false
26898    };
26899    t['k'] = {
26900      id: _util.OPS.setFillCMYKColor,
26901      numArgs: 4,
26902      variableArgs: false
26903    };
26904    t['sh'] = {
26905      id: _util.OPS.shadingFill,
26906      numArgs: 1,
26907      variableArgs: false
26908    };
26909    t['BI'] = {
26910      id: _util.OPS.beginInlineImage,
26911      numArgs: 0,
26912      variableArgs: false
26913    };
26914    t['ID'] = {
26915      id: _util.OPS.beginImageData,
26916      numArgs: 0,
26917      variableArgs: false
26918    };
26919    t['EI'] = {
26920      id: _util.OPS.endInlineImage,
26921      numArgs: 1,
26922      variableArgs: false
26923    };
26924    t['Do'] = {
26925      id: _util.OPS.paintXObject,
26926      numArgs: 1,
26927      variableArgs: false
26928    };
26929    t['MP'] = {
26930      id: _util.OPS.markPoint,
26931      numArgs: 1,
26932      variableArgs: false
26933    };
26934    t['DP'] = {
26935      id: _util.OPS.markPointProps,
26936      numArgs: 2,
26937      variableArgs: false
26938    };
26939    t['BMC'] = {
26940      id: _util.OPS.beginMarkedContent,
26941      numArgs: 1,
26942      variableArgs: false
26943    };
26944    t['BDC'] = {
26945      id: _util.OPS.beginMarkedContentProps,
26946      numArgs: 2,
26947      variableArgs: false
26948    };
26949    t['EMC'] = {
26950      id: _util.OPS.endMarkedContent,
26951      numArgs: 0,
26952      variableArgs: false
26953    };
26954    t['BX'] = {
26955      id: _util.OPS.beginCompat,
26956      numArgs: 0,
26957      variableArgs: false
26958    };
26959    t['EX'] = {
26960      id: _util.OPS.endCompat,
26961      numArgs: 0,
26962      variableArgs: false
26963    };
26964    t['BM'] = null;
26965    t['BD'] = null;
26966    t['true'] = null;
26967    t['fa'] = null;
26968    t['fal'] = null;
26969    t['fals'] = null;
26970    t['false'] = null;
26971    t['nu'] = null;
26972    t['nul'] = null;
26973    t['null'] = null;
26974  });
26975  var MAX_INVALID_PATH_OPS = 20;
26976  function EvaluatorPreprocessor(stream, xref, stateManager) {
26977    this.opMap = getOPMap();
26978    this.parser = new _parser.Parser(new _parser.Lexer(stream, this.opMap), false, xref);
26979    this.stateManager = stateManager;
26980    this.nonProcessedArgs = [];
26981    this._numInvalidPathOPS = 0;
26982  }
26983  EvaluatorPreprocessor.prototype = {
26984    get savedStatesDepth() {
26985      return this.stateManager.stateStack.length;
26986    },
26987    read: function EvaluatorPreprocessor_read(operation) {
26988      var args = operation.args;
26989      while (true) {
26990        var obj = this.parser.getObj();
26991        if ((0, _primitives.isCmd)(obj)) {
26992          var cmd = obj.cmd;
26993          var opSpec = this.opMap[cmd];
26994          if (!opSpec) {
26995            (0, _util.warn)('Unknown command "' + cmd + '".');
26996            continue;
26997          }
26998          var fn = opSpec.id;
26999          var numArgs = opSpec.numArgs;
27000          var argsLength = args !== null ? args.length : 0;
27001          if (!opSpec.variableArgs) {
27002            if (argsLength !== numArgs) {
27003              var nonProcessedArgs = this.nonProcessedArgs;
27004              while (argsLength > numArgs) {
27005                nonProcessedArgs.push(args.shift());
27006                argsLength--;
27007              }
27008              while (argsLength < numArgs && nonProcessedArgs.length !== 0) {
27009                if (args === null) {
27010                  args = [];
27011                }
27012                args.unshift(nonProcessedArgs.pop());
27013                argsLength++;
27014              }
27015            }
27016            if (argsLength < numArgs) {
27017              var partialMsg = 'command ' + cmd + ': expected ' + numArgs + ' args, ' + ('but received ' + argsLength + ' args.');
27018              if (fn >= _util.OPS.moveTo && fn <= _util.OPS.endPath && ++this._numInvalidPathOPS >
27018 MAX_INVALID_PATH_OPS) {
27019                throw new _util.FormatError('Invalid ' + partialMsg);
27020              }
27021              (0, _util.warn)('Skipping ' + partialMsg);
27022              if (args !== null) {
27023                args.length = 0;
27024              }
27025              continue;
27026            }
27027          } else if (argsLength > numArgs) {
27028            (0, _util.info)('Command ' + cmd + ': expected [0, ' + numArgs + '] args, ' + ('but received ' + argsLength + ' args.'));
27029          }
27030          this.preprocessCommand(fn, args);
27031          operation.fn = fn;
27032          operation.args = args;
27033          return true;
27034        }
27035        if ((0, _primitives.isEOF)(obj)) {
27036          return false;
27037        }
27038        if (obj !== null) {
27039          if (args === null) {
27040            args = [];
27041          }
27042          args.push(obj);
27043          if (args.length > 33) {
27044            throw new _util.FormatError('Too many arguments');
27045          }
27046        }
27047      }
27048    },
27049    preprocessCommand: function EvaluatorPreprocessor_preprocessCommand(fn, args) {
27050      switch (fn | 0) {
27051        case _util.OPS.save:
27052          this.stateManager.save();
27053          break;
27054        case _util.OPS.restore:
27055          this.stateManager.restore();
27056          break;
27057        case _util.OPS.transform:
27058          this.stateManager.transform(args);
27059          break;
27060      }
27061    }
27062  };
27063  return EvaluatorPreprocessor;
27064}();
27065exports.PartialEvaluator = PartialEvaluator;
27066
27067/***/ }),
27068/* 155 */
27069/***/ (function(module, exports, __w_pdfjs_require__) {
27070
27071"use strict";
27072
27073
27074Object.defineProperty(exports, "__esModule", {
27075  value: true
27076});
27077exports.CMapFactory = exports.IdentityCMap = exports.CMap = undefined;
27078
27079var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
27080
27081var _util = __w_pdfjs_require__(2);
27082
27083var _primitives = __w_pdfjs_require__(138);
27084
27085var _parser = __w_pdfjs_require__(139);
27086
27087var _stream = __w_pdfjs_require__(140);
27088
27089function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
27090
27091function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
27092
27093function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
27094
27095var BUILT_IN_CMAPS = ['Adobe-GB1-UCS2', 'Adobe-CNS1-UCS2', 'Adobe-Japan1-UCS2', 'Adobe-Korea1-UCS2', '78-EUC-H', '78-EUC-V', '78-H', '78-RKSJ-H', '78-RKSJ-V', '78-V', '78ms-RKSJ-H', '78ms-RKSJ-V', '83pv-RKSJ-H', '90ms-RKSJ-H', '90ms-RKSJ-V', '90msp-RKSJ-H', '90msp-RKSJ-V', '90pv-RKSJ-H', '90pv-RKSJ-V', 'Add-H', 'Add-RKSJ-H', 'Add-RKSJ-V', 'Add-V', 'Adobe-CNS1-0', 'Adobe-CNS1-1', 'Adobe-CNS1-2', 'Adobe-CNS1-3', 'Adobe-CNS1-4', 'Adobe-CNS1-5', 'Adobe-CNS1-6', 'Adobe-GB1-0', 'Adobe-GB1-1', 'Adobe-GB1-2', 'Adobe-GB1-3', 'Adobe-GB1-4', 'Adobe-GB1-5', 'Adobe-Japan1-0', 'Adobe-Japan1-1', 'Adobe-Japan1-2', 'Adobe-Japan1-3', 'Adobe-Japan1-4', 'Adobe-Japan1-5', 'Adobe-Japan1-6', 'Adobe-Korea1-0', 'Adobe-Korea1-1', 'Adobe-Korea1-2', 'B5-H', 'B5-V', 'B5pc-H', 'B5pc-V', 'CNS-EUC-H', 'CNS-EUC-V', 'CNS1-H', 'CNS1-V', 'CNS2-H', 'CNS2-V', 'ETHK-B5-H', 'ETHK-B5-V', 'ETen-B5-H', 'ETen-B5-V', 'ETenms-B5-H', 'ETenms-B5-V', 'EUC-H', 'EUC-V', 'Ext-H', 'Ext-RKSJ-H', 'Ext-RKSJ-V', 'Ext-V', 'GB-EUC-H', 'GB-EUC-V', 'GB-H', 'GB-V', 'GBK-EUC-H', 'GBK-EUC-V', 'GBK2K-H', 'GBK2K-V', 'GBKp-EUC-H', 'GBKp-EUC-V', 'GBT-EUC-H', 'GBT-EUC-V', 'GBT-H', 'GBT-V', 'GBTpc-EUC-H', 'GBTpc-EUC-V', 'GBpc-EUC-H', 'GBpc-EUC-V', 'H', 'HKdla-B5-H', 'HKdla-B5-V', 'HKdlb-B5-H', 'HKdlb-B5-V', 'HKgccs-B5-H', 'HKgccs-B5-V', 'HKm314-B5-H', 'HKm314-B5-V', 'HKm471-B5-H', 'HKm471-B5-V', 'HKscs-B5-H', 'HKscs-B5-V', 'Hankaku', 'Hiragana', 'KSC-EUC-H', 'KSC-EUC-V', 'KSC-H', 'KSC-Johab-H', 'KSC-Johab-V', 'KSC-V', 'KSCms-UHC-H', 'KSCms-UHC-HW-H', 'KSCms-UHC-HW-V', 'KSCms-UHC-V', 'KSCpc-EUC-H', 'KSCpc-EUC-V', 'Katakana', 'NWP-H', 'NWP-V', 'RKSJ-H', 'RKSJ-V', 'Roman', 'UniCNS-UCS2-H', 'UniCNS-UCS2-V', 'UniCNS-UTF16-H', 'UniCNS-UTF16-V', 'UniCNS-UTF32-H', 'UniCNS-UTF32-V', 'UniCNS-UTF8-H', 'UniCNS-UTF8-V', 'UniGB-UCS2-H', 'UniGB-UCS2-V', 'UniGB-UTF16-H', 'UniGB-UTF16-V', 'UniGB-UTF32-H', 'UniGB-UTF32-V', 'UniGB-UTF8-H', 'UniGB-UTF8-V', 'UniJIS-UCS2-H', 'UniJIS-UCS2-HW-H', 'UniJIS-UCS2-HW-V', 'UniJIS-UCS2-V', 'UniJIS-UTF16-H', 'UniJIS-UTF16-V', 'UniJIS-UTF32-H', 'UniJIS-UTF32-V', 'UniJIS-UTF8-H', 'UniJIS-UTF8-V', 'UniJIS2004-UTF16-H', 'UniJIS2004-UTF16-V', 'UniJIS2004-UTF32-H', 'UniJIS2004-UTF32-V', 'UniJIS2004-UTF8-H', 'UniJIS2004-UTF8-V', 'UniJISPro-UCS2-HW-V', 'UniJISPro-UCS2-V', 'UniJISPro-UTF8-V', 'UniJISX0213-UTF32-H', 'UniJISX0213-UTF32-V', 'UniJISX02132004-UTF32-H', 'UniJISX02132004-UTF32-V', 'UniKS-UCS2-H', 'UniKS-UCS2-V', 'UniKS-UTF16-H', 'UniKS-UTF16-V', 'UniKS-UTF32-H', 'UniKS-UTF32-V', 'UniKS-UTF8-H', 'UniKS-UTF8-V', 'V', 'WP-Symbol'];
27096
27097var CMap = function () {
27098  function CMap() {
27099    var builtInCMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
27100
27101    _classCallCheck(this, CMap);
27102
27103    this.codespaceRanges = [[], [], [], []];
27104    this.numCodespaceRanges = 0;
27105    this._map = [];
27106    this.name = '';
27107    this.vertical = false;
27108    this.useCMap = null;
27109    this.builtInCMap = builtInCMap;
27110  }
27111
27112  _createClass(CMap, [{
27113    key: 'addCodespaceRange',
27114    value: function addCodespaceRange(n, low, high) {
27115      this.codespaceRanges[n - 1].push(low, high);
27116      this.numCodespaceRanges++;
27117    }
27118  }, {
27119    key: 'mapCidRange',
27120    value: function mapCidRange(low, high, dstLow) {
27121      while (low <= high) {
27122        this._map[low++] = dstLow++;
27123      }
27124    }
27125  }, {
27126    key: 'mapBfRange',
27127    value: function mapBfRange(low, high, dstLow) {
27128      var lastByte = dstLow.length - 1;
27129      while (low <= high) {
27130        this._map[low++] = dstLow;
27131        dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);
27132      }
27133    }
27134  }, {
27135    key: 'mapBfRangeToArray',
27136    value: function mapBfRangeToArray(low, high, array) {
27137      var i = 0,
27138          ii = array.length;
27139      while (low <= high && i < ii) {
27140        this._map[low] = array[i++];
27141        ++low;
27142      }
27143    }
27144  }, {
27145    key: 'mapOne',
27146    value: function mapOne(src, dst) {
27147      this._map[src] = dst;
27148    }
27149  }, {
27150    key: 'lookup',
27151    value: function lookup(code) {
27152      return this._map[code];
27153    }
27154  }, {
27155    key: 'contains',
27156    value: function contains(code) {
27157      return this._map[code] !== undefined;
27158    }
27159  }, {
27160    key: 'forEach',
27161    value: function forEach(callback) {
27162      var map = this._map;
27163      var length = map.length;
27164      if (length <= 0x10000) {
27165        for (var i = 0; i < length; i++) {
27166          if (map[i] !== undefined) {
27167            callback(i, map[i]);
27168          }
27169        }
27170      } else {
27171        for (var _i in map) {
27172          callback(_i, map[_i]);
27173        }
27174      }
27175    }
27176  }, {
27177    key: 'charCodeOf',
27178    value: function charCodeOf(value) {
27179      var map = this._map;
27180      if (map.length <= 0x10000) {
27181        return map.indexOf(value);
27182      }
27183      for (var charCode in map) {
27184        if (map[charCode] === value) {
27185          return charCode | 0;
27186        }
27187      }
27188      return -1;
27189    }
27190  }, {
27191    key: 'getMap',
27192    value: function getMap() {
27193      return this._map;
27194    }
27195  }, {
27196    key: 'readCharCode',
27197    value: function readCharCode(str, offset, out) {
27198      var c = 0;
27199      var codespaceRanges = this.codespaceRanges;
27200      for (var n = 0, nn = codespaceRanges.length; n < nn; n++) {
27201        c = (c << 8 | str.charCodeAt(offset + n)) >>> 0;
27202        var codespaceRange = codespaceRanges[n];
27203        for (var k = 0, kk = codespaceRange.length; k < kk;) {
27204          var low = codespaceRange[k++];
27205          var high = codespaceRange[k++];
27206          if (c >= low && c <= high) {
27207            out.charcode = c;
27208            out.length = n + 1;
27209            return;
27210          }
27211        }
27212      }
27213      out.charcode = 0;
27214      out.length = 1;
27215    }
27216  }, {
27217    key: 'length',
27218    get: function get() {
27219      return this._map.length;
27220    }
27221  }, {
27222    key: 'isIdentityCMap',
27223    get: function get() {
27224      if (!(this.name === 'Identity-H' || this.name === 'Identity-V')) {
27225        return false;
27226      }
27227      if (this._map.length !== 0x10000) {
27228        return false;
27229      }
27230      for (var i = 0; i < 0x10000; i++) {
27231        if (this._map[i] !== i) {
27232          return false;
27233        }
27234      }
27235      return true;
27236    }
27237  }]);
27238
27239  return CMap;
27240}();
27241
27242var IdentityCMap = function (_CMap) {
27243  _inherits(IdentityCMap, _CMap);
27244
27245  function IdentityCMap(vertical, n) {
27246    _classCallCheck(this, IdentityCMap);
27247
27248    var _this = _possibleConstructorReturn(this, (IdentityCMap.__proto__ || Object.getPrototypeOf(IdentityCMap)).call(this));
27249
27250    _this.vertical = vertical;
27251    _this.addCodespaceRange(n, 0, 0xffff);
27252    return _this;
27253  }
27254
27255  _createClass(IdentityCMap, [{
27256    key: 'mapCidRange',
27257    value: function mapCidRange(low, high, dstLow) {
27258      (0, _util.unreachable)('should not call mapCidRange');
27259    }
27260  }, {
27261    key: 'mapBfRange',
27262    value: function mapBfRange(low, high, dstLow) {
27263      (0, _util.unreachable)('should not call mapBfRange');
27264    }
27265  }, {
27266    key: 'mapBfRangeToArray',
27267    value: function mapBfRangeToArray(low, high, array) {
27268      (0, _util.unreachable)('should not call mapBfRangeToArray');
27269    }
27270  }, {
27271    key: 'mapOne',
27272    value: function mapOne(src, dst) {
27273      (0, _util.unreachable)('should not call mapCidOne');
27274    }
27275  }, {
27276    key: 'lookup',
27277    value: function lookup(code) {
27278      return Number.isInteger(code) && code <= 0xffff ? code : undefined;
27279    }
27280  }, {
27281    key: 'contains',
27282    value: function contains(code) {
27283      return Number.isInteger(code) && code <= 0xffff;
27284    }
27285  }, {
27286    key: 'forEach',
27287    value: function forEach(callback) {
27288      for (var i = 0; i <= 0xffff; i++) {
27289        callback(i, i);
27290      }
27291    }
27292  }, {
27293    key: 'charCodeOf',
27294    value: function charCodeOf(value) {
27295      return Number.isInteger(value) && value <= 0xffff ? value : -1;
27296    }
27297  }, {
27298    key: 'getMap',
27299    value: function getMap() {
27300      var map = new Array(0x10000);
27301      for (var i = 0; i <= 0xffff; i++) {
27302        map[i] = i;
27303      }
27304      return map;
27305    }
27306  }, {
27307    key: 'length',
27308    get: function get() {
27309      return 0x10000;
27310    }
27311  }, {
27312    key: 'isIdentityCMap',
27313    get: function get() {
27314      (0, _util.unreachable)('should not access .isIdentityCMap');
27315    }
27316  }]);
27317
27318  return IdentityCMap;
27319}(CMap);
27320
27321var BinaryCMapReader = function BinaryCMapReaderClosure() {
27322  function hexToInt(a, size) {
27323    var n = 0;
27324    for (var i = 0; i <= size; i++) {
27325      n = n << 8 | a[i];
27326    }
27327    return n >>> 0;
27328  }
27329  function hexToStr(a, size) {
27330    if (size === 1) {
27331      return String.fromCharCode(a[0], a[1]);
27332    }
27333    if (size === 3) {
27334      return String.fromCharCode(a[0], a[1], a[2], a[3]);
27335    }
27336    return String.fromCharCode.apply(null, a.subarray(0, size + 1));
27337  }
27338  function addHex(a, b, size) {
27339    var c = 0;
27340    for (var i = size; i >= 0; i--) {
27341      c += a[i] + b[i];
27342      a[i] = c & 255;
27343      c >>= 8;
27344    }
27345  }
27346  function incHex(a, size) {
27347    var c = 1;
27348    for (var i = size; i >= 0 && c > 0; i--) {
27349      c += a[i];
27350      a[i] = c & 255;
27351      c >>= 8;
27352    }
27353  }
27354  var MAX_NUM_SIZE = 16;
27355  var MAX_ENCODED_NUM_SIZE = 19;
27356  function BinaryCMapStream(data) {
27357    this.buffer = data;
27358    this.pos = 0;
27359    this.end = data.length;
27360    this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);
27361  }
27362  BinaryCMapStream.prototype = {
27363    readByte: function readByte() {
27364      if (this.pos >= this.end) {
27365        return -1;
27366      }
27367      return this.buffer[this.pos++];
27368    },
27369    readNumber: function readNumber() {
27370      var n = 0;
27371      var last;
27372      do {
27373        var b = this.readByte();
27374        if (b < 0) {
27375          throw new _util.FormatError('unexpected EOF in bcmap');
27376        }
27377        last = !(b & 0x80);
27378        n = n << 7 | b & 0x7F;
27379      } while (!last);
27380      return n;
27381    },
27382    readSigned: function readSigned() {
27383      var n = this.readNumber();
27384      return n & 1 ? ~(n >>> 1) : n >>> 1;
27385    },
27386    readHex: function readHex(num, size) {
27387      num.set(this.buffer.subarray(this.pos, this.pos + size + 1));
27388      this.pos += size + 1;
27389    },
27390    readHexNumber: function readHexNumber(num, size) {
27391      var last;
27392      var stack = this.tmpBuf,
27393          sp = 0;
27394      do {
27395        var b = this.readByte();
27396        if (b < 0) {
27397          throw new _util.FormatError('unexpected EOF in bcmap');
27398        }
27399        last = !(b & 0x80);
27400        stack[sp++] = b & 0x7F;
27401      } while (!last);
27402      var i = size,
27403          buffer = 0,
27404          bufferSize = 0;
27405      while (i >= 0) {
27406        while (bufferSize < 8 && stack.length > 0) {
27407          buffer = stack[--sp] << bufferSize | buffer;
27408          bufferSize += 7;
27409        }
27410        num[i] = buffer & 255;
27411        i--;
27412        buffer >>= 8;
27413        bufferSize -= 8;
27414      }
27415    },
27416    readHexSigned: function readHexSigned(num, size) {
27417      this.readHexNumber(num, size);
27418      var sign = num[size] & 1 ? 255 : 0;
27419      var c = 0;
27420      for (var i = 0; i <= size; i++) {
27421        c = (c & 1) << 8 | num[i];
27422        num[i] = c >> 1 ^ sign;
27423      }
27424    },
27425    readString: function readString() {
27426      var len = this.readNumber();
27427      var s = '';
27428      for (var i = 0; i < len; i++) {
27429        s += String.fromCharCode(this.readNumber());
27430      }
27431      return s;
27432    }
27433  };
27434  function processBinaryCMap(data, cMap, extend) {
27435    return new Promise(function (resolve, reject) {
27436      var stream = new BinaryCMapStream(data);
27437      var header = stream.readByte();
27438      cMap.vertical = !!(header & 1);
27439      var useCMap = null;
27440      var start = new Uint8Array(MAX_NUM_SIZE);
27441      var end = new Uint8Array(MAX_NUM_SIZE);
27442      var char = new Uint8Array(MAX_NUM_SIZE);
27443      var charCode = new Uint8Array(MAX_NUM_SIZE);
27444      var tmp = new Uint8Array(MAX_NUM_SIZE);
27445      var code;
27446      var b;
27447      while ((b = stream.readByte()) >= 0) {
27448        var type = b >> 5;
27449        if (type === 7) {
27450          switch (b & 0x1F) {
27451            case 0:
27452              stream.readString();
27453              break;
27454            case 1:
27455              useCMap = stream.readString();
27456              break;
27457          }
27458          continue;
27459        }
27460        var sequence = !!(b & 0x10);
27461        var dataSize = b & 15;
27462        if (dataSize + 1 > MAX_NUM_SIZE) {
27463          throw new Error('processBinaryCMap: Invalid dataSize.');
27464        }
27465        var ucs2DataSize = 1;
27466        var subitemsCount = stream.readNumber();
27467        var i;
27468        switch (type) {
27469          case 0:
27470            stream.readHex(start, dataSize);
27471            stream.readHexNumber(end, dataSize);
27472            addHex(end, start, dataSize);
27473            cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));
27474            for (i = 1; i < subitemsCount; i++) {
27475              incHex(end, dataSize);
27476              stream.readHexNumber(start, dataSize);
27477              addHex(start, end, dataSize);
27478              stream.readHexNumber(end, dataSize);
27479              addHex(end, start, dataSize);
27480              cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));
27481            }
27482            break;
27483          case 1:
27484            stream.readHex(start, dataSize);
27485            stream.readHexNumber(end, dataSize);
27486            addHex(end, start, dataSize);
27487            stream.readNumber();
27488            for (i = 1; i < subitemsCount; i++) {
27489              incHex(end, dataSize);
27490              stream.readHexNumber(start, dataSize);
27491              addHex(start, end, dataSize);
27492              stream.readHexNumber(end, dataSize);
27493              addHex(end, start, dataSize);
27494              stream.readNumber();
27495            }
27496            break;
27497          case 2:
27498            stream.readHex(char, dataSize);
27499            code = stream.readNumber();
27500            cMap.mapOne(hexToInt(char, dataSize), code);
27501            for (i = 1; i < subitemsCount; i++) {
27502              incHex(char, dataSize);
27503              if (!sequence) {
27504                stream.readHexNumber(tmp, dataSize);
27505                addHex(char, tmp, dataSize);
27506              }
27507              code = stream.readSigned() + (code + 1);
27508              cMap.mapOne(hexToInt(char, dataSize), code);
27509            }
27510            break;
27511          case 3:
27512            stream.readHex(start, dataSize);
27513            stream.readHexNumber(end, dataSize);
27514            addHex(end, start, dataSize);
27515            code = stream.readNumber();
27516            cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);
27517            for (i = 1; i < subitemsCount; i++) {
27518              incHex(end, dataSize);
27519              if (!sequence) {
27520                stream.readHexNumber(start, dataSize);
27521                addHex(start, end, dataSize);
27522              } else {
27523                start.set(end);
27524              }
27525              stream.readHexNumber(end, dataSize);
27526              addHex(end, start, dataSize);
27527              code = stream.readNumber();
27528              cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);
27529            }
27530            break;
27531          case 4:
27532            stream.readHex(char, ucs2DataSize);
27533            stream.readHex(charCode, dataSize);
27534            cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));
27535            for (i = 1; i < subitemsCount; i++) {
27536              incHex(char, ucs2DataSize);
27537              if (!sequence) {
27538                stream.readHexNumber(tmp, ucs2DataSize);
27539                addHex(char, tmp, ucs2DataSize);
27540              }
27541              incHex(charCode, dataSize);
27542              stream.readHexSigned(tmp, dataSize);
27543              addHex(charCode, tmp, dataSize);
27544              cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));
27545            }
27546            break;
27547          case 5:
27548            stream.readHex(start, ucs2DataSize);
27549            stream.readHexNumber(end, ucs2DataSize);
27550            addHex(end, start, ucs2DataSize);
27551            stream.readHex(charCode, dataSize);
27552            cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));
27553            for (i = 1; i < subitemsCount; i++) {
27554              incHex(end, ucs2DataSize);
27555              if (!sequence) {
27556                stream.readHexNumber(start, ucs2DataSize);
27557                addHex(start, end, ucs2DataSize);
27558              } else {
27559                start.set(end);
27560              }
27561              stream.readHexNumber(end, ucs2DataSize);
27562              addHex(end, start, ucs2DataSize);
27563              stream.readHex(charCode, dataSize);
27564              cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));
27565            }
27566            break;
27567          default:
27568            reject(new Error('processBinaryCMap: Unknown type: ' + type));
27569            return;
27570        }
27571      }
27572      if (useCMap) {
27573        resolve(extend(useCMap));
27574        return;
27575      }
27576      resolve(cMap);
27577    });
27578  }
27579  function BinaryCMapReader() {}
27580  BinaryCMapReader.prototype = { process: processBinaryCMap };
27581  return BinaryCMapReader;
27582}();
27583var CMapFactory = function CMapFactoryClosure() {
27584  function strToInt(str) {
27585    var a = 0;
27586    for (var i = 0; i < str.length; i++) {
27587      a = a << 8 | str.charCodeAt(i);
27588    }
27589    return a >>> 0;
27590  }
27591  function expectString(obj) {
27592    if (!(0, _util.isString)(obj)) {
27593      throw new _util.FormatError('Malformed CMap: expected string.');
27594    }
27595  }
27596  function expectInt(obj) {
27597    if (!Number.isInteger(obj)) {
27598      throw new _util.FormatError('Malformed CMap: expected int.');
27599    }
27600  }
27601  function parseBfChar(cMap, lexer) {
27602    while (true) {
27603      var obj = lexer.getObj();
27604      if ((0, _primitives.isEOF)(obj)) {
27605        break;
27606      }
27607      if ((0, _primitives.isCmd)(obj, 'endbfchar')) {
27608        return;
27609      }
27610      expectString(obj);
27611      var src = strToInt(obj);
27612      obj = lexer.getObj();
27613      expectString(obj);
27614      var dst = obj;
27615      cMap.mapOne(src, dst);
27616    }
27617  }
27618  function parseBfRange(cMap, lexer) {
27619    while (true) {
27620      var obj = lexer.getObj();
27621      if ((0, _primitives.isEOF)(obj)) {
27622        break;
27623      }
27624      if ((0, _primitives.isCmd)(obj, 'endbfrange')) {
27625        return;
27626      }
27627      expectString(obj);
27628      var low = strToInt(obj);
27629      obj = lexer.getObj();
27630      expectString(obj);
27631      var high = strToInt(obj);
27632      obj = lexer.getObj();
27633      if (Number.isInteger(obj) || (0, _util.isString)(obj)) {
27634        var dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;
27635        cMap.mapBfRange(low, high, dstLow);
27636      } else if ((0, _primitives.isCmd)(obj, '[')) {
27637        obj = lexer.getObj();
27638        var array = [];
27639        while (!(0, _primitives.isCmd)(obj, ']') && !(0, _primitives.isEOF)(obj)) {
27640          array.push(obj);
27641          obj = lexer.getObj();
27642        }
27643        cMap.mapBfRangeToArray(low, high, array);
27644      } else {
27645        break;
27646      }
27647    }
27648    throw new _util.FormatError('Invalid bf range.');
27649  }
27650  function parseCidChar(cMap, lexer) {
27651    while (true) {
27652      var obj = lexer.getObj();
27653      if ((0, _primitives.isEOF)(obj)) {
27654        break;
27655      }
27656      if ((0, _primitives.isCmd)(obj, 'endcidchar')) {
27657        return;
27658      }
27659      expectString(obj);
27660      var src = strToInt(obj);
27661      obj = lexer.getObj();
27662      expectInt(obj);
27663      var dst = obj;
27664      cMap.mapOne(src, dst);
27665    }
27666  }
27667  function parseCidRange(cMap, lexer) {
27668    while (true) {
27669      var obj = lexer.getObj();
27670      if ((0, _primitives.isEOF)(obj)) {
27671        break;
27672      }
27673      if ((0, _primitives.isCmd)(obj, 'endcidrange')) {
27674        return;
27675      }
27676      expectString(obj);
27677      var low = strToInt(obj);
27678      obj = lexer.getObj();
27679      expectString(obj);
27680      var high = strToInt(obj);
27681      obj = lexer.getObj();
27682      expectInt(obj);
27683      var dstLow = obj;
27684      cMap.mapCidRange(low, high, dstLow);
27685    }
27686  }
27687  function parseCodespaceRange(cMap, lexer) {
27688    while (true) {
27689      var obj = lexer.getObj();
27690      if ((0, _primitives.isEOF)(obj)) {
27691        break;
27692      }
27693      if ((0, _primitives.isCmd)(obj, 'endcodespacerange')) {
27694        return;
27695      }
27696      if (!(0, _util.isString)(obj)) {
27697        break;
27698      }
27699      var low = strToInt(obj);
27700      obj = lexer.getObj();
27701      if (!(0, _util.isString)(obj)) {
27702        break;
27703      }
27704      var high = strToInt(obj);
27705      cMap.addCodespaceRange(obj.length, low, high);
27706    }
27707    throw new _util.FormatError('Invalid codespace range.');
27708  }
27709  function parseWMode(cMap, lexer) {
27710    var obj = lexer.getObj();
27711    if (Number.isInteger(obj)) {
27712      cMap.vertical = !!obj;
27713    }
27714  }
27715  function parseCMapName(cMap, lexer) {
27716    var obj = lexer.getObj();
27717    if ((0, _primitives.isName)(obj) && (0, _util.isString)(obj.name)) {
27718      cMap.name = obj.name;
27719    }
27720  }
27721  function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {
27722    var previous;
27723    var embeddedUseCMap;
27724    objLoop: while (true) {
27725      try {
27726        var obj = lexer.getObj();
27727        if ((0, _primitives.isEOF)(obj)) {
27728          break;
27729        } else if ((0, _primitives.isName)(obj)) {
27730          if (obj.name === 'WMode') {
27731            parseWMode(cMap, lexer);
27732          } else if (obj.name === 'CMapName') {
27733            parseCMapName(cMap, lexer);
27734          }
27735          previous = obj;
27736        } else if ((0, _primitives.isCmd)(obj)) {
27737          switch (obj.cmd) {
27738            case 'endcmap':
27739              break objLoop;
27740            case 'usecmap':
27741              if ((0, _primitives.isName)(previous)) {
27742                embeddedUseCMap = previous.name;
27743              }
27744              break;
27745            case 'begincodespacerange':
27746              parseCodespaceRange(cMap, lexer);
27747              break;
27748            case 'beginbfchar':
27749              parseBfChar(cMap, lexer);
27750              break;
27751            case 'begincidchar':
27752              parseCidChar(cMap, lexer);
27753              break;
27754            case 'beginbfrange':
27755              parseBfRange(cMap, lexer);
27756              break;
27757            case 'begincidrange':
27758              parseCidRange(cMap, lexer);
27759              break;
27760          }
27761        }
27762      } catch (ex) {
27763        if (ex instanceof _util.MissingDataException) {
27764          throw ex;
27765        }
27766        (0, _util.warn)('Invalid cMap data: ' + ex);
27767        continue;
27768      }
27769    }
27770    if (!useCMap && embeddedUseCMap) {
27771      useCMap = embeddedUseCMap;
27772    }
27773    if (useCMap) {
27774      return extendCMap(cMap, fetchBuiltInCMap, useCMap);
27775    }
27776    return Promise.resolve(cMap);
27777  }
27778  function extendCMap(cMap, fetchBuiltInCMap, useCMap) {
27779    return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function (newCMap) {
27780      cMap.useCMap = newCMap;
27781      if (cMap.numCodespaceRanges === 0) {
27782        var useCodespaceRanges = cMap.useCMap.codespaceRanges;
27783        for (var i = 0; i < useCodespaceRanges.length; i++) {
27784          cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();
27785        }
27786        cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;
27787      }
27788      cMap.useCMap.forEach(function (key, value) {
27789        if (!cMap.contains(key)) {
27790          cMap.mapOne(key, cMap.useCMap.lookup(key));
27791        }
27792      });
27793      return cMap;
27794    });
27795  }
27796  function createBuiltInCMap(name, fetchBuiltInCMap) {
27797    if (name === 'Identity-H') {
27798      return Promise.resolve(new IdentityCMap(false, 2));
27799    } else if (name === 'Identity-V') {
27800      return Promise.resolve(new IdentityCMap(true, 2));
27801    }
27802    if (!BUILT_IN_CMAPS.includes(name)) {
27803      return Promise.reject(new Error('Unknown CMap name: ' + name));
27804    }
27805    if (!fetchBuiltInCMap) {
27806      return Promise.reject(new Error('Built-in CMap parameters are not provided.'));
27807    }
27808    return fetchBuiltInCMap(name).then(function (data) {
27809      var cMapData = data.cMapData,
27810          compressionType = data.compressionType;
27811      var cMap = new CMap(true);
27812      if (compressionType === _util.CMapCompressionType.BINARY) {
27813        return new BinaryCMapReader().process(cMapData, cMap, function (useCMap) {
27814          return extendCMap(cMap, fetchBuiltInCMap, useCMap);
27815        });
27816      }
27817      if (compressionType === _util.CMapCompressionType.NONE) {
27818        var lexer = new _parser.Lexer(new _stream.Stream(cMapData));
27819        return parseCMap(cMap, lexer, fetchBuiltInCMap, null);
27820      }
27821      return Promise.reject(new Error('TODO: Only BINARY/NONE CMap compression is currently supported.'));
27822    });
27823  }
27824  return {
27825    create: function create(params) {
27826      var encoding = params.encoding;
27827      var fetchBuiltInCMap = params.fetchBuiltInCMap;
27828      var useCMap = params.useCMap;
27829      if ((0, _primitives.isName)(encoding)) {
27830        return createBuiltInCMap(encoding.name, fetchBuiltInCMap);
27831      } else if ((0, _primitives.isStream)(encoding)) {
27832        var cMap = new CMap();
27833        var lexer = new _parser.Lexer(encoding);
27834        return parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap).then(function (parsedCMap) {
27835          if (parsedCMap.isIdentityCMap) {
27836            return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);
27837          }
27838          return parsedCMap;
27839        });
27840      }
27841      return Promise.reject(new Error('Encoding required.'));
27842    }
27843  };
27844}();
27845exports.CMap = CMap;
27846exports.IdentityCMap = IdentityCMap;
27847exports.CMapFactory = CMapFactory;
27848
27849/***/ }),
27850/* 156 */
27851/***/ (function(module, exports, __w_pdfjs_require__) {
27852
27853"use strict";
27854
27855
27856Object.defineProperty(exports, "__esModule", {
27857  value: true
27858});
27859exports.getFontType = exports.IdentityToUnicodeMap = exports.ToUnicodeMap = exports.FontFlags = exports.Font = exports.ErrorFont = exports.SEAC_ANALYSIS_ENABLED = undefined;
27860
27861var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
27862
27863var _util = __w_pdfjs_require__(2);
27864
27865var _cff_parser = __w_pdfjs_require__(157);
27866
27867var _glyphlist = __w_pdfjs_require__(160);
27868
27869var _encodings = __w_pdfjs_require__(159);
27870
27871var _standard_fonts = __w_pdfjs_require__(161);
27872
27873var _unicode = __w_pdfjs_require__(162);
27874
27875var _font_renderer = __w_pdfjs_require__(163);
27876
27877var _cmap = __w_pdfjs_require__(155);
27878
27879var _stream = __w_pdfjs_require__(140);
27880
27881var _type1_parser = __w_pdfjs_require__(164);
27882
27883var PRIVATE_USE_AREAS = [[0xE000, 0xF8FF], [0x100000, 0x10FFFD]];
27884var PDF_GLYPH_SPACE_UNITS = 1000;
27885var SEAC_ANALYSIS_ENABLED = true;
27886var FontFlags = {
27887  FixedPitch: 1,
27888  Serif: 2,
27889  Symbolic: 4,
27890  Script: 8,
27891  Nonsymbolic: 32,
27892  Italic: 64,
27893  AllCap: 65536,
27894  SmallCap: 131072,
27895  ForceBold: 262144
27896};
27897var MacStandardGlyphOrdering = ['.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', 'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', 'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter', 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', 'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];
27898function adjustWidths(properties) {
27899  if (!properties.fontMatrix) {
27900    return;
27901  }
27902  if (properties.fontMatrix[0] === _util.FONT_IDENTITY_MATRIX[0]) {
27903    return;
27904  }
27905  var scale = 0.001 / properties.fontMatrix[0];
27906  var glyphsWidths = properties.widths;
27907  for (var glyph in glyphsWidths) {
27908    glyphsWidths[glyph] *= scale;
27909  }
27910  properties.defaultWidth *= scale;
27911}
27912function adjustToUnicode(properties, builtInEncoding) {
27913  if (properties.hasIncludedToUnicodeMap) {
27914    return;
27915  }
27916  if (properties.hasEncoding) {
27917    return;
27918  }
27919  if (builtInEncoding === properties.defaultEncoding) {
27920    return;
27921  }
27922  if (properties.toUnicode instanceof IdentityToUnicodeMap) {
27923    return;
27924  }
27925  var toUnicode = [],
27926      glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
27927  for (var charCode in builtInEncoding) {
27928    var glyphName = builtInEncoding[charCode];
27929    var unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
27930    if (unicode !== -1) {
27931      toUnicode[charCode] = String.fromCharCode(unicode);
27932    }
27933  }
27934  properties.toUnicode.amend(toUnicode);
27935}
27936function getFontType(type, subtype) {
27937  switch (type) {
27938    case 'Type1':
27939      return subtype === 'Type1C' ? _util.FontType.TYPE1C : _util.FontType.TYPE1;
27940    case 'CIDFontType0':
27941      return subtype === 'CIDFontType0C' ? _util.FontType.CIDFONTTYPE0C : _util.FontType.CIDFONTTYPE0;
27942    case 'OpenType':
27943      return _util.FontType.OPENTYPE;
27944    case 'TrueType':
27945      return _util.FontType.TRUETYPE;
27946    case 'CIDFontType2':
27947      return _util.FontType.CIDFONTTYPE2;
27948    case 'MMType1':
27949      return _util.FontType.MMTYPE1;
27950    case 'Type0':
27951      return _util.FontType.TYPE0;
27952    default:
27953      return _util.FontType.UNKNOWN;
27954  }
27955}
27956function recoverGlyphName(name, glyphsUnicodeMap) {
27957  if (glyphsUnicodeMap[name] !== undefined) {
27958    return name;
27959  }
27960  var unicode = (0, _unicode.getUnicodeForGlyph)(name, glyphsUnicodeMap);
27961  if (unicode !== -1) {
27962    for (var key in glyphsUnicodeMap) {
27963      if (glyphsUnicodeMap[key] === unicode) {
27964        return key;
27965      }
27966    }
27967  }
27968  (0, _util.info)('Unable to recover a standard glyph name for: ' + name);
27969  return name;
27970}
27971var Glyph = function GlyphClosure() {
27972  function Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {
27973    this.fontChar = fontChar;
27974    this.unicode = unicode;
27975    this.accent = accent;
27976    this.width = width;
27977    this.vmetric = vmetric;
27978    this.operatorListId = operatorListId;
27979    this.isSpace = isSpace;
27980    this.isInFont = isInFont;
27981  }
27982  Glyph.prototype.matchesForCache = function (fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {
27983    return this.fontChar === fontChar && this.unicode === unicode && this.accent === accent && this.width === width && this.vmetric === vmetric && this.operatorListId === operatorListId && this.isSpace === isSpace && this.isInFont === isInFont;
27984  };
27985  return Glyph;
27986}();
27987var ToUnicodeMap = function ToUnicodeMapClosure() {
27988  function ToUnicodeMap() {
27989    var cmap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
27990
27991    this._map = cmap;
27992  }
27993  ToUnicodeMap.prototype = {
27994    get length() {
27995      return this._map.length;
27996    },
27997    forEach: function forEach(callback) {
27998      for (var charCode in this._map) {
27999        callback(charCode, this._map[charCode].charCodeAt(0));
28000      }
28001    },
28002    has: function has(i) {
28003      return this._map[i] !== undefined;
28004    },
28005    get: function get(i) {
28006      return this._map[i];
28007    },
28008    charCodeOf: function charCodeOf(value) {
28009      var map = this._map;
28010      if (map.length <= 0x10000) {
28011        return map.indexOf(value);
28012      }
28013      for (var charCode in map) {
28014        if (map[charCode] === value) {
28015          return charCode | 0;
28016        }
28017      }
28018      return -1;
28019    },
28020    amend: function amend(map) {
28021      for (var charCode in map) {
28022        this._map[charCode] = map[charCode];
28023      }
28024    }
28025  };
28026  return ToUnicodeMap;
28027}();
28028var IdentityToUnicodeMap = function IdentityToUnicodeMapClosure() {
28029  function IdentityToUnicodeMap(firstChar, lastChar) {
28030    this.firstChar = firstChar;
28031    this.lastChar = lastChar;
28032  }
28033  IdentityToUnicodeMap.prototype = {
28034    get length() {
28035      return this.lastChar + 1 - this.firstChar;
28036    },
28037    forEach: function forEach(callback) {
28038      for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) {
28039        callback(i, i);
28040      }
28041    },
28042    has: function has(i) {
28043      return this.firstChar <= i && i <= this.lastChar;
28044    },
28045    get: function get(i) {
28046      if (this.firstChar <= i && i <= this.lastChar) {
28047        return String.fromCharCode(i);
28048      }
28049      return undefined;
28050    },
28051    charCodeOf: function charCodeOf(v) {
28052      return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1;
28053    },
28054    amend: function amend(map) {
28055      (0, _util.unreachable)('Should not call amend()');
28056    }
28057  };
28058  return IdentityToUnicodeMap;
28059}();
28060var OpenTypeFileBuilder = function OpenTypeFileBuilderClosure() {
28061  function writeInt16(dest, offset, num) {
28062    dest[offset] = num >> 8 & 0xFF;
28063    dest[offset + 1] = num & 0xFF;
28064  }
28065  function writeInt32(dest, offset, num) {
28066    dest[offset] = num >> 24 & 0xFF;
28067    dest[offset + 1] = num >> 16 & 0xFF;
28068    dest[offset + 2] = num >> 8 & 0xFF;
28069    dest[offset + 3] = num & 0xFF;
28070  }
28071  function writeData(dest, offset, data) {
28072    var i, ii;
28073    if (data instanceof Uint8Array) {
28074      dest.set(data, offset);
28075    } else if (typeof data === 'string') {
28076      for (i = 0, ii = data.length; i < ii; i++) {
28077        dest[offset++] = data.charCodeAt(i) & 0xFF;
28078      }
28079    } else {
28080      for (i = 0, ii = data.length; i < ii; i++) {
28081        dest[offset++] = data[i] & 0xFF;
28082      }
28083    }
28084  }
28085  function OpenTypeFileBuilder(sfnt) {
28086    this.sfnt = sfnt;
28087    this.tables = Object.create(null);
28088  }
28089  OpenTypeFileBuilder.getSearchParams = function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) {
28090    var maxPower2 = 1,
28091        log2 = 0;
28092    while ((maxPower2 ^ entriesCount) > maxPower2) {
28093      maxPower2 <<= 1;
28094      log2++;
28095    }
28096    var searchRange = maxPower2 * entrySize;
28097    return {
28098      range: searchRange,
28099      entry: log2,
28100      rangeShift: entrySize * entriesCount - searchRange
28101    };
28102  };
28103  var OTF_HEADER_SIZE = 12;
28104  var OTF_TABLE_ENTRY_SIZE = 16;
28105  OpenTypeFileBuilder.prototype = {
28106    toArray: function OpenTypeFileBuilder_toArray() {
28107      var sfnt = this.sfnt;
28108      var tables = this.tables;
28109      var tablesNames = Object.keys(tables);
28110      tablesNames.sort();
28111      var numTables = tablesNames.length;
28112      var i, j, jj, table, tableName;
28113      var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;
28114      var tableOffsets = [offset];
28115      for (i = 0; i < numTables; i++) {
28116        table = tables[tablesNames[i]];
28117        var paddedLength = (table.length + 3 & ~3) >>> 0;
28118        offset += paddedLength;
28119        tableOffsets.push(offset);
28120      }
28121      var file = new Uint8Array(offset);
28122      for (i = 0; i < numTables; i++) {
28123        table = tables[tablesNames[i]];
28124        writeData(file, tableOffsets[i], table);
28125      }
28126      if (sfnt === 'true') {
28127        sfnt = (0, _util.string32)(0x00010000);
28128      }
28129      file[0] = sfnt.charCodeAt(0) & 0xFF;
28130      file[1] = sfnt.charCodeAt(1) & 0xFF;
28131      file[2] = sfnt.charCodeAt(2) & 0xFF;
28132      file[3] = sfnt.charCodeAt(3) & 0xFF;
28133      writeInt16(file, 4, numTables);
28134      var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);
28135      writeInt16(file, 6, searchParams.range);
28136      writeInt16(file, 8, searchParams.entry);
28137      writeInt16(file, 10, searchParams.rangeShift);
28138      offset = OTF_HEADER_SIZE;
28139      for (i = 0; i < numTables; i++) {
28140        tableName = tablesNames[i];
28141        file[offset] = tableName.charCodeAt(0) & 0xFF;
28142        file[offset + 1] = tableName.charCodeAt(1) & 0xFF;
28143        file[offset + 2] = tableName.charCodeAt(2) & 0xFF;
28144        file[offset + 3] = tableName.charCodeAt(3) & 0xFF;
28145        var checksum = 0;
28146        for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {
28147          var quad = (0, _util.readUint32)(file, j);
28148          checksum = checksum + quad >>> 0;
28149        }
28150        writeInt32(file, offset + 4, checksum);
28151        writeInt32(file, offset + 8, tableOffsets[i]);
28152        writeInt32(file, offset + 12, tables[tableName].length);
28153        offset += OTF_TABLE_ENTRY_SIZE;
28154      }
28155      return file;
28156    },
28157    addTable: function OpenTypeFileBuilder_addTable(tag, data) {
28158      if (tag in this.tables) {
28159        throw new Error('Table ' + tag + ' already exists');
28160      }
28161      this.tables[tag] = data;
28162    }
28163  };
28164  return OpenTypeFileBuilder;
28165}();
28166var Font = function FontClosure() {
28167  function Font(name, file, properties) {
28168    var charCode;
28169    this.name = name;
28170    this.loadedName = properties.loadedName;
28171    this.isType3Font = properties.isType3Font;
28172    this.sizes = [];
28173    this.missingFile = false;
28174    this.glyphCache = Object.create(null);
28175    this.isSerifFont = !!(properties.flags & FontFlags.Serif);
28176    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);
28177    this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);
28178    var type = properties.type;
28179    var subtype = properties.subtype;
28180    this.type = type;
28181    this.subtype = subtype;
28182    this.fallbackName = this.isMonospace ? 'monospace' : this.isSerifFont ? 'serif' : 'sans-serif';
28183    this.differences = properties.differences;
28184    this.widths = properties.widths;
28185    this.defaultWidth = properties.defaultWidth;
28186    this.composite = properties.composite;
28187    this.wideChars = properties.wideChars;
28188    this.cMap = properties.cMap;
28189    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;
28190    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;
28191    this.fontMatrix = properties.fontMatrix;
28192    this.bbox = properties.bbox;
28193    this.defaultEncoding = properties.defaultEncoding;
28194    this.toUnicode = properties.toUnicode;
28195    this.fallbackToUnicode = properties.fallbackToUnicode || new ToUnicodeMap();
28196    this.toFontChar = [];
28197    if (properties.type === 'Type3') {
28198      for (charCode = 0; charCode < 256; charCode++) {
28199        this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode];
28200      }
28201      this.fontType = _util.FontType.TYPE3;
28202      return;
28203    }
28204    this.cidEncoding = properties.cidEncoding;
28205    this.vertical = properties.vertical;
28206    if (this.vertical) {
28207      this.vmetrics = properties.vmetrics;
28208      this.defaultVMetrics = properties.defaultVMetrics;
28209    }
28210    if (!file || file.isEmpty) {
28211      if (file) {
28212        (0, _util.warn)('Font file is empty in "' + name + '" (' + this.loadedName + ')');
28213      }
28214      this.fallbackToSystemFont();
28215      return;
28216    }
28217
28218    var _getFontFileType = getFontFileType(file, properties);
28219
28220    var _getFontFileType2 = _slicedToArray(_getFontFileType, 2);
28221
28222    type = _getFontFileType2[0];
28223    subtype = _getFontFileType2[1];
28224
28225    if (type !== this.type || subtype !== this.subtype) {
28226      (0, _util.info)('Inconsistent font file Type/SubType, expected: ' + (this.type + '/' + this.subtype + ' but found: ' + type + '/' + subtype + '.'));
28227    }
28228    try {
28229      var data;
28230      switch (type) {
28231        case 'MMType1':
28232          (0, _util.info)('MMType1 font (' + name + '), falling back to Type1.');
28233        case 'Type1':
28234        case 'CIDFontType0':
28235          this.mimetype = 'font/opentype';
28236          var cff = subtype === 'Type1C' || subtype === 'CIDFontType0C' ? new CFFFont(file, properties) : new Type1Font(name, file, properties);
28237          adjustWidths(properties);
28238          data = this.convert(name, cff, properties);
28239          break;
28240        case 'OpenType':
28241        case 'TrueType':
28242        case 'CIDFontType2':
28243          this.mimetype = 'font/opentype';
28244          data = this.checkAndRepair(name, file, properties);
28245          if (this.isOpenType) {
28246            adjustWidths(properties);
28247            type = 'OpenType';
28248          }
28249          break;
28250        default:
28251          throw new _util.FormatError('Font ' + type + ' is not supported');
28252      }
28253    } catch (e) {
28254      (0, _util.warn)(e);
28255      this.fallbackToSystemFont();
28256      return;
28257    }
28258    this.data = data;
28259    this.fontType = getFontType(type, subtype);
28260    this.fontMatrix = properties.fontMatrix;
28261    this.widths = properties.widths;
28262    this.defaultWidth = properties.defaultWidth;
28263    this.toUnicode = properties.toUnicode;
28264    this.encoding = properties.baseEncoding;
28265    this.seacMap = properties.seacMap;
28266  }
28267  Font.getFontID = function () {
28268    var ID = 1;
28269    return function Font_getFontID() {
28270      return String(ID++);
28271    };
28272  }();
28273  function int16(b0, b1) {
28274    return (b0 << 8) + b1;
28275  }
28276  function writeSignedInt16(bytes, index, value) {
28277    bytes[index + 1] = value;
28278    bytes[index] = value >>> 8;
28279  }
28280  function signedInt16(b0, b1) {
28281    var value = (b0 << 8) + b1;
28282    return value & 1 << 15 ? value - 0x10000 : value;
28283  }
28284  function int32(b0, b1, b2, b3) {
28285    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
28286  }
28287  function string16(value) {
28288    return String.fromCharCode(value >> 8 & 0xff, value & 0xff);
28289  }
28290  function safeString16(value) {
28291    value = value > 0x7FFF ? 0x7FFF : value < -0x8000 ? -0x8000 : value;
28292    return String.fromCharCode(value >> 8 & 0xff, value & 0xff);
28293  }
28294  function isTrueTypeFile(file) {
28295    var header = file.peekBytes(4);
28296    return (0, _util.readUint32)(header, 0) === 0x00010000 || (0, _util.bytesToString)(header) === 'true';
28297  }
28298  function isTrueTypeCollectionFile(file) {
28299    var header = file.peekBytes(4);
28300    return (0, _util.bytesToString)(header) === 'ttcf';
28301  }
28302  function isOpenTypeFile(file) {
28303    var header = file.peekBytes(4);
28304    return (0, _util.bytesToString)(header) === 'OTTO';
28305  }
28306  function isType1File(file) {
28307    var header = file.peekBytes(2);
28308    if (header[0] === 0x25 && header[1] === 0x21) {
28309      return true;
28310    }
28311    if (header[0] === 0x80 && header[1] === 0x01) {
28312      return true;
28313    }
28314    return false;
28315  }
28316  function isCFFFile(file) {
28317    var header = file.peekBytes(4);
28318    if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) {
28319      return true;
28320    }
28321    return false;
28322  }
28323  function getFontFileType(file, _ref) {
28324    var type = _ref.type,
28325        subtype = _ref.subtype,
28326        composite = _ref.composite;
28327
28328    var fileType = void 0,
28329        fileSubtype = void 0;
28330    if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {
28331      if (composite) {
28332        fileType = 'CIDFontType2';
28333      } else {
28334        fileType = 'TrueType';
28335      }
28336    } else if (isOpenTypeFile(file)) {
28337      if (composite) {
28338        fileType = 'CIDFontType2';
28339      } else {
28340        fileType = 'OpenType';
28341      }
28342    } else if (isType1File(file)) {
28343      if (composite) {
28344        fileType = 'CIDFontType0';
28345      } else {
28346        fileType = type === 'MMType1' ? 'MMType1' : 'Type1';
28347      }
28348    } else if (isCFFFile(file)) {
28349      if (composite) {
28350        fileType = 'CIDFontType0';
28351        fileSubtype = 'CIDFontType0C';
28352      } else {
28353        fileType = type === 'MMType1' ? 'MMType1' : 'Type1';
28354        fileSubtype = 'Type1C';
28355      }
28356    } else {
28357      (0, _util.warn)('getFontFileType: Unable to detect correct font file Type/Subtype.');
28358      fileType = type;
28359      fileSubtype = subtype;
28360    }
28361    return [fileType, fileSubtype];
28362  }
28363  function buildToFontChar(encoding, glyphsUnicodeMap, differences) {
28364    var toFontChar = [],
28365        unicode;
28366    for (var i = 0, ii = encoding.length; i < ii; i++) {
28367      unicode = (0, _unicode.getUnicodeForGlyph)(encoding[i], glyphsUnicodeMap);
28368      if (unicode !== -1) {
28369        toFontChar[i] = unicode;
28370      }
28371    }
28372    for (var charCode in differences) {
28373      unicode = (0, _unicode.getUnicodeForGlyph)(differences[charCode], glyphsUnicodeMap);
28374      if (unicode !== -1) {
28375        toFontChar[+charCode] = unicode;
28376      }
28377    }
28378    return toFontChar;
28379  }
28380  function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {
28381    var newMap = Object.create(null);
28382    var toFontChar = [];
28383    var privateUseAreaIndex = 0;
28384    var nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];
28385    var privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];
28386    for (var originalCharCode in charCodeToGlyphId) {
28387      originalCharCode |= 0;
28388      var glyphId = charCodeToGlyphId[originalCharCode];
28389      if (!hasGlyph(glyphId)) {
28390        continue;
28391      }
28392      if (nextAvailableFontCharCode > privateUseOffetEnd) {
28393        privateUseAreaIndex++;
28394        if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {
28395          (0, _util.warn)('Ran out of space in font private use area.');
28396          break;
28397        }
28398        nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];
28399        privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];
28400      }
28401      var fontCharCode = nextAvailableFontCharCode++;
28402      if (glyphId === 0) {
28403        glyphId = newGlyphZeroId;
28404      }
28405      newMap[fontCharCode] = glyphId;
28406      toFontChar[originalCharCode] = fontCharCode;
28407    }
28408    return {
28409      toFontChar: toFontChar,
28410      charCodeToGlyphId: newMap,
28411      nextAvailableFontCharCode: nextAvailableFontCharCode
28412    };
28413  }
28414  function getRanges(glyphs, numGlyphs) {
28415    var codes = [];
28416    for (var charCode in glyphs) {
28417      if (glyphs[charCode] >= numGlyphs) {
28418        continue;
28419      }
28420      codes.push({
28421        fontCharCode: charCode | 0,
28422        glyphId: glyphs[charCode]
28423      });
28424    }
28425    if (codes.length === 0) {
28426      codes.push({
28427        fontCharCode: 0,
28428        glyphId: 0
28429      });
28430    }
28431    codes.sort(function fontGetRangesSort(a, b) {
28432      return a.fontCharCode - b.fontCharCode;
28433    });
28434    var ranges = [];
28435    var length = codes.length;
28436    for (var n = 0; n < length;) {
28437      var start = codes[n].fontCharCode;
28438      var codeIndices = [codes[n].glyphId];
28439      ++n;
28440      var end = start;
28441      while (n < length && end + 1 === codes[n].fontCharCode) {
28442        codeIndices.push(codes[n].glyphId);
28443        ++end;
28444        ++n;
28445        if (end === 0xFFFF) {
28446          break;
28447        }
28448      }
28449      ranges.push([start, end, codeIndices]);
28450    }
28451    return ranges;
28452  }
28453  function createCmapTable(glyphs, numGlyphs) {
28454    var ranges = getRanges(glyphs, numGlyphs);
28455    var numTables = ranges[ranges.length - 1][1] > 0xFFFF ? 2 : 1;
28456    var cmap = '\x00\x00' + string16(numTables) + '\x00\x03' + '\x00\x01' + (0, _util.string32)(4 + numTables * 8);
28457    var i, ii, j, jj;
28458    for (i = ranges.length - 1; i >= 0; --i) {
28459      if (ranges[i][0] <= 0xFFFF) {
28460        break;
28461      }
28462    }
28463    var bmpLength = i + 1;
28464    if (ranges[i][0] < 0xFFFF && ranges[i][1] === 0xFFFF) {
28465      ranges[i][1] = 0xFFFE;
28466    }
28467    var trailingRangesCount = ranges[i][1] < 0xFFFF ? 1 : 0;
28468    var segCount = bmpLength + trailingRangesCount;
28469    var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);
28470    var startCount = '';
28471    var endCount = '';
28472    var idDeltas = '';
28473    var idRangeOffsets = '';
28474    var glyphsIds = '';
28475    var bias = 0;
28476    var range, start, end, codes;
28477    for (i = 0, ii = bmpLength; i < ii; i++) {
28478      range = ranges[i];
28479      start = range[0];
28480      end = range[1];
28481      startCount += string16(start);
28482      endCount += string16(end);
28483      codes = range[2];
28484      var contiguous = true;
28485      for (j = 1, jj = codes.length; j < jj; ++j) {
28486        if (codes[j] !== codes[j - 1] + 1) {
28487          contiguous = false;
28488          break;
28489        }
28490      }
28491      if (!contiguous) {
28492        var offset = (segCount - i) * 2 + bias * 2;
28493        bias += end - start + 1;
28494        idDeltas += string16(0);
28495        idRangeOffsets += string16(offset);
28496        for (j = 0, jj = codes.length; j < jj; ++j) {
28497          glyphsIds += string16(codes[j]);
28498        }
28499      } else {
28500        var startCode = codes[0];
28501        idDeltas += string16(startCode - start & 0xFFFF);
28502        idRangeOffsets += string16(0);
28503      }
28504    }
28505    if (trailingRangesCount > 0) {
28506      endCount += '\xFF\xFF';
28507      startCount += '\xFF\xFF';
28508      idDeltas += '\x00\x01';
28509      idRangeOffsets += '\x00\x00';
28510    }
28511    var format314 = '\x00\x00' + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + '\x00\x00' + startCount + idDeltas + idRangeOffsets + glyphsIds;
28512    var format31012 = '';
28513    var header31012 = '';
28514    if (numTables > 1) {
28515      cmap += '\x00\x03' + '\x00\x0A' + (0, _util.string32)(4 + numTables * 8 + 4 + format314.length);
28516      format31012 = '';
28517      for (i = 0, ii = ranges.length; i < ii; i++) {
28518        range = ranges[i];
28519        start = range[0];
28520        codes = range[2];
28521        var code = codes[0];
28522        for (j = 1, jj = codes.length; j < jj; ++j) {
28523          if (codes[j] !== codes[j - 1] + 1) {
28524            end = range[0] + j - 1;
28525            format31012 += (0, _util.string32)(start) + (0, _util.string32)(end) + (0, _util.string32)(code);
28526            start = end + 1;
28527            code = codes[j];
28528          }
28529        }
28530        format31012 += (0, _util.string32)(start) + (0, _util.string32)(range[1]) + (0, _util.string32)(code);
28531      }
28532      header31012 = '\x00\x0C' + '\x00\x00' + (0, _util.string32)(format31012.length + 16) + '\x00\x00\x00\x00' + (0, _util.string32)(format31012.length / 12);
28533    }
28534    return cmap + '\x00\x04' + string16(format314.length + 4) + format314 + header31012 + format31012;
28535  }
28536  function validateOS2Table(os2) {
28537    var stream = new _stream.Stream(os2.data);
28538    var version = stream.getUint16();
28539    stream.getBytes(60);
28540    var selection = stream.getUint16();
28541    if (version < 4 && selection & 0x0300) {
28542      return false;
28543    }
28544    var firstChar = stream.getUint16();
28545    var lastChar = stream.getUint16();
28546    if (firstChar > lastChar) {
28547      return false;
28548    }
28549    stream.getBytes(6);
28550    var usWinAscent = stream.getUint16();
28551    if (usWinAscent === 0) {
28552      return false;
28553    }
28554    os2.data[8] = os2.data[9] = 0;
28555    return true;
28556  }
28557  function createOS2Table(properties, charstrings, override) {
28558    override = override || {
28559      unitsPerEm: 0,
28560      yMax: 0,
28561      yMin: 0,
28562      ascent: 0,
28563      descent: 0
28564    };
28565    var ulUnicodeRange1 = 0;
28566    var ulUnicodeRange2 = 0;
28567    var ulUnicodeRange3 = 0;
28568    var ulUnicodeRange4 = 0;
28569    var firstCharIndex = null;
28570    var lastCharIndex = 0;
28571    if (charstrings) {
28572      for (var code in charstrings) {
28573        code |= 0;
28574        if (firstCharIndex > code || !firstCharIndex) {
28575          firstCharIndex = code;
28576        }
28577        if (lastCharIndex < code) {
28578          lastCharIndex = code;
28579        }
28580        var position = (0, _unicode.getUnicodeRangeFor)(code);
28581        if (position < 32) {
28582          ulUnicodeRange1 |= 1 << position;
28583        } else if (position < 64) {
28584          ulUnicodeRange2 |= 1 << position - 32;
28585        } else if (position < 96) {
28586          ulUnicodeRange3 |= 1 << position - 64;
28587        } else if (position < 123) {
28588          ulUnicodeRange4 |= 1 << position - 96;
28589        } else {
28590          throw new _util.FormatError('Unicode ranges Bits > 123 are reserved for internal usage');
28591        }
28592      }
28593      if (lastCharIndex > 0xFFFF) {
28594        lastCharIndex = 0xFFFF;
28595      }
28596    } else {
28597      firstCharIndex = 0;
28598      lastCharIndex = 255;
28599    }
28600    var bbox = properties.bbox || [0, 0, 0, 0];
28601    var unitsPerEm = override.unitsPerEm || 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];
28602    var scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS;
28603    var typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3]));
28604    var typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1]));
28605    if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {
28606      typoDescent = -typoDescent;
28607    }
28608    var winAscent = override.yMax || typoAscent;
28609    var winDescent = -override.yMin || -typoDescent;
28610    return '\x00\x03' + '\x02\x24' + '\x01\xF4' + '\x00\x05' + '\x00\x00' + '\x02\x8A' + '\x02\xBB' + '\x00\x00' + '\x00\x8C' + '\x02\x8A' + '\x02\xBB' + '\x00\x00' + '\x01\xDF' + '\x00\x31' + '\x01\x02' + '\x00\x00' + '\x00\x00\x06' + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + '\x00\x00\x00\x00\x00\x00' + (0, _util.string32)(ulUnicodeRange1) + (0, _util.string32)(ulUnicodeRange2) + (0, _util.string32)(ulUnicodeRange3) + (0, _util.string32)(ulUnicodeRange4) + '\x2A\x32\x31\x2A' + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + '\x00\x64' + string16(winAscent) + string16(winDescent) + '\x00\x00\x00\x00' + '\x00\x00\x00\x00' + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + '\x00\x03';
28611  }
28612  function createPostTable(properties) {
28613    var angle = Math.floor(properties.italicAngle * Math.pow(2, 16));
28614    return '\x00\x03\x00\x00' + (0, _util.string32)(angle) + '\x00\x00' + '\x00\x00' + (0, _util.string32)(properties.fixedPitch) + '\x00\x00\x00\x00' + '\x00\x00\x00\x00' + '\x00\x00\x00\x00' + '\x00\x00\x00\x00';
28615  }
28616  function createNameTable(name, proto) {
28617    if (!proto) {
28618      proto = [[], []];
28619    }
28620    var strings = [proto[0][0] || 'Original licence', proto[0][1] || name, proto[0][2] || 'Unknown', proto[0][3] || 'uniqueID', proto[0][4] || name, proto[0][5] || 'Version 0.11', proto[0][6] || '', proto[0][7] || 'Unknown', proto[0][8] || 'Unknown', proto[0][9] || 'Unknown'];
28621    var stringsUnicode = [];
28622    var i, ii, j, jj, str;
28623    for (i = 0, ii = strings.length; i < ii; i++) {
28624      str = proto[1][i] || strings[i];
28625      var strBufUnicode = [];
28626      for (j = 0, jj = str.length; j < jj; j++) {
28627        strBufUnicode.push(string16(str.charCodeAt(j)));
28628      }
28629      stringsUnicode.push(strBufUnicode.join(''));
28630    }
28631    var names = [strings, stringsUnicode];
28632    var platforms = ['\x00\x01', '\x00\x03'];
28633    var encodings = ['\x00\x00', '\x00\x01'];
28634    var languages = ['\x00\x00', '\x04\x09'];
28635    var namesRecordCount = strings.length * platforms.length;
28636    var nameTable = '\x00\x00' + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6);
28637    var strOffset = 0;
28638    for (i = 0, ii = platforms.length; i < ii; i++) {
28639      var strs = names[i];
28640      for (j = 0, jj = strs.length; j < jj; j++) {
28641        str = strs[j];
28642        var nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset);
28643        nameTable += nameRecord;
28644        strOffset += str.length;
28645      }
28646    }
28647    nameTable += strings.join('') + stringsUnicode.join('');
28648    return nameTable;
28649  }
28650  Font.prototype = {
28651    name: null,
28652    font: null,
28653    mimetype: null,
28654    encoding: null,
28655    get renderer() {
28656      var renderer = _font_renderer.FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);
28657      return (0, _util.shadow)(this, 'renderer', renderer);
28658    },
28659    exportData: function Font_exportData() {
28660      var data = {};
28661      for (var i in this) {
28662        if (this.hasOwnProperty(i)) {
28663          data[i] = this[i];
28664        }
28665      }
28666      return data;
28667    },
28668    fallbackToSystemFont: function Font_fallbackToSystemFont() {
28669      var _this = this;
28670
28671      this.missingFile = true;
28672      var charCode, unicode;
28673      var name = this.name;
28674      var type = this.type;
28675      var subtype = this.subtype;
28676      var fontName = name.replace(/[,_]/g, '-');
28677      var stdFontMap = (0, _standard_fonts.getStdFontMap)(),
28678          nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)();
28679      var isStandardFont = !!stdFontMap[fontName] || !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);
28680      fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;
28681      this.bold = fontName.search(/bold/gi) !== -1;
28682      this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;
28683      this.black = name.search(/Black/g) !== -1;
28684      this.remeasure = Object.keys(this.widths).length > 0;
28685      if (isStandardFont && type === 'CIDFontType2' && this.cidEncoding.indexOf('Identity-') === 0) {
28686        var GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)();
28687        var map = [];
28688        for (charCode in GlyphMapForStandardFonts) {
28689          map[+charCode] = GlyphMapForStandardFonts[charCode];
28690        }
28691        if (/Arial-?Black/i.test(name)) {
28692          var SupplementalGlyphMapForArialBlack = (0, _standard_fonts.getSupplementalGlyphMapForArialBlack)();
28693          for (charCode in SupplementalGlyphMapForArialBlack) {
28694            map[+charCode] = SupplementalGlyphMapForArialBlack[charCode];
28695          }
28696        } else if (/Calibri/i.test(name)) {
28697          var SupplementalGlyphMapForCalibri = (0, _standard_fonts.getSupplementalGlyphMapForCalibri)();
28698          for (charCode in SupplementalGlyphMapForCalibri) {
28699            map[+charCode] = SupplementalGlyphMapForCalibri[charCode];
28700          }
28701        }
28702        var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap;
28703        if (!isIdentityUnicode) {
28704          this.toUnicode.forEach(function (charCode, unicodeCharCode) {
28705            map[+charCode] = unicodeCharCode;
28706          });
28707        }
28708        this.toFontChar = map;
28709        this.toUnicode = new ToUnicodeMap(map);
28710      } else if (/Symbol/i.test(fontName)) {
28711        this.toFontChar = buildToFontChar(_encodings.SymbolSetEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences);
28712      } else if (/Dingbats/i.test(fontName)) {
28713        if (/Wingdings/i.test(name)) {
28714          (0, _util.warn)('Non-embedded Wingdings font, falling back to ZapfDingbats.');
28715        }
28716        this.toFontChar = buildToFontChar(_encodings.ZapfDingbatsEncoding, (0, _glyphlist.getDingbatsGlyphsUnicode)(), this.differences);
28717      } else if (isStandardFont) {
28718        this.toFontChar = buildToFontChar(this.defaultEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences);
28719      } else {
28720        var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
28721        this.toUnicode.forEach(function (charCode, unicodeCharCode) {
28722          if (!_this.composite) {
28723            var glyphName = _this.differences[charCode] || _this.defaultEncoding[charCode];
28724            unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
28725            if (unicode !== -1) {
28726              unicodeCharCode = unicode;
28727            }
28728          }
28729          _this.toFontChar[charCode] = unicodeCharCode;
28730        });
28731      }
28732      this.loadedName = fontName.split('-')[0];
28733      this.fontType = getFontType(type, subtype);
28734    },
28735    checkAndRepair: function Font_checkAndRepair(name, font, properties) {
28736      var VALID_TABLES = ['OS/2', 'cmap', 'head', 'hhea', 'hmtx', 'maxp', 'name', 'post', 'loca', 'glyf', 'fpgm', 'prep', 'cvt ', 'CFF '];
28737      function readTables(file, numTables) {
28738        var tables = Object.create(null);
28739        tables['OS/2'] = null;
28740        tables['cmap'] = null;
28741        tables['head'] = null;
28742        tables['hhea'] = null;
28743        tables['hmtx'] = null;
28744        tables['maxp'] = null;
28745        tables['name'] = null;
28746        tables['post'] = null;
28747        for (var i = 0; i < numTables; i++) {
28748          var table = readTableEntry(font);
28749          if (!VALID_TABLES.includes(table.tag)) {
28750            continue;
28751          }
28752          if (table.length === 0) {
28753            continue;
28754          }
28755          tables[table.tag] = table;
28756        }
28757        return tables;
28758      }
28759      function readTableEntry(file) {
28760        var tag = (0, _util.bytesToString)(file.getBytes(4));
28761        var checksum = file.getInt32() >>> 0;
28762        var offset = file.getInt32() >>> 0;
28763        var length = file.getInt32() >>> 0;
28764        var previousPosition = file.pos;
28765        file.pos = file.start ? file.start : 0;
28766        file.skip(offset);
28767        var data = file.getBytes(length);
28768        file.pos = previousPosition;
28769        if (tag === 'head') {
28770          data[8] = data[9] = data[10] = data[11] = 0;
28771          data[17] |= 0x20;
28772        }
28773        return {
28774          tag: tag,
28775          checksum: checksum,
28776          length: length,
28777          offset: offset,
28778          data: data
28779        };
28780      }
28781      function readOpenTypeHeader(ttf) {
28782        return {
28783          version: (0, _util.bytesToString)(ttf.getBytes(4)),
28784          numTables: ttf.getUint16(),
28785          searchRange: ttf.getUint16(),
28786          entrySelector: ttf.getUint16(),
28787          rangeShift: ttf.getUint16()
28788        };
28789      }
28790      function readTrueTypeCollectionHeader(ttc) {
28791        var ttcTag = (0, _util.bytesToString)(ttc.getBytes(4));
28792        (0, _util.assert)(ttcTag === 'ttcf', 'Must be a TrueType Collection font.');
28793        var majorVersion = ttc.getUint16();
28794        var minorVersion = ttc.getUint16();
28795        var numFonts = ttc.getInt32() >>> 0;
28796        var offsetTable = [];
28797        for (var i = 0; i < numFonts; i++) {
28798          offsetTable.push(ttc.getInt32() >>> 0);
28799        }
28800        var header = {
28801          ttcTag: ttcTag,
28802          majorVersion: majorVersion,
28803          minorVersion: minorVersion,
28804          numFonts: numFonts,
28805          offsetTable: offsetTable
28806        };
28807        switch (majorVersion) {
28808          case 1:
28809            return header;
28810          case 2:
28811            header.dsigTag = ttc.getInt32() >>> 0;
28812            header.dsigLength = ttc.getInt32() >>> 0;
28813            header.dsigOffset = ttc.getInt32() >>> 0;
28814            return header;
28815        }
28816        throw new _util.FormatError('Invalid TrueType Collection majorVersion: ' + majorVersion + '.');
28817      }
28818      function readTrueTypeCollectionData(ttc, fontName) {
28819        var _readTrueTypeCollecti = readTrueTypeCollectionHeader(ttc),
28820            numFonts = _readTrueTypeCollecti.numFonts,
28821            offsetTable = _readTrueTypeCollecti.offsetTable;
28822
28823        for (var i = 0; i < numFonts; i++) {
28824          ttc.pos = (ttc.start || 0) + offsetTable[i];
28825          var potentialHeader = readOpenTypeHeader(ttc);
28826          var potentialTables = readTables(ttc, potentialHeader.numTables);
28827          if (!potentialTables['name']) {
28828            throw new _util.FormatError('TrueType Collection font must contain a "name" table.');
28829          }
28830          var nameTable = readNameTable(potentialTables['name']);
28831          for (var j = 0, jj = nameTable.length; j < jj; j++) {
28832            for (var k = 0, kk = nameTable[j].length; k < kk; k++) {
28833              var nameEntry = nameTable[j][k];
28834              if (nameEntry && nameEntry.replace(/\s/g, '') === fontName) {
28835                return {
28836                  header: potentialHeader,
28837                  tables: potentialTables
28838                };
28839              }
28840            }
28841          }
28842        }
28843        throw new _util.FormatError('TrueType Collection does not contain "' + fontName + '" font.');
28844      }
28845      function readCmapTable(cmap, font, isSymbolicFont, hasEncoding) {
28846        if (!cmap) {
28847          (0, _util.warn)('No cmap table available.');
28848          return {
28849            platformId: -1,
28850            encodingId: -1,
28851            mappings: [],
28852            hasShortCmap: false
28853          };
28854        }
28855        var segment;
28856        var start = (font.start ? font.start : 0) + cmap.offset;
28857        font.pos = start;
28858        font.getUint16();
28859        var numTables = font.getUint16();
28860        var potentialTable;
28861        var canBreak = false;
vendor: 4,119 bytes, lines 28862-28977
28862        for (var i = 0; i < numTables; i++) {
28863          var platformId = font.getUint16();
28864          var encodingId = font.getUint16();
28865          var offset = font.getInt32() >>> 0;
28866          var useTable = false;
28867          if (potentialTable && potentialTable.platformId === platformId && potentialTable.encodingId === encodingId) {
28868            continue;
28869          }
28870          if (platformId === 0 && encodingId === 0) {
28871            useTable = true;
28872          } else if (platformId === 1 && encodingId === 0) {
28873            useTable = true;
28874          } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) {
28875            useTable = true;
28876            if (!isSymbolicFont) {
28877              canBreak = true;
28878            }
28879          } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {
28880            useTable = true;
28881            canBreak = true;
28882          }
28883          if (useTable) {
28884            potentialTable = {
28885              platformId: platformId,
28886              encodingId: encodingId,
28887              offset: offset
28888            };
28889          }
28890          if (canBreak) {
28891            break;
28892          }
28893        }
28894        if (potentialTable) {
28895          font.pos = start + potentialTable.offset;
28896        }
28897        if (!potentialTable || font.peekByte() === -1) {
28898          (0, _util.warn)('Could not find a preferred cmap table.');
28899          return {
28900            platformId: -1,
28901            encodingId: -1,
28902            mappings: [],
28903            hasShortCmap: false
28904          };
28905        }
28906        var format = font.getUint16();
28907        font.getUint16();
28908        font.getUint16();
28909        var hasShortCmap = false;
28910        var mappings = [];
28911        var j, glyphId;
28912        if (format === 0) {
28913          for (j = 0; j < 256; j++) {
28914            var index = font.getByte();
28915            if (!index) {
28916              continue;
28917            }
28918            mappings.push({
28919              charCode: j,
28920              glyphId: index
28921            });
28922          }
28923          hasShortCmap = true;
28924        } else if (format === 4) {
28925          var segCount = font.getUint16() >> 1;
28926          font.getBytes(6);
28927          var segIndex,
28928              segments = [];
28929          for (segIndex = 0; segIndex < segCount; segIndex++) {
28930            segments.push({ end: font.getUint16() });
28931          }
28932          font.getUint16();
28933          for (segIndex = 0; segIndex < segCount; segIndex++) {
28934            segments[segIndex].start = font.getUint16();
28935          }
28936          for (segIndex = 0; segIndex < segCount; segIndex++) {
28937            segments[segIndex].delta = font.getUint16();
28938          }
28939          var offsetsCount = 0;
28940          for (segIndex = 0; segIndex < segCount; segIndex++) {
28941            segment = segments[segIndex];
28942            var rangeOffset = font.getUint16();
28943            if (!rangeOffset) {
28944              segment.offsetIndex = -1;
28945              continue;
28946            }
28947            var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);
28948            segment.offsetIndex = offsetIndex;
28949            offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1);
28950          }
28951          var offsets = [];
28952          for (j = 0; j < offsetsCount; j++) {
28953            offsets.push(font.getUint16());
28954          }
28955          for (segIndex = 0; segIndex < segCount; segIndex++) {
28956            segment = segments[segIndex];
28957            start = segment.start;
28958            var end = segment.end;
28959            var delta = segment.delta;
28960            offsetIndex = segment.offsetIndex;
28961            for (j = start; j <= end; j++) {
28962              if (j === 0xFFFF) {
28963                continue;
28964              }
28965              glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];
28966              glyphId = glyphId + delta & 0xFFFF;
28967              mappings.push({
28968                charCode: j,
28969                glyphId: glyphId
28970              });
28971            }
28972          }
28973        } else if (format === 6) {
28974          var firstCode = font.getUint16();
28975          var entryCount = font.getUint16();
28976          for (j = 0; j < entryCount; j++) {
28977            glyphId = font.getUint16();
28978            var charCode = firstCode + j;
28979            mappings.push({
28980              charCode: charCode,
28981              glyphId: glyphId
28982            });
28983          }
28984        } else {
28985          (0, _util.warn)('cmap table has unsupported format: ' + format);
28986          return {
28987            platformId: -1,
28988            encodingId: -1,
28989            mappings: [],
28990            hasShortCmap: false
28991          };
28992        }
28993        mappings.sort(function (a, b) {
28994          return a.charCode - b.charCode;
28995        });
28996        for (i = 1; i < mappings.length; i++) {
28997          if (mappings[i - 1].charCode === mappings[i].charCode) {
28998            mappings.splice(i, 1);
28999            i--;
29000          }
29001        }
29002        return {
29003          platformId: potentialTable.platformId,
29004          encodingId: potentialTable.encodingId,
29005          mappings: mappings,
29006          hasShortCmap: hasShortCmap
29007        };
29008      }
29009      function sanitizeMetrics(font, header, metrics, numGlyphs) {
29010        if (!header) {
29011          if (metrics) {
29012            metrics.data = null;
29013          }
29014          return;
29015        }
29016        font.pos = (font.start ? font.start : 0) + header.offset;
29017        font.pos += header.length - 2;
29018        var numOfMetrics = font.getUint16();
29019        if (numOfMetrics > numGlyphs) {
29020          (0, _util.info)('The numOfMetrics (' + numOfMetrics + ') should not be ' + 'greater than the numGlyphs (' + numGlyphs + ')');
29021          numOfMetrics = numGlyphs;
29022          header.data[34] = (numOfMetrics & 0xff00) >> 8;
29023          header.data[35] = numOfMetrics & 0x00ff;
29024        }
29025        var numOfSidebearings = numGlyphs - numOfMetrics;
29026        var numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1);
29027        if (numMissing > 0) {
29028          var entries = new Uint8Array(metrics.length + numMissing * 2);
29029          entries.set(metrics.data);
29030          metrics.data = entries;
29031        }
29032      }
29033      function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) {
29034        var glyphProfile = {
29035          length: 0,
29036          sizeOfInstructions: 0
29037        };
29038        if (sourceEnd - sourceStart <= 12) {
29039          return glyphProfile;
29040        }
29041        var glyf = source.subarray(sourceStart, sourceEnd);
29042        var contoursCount = signedInt16(glyf[0], glyf[1]);
29043        if (contoursCount < 0) {
29044          contoursCount = -1;
29045          writeSignedInt16(glyf, 0, contoursCount);
29046          dest.set(glyf, destStart);
29047          glyphProfile.length = glyf.length;
29048          return glyphProfile;
29049        }
29050        var i,
29051            j = 10,
29052            flagsCount = 0;
29053        for (i = 0; i < contoursCount; i++) {
29054          var endPoint = glyf[j] << 8 | glyf[j + 1];
29055          flagsCount = endPoint + 1;
29056          j += 2;
29057        }
29058        var instructionsStart = j;
29059        var instructionsLength = glyf[j] << 8 | glyf[j + 1];
29060        glyphProfile.sizeOfInstructions = instructionsLength;
29061        j += 2 + instructionsLength;
29062        var instructionsEnd = j;
29063        var coordinatesLength = 0;
29064        for (i = 0; i < flagsCount; i++) {
29065          var flag = glyf[j++];
29066          if (flag & 0xC0) {
29067            glyf[j - 1] = flag & 0x3F;
29068          }
29069          var xyLength = (flag & 2 ? 1 : flag & 16 ? 0 : 2) + (flag & 4 ? 1 : flag & 32 ? 0 : 2);
29070          coordinatesLength += xyLength;
29071          if (flag & 8) {
29072            var repeat = glyf[j++];
29073            i += repeat;
29074            coordinatesLength += repeat * xyLength;
29075          }
29076        }
29077        if (coordinatesLength === 0) {
29078          return glyphProfile;
29079        }
29080        var glyphDataLength = j + coordinatesLength;
29081        if (glyphDataLength > glyf.length) {
29082          return glyphProfile;
29083        }
29084        if (!hintsValid && instructionsLength > 0) {
29085          dest.set(glyf.subarray(0, instructionsStart), destStart);
29086          dest.set([0, 0], destStart + instructionsStart);
29087          dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2);
29088          glyphDataLength -= instructionsLength;
29089          if (glyf.length - glyphDataLength > 3) {
29090            glyphDataLength = glyphDataLength + 3 & ~3;
29091          }
29092          glyphProfile.length = glyphDataLength;
29093          return glyphProfile;
29094        }
29095        if (glyf.length - glyphDataLength > 3) {
29096          glyphDataLength = glyphDataLength + 3 & ~3;
29097          dest.set(glyf.subarray(0, glyphDataLength), destStart);
29098          glyphProfile.length = glyphDataLength;
29099          return glyphProfile;
29100        }
29101        dest.set(glyf, destStart);
29102        glyphProfile.length = glyf.length;
29103        return glyphProfile;
29104      }
29105      function sanitizeHead(head, numGlyphs, locaLength) {
29106        var data = head.data;
29107        var version = int32(data[0], data[1], data[2], data[3]);
29108        if (version >> 16 !== 1) {
29109          (0, _util.info)('Attempting to fix invalid version in head table: ' + version);
29110          data[0] = 0;
29111          data[1] = 1;
29112          data[2] = 0;
29113          data[3] = 0;
29114        }
29115        var indexToLocFormat = int16(data[50], data[51]);
29116        if (indexToLocFormat < 0 || indexToLocFormat > 1) {
29117          (0, _util.info)('Attempting to fix invalid indexToLocFormat in head table: ' + indexToLocFormat);
29118          var numGlyphsPlusOne = numGlyphs + 1;
29119          if (locaLength === numGlyphsPlusOne << 1) {
29120            data[50] = 0;
29121            data[51] = 0;
29122          } else if (locaLength === numGlyphsPlusOne << 2) {
29123            data[50] = 0;
29124            data[51] = 1;
29125          } else {
29126            throw new _util.FormatError('Could not fix indexToLocFormat: ' + indexToLocFormat);
29127          }
29128        }
29129      }
29130      function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstru
29130ctions) {
29131        var itemSize, itemDecode, itemEncode;
29132        if (isGlyphLocationsLong) {
29133          itemSize = 4;
29134          itemDecode = function fontItemDecodeLong(data, offset) {
29135            return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];
29136          };
29137          itemEncode = function fontItemEncodeLong(data, offset, value) {
29138            data[offset] = value >>> 24 & 0xFF;
29139            data[offset + 1] = value >> 16 & 0xFF;
29140            data[offset + 2] = value >> 8 & 0xFF;
29141            data[offset + 3] = value & 0xFF;
29142          };
29143        } else {
29144          itemSize = 2;
29145          itemDecode = function fontItemDecode(data, offset) {
29146            return data[offset] << 9 | data[offset + 1] << 1;
29147          };
29148          itemEncode = function fontItemEncode(data, offset, value) {
29149            data[offset] = value >> 9 & 0xFF;
29150            data[offset + 1] = value >> 1 & 0xFF;
29151          };
29152        }
29153        var numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;
29154        var locaData = loca.data;
29155        var locaDataSize = itemSize * (1 + numGlyphsOut);
29156        locaData = new Uint8Array(locaDataSize);
29157        locaData.set(loca.data.subarray(0, locaDataSize));
29158        loca.data = locaData;
29159        var oldGlyfData = glyf.data;
29160        var oldGlyfDataLength = oldGlyfData.length;
29161        var newGlyfData = new Uint8Array(oldGlyfDataLength);
29162        var startOffset = itemDecode(locaData, 0);
29163        var writeOffset = 0;
29164        var missingGlyphs = Object.create(null);
29165        itemEncode(locaData, 0, writeOffset);
29166        var i, j;
29167        for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {
29168          var endOffset = itemDecode(locaData, j);
29169          if (endOffset === 0) {
29170            endOffset = startOffset;
29171          }
29172          if (endOffset > oldGlyfDataLength && (oldGlyfDataLength + 3 & ~3) === endOffset) {
29173            endOffset = oldGlyfDataLength;
29174          }
29175          if (endOffset > oldGlyfDataLength) {
29176            startOffset = endOffset;
29177          }
29178          var glyphProfile = sanitizeGlyph(oldGlyfData, startOffset, endOffset, newGlyfData, writeOffset, hintsValid);
29179          var newLength = glyphProfile.length;
29180          if (newLength === 0) {
29181            missingGlyphs[i] = true;
29182          }
29183          if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {
29184            maxSizeOfInstructions = glyphProfile.sizeOfInstructions;
29185          }
29186          writeOffset += newLength;
29187          itemEncode(locaData, j, writeOffset);
29188          startOffset = endOffset;
29189        }
29190        if (writeOffset === 0) {
29191          var simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);
29192          for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {
29193            itemEncode(locaData, j, simpleGlyph.length);
29194          }
29195          glyf.data = simpleGlyph;
29196        } else if (dupFirstEntry) {
29197          var firstEntryLength = itemDecode(locaData, itemSize);
29198          if (newGlyfData.length > firstEntryLength + writeOffset) {
29199            glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);
29200          } else {
29201            glyf.data = new Uint8Array(firstEntryLength + writeOffset);
29202            glyf.data.set(newGlyfData.subarray(0, writeOffset));
29203          }
29204          glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);
29205          itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength);
29206        } else {
29207          glyf.data = newGlyfData.subarray(0, writeOffset);
29208        }
29209        return {
29210          missingGlyphs: missingGlyphs,
29211          maxSizeOfInstructions: maxSizeOfInstructions
29212        };
29213      }
29214      function readPostScriptTable(post, properties, maxpNumGlyphs) {
29215        var start = (font.start ? font.start : 0) + post.offset;
29216        font.pos = start;
29217        var length = post.length,
29218            end = start + length;
29219        var version = font.getInt32();
29220        font.getBytes(28);
29221        var glyphNames;
29222        var valid = true;
29223        var i;
29224        switch (version) {
29225          case 0x00010000:
29226            glyphNames = MacStandardGlyphOrdering;
29227            break;
29228          case 0x00020000:
29229            var numGlyphs = font.getUint16();
29230            if (numGlyphs !== maxpNumGlyphs) {
29231              valid = false;
vendor: 6,173 bytes, lines 29232-29398
29232              break;
29233            }
29234            var glyphNameIndexes = [];
29235            for (i = 0; i < numGlyphs; ++i) {
29236              var index = font.getUint16();
29237              if (index >= 32768) {
29238                valid = false;
29239                break;
29240              }
29241              glyphNameIndexes.push(index);
29242            }
29243            if (!valid) {
29244              break;
29245            }
29246            var customNames = [];
29247            var strBuf = [];
29248            while (font.pos < end) {
29249              var stringLength = font.getByte();
29250              strBuf.length = stringLength;
29251              for (i = 0; i < stringLength; ++i) {
29252                strBuf[i] = String.fromCharCode(font.getByte());
29253              }
29254              customNames.push(strBuf.join(''));
29255            }
29256            glyphNames = [];
29257            for (i = 0; i < numGlyphs; ++i) {
29258              var j = glyphNameIndexes[i];
29259              if (j < 258) {
29260                glyphNames.push(MacStandardGlyphOrdering[j]);
29261                continue;
29262              }
29263              glyphNames.push(customNames[j - 258]);
29264            }
29265            break;
29266          case 0x00030000:
29267            break;
29268          default:
29269            (0, _util.warn)('Unknown/unsupported post table version ' + version);
29270            valid = false;
29271            if (properties.defaultEncoding) {
29272              glyphNames = properties.defaultEncoding;
29273            }
29274            break;
29275        }
29276        properties.glyphNames = glyphNames;
29277        return valid;
29278      }
29279      function readNameTable(nameTable) {
29280        var start = (font.start ? font.start : 0) + nameTable.offset;
29281        font.pos = start;
29282        var names = [[], []];
29283        var length = nameTable.length,
29284            end = start + length;
29285        var format = font.getUint16();
29286        var FORMAT_0_HEADER_LENGTH = 6;
29287        if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {
29288          return names;
29289        }
29290        var numRecords = font.getUint16();
29291        var stringsStart = font.getUint16();
29292        var records = [];
29293        var NAME_RECORD_LENGTH = 12;
29294        var i, ii;
29295        for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {
29296          var r = {
29297            platform: font.getUint16(),
29298            encoding: font.getUint16(),
29299            language: font.getUint16(),
29300            name: font.getUint16(),
29301            length: font.getUint16(),
29302            offset: font.getUint16()
29303          };
29304          if (r.platform === 1 && r.encoding === 0 && r.language === 0 || r.platform === 3 && r.encoding === 1 && r.language === 0x409) {
29305            records.push(r);
29306          }
29307        }
29308        for (i = 0, ii = records.length; i < ii; i++) {
29309          var record = records[i];
29310          if (record.length <= 0) {
29311            continue;
29312          }
29313          var pos = start + stringsStart + record.offset;
29314          if (pos + record.length > end) {
29315            continue;
29316          }
29317          font.pos = pos;
29318          var nameIndex = record.name;
29319          if (record.encoding) {
29320            var str = '';
29321            for (var j = 0, jj = record.length; j < jj; j += 2) {
29322              str += String.fromCharCode(font.getUint16());
29323            }
29324            names[1][nameIndex] = str;
29325          } else {
29326            names[0][nameIndex] = (0, _util.bytesToString)(font.getBytes(record.length));
29327          }
29328        }
29329        return names;
29330      }
29331      var TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];
29332      function sanitizeTTProgram(table, ttContext) {
29333        var data = table.data;
29334        var i = 0,
29335            j,
29336            n,
29337            b,
29338            funcId,
29339            pc,
29340            lastEndf = 0,
29341            lastDeff = 0;
29342        var stack = [];
29343        var callstack = [];
29344        var functionsCalled = [];
29345        var tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;
29346        var inFDEF = false,
29347            ifLevel = 0,
29348            inELSE = 0;
29349        for (var ii = data.length; i < ii;) {
29350          var op = data[i++];
29351          if (op === 0x40) {
29352            n = data[i++];
29353            if (inFDEF || inELSE) {
29354              i += n;
29355            } else {
29356              for (j = 0; j < n; j++) {
29357                stack.push(data[i++]);
29358              }
29359            }
29360          } else if (op === 0x41) {
29361            n = data[i++];
29362            if (inFDEF || inELSE) {
29363              i += n * 2;
29364            } else {
29365              for (j = 0; j < n; j++) {
29366                b = data[i++];
29367                stack.push(b << 8 | data[i++]);
29368              }
29369            }
29370          } else if ((op & 0xF8) === 0xB0) {
29371            n = op - 0xB0 + 1;
29372            if (inFDEF || inELSE) {
29373              i += n;
29374            } else {
29375              for (j = 0; j < n; j++) {
29376                stack.push(data[i++]);
29377              }
29378            }
29379          } else if ((op & 0xF8) === 0xB8) {
29380            n = op - 0xB8 + 1;
29381            if (inFDEF || inELSE) {
29382              i += n * 2;
29383            } else {
29384              for (j = 0; j < n; j++) {
29385                b = data[i++];
29386                stack.push(b << 8 | data[i++]);
29387              }
29388            }
29389          } else if (op === 0x2B && !tooComplexToFollowFunctions) {
29390            if (!inFDEF && !inELSE) {
29391              funcId = stack[stack.length - 1];
29392              if (isNaN(funcId)) {
29393                (0, _util.info)('TT: CALL empty stack (or invalid entry).');
29394              } else {
29395                ttContext.functionsUsed[funcId] = true;
29396                if (funcId in ttContext.functionsStackDeltas) {
29397                  var newStackLength = stack.length + ttContext.functionsStackDeltas[funcId];
29398                  if (newStackLength < 0) {
vendor: 4,201 bytes, lines 29399-29515
29399                    (0, _util.warn)('TT: CALL invalid functions stack delta.');
29400                    ttContext.hintsValid = false;
29401                    return;
29402                  }
29403                  stack.length = newStackLength;
29404                } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) {
29405                  callstack.push({
29406                    data: data,
29407                    i: i,
29408                    stackTop: stack.length - 1
29409                  });
29410                  functionsCalled.push(funcId);
29411                  pc = ttContext.functionsDefined[funcId];
29412                  if (!pc) {
29413                    (0, _util.warn)('TT: CALL non-existent function');
29414                    ttContext.hintsValid = false;
29415                    return;
29416                  }
29417                  data = pc.data;
29418                  i = pc.i;
29419                }
29420              }
29421            }
29422          } else if (op === 0x2C && !tooComplexToFollowFunctions) {
29423            if (inFDEF || inELSE) {
29424              (0, _util.warn)('TT: nested FDEFs not allowed');
29425              tooComplexToFollowFunctions = true;
29426            }
29427            inFDEF = true;
29428            lastDeff = i;
29429            funcId = stack.pop();
29430            ttContext.functionsDefined[funcId] = {
29431              data: data,
29432              i: i
29433            };
29434          } else if (op === 0x2D) {
29435            if (inFDEF) {
29436              inFDEF = false;
29437              lastEndf = i;
29438            } else {
29439              pc = callstack.pop();
29440              if (!pc) {
29441                (0, _util.warn)('TT: ENDF bad stack');
29442                ttContext.hintsValid = false;
29443                return;
29444              }
29445              funcId = functionsCalled.pop();
29446              data = pc.data;
29447              i = pc.i;
29448              ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;
29449            }
29450          } else if (op === 0x89) {
29451            if (inFDEF || inELSE) {
29452              (0, _util.warn)('TT: nested IDEFs not allowed');
29453              tooComplexToFollowFunctions = true;
29454            }
29455            inFDEF = true;
29456            lastDeff = i;
29457          } else if (op === 0x58) {
29458            ++ifLevel;
29459          } else if (op === 0x1B) {
29460            inELSE = ifLevel;
29461          } else if (op === 0x59) {
29462            if (inELSE === ifLevel) {
29463              inELSE = 0;
29464            }
29465            --ifLevel;
29466          } else if (op === 0x1C) {
29467            if (!inFDEF && !inELSE) {
29468              var offset = stack[stack.length - 1];
29469              if (offset > 0) {
29470                i += offset - 1;
29471              }
29472            }
29473          }
29474          if (!inFDEF && !inELSE) {
29475            var stackDelta = op <= 0x8E ? TTOpsStackDeltas[op] : op >= 0xC0 && op <= 0xDF ? -1 : op >= 0xE0 ? -2 : 0;
29476            if (op >= 0x71 && op <= 0x75) {
29477              n = stack.pop();
29478              if (!isNaN(n)) {
29479                stackDelta = -n * 2;
29480              }
29481            }
29482            while (stackDelta < 0 && stack.length > 0) {
29483              stack.pop();
29484              stackDelta++;
29485            }
29486            while (stackDelta > 0) {
29487              stack.push(NaN);
29488              stackDelta--;
29489            }
29490          }
29491        }
29492        ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;
29493        var content = [data];
29494        if (i > data.length) {
29495          content.push(new Uint8Array(i - data.length));
29496        }
29497        if (lastDeff > lastEndf) {
29498          (0, _util.warn)('TT: complementing a missing function tail');
29499          content.push(new Uint8Array([0x22, 0x2D]));
29500        }
29501        foldTTTable(table, content);
29502      }
29503      function checkInvalidFunctions(ttContext, maxFunctionDefs) {
29504        if (ttContext.tooComplexToFollowFunctions) {
29505          return;
29506        }
29507        if (ttContext.functionsDefined.length > maxFunctionDefs) {
29508          (0, _util.warn)('TT: more functions defined than expected');
29509          ttContext.hintsValid = false;
29510          return;
29511        }
29512        for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {
29513          if (j > maxFunctionDefs) {
29514            (0, _util.warn)('TT: invalid function id: ' + j);
29515            ttContext.hintsValid = false;
29516            return;
29517          }
29518          if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {
29519            (0, _util.warn)('TT: undefined function: ' + j);
29520            ttContext.hintsValid = false;
29521            return;
29522          }
29523        }
29524      }
29525      function foldTTTable(table, content) {
29526        if (content.length > 1) {
29527          var newLength = 0;
29528          var j, jj;
29529          for (j = 0, jj = content.length; j < jj; j++) {
29530            newLength += content[j].length;
29531          }
29532          newLength = newLength + 3 & ~3;
29533          var result = new Uint8Array(newLength);
29534          var pos = 0;
29535          for (j = 0, jj = content.length; j < jj; j++) {
29536            result.set(content[j], pos);
29537            pos += content[j].length;
29538          }
29539          table.data = result;
29540          table.length = newLength;
29541        }
29542      }
29543      function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {
29544        var ttContext = {
29545          functionsDefined: [],
29546          functionsUsed: [],
29547          functionsStackDeltas: [],
29548          tooComplexToFollowFunctions: false,
29549          hintsValid: true
29550        };
29551        if (fpgm) {
29552          sanitizeTTProgram(fpgm, ttContext);
29553        }
29554        if (prep) {
29555          sanitizeTTProgram(prep, ttContext);
29556        }
29557        if (fpgm) {
29558          checkInvalidFunctions(ttContext, maxFunctionDefs);
29559        }
29560        if (cvt && cvt.length & 1) {
29561          var cvtData = new Uint8Array(cvt.length + 1);
29562          cvtData.set(cvt.data);
29563          cvt.data = cvtData;
29564        }
29565        return ttContext.hintsValid;
29566      }
29567      font = new _stream.Stream(new Uint8Array(font.getBytes()));
29568      var header = void 0,
29569          tables = void 0;
29570      if (isTrueTypeCollectionFile(font)) {
29571        var ttcData = readTrueTypeCollectionData(font, this.name);
29572        header = ttcData.header;
29573        tables = ttcData.tables;
29574      } else {
29575        header = readOpenTypeHeader(font);
29576        tables = readTables(font, header.numTables);
29577      }
29578      var cff = void 0,
29579          cffFile = void 0;
29580      var isTrueType = !tables['CFF '];
29581      if (!isTrueType) {
29582        var isComposite = properties.composite && ((properties.cidToGidMap || []).length > 0 || !(properties.cMap instanceof _cmap.IdentityCMap));
29583        if (header.version === 'OTTO' && !isComposite || !tables['head'] || !tables['hhea'] || !tables['maxp'] || !tables['post']) {
29584          cffFile = new _stream.Stream(tables['CFF '].data);
29585          cff = new CFFFont(cffFile, properties);
29586          adjustWidths(properties);
29587          return this.convert(name, cff, properties);
29588        }
29589        delete tables['glyf'];
29590        delete tables['loca'];
29591        delete tables['fpgm'];
29592        delete tables['prep'];
29593        delete tables['cvt '];
29594        this.isOpenType = true;
29595      } else {
29596        if (!tables['loca']) {
29597          throw new _util.FormatError('Required "loca" table is not found');
29598        }
29599        if (!tables['glyf']) {
29600          (0, _util.warn)('Required "glyf" table is not found -- trying to recover.');
29601          tables['glyf'] = {
29602            tag: 'glyf',
29603            data: new Uint8Array(0)
29604          };
29605        }
29606        this.isOpenType = false;
29607      }
29608      if (!tables['maxp']) {
29609        throw new _util.FormatError('Required "maxp" table is not found');
29610      }
29611      font.pos = (font.start || 0) + tables['maxp'].offset;
29612      var version = font.getInt32();
29613      var numGlyphs = font.getUint16();
29614      var numGlyphsOut = numGlyphs + 1;
29615      var dupFirstEntry = true;
29616      if (numGlyphsOut > 0xFFFF) {
29617        dupFirstEntry = false;
29618        numGlyphsOut = numGlyphs;
29619        (0, _util.warn)('Not enough space in glyfs to duplicate first glyph.');
29620      }
29621      var maxFunctionDefs = 0;
29622      var maxSizeOfInstructions = 0;
29623      if (version >= 0x00010000 && tables['maxp'].length >= 22) {
29624        font.pos += 8;
29625        var maxZones = font.getUint16();
29626        if (maxZones > 2) {
29627          tables['maxp'].data[14] = 0;
29628          tables['maxp'].data[15] = 2;
29629        }
29630        font.pos += 4;
29631        maxFunctionDefs = font.getUint16();
29632        font.pos += 4;
29633        maxSizeOfInstructions = font.getUint16();
29634      }
29635      tables['maxp'].data[4] = numGlyphsOut >> 8;
29636      tables['maxp'].data[5] = numGlyphsOut & 255;
29637      var hintsValid = sanitizeTTPrograms(tables['fpgm'], tables['prep'], tables['cvt '], maxFunctionDefs);
29638      if (!hintsValid) {
29639        delete tables['fpgm'];
29640        delete tables['prep'];
29641        delete tables['cvt '];
29642      }
29643      sanitizeMetrics(font, tables['hhea'], tables['hmtx'], numGlyphsOut);
29644      if (!tables['head']) {
29645        throw new _util.FormatError('Required "head" table is not found');
29646      }
29647      sanitizeHead(tables['head'], numGlyphs, isTrueType ? tables['loca'].length : 0);
29648      var missingGlyphs = Object.create(null);
29649      if (isTrueType) {
29650        var isGlyphLocationsLong = int16(tables['head'].data[50], tables['head'].data[51]);
29651        var glyphsInfo = sanitizeGlyphLocations(tables['loca'], tables['glyf'], numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions);
29652        missingGlyphs = glyphsInfo.missingGlyphs;
29653        if (version >= 0x00010000 && tables['maxp'].length >= 22) {
29654          tables['maxp'].data[26] = glyphsInfo.maxSizeOfInstructions >> 8;
29655          tables['maxp'].data[27] = glyphsInfo.maxSizeOfInstructions & 255;
29656        }
29657      }
29658      if (!tables['hhea']) {
29659        throw new _util.FormatError('Required "hhea" table is not found');
29660      }
29661      if (tables['hhea'].data[10] === 0 && tables['hhea'].data[11] === 0) {
29662        tables['hhea'].data[10] = 0xFF;
29663        tables['hhea'].data[11] = 0xFF;
29664      }
29665      var metricsOverride = {
29666        unitsPerEm: int16(tables['head'].data[18], tables['head'].data[19]),
29667        yMax: int16(tables['head'].data[42], tables['head'].data[43]),
29668        yMin: signedInt16(tables['head'].data[38], tables['head'].data[39]),
29669        ascent: int16(tables['hhea'].data[4], tables['hhea'].data[5]),
29670        descent: signedInt16(tables['hhea'].data[6], tables['hhea'].data[7])
29671      };
29672      this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;
29673      this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;
29674      if (tables['post']) {
29675        readPostScriptTable(tables['post'], properties, numGlyphs);
29676      }
29677      tables['post'] = {
29678        tag: 'post',
29679        data: createPostTable(properties)
29680      };
29681      var charCodeToGlyphId = [],
29682          charCode;
29683      function hasGlyph(glyphId) {
29684        return !missingGlyphs[glyphId];
29685      }
29686      if (properties.composite) {
29687        var cidToGidMap = properties.cidToGidMap || [];
29688        var isCidToGidMapEmpty = cidToGidMap.length === 0;
29689        properties.cMap.forEach(function (charCode, cid) {
29690          if (cid > 0xffff) {
29691            throw new _util.FormatError('Max size of CID is 65,535');
29692          }
29693          var glyphId = -1;
29694          if (isCidToGidMapEmpty) {
29695            glyphId = cid;
29696          } else if (cidToGidMap[cid] !== undefined) {
29697            glyphId = cidToGidMap[cid];
29698          }
29699          if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {
29700            charCodeToGlyphId[charCode] = glyphId;
29701          }
29702        });
29703      } else {
29704        var cmapTable = readCmapTable(tables['cmap'], font, this.isSymbolicFont, properties.hasEncoding);
29705        var cmapPlatformId = cmapTable.platformId;
29706        var cmapEncodingId = cmapTable.encodingId;
29707        var cmapMappings = cmapTable.mappings;
29708        var cmapMappingsLength = cmapMappings.length;
29709        if (properties.hasEncoding && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0) || cmapPlatformId === -1 && cmapEncodingId === -1 && !!(0, _encodings.getEncoding)(properties.baseEncodingName)) {
29710          var baseEncoding = [];
29711          if (properties.baseEncodingName === 'MacRomanEncoding' || properties.baseEncodingName === 'WinAnsiEncoding') {
29712            baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);
29713          }
29714          var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
29715          for (charCode = 0; charCode < 256; charCode++) {
29716            var glyphName, standardGlyphName;
29717            if (this.differences && charCode in this.differences) {
29718              glyphName = this.differences[charCode];
29719            } else if (charCode in baseEncoding && baseEncoding[charCode] !== '') {
29720              glyphName = baseEncoding[charCode];
29721            } else {
29722              glyphName = _encodings.StandardEncoding[charCode];
29723            }
29724            if (!glyphName) {
29725              continue;
29726            }
29727            standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);
29728            var unicodeOrCharCode;
29729            if (cmapPlatformId === 3 && cmapEncodingId === 1) {
29730              unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];
29731            } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {
29732              unicodeOrCharCode = _encodings.MacRomanEncoding.indexOf(standardGlyphName);
29733            }
29734            var found = false;
29735            for (var i = 0; i < cmapMappingsLength; ++i) {
29736              if (cmapMappings[i].charCode !== unicodeOrCharCode) {
29737                continue;
29738              }
29739              charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;
29740              found = true;
29741              break;
29742            }
29743            if (!found && properties.glyphNames) {
29744              var glyphId = properties.glyphNames.indexOf(glyphName);
29745              if (glyphId === -1 && standardGlyphName !== glyphName) {
29746                glyphId = properties.glyphNames.indexOf(standardGlyphName);
29747              }
29748              if (glyphId > 0 && hasGlyph(glyphId)) {
29749                charCodeToGlyphId[charCode] = glyphId;
29750              }
29751            }
29752          }
29753        } else if (cmapPlatformId === 0 && cmapEncodingId === 0) {
29754          for (var _i = 0; _i < cmapMappingsLength; ++_i) {
29755            charCodeToGlyphId[cmapMappings[_i].charCode] = cmapMappings[_i].glyphId;
29756          }
29757        } else {
29758          for (var _i2 = 0; _i2 < cmapMappingsLength; ++_i2) {
29759            charCode = cmapMappings[_i2].charCode;
29760            if (cmapPlatformId === 3 && charCode >= 0xF000 && charCode <= 0xF0FF) {
29761              charCode &= 0xFF;
29762            }
29763            charCodeToGlyphId[charCode] = cmapMappings[_i2].glyphId;
29764          }
29765        }
29766      }
29767      if (charCodeToGlyphId.length === 0) {
29768        charCodeToGlyphId[0] = 0;
29769      }
29770      var glyphZeroId = numGlyphsOut - 1;
29771      if (!dupFirstEntry) {
29772        glyphZeroId = 0;
29773      }
29774      var newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId);
29775      this.toFontChar = newMapping.toFontChar;
29776      tables['cmap'] = {
29777        tag: 'cmap',
29778        data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut)
29779      };
29780      if (!tables['OS/2'] || !validateOS2Table(tables['OS/2'])) {
29781        tables['OS/2'] = {
29782          tag: 'OS/2',
29783          data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride)
29784        };
29785      }
29786      if (!isTrueType) {
29787        try {
29788          cffFile = new _stream.Stream(tables['CFF '].data);
29789          var parser = new _cff_parser.CFFParser(cffFile, properties, SEAC_ANALYSIS_ENABLED);
29790          cff = parser.parse();
29791          cff.duplicateFirstGlyph();
29792          var compiler = new _cff_parser.CFFCompiler(cff);
29793          tables['CFF '].data = compiler.compile();
29794        } catch (e) {
29795          (0, _util.warn)('Failed to compile font ' + properties.loadedName);
29796        }
29797      }
29798      if (!tables['name']) {
29799        tables['name'] = {
29800          tag: 'name',
29801          data: createNameTable(this.name)
29802        };
29803      } else {
29804        var namePrototype = readNameTable(tables['name']);
29805        tables['name'].data = createNameTable(name, namePrototype);
29806      }
29807      var builder = new OpenTypeFileBuilder(header.version);
29808      for (var tableTag in tables) {
29809        builder.addTable(tableTag, tables[tableTag].data);
29810      }
29811      return builder.toArray();
29812    },
29813    convert: function Font_convert(fontName, font, properties) {
29814      properties.fixedPitch = false;
29815      if (properties.builtInEncoding) {
29816        adjustToUnicode(properties, properties.builtInEncoding);
29817      }
29818      var glyphZeroId = 1;
29819      if (font instanceof CFFFont) {
29820        glyphZeroId = font.numGlyphs - 1;
29821      }
29822      var mapping = font.getGlyphMapping(properties);
29823      var newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId);
29824      this.toFontChar = newMapping.toFontChar;
29825      var numGlyphs = font.numGlyphs;
29826      function getCharCodes(charCodeToGlyphId, glyphId) {
vendor: 5,548 bytes, lines 29827-29948
29827        var charCodes = null;
29828        for (var charCode in charCodeToGlyphId) {
29829          if (glyphId === charCodeToGlyphId[charCode]) {
29830            if (!charCodes) {
29831              charCodes = [];
29832            }
29833            charCodes.push(charCode | 0);
29834          }
29835        }
29836        return charCodes;
29837      }
29838      function createCharCode(charCodeToGlyphId, glyphId) {
29839        for (var charCode in charCodeToGlyphId) {
29840          if (glyphId === charCodeToGlyphId[charCode]) {
29841            return charCode | 0;
29842          }
29843        }
29844        newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId;
29845        return newMapping.nextAvailableFontCharCode++;
29846      }
29847      var seacs = font.seacs;
29848      if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {
29849        var matrix = properties.fontMatrix || _util.FONT_IDENTITY_MATRIX;
29850        var charset = font.getCharset();
29851        var seacMap = Object.create(null);
29852        for (var glyphId in seacs) {
29853          glyphId |= 0;
29854          var seac = seacs[glyphId];
29855          var baseGlyphName = _encodings.StandardEncoding[seac[2]];
29856          var accentGlyphName = _encodings.StandardEncoding[seac[3]];
29857          var baseGlyphId = charset.indexOf(baseGlyphName);
29858          var accentGlyphId = charset.indexOf(accentGlyphName);
29859          if (baseGlyphId < 0 || accentGlyphId < 0) {
29860            continue;
29861          }
29862          var accentOffset = {
29863            x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],
29864            y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5]
29865          };
29866          var charCodes = getCharCodes(mapping, glyphId);
29867          if (!charCodes) {
29868            continue;
29869          }
29870          for (var i = 0, ii = charCodes.length; i < ii; i++) {
29871            var charCode = charCodes[i];
29872            var charCodeToGlyphId = newMapping.charCodeToGlyphId;
29873            var baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId);
29874            var accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId);
29875            seacMap[charCode] = {
29876              baseFontCharCode: baseFontCharCode,
29877              accentFontCharCode: accentFontCharCode,
29878              accentOffset: accentOffset
29879            };
29880          }
29881        }
29882        properties.seacMap = seacMap;
29883      }
29884      var unitsPerEm = 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];
29885      var builder = new OpenTypeFileBuilder('\x4F\x54\x54\x4F');
29886      builder.addTable('CFF ', font.data);
29887      builder.addTable('OS/2', createOS2Table(properties, newMapping.charCodeToGlyphId));
29888      builder.addTable('cmap', createCmapTable(newMapping.charCodeToGlyphId, numGlyphs));
29889      builder.addTable('head', '\x00\x01\x00\x00' + '\x00\x00\x10\x00' + '\x00\x00\x00\x00' + '\x5F\x0F\x3C\xF5' + '\x00\x00' + safeString16(unitsPerEm) + '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + '\x00\x00' + safeString16(properties.descent) + '\x0F\xFF' + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + '\x00\x11' + '\x00\x00' + '\x00\x00' + '\x00\x00');
29890      builder.addTable('hhea', '\x00\x01\x00\x00' + safeString16(properties.ascent) + safeString16(properties.descent) + '\x00\x00' + '\xFF\xFF' + '\x00\x00' + '\x00\x00' + '\x00\x00' + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + '\x00\x00' + '\x00\x00' + '\x00\x00' + '\x00\x00' + '\x00\x00' + '\x00\x00' + string16(numGlyphs));
29891      builder.addTable('hmtx', function fontFieldsHmtx() {
29892        var charstrings = font.charstrings;
29893        var cffWidths = font.cff ? font.cff.widths : null;
29894        var hmtx = '\x00\x00\x00\x00';
29895        for (var i = 1, ii = numGlyphs; i < ii; i++) {
29896          var width = 0;
29897          if (charstrings) {
29898            var charstring = charstrings[i - 1];
29899            width = 'width' in charstring ? charstring.width : 0;
29900          } else if (cffWidths) {
29901            width = Math.ceil(cffWidths[i] || 0);
29902          }
29903          hmtx += string16(width) + string16(0);
29904        }
29905        return hmtx;
29906      }());
29907      builder.addTable('maxp', '\x00\x00\x50\x00' + string16(numGlyphs));
29908      builder.addTable('name', createNameTable(fontName));
29909      builder.addTable('post', createPostTable(properties));
29910      return builder.toArray();
29911    },
29912    get spaceWidth() {
29913      if ('_shadowWidth' in this) {
29914        return this._shadowWidth;
29915      }
29916      var possibleSpaceReplacements = ['space', 'minus', 'one', 'i', 'I'];
29917      var width;
29918      for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {
29919        var glyphName = possibleSpaceReplacements[i];
29920        if (glyphName in this.widths) {
29921          width = this.widths[glyphName];
29922          break;
29923        }
29924        var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
29925        var glyphUnicode = glyphsUnicodeMap[glyphName];
29926        var charcode = 0;
29927        if (this.composite) {
29928          if (this.cMap.contains(glyphUnicode)) {
29929            charcode = this.cMap.lookup(glyphUnicode);
29930          }
29931        }
29932        if (!charcode && this.toUnicode) {
29933          charcode = this.toUnicode.charCodeOf(glyphUnicode);
29934        }
29935        if (charcode <= 0) {
29936          charcode = glyphUnicode;
29937        }
29938        width = this.widths[charcode];
29939        if (width) {
29940          break;
29941        }
29942      }
29943      width = width || this.defaultWidth;
29944      this._shadowWidth = width;
29945      return width;
29946    },
29947    charToGlyph: function Font_charToGlyph(charcode, isSpace) {
29948      var fontCharCode, width, operatorListId;
29949      var widthCode = charcode;
29950      if (this.cMap && this.cMap.contains(charcode)) {
29951        widthCode = this.cMap.lookup(charcode);
29952      }
29953      width = this.widths[widthCode];
29954      width = (0, _util.isNum)(width) ? width : this.defaultWidth;
29955      var vmetric = this.vmetrics && this.vmetrics[widthCode];
29956      var unicode = this.toUnicode.get(charcode) || this.fallbackToUnicode.get(charcode) || charcode;
29957      if (typeof unicode === 'number') {
29958        unicode = String.fromCharCode(unicode);
29959      }
29960      var isInFont = charcode in this.toFontChar;
29961      fontCharCode = this.toFontChar[charcode] || charcode;
29962      if (this.missingFile) {
29963        fontCharCode = (0, _unicode.mapSpecialUnicodeValues)(fontCharCode);
29964      }
29965      if (this.isType3Font) {
29966        operatorListId = fontCharCode;
29967      }
29968      var accent = null;
29969      if (this.seacMap && this.seacMap[charcode]) {
29970        isInFont = true;
29971        var seac = this.seacMap[charcode];
29972        fontCharCode = seac.baseFontCharCode;
29973        accent = {
29974          fontChar: String.fromCodePoint(seac.accentFontCharCode),
29975          offset: seac.accentOffset
29976        };
29977      }
29978      var fontChar = typeof fontCharCode === 'number' ? String.fromCodePoint(fontCharCode) : '';
29979      var glyph = this.glyphCache[charcode];
29980      if (!glyph || !glyph.matchesForCache(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont)) {
29981        glyph = new Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont);
29982        this.glyphCache[charcode] = glyph;
29983      }
29984      return glyph;
29985    },
29986    charsToGlyphs: function Font_charsToGlyphs(chars) {
29987      var charsCache = this.charsCache;
29988      var glyphs, glyph, charcode;
29989      if (charsCache) {
29990        glyphs = charsCache[chars];
29991        if (glyphs) {
29992          return glyphs;
29993        }
29994      }
29995      if (!charsCache) {
29996        charsCache = this.charsCache = Object.create(null);
29997      }
29998      glyphs = [];
29999      var charsCacheKey = chars;
30000      var i = 0,
30001          ii;
30002      if (this.cMap) {
30003        var c = Object.create(null);
30004        while (i < chars.length) {
30005          this.cMap.readCharCode(chars, i, c);
30006          charcode = c.charcode;
30007          var length = c.length;
30008          i += length;
30009          var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20;
30010          glyph = this.charToGlyph(charcode, isSpace);
30011          glyphs.push(glyph);
30012        }
30013      } else {
30014        for (i = 0, ii = chars.length; i < ii; ++i) {
30015          charcode = chars.charCodeAt(i);
30016          glyph = this.charToGlyph(charcode, charcode === 0x20);
30017          glyphs.push(glyph);
30018        }
30019      }
30020      return charsCache[charsCacheKey] = glyphs;
30021    }
30022  };
30023  return Font;
30024}();
30025var ErrorFont = function ErrorFontClosure() {
30026  function ErrorFont(error) {
30027    this.error = error;
30028    this.loadedName = 'g_font_error';
30029    this.missingFile = true;
30030  }
30031  ErrorFont.prototype = {
30032    charsToGlyphs: function ErrorFont_charsToGlyphs() {
30033      return [];
30034    },
30035    exportData: function ErrorFont_exportData() {
30036      return { error: this.error };
30037    }
30038  };
30039  return ErrorFont;
30040}();
30041function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {
30042  var charCodeToGlyphId = Object.create(null);
30043  var glyphId, charCode, baseEncoding;
30044  var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);
30045  if (properties.baseEncodingName) {
30046    baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);
30047    for (charCode = 0; charCode < baseEncoding.length; charCode++) {
30048      glyphId = glyphNames.indexOf(baseEncoding[charCode]);
30049      if (glyphId >= 0) {
30050        charCodeToGlyphId[charCode] = glyphId;
30051      } else {
30052        charCodeToGlyphId[charCode] = 0;
30053      }
30054    }
30055  } else if (isSymbolicFont) {
30056    for (charCode in builtInEncoding) {
30057      charCodeToGlyphId[charCode] = builtInEncoding[charCode];
30058    }
30059  } else {
30060    baseEncoding = _encodings.StandardEncoding;
30061    for (charCode = 0; charCode < baseEncoding.length; charCode++) {
30062      glyphId = glyphNames.indexOf(baseEncoding[charCode]);
30063      if (glyphId >= 0) {
30064        charCodeToGlyphId[charCode] = glyphId;
30065      } else {
30066        charCodeToGlyphId[charCode] = 0;
30067      }
30068    }
30069  }
30070  var differences = properties.differences,
30071      glyphsUnicodeMap;
30072  if (differences) {
30073    for (charCode in differences) {
30074      var glyphName = differences[charCode];
30075      glyphId = glyphNames.indexOf(glyphName);
30076      if (glyphId === -1) {
30077        if (!glyphsUnicodeMap) {
30078          glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
30079        }
30080        var standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);
30081        if (standardGlyphName !== glyphName) {
30082          glyphId = glyphNames.indexOf(standardGlyphName);
30083        }
30084      }
30085      if (glyphId >= 0) {
30086        charCodeToGlyphId[charCode] = glyphId;
30087      } else {
30088        charCodeToGlyphId[charCode] = 0;
30089      }
30090    }
30091  }
30092  return charCodeToGlyphId;
30093}
30094var Type1Font = function Type1FontClosure() {
30095  function findBlock(streamBytes, signature, startIndex) {
30096    var streamBytesLength = streamBytes.length;
30097    var signatureLength = signature.length;
30098    var scanLength = streamBytesLength - signatureLength;
30099    var i = startIndex,
30100        j,
30101        found = false;
30102    while (i < scanLength) {
30103      j = 0;
30104      while (j < signatureLength && streamBytes[i + j] === signature[j]) {
30105        j++;
30106      }
30107      if (j >= signatureLength) {
30108        i += j;
30109        while (i < streamBytesLength && (0, _util.isSpace)(streamBytes[i])) {
30110          i++;
30111        }
30112        found = true;
30113        break;
30114      }
30115      i++;
30116    }
30117    return {
30118      found: found,
30119      length: i
30120    };
30121  }
30122  function getHeaderBlock(stream, suggestedLength) {
30123    var EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];
30124    var streamStartPos = stream.pos;
30125    var headerBytes, headerBytesLength, block;
30126    try {
30127      headerBytes = stream.getBytes(suggestedLength);
30128      headerBytesLength = headerBytes.length;
30129    } catch (ex) {
30130      if (ex instanceof _util.MissingDataException) {
30131        throw ex;
30132      }
30133    }
30134    if (headerBytesLength === suggestedLength) {
30135      block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length);
30136      if (block.found && block.length === suggestedLength) {
30137        return {
30138          stream: new _stream.Stream(headerBytes),
30139          length: suggestedLength
30140        };
30141      }
30142    }
30143    (0, _util.warn)('Invalid "Length1" property in Type1 font -- trying to recover.');
30144    stream.pos = streamStartPos;
30145    var SCAN_BLOCK_LENGTH = 2048;
30146    var actualLength;
30147    while (true) {
30148      var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);
30149      block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);
30150      if (block.length === 0) {
30151        break;
30152      }
30153      stream.pos += block.length;
30154      if (block.found) {
30155        actualLength = stream.pos - streamStartPos;
30156        break;
30157      }
30158    }
30159    stream.pos = streamStartPos;
30160    if (actualLength) {
30161      return {
30162        stream: new _stream.Stream(stream.getBytes(actualLength)),
30163        length: actualLength
30164      };
30165    }
30166    (0, _util.warn)('Unable to recover "Length1" property in Type1 font -- using as is.');
30167    return {
30168      stream: new _stream.Stream(stream.getBytes(suggestedLength)),
30169      length: suggestedLength
30170    };
30171  }
30172  function getEexecBlock(stream, suggestedLength) {
30173    var eexecBytes = stream.getBytes();
30174    return {
30175      stream: new _stream.Stream(eexecBytes),
30176      length: eexecBytes.length
30177    };
30178  }
30179  function Type1Font(name, file, properties) {
30180    var PFB_HEADER_SIZE = 6;
30181    var headerBlockLength = properties.length1;
30182    var eexecBlockLength = properties.length2;
30183    var pfbHeader = file.peekBytes(PFB_HEADER_SIZE);
30184    var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;
30185    if (pfbHeaderPresent) {
30186      file.skip(PFB_HEADER_SIZE);
30187      headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];
30188    }
30189    var headerBlock = getHeaderBlock(file, headerBlockLength);
30190    var headerBlockParser = new _type1_parser.Type1Parser(headerBlock.stream, false, SEAC_ANALYSIS_ENABLED);
30191    headerBlockParser.extractFontHeader(properties);
30192    if (pfbHeaderPresent) {
30193      pfbHeader = file.getBytes(PFB_HEADER_SIZE);
30194      eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];
30195    }
30196    var eexecBlock = getEexecBlock(file, eexecBlockLength);
30197    var eexecBlockParser = new _type1_parser.Type1Parser(eexecBlock.stream, true, SEAC_ANALYSIS_ENABLED);
30198    var data = eexecBlockParser.extractFontProgram();
30199    for (var info in data.properties) {
30200      properties[info] = data.properties[info];
30201    }
30202    var charstrings = data.charstrings;
30203    var type2Charstrings = this.getType2Charstrings(charstrings);
30204    var subrs = this.getType2Subrs(data.subrs);
30205    this.charstrings = charstrings;
30206    this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties);
30207    this.seacs = this.getSeacs(data.charstrings);
30208  }
30209  Type1Font.prototype = {
30210    get numGlyphs() {
30211      return this.charstrings.length + 1;
30212    },
30213    getCharset: function Type1Font_getCharset() {
30214      var charset = ['.notdef'];
30215      var charstrings = this.charstrings;
30216      for (var glyphId = 0; glyphId < charstrings.length; glyphId++) {
30217        charset.push(charstrings[glyphId].glyphName);
30218      }
30219      return charset;
30220    },
30221    getGlyphMapping: function Type1Font_getGlyphMapping(properties) {
30222      var charstrings = this.charstrings;
30223      var glyphNames = ['.notdef'],
30224          glyphId;
30225      for (glyphId = 0; glyphId < charstrings.length; glyphId++) {
30226        glyphNames.push(charstrings[glyphId].glyphName);
30227      }
30228      var encoding = properties.builtInEncoding;
30229      if (encoding) {
30230        var builtInEncoding = Object.create(null);
30231        for (var charCode in encoding) {
30232          glyphId = glyphNames.indexOf(encoding[charCode]);
30233          if (glyphId >= 0) {
30234            builtInEncoding[charCode] = glyphId;
30235          }
30236        }
30237      }
30238      return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);
30239    },
30240    hasGlyphId: function Type1Font_hasGlyphID(id) {
30241      if (id < 0 || id >= this.numGlyphs) {
30242        return false;
30243      }
30244      if (id === 0) {
30245        return true;
30246      }
30247      var glyph = this.charstrings[id - 1];
30248      return glyph.charstring.length > 0;
30249    },
30250    getSeacs: function Type1Font_getSeacs(charstrings) {
30251      var i, ii;
30252      var seacMap = [];
30253      for (i = 0, ii = charstrings.length; i < ii; i++) {
30254        var charstring = charstrings[i];
30255        if (charstring.seac) {
30256          seacMap[i + 1] = charstring.seac;
30257        }
30258      }
30259      return seacMap;
30260    },
30261    getType2Charstrings: function Type1Font_getType2Charstrings(type1Charstrings) {
30262      var type2Charstrings = [];
30263      for (var i = 0, ii = type1Charstrings.length; i < ii; i++) {
30264        type2Charstrings.push(type1Charstrings[i].charstring);
30265      }
30266      return type2Charstrings;
30267    },
30268    getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {
30269      var bias = 0;
30270      var count = type1Subrs.length;
30271      if (count < 1133) {
30272        bias = 107;
30273      } else if (count < 33769) {
30274        bias = 1131;
30275      } else {
30276        bias = 32768;
30277      }
30278      var type2Subrs = [];
30279      var i;
30280      for (i = 0; i < bias; i++) {
30281        type2Subrs.push([0x0B]);
30282      }
30283      for (i = 0; i < count; i++) {
30284        type2Subrs.push(type1Subrs[i]);
30285      }
30286      return type2Subrs;
30287    },
30288    wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs, properties) {
30289      var cff = new _cff_parser.CFF();
30290      cff.header = new _cff_parser.CFFHeader(1, 0, 4, 4);
30291      cff.names = [name];
30292      var topDict = new _cff_parser.CFFTopDict();
30293      topDict.setByName('version', 391);
30294      topDict.setByName('Notice', 392);
30295      topDict.setByName('FullName', 393);
30296      topDict.setByName('FamilyName', 394);
30297      topDict.setByName('Weight', 395);
30298      topDict.setByName('Encoding', null);
30299      topDict.setByName('FontMatrix', properties.fontMatrix);
30300      topDict.setByName('FontBBox', properties.bbox);
30301      topDict.setByName('charset', null);
30302      topDict.setByName('CharStrings', null);
30303      topDict.setByName('Private', null);
30304      cff.topDict = topDict;
30305      var strings = new _cff_parser.CFFStrings();
30306      strings.add('Version 0.11');
30307      strings.add('See original notice');
30308      strings.add(name);
30309      strings.add(name);
30310      strings.add('Medium');
30311      cff.strings = strings;
30312      cff.globalSubrIndex = new _cff_parser.CFFIndex();
30313      var count = glyphs.length;
30314      var charsetArray = [0];
30315      var i, ii;
30316      for (i = 0; i < count; i++) {
30317        var index = _cff_parser.CFFStandardStrings.indexOf(charstrings[i].glyphName);
30318        if (index === -1) {
30319          index = 0;
30320        }
30321        charsetArray.push(index >> 8 & 0xff, index & 0xff);
30322      }
30323      cff.charset = new _cff_parser.CFFCharset(false, 0, [], charsetArray);
30324      var charStringsIndex = new _cff_parser.CFFIndex();
30325      charStringsIndex.add([0x8B, 0x0E]);
30326      for (i = 0; i < count; i++) {
30327        charStringsIndex.add(glyphs[i]);
30328      }
30329      cff.charStrings = charStringsIndex;
30330      var privateDict = new _cff_parser.CFFPrivateDict();
30331      privateDict.setByName('Subrs', null);
30332      var fields = ['BlueValues', 'OtherBlues', 'FamilyBlues', 'FamilyOtherBlues', 'StemSnapH', 'StemSnapV', 'BlueShift', 'BlueFuzz', 'BlueScale', 'LanguageGroup', 'ExpansionFactor', 'ForceBold', 'StdHW', 'StdVW'];
30333      for (i = 0, ii = fields.length; i < ii; i++) {
30334        var field = fields[i];
30335        if (!(field in properties.privateData)) {
30336          continue;
30337        }
30338        var value = properties.privateData[field];
30339        if (Array.isArray(value)) {
30340          for (var j = value.length - 1; j > 0; j--) {
30341            value[j] -= value[j - 1];
30342          }
30343        }
30344        privateDict.setByName(field, value);
30345      }
30346      cff.topDict.privateDict = privateDict;
30347      var subrIndex = new _cff_parser.CFFIndex();
30348      for (i = 0, ii = subrs.length; i < ii; i++) {
30349        subrIndex.add(subrs[i]);
30350      }
30351      privateDict.subrsIndex = subrIndex;
30352      var compiler = new _cff_parser.CFFCompiler(cff);
30353      return compiler.compile();
30354    }
30355  };
30356  return Type1Font;
30357}();
30358var CFFFont = function CFFFontClosure() {
30359  function CFFFont(file, properties) {
30360    this.properties = properties;
30361    var parser = new _cff_parser.CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);
30362    this.cff = parser.parse();
30363    this.cff.duplicateFirstGlyph();
30364    var compiler = new _cff_parser.CFFCompiler(this.cff);
30365    this.seacs = this.cff.seacs;
30366    try {
30367      this.data = compiler.compile();
30368    } catch (e) {
30369      (0, _util.warn)('Failed to compile font ' + properties.loadedName);
30370      this.data = file;
30371    }
30372  }
30373  CFFFont.prototype = {
30374    get numGlyphs() {
30375      return this.cff.charStrings.count;
30376    },
vendor: 15,786 bytes, lines 30377-30796
30377    getCharset: function CFFFont_getCharset() {
30378      return this.cff.charset.charset;
30379    },
30380    getGlyphMapping: function CFFFont_getGlyphMapping() {
30381      var cff = this.cff;
30382      var properties = this.properties;
30383      var charsets = cff.charset.charset;
30384      var charCodeToGlyphId;
30385      var glyphId;
30386      if (properties.composite) {
30387        charCodeToGlyphId = Object.create(null);
30388        if (cff.isCIDFont) {
30389          for (glyphId = 0; glyphId < charsets.length; glyphId++) {
30390            var cid = charsets[glyphId];
30391            var charCode = properties.cMap.charCodeOf(cid);
30392            charCodeToGlyphId[charCode] = glyphId;
30393          }
30394        } else {
30395          for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {
30396            charCodeToGlyphId[glyphId] = glyphId;
30397          }
30398        }
30399        return charCodeToGlyphId;
30400      }
30401      var encoding = cff.encoding ? cff.encoding.encoding : null;
30402      charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);
30403      return charCodeToGlyphId;
30404    },
30405    hasGlyphId: function CFFFont_hasGlyphID(id) {
30406      return this.cff.hasGlyphId(id);
30407    }
30408  };
30409  return CFFFont;
30410}();
30411exports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED;
30412exports.ErrorFont = ErrorFont;
30413exports.Font = Font;
30414exports.FontFlags = FontFlags;
30415exports.ToUnicodeMap = ToUnicodeMap;
30416exports.IdentityToUnicodeMap = IdentityToUnicodeMap;
30417exports.getFontType = getFontType;
30418
30419/***/ }),
30420/* 157 */
30421/***/ (function(module, exports, __w_pdfjs_require__) {
30422
30423"use strict";
30424
30425
30426Object.defineProperty(exports, "__esModule", {
30427  value: true
30428});
30429exports.CFFFDSelect = exports.CFFCompiler = exports.CFFPrivateDict = exports.CFFTopDict = exports.CFFCharset = exports.CFFIndex = exports.CFFStrings = exports.CFFHeader = exports.CFF = exports.CFFParser = exports.CFFStandardStrings = undefined;
30430
30431var _util = __w_pdfjs_require__(2);
30432
30433var _charsets = __w_pdfjs_require__(158);
30434
30435var _encodings = __w_pdfjs_require__(159);
30436
30437var MAX_SUBR_NESTING = 10;
30438var CFFStandardStrings = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall', '001.000', '001.001', '001.002', '001.003', 'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold'];
30439var CFFParser = function CFFParserClosure() {
30440  var CharstringValidationData = [null, {
30441    id: 'hstem',
30442    min: 2,
30443    stackClearing: true,
30444    stem: true
30445  }, null, {
30446    id: 'vstem',
30447    min: 2,
30448    stackClearing: true,
30449    stem: true
30450  }, {
30451    id: 'vmoveto',
30452    min: 1,
30453    stackClearing: true
30454  }, {
30455    id: 'rlineto',
30456    min: 2,
30457    resetStack: true
30458  }, {
30459    id: 'hlineto',
30460    min: 1,
30461    resetStack: true
30462  }, {
30463    id: 'vlineto',
30464    min: 1,
30465    resetStack: true
30466  }, {
30467    id: 'rrcurveto',
30468    min: 6,
30469    resetStack: true
30470  }, null, {
30471    id: 'callsubr',
30472    min: 1,
30473    undefStack: true
30474  }, {
30475    id: 'return',
30476    min: 0,
30477    undefStack: true
30478  }, null, null, {
30479    id: 'endchar',
30480    min: 0,
30481    stackClearing: true
30482  }, null, null, null, {
30483    id: 'hstemhm',
30484    min: 2,
30485    stackClearing: true,
30486    stem: true
30487  }, {
30488    id: 'hintmask',
30489    min: 0,
30490    stackClearing: true
30491  }, {
30492    id: 'cntrmask',
30493    min: 0,
30494    stackClearing: true
30495  }, {
30496    id: 'rmoveto',
30497    min: 2,
30498    stackClearing: true
30499  }, {
30500    id: 'hmoveto',
30501    min: 1,
30502    stackClearing: true
30503  }, {
30504    id: 'vstemhm',
30505    min: 2,
30506    stackClearing: true,
30507    stem: true
30508  }, {
30509    id: 'rcurveline',
30510    min: 8,
30511    resetStack: true
30512  }, {
30513    id: 'rlinecurve',
30514    min: 8,
30515    resetStack: true
30516  }, {
30517    id: 'vvcurveto',
30518    min: 4,
30519    resetStack: true
30520  }, {
30521    id: 'hhcurveto',
30522    min: 4,
30523    resetStack: true
30524  }, null, {
30525    id: 'callgsubr',
30526    min: 1,
30527    undefStack: true
30528  }, {
30529    id: 'vhcurveto',
30530    min: 4,
30531    resetStack: true
30532  }, {
30533    id: 'hvcurveto',
30534    min: 4,
30535    resetStack: true
30536  }];
30537  var CharstringValidationData12 = [null, null, null, {
30538    id: 'and',
30539    min: 2,
30540    stackDelta: -1
30541  }, {
30542    id: 'or',
30543    min: 2,
30544    stackDelta: -1
30545  }, {
30546    id: 'not',
30547    min: 1,
30548    stackDelta: 0
30549  }, null, null, null, {
30550    id: 'abs',
30551    min: 1,
30552    stackDelta: 0
30553  }, {
30554    id: 'add',
30555    min: 2,
30556    stackDelta: -1,
30557    stackFn: function stack_div(stack, index) {
30558      stack[index - 2] = stack[index - 2] + stack[index - 1];
30559    }
30560  }, {
30561    id: 'sub',
30562    min: 2,
30563    stackDelta: -1,
30564    stackFn: function stack_div(stack, index) {
30565      stack[index - 2] = stack[index - 2] - stack[index - 1];
30566    }
30567  }, {
30568    id: 'div',
30569    min: 2,
30570    stackDelta: -1,
30571    stackFn: function stack_div(stack, index) {
30572      stack[index - 2] = stack[index - 2] / stack[index - 1];
30573    }
30574  }, null, {
30575    id: 'neg',
30576    min: 1,
30577    stackDelta: 0,
30578    stackFn: function stack_div(stack, index) {
30579      stack[index - 1] = -stack[index - 1];
30580    }
30581  }, {
30582    id: 'eq',
30583    min: 2,
30584    stackDelta: -1
30585  }, null, null, {
30586    id: 'drop',
30587    min: 1,
30588    stackDelta: -1
30589  }, null, {
30590    id: 'put',
30591    min: 2,
30592    stackDelta: -2
30593  }, {
30594    id: 'get',
30595    min: 1,
30596    stackDelta: 0
30597  }, {
30598    id: 'ifelse',
30599    min: 4,
30600    stackDelta: -3
30601  }, {
30602    id: 'random',
30603    min: 0,
30604    stackDelta: 1
30605  }, {
30606    id: 'mul',
30607    min: 2,
30608    stackDelta: -1,
30609    stackFn: function stack_div(stack, index) {
30610      stack[index - 2] = stack[index - 2] * stack[index - 1];
30611    }
30612  }, null, {
30613    id: 'sqrt',
30614    min: 1,
30615    stackDelta: 0
30616  }, {
30617    id: 'dup',
30618    min: 1,
30619    stackDelta: 1
30620  }, {
30621    id: 'exch',
30622    min: 2,
30623    stackDelta: 0
30624  }, {
30625    id: 'index',
30626    min: 2,
30627    stackDelta: 0
30628  }, {
30629    id: 'roll',
30630    min: 3,
30631    stackDelta: -2
30632  }, null, null, null, {
30633    id: 'hflex',
30634    min: 7,
30635    resetStack: true
30636  }, {
30637    id: 'flex',
30638    min: 13,
30639    resetStack: true
30640  }, {
30641    id: 'hflex1',
30642    min: 9,
30643    resetStack: true
30644  }, {
30645    id: 'flex1',
30646    min: 11,
30647    resetStack: true
30648  }];
30649  function CFFParser(file, properties, seacAnalysisEnabled) {
30650    this.bytes = file.getBytes();
30651    this.properties = properties;
30652    this.seacAnalysisEnabled = !!seacAnalysisEnabled;
30653  }
30654  CFFParser.prototype = {
30655    parse: function CFFParser_parse() {
30656      var properties = this.properties;
30657      var cff = new CFF();
30658      this.cff = cff;
30659      var header = this.parseHeader();
30660      var nameIndex = this.parseIndex(header.endPos);
30661      var topDictIndex = this.parseIndex(nameIndex.endPos);
30662      var stringIndex = this.parseIndex(topDictIndex.endPos);
30663      var globalSubrIndex = this.parseIndex(stringIndex.endPos);
30664      var topDictParsed = this.parseDict(topDictIndex.obj.get(0));
30665      var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);
30666      cff.header = header.obj;
30667      cff.names = this.parseNameIndex(nameIndex.obj);
30668      cff.strings = this.parseStringIndex(stringIndex.obj);
30669      cff.topDict = topDict;
30670      cff.globalSubrIndex = globalSubrIndex.obj;
30671      this.parsePrivateDict(cff.topDict);
30672      cff.isCIDFont = topDict.hasName('ROS');
30673      var charStringOffset = topDict.getByName('CharStrings');
30674      var charStringIndex = this.parseIndex(charStringOffset).obj;
30675      var fontMatrix = topDict.getByName('FontMatrix');
30676      if (fontMatrix) {
30677        properties.fontMatrix = fontMatrix;
30678      }
30679      var fontBBox = topDict.getByName('FontBBox');
30680      if (fontBBox) {
30681        properties.ascent = Math.max(fontBBox[3], fontBBox[1]);
30682        properties.descent = Math.min(fontBBox[1], fontBBox[3]);
30683        properties.ascentScaled = true;
30684      }
30685      var charset, encoding;
30686      if (cff.isCIDFont) {
30687        var fdArrayIndex = this.parseIndex(topDict.getByName('FDArray')).obj;
30688        for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) {
30689          var dictRaw = fdArrayIndex.get(i);
30690          var fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);
30691          this.parsePrivateDict(fontDict);
30692          cff.fdArray.push(fontDict);
30693        }
30694        encoding = null;
30695        charset = this.parseCharsets(topDict.getByName('charset'), charStringIndex.count, cff.strings, true);
30696        cff.fdSelect = this.parseFDSelect(topDict.getByName('FDSelect'), charStringIndex.count);
30697      } else {
30698        charset = this.parseCharsets(topDict.getByName('charset'), charStringIndex.count, cff.strings, false);
30699        encoding = this.parseEncoding(topDict.getByName('Encoding'), properties, cff.strings, charset.charset);
30700      }
30701      cff.charset = charset;
30702      cff.encoding = encoding;
30703      var charStringsAndSeacs = this.parseCharStrings({
30704        charStrings: charStringIndex,
30705        localSubrIndex: topDict.privateDict.subrsIndex,
30706        globalSubrIndex: globalSubrIndex.obj,
30707        fdSelect: cff.fdSelect,
30708        fdArray: cff.fdArray,
30709        privateDict: topDict.privateDict
30710      });
30711      cff.charStrings = charStringsAndSeacs.charStrings;
30712      cff.seacs = charStringsAndSeacs.seacs;
30713      cff.widths = charStringsAndSeacs.widths;
30714      return cff;
30715    },
30716    parseHeader: function CFFParser_parseHeader() {
30717      var bytes = this.bytes;
30718      var bytesLength = bytes.length;
30719      var offset = 0;
30720      while (offset < bytesLength && bytes[offset] !== 1) {
30721        ++offset;
30722      }
30723      if (offset >= bytesLength) {
30724        throw new _util.FormatError('Invalid CFF header');
30725      }
30726      if (offset !== 0) {
30727        (0, _util.info)('cff data is shifted');
30728        bytes = bytes.subarray(offset);
30729        this.bytes = bytes;
30730      }
30731      var major = bytes[0];
30732      var minor = bytes[1];
30733      var hdrSize = bytes[2];
30734      var offSize = bytes[3];
30735      var header = new CFFHeader(major, minor, hdrSize, offSize);
30736      return {
30737        obj: header,
30738        endPos: hdrSize
30739      };
30740    },
30741    parseDict: function CFFParser_parseDict(dict) {
30742      var pos = 0;
30743      function parseOperand() {
30744        var value = dict[pos++];
30745        if (value === 30) {
30746          return parseFloatOperand();
30747        } else if (value === 28) {
30748          value = dict[pos++];
30749          value = (value << 24 | dict[pos++] << 16) >> 16;
30750          return value;
30751        } else if (value === 29) {
30752          value = dict[pos++];
30753          value = value << 8 | dict[pos++];
30754          value = value << 8 | dict[pos++];
30755          value = value << 8 | dict[pos++];
30756          return value;
30757        } else if (value >= 32 && value <= 246) {
30758          return value - 139;
30759        } else if (value >= 247 && value <= 250) {
30760          return (value - 247) * 256 + dict[pos++] + 108;
30761        } else if (value >= 251 && value <= 254) {
30762          return -((value - 251) * 256) - dict[pos++] - 108;
30763        }
30764        (0, _util.warn)('CFFParser_parseDict: "' + value + '" is a reserved command.');
30765        return NaN;
30766      }
30767      function parseFloatOperand() {
30768        var str = '';
30769        var eof = 15;
30770        var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', null, '-'];
30771        var length = dict.length;
30772        while (pos < length) {
30773          var b = dict[pos++];
30774          var b1 = b >> 4;
30775          var b2 = b & 15;
30776          if (b1 === eof) {
30777            break;
30778          }
30779          str += lookup[b1];
30780          if (b2 === eof) {
30781            break;
30782          }
30783          str += lookup[b2];
30784        }
30785        return parseFloat(str);
30786      }
30787      var operands = [];
30788      var entries = [];
30789      pos = 0;
30790      var end = dict.length;
30791      while (pos < end) {
30792        var b = dict[pos];
30793        if (b <= 21) {
30794          if (b === 12) {
30795            b = b << 8 | dict[++pos];
30796          }
30797          entries.push([b, operands]);
30798          operands = [];
30799          ++pos;
30800        } else {
30801          operands.push(parseOperand());
30802        }
30803      }
30804      return entries;
30805    },
30806    parseIndex: function CFFParser_parseIndex(pos) {
30807      var cffIndex = new CFFIndex();
30808      var bytes = this.bytes;
30809      var count = bytes[pos++] << 8 | bytes[pos++];
30810      var offsets = [];
30811      var end = pos;
30812      var i, ii;
30813      if (count !== 0) {
30814        var offsetSize = bytes[pos++];
30815        var startPos = pos + (count + 1) * offsetSize - 1;
30816        for (i = 0, ii = count + 1; i < ii; ++i) {
30817          var offset = 0;
30818          for (var j = 0; j < offsetSize; ++j) {
30819            offset <<= 8;
30820            offset += bytes[pos++];
30821          }
30822          offsets.push(startPos + offset);
30823        }
30824        end = offsets[count];
30825      }
30826      for (i = 0, ii = offsets.length - 1; i < ii; ++i) {
30827        var offsetStart = offsets[i];
30828        var offsetEnd = offsets[i + 1];
30829        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));
30830      }
30831      return {
30832        obj: cffIndex,
30833        endPos: end
30834      };
30835    },
30836    parseNameIndex: function CFFParser_parseNameIndex(index) {
30837      var names = [];
30838      for (var i = 0, ii = index.count; i < ii; ++i) {
30839        var name = index.get(i);
30840        names.push((0, _util.bytesToString)(name));
30841      }
30842      return names;
30843    },
30844    parseStringIndex: function CFFParser_parseStringIndex(index) {
30845      var strings = new CFFStrings();
30846      for (var i = 0, ii = index.count; i < ii; ++i) {
30847        var data = index.get(i);
30848        strings.add((0, _util.bytesToString)(data));
30849      }
30850      return strings;
30851    },
30852    createDict: function CFFParser_createDict(Type, dict, strings) {
30853      var cffDict = new Type(strings);
30854      for (var i = 0, ii = dict.length; i < ii; ++i) {
30855        var pair = dict[i];
30856        var key = pair[0];
30857        var value = pair[1];
30858        cffDict.setByKey(key, value);
30859      }
30860      return cffDict;
30861    },
30862    parseCharString: function CFFParser_parseCharString(state, data, localSubrIndex, globalSubrIndex) {
30863      if (!data || state.callDepth > MAX_SUBR_NESTING) {
30864        return false;
30865      }
30866      var stackSize = state.stackSize;
30867      var stack = state.stack;
30868      var length = data.length;
30869      for (var j = 0; j < length;) {
30870        var value = data[j++];
30871        var validationCommand = null;
30872        if (value === 12) {
30873          var q = data[j++];
30874          if (q === 0) {
30875            data[j - 2] = 139;
30876            data[j - 1] = 22;
30877            stackSize = 0;
30878          } else {
30879            validationCommand = CharstringValidationData12[q];
30880          }
30881        } else if (value === 28) {
30882          stack[stackSize] = (data[j] << 24 | data[j + 1] << 16) >> 16;
30883          j += 2;
30884          stackSize++;
30885        } else if (value === 14) {
30886          if (stackSize >= 4) {
30887            stackSize -= 4;
30888            if (this.seacAnalysisEnabled) {
30889              state.seac = stack.slice(stackSize, stackSize + 4);
30890              return false;
30891            }
30892          }
30893          validationCommand = CharstringValidationData[value];
30894        } else if (value >= 32 && value <= 246) {
30895          stack[stackSize] = value - 139;
30896          stackSize++;
30897        } else if (value >= 247 && value <= 254) {
30898          stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108;
30899          j++;
30900          stackSize++;
30901        } else if (value === 255) {
30902          stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536;
30903          j += 4;
30904          stackSize++;
30905        } else if (value === 19 || value === 20) {
30906          state.hints += stackSize >> 1;
30907          j += state.hints + 7 >> 3;
30908          stackSize %= 2;
30909          validationCommand = CharstringValidationData[value];
30910        } else if (value === 10 || value === 29) {
30911          var subrsIndex;
30912          if (value === 10) {
30913            subrsIndex = localSubrIndex;
30914          } else {
30915            subrsIndex = globalSubrIndex;
30916          }
30917          if (!subrsIndex) {
30918            validationCommand = CharstringValidationData[value];
30919            (0, _util.warn)('Missing subrsIndex for ' + validationCommand.id);
30920            return false;
30921          }
30922          var bias = 32768;
30923          if (subrsIndex.count < 1240) {
30924            bias = 107;
30925          } else if (subrsIndex.count < 33900) {
30926            bias = 1131;
30927          }
30928          var subrNumber = stack[--stackSize] + bias;
30929          if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {
30930            validationCommand = CharstringValidationData[value];
30931            (0, _util.warn)('Out of bounds subrIndex for ' + validationCommand.id);
30932            return false;
30933          }
30934          state.stackSize = stackSize;
30935          state.callDepth++;
30936          var valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex);
30937          if (!valid) {
30938            return false;
30939          }
30940          state.callDepth--;
30941          stackSize = state.stackSize;
30942          continue;
30943        } else if (value === 11) {
30944          state.stackSize = stackSize;
30945          return true;
30946        } else {
30947          validationCommand = CharstringValidationData[value];
30948        }
30949        if (validationCommand) {
30950          if (validationCommand.stem) {
30951            state.hints += stackSize >> 1;
30952          }
30953          if ('min' in validationCommand) {
30954            if (!state.undefStack && stackSize < validationCommand.min) {
30955              (0, _util.warn)('Not enough parameters for ' + validationCommand.id + '; actual: ' + stackSize + ', expected: ' + validationCommand.min);
30956              return false;
30957            }
30958          }
30959          if (state.firstStackClearing && validationCommand.stackClearing) {
30960            state.firstStackClearing = false;
30961            stackSize -= validationCommand.min;
30962            if (stackSize >= 2 && validationCommand.stem) {
30963              stackSize %= 2;
30964            } else if (stackSize > 1) {
30965              (0, _util.warn)('Found too many parameters for stack-clearing command');
30966            }
30967            if (stackSize > 0 && stack[stackSize - 1] >= 0) {
30968              state.width = stack[stackSize - 1];
30969            }
30970          }
30971          if ('stackDelta' in validationCommand) {
30972            if ('stackFn' in validationCommand) {
30973              validationCommand.stackFn(stack, stackSize);
30974            }
30975            stackSize += validationCommand.stackDelta;
30976          } else if (validationCommand.stackClearing) {
30977            stackSize = 0;
30978          } else if (validationCommand.resetStack) {
30979            stackSize = 0;
30980            state.undefStack = false;
30981          } else if (validationCommand.undefStack) {
30982            stackSize = 0;
30983            state.undefStack = true;
30984            state.firstStackClearing = false;
30985          }
30986        }
30987      }
30988      state.stackSize = stackSize;
30989      return true;
30990    },
30991    parseCharStrings: function parseCharStrings(_ref) {
30992      var charStrings = _ref.charStrings,
30993          localSubrIndex = _ref.localSubrIndex,
30994          globalSubrIndex = _ref.globalSubrIndex,
30995          fdSelect = _ref.fdSelect,
30996          fdArray = _ref.fdArray,
30997          privateDict = _ref.privateDict;
30998
30999      var seacs = [];
31000      var widths = [];
31001      var count = charStrings.count;
31002      for (var i = 0; i < count; i++) {
31003        var charstring = charStrings.get(i);
31004        var state = {
31005          callDepth: 0,
31006          stackSize: 0,
31007          stack: [],
31008          undefStack: true,
31009          hints: 0,
31010          firstStackClearing: true,
31011          seac: null,
31012          width: null
31013        };
31014        var valid = true;
31015        var localSubrToUse = null;
31016        var privateDictToUse = privateDict;
31017        if (fdSelect && fdArray.length) {
31018          var fdIndex = fdSelect.getFDIndex(i);
31019          if (fdIndex === -1) {
31020            (0, _util.warn)('Glyph index is not in fd select.');
31021            valid = false;
31022          }
31023          if (fdIndex >= fdArray.length) {
31024            (0, _util.warn)('Invalid fd index for glyph index.');
31025            valid = false;
31026          }
31027          if (valid) {
31028            privateDictToUse = fdArray[fdIndex].privateDict;
31029            localSubrToUse = privateDictToUse.subrsIndex;
31030          }
31031        } else if (localSubrIndex) {
31032          localSubrToUse = localSubrIndex;
31033        }
31034        if (valid) {
31035          valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex);
31036        }
31037        if (state.width !== null) {
31038          var nominalWidth = privateDictToUse.getByName('nominalWidthX');
31039          widths[i] = nominalWidth + state.width;
31040        } else {
31041          var defaultWidth = privateDictToUse.getByName('defaultWidthX');
31042          widths[i] = defaultWidth;
31043        }
31044        if (state.seac !== null) {
31045          seacs[i] = state.seac;
31046        }
31047        if (!valid) {
31048          charStrings.set(i, new Uint8Array([14]));
31049        }
31050      }
31051      return {
31052        charStrings: charStrings,
31053        seacs: seacs,
31054        widths: widths
31055      };
31056    },
31057
31058    emptyPrivateDictionary: function CFFParser_emptyPrivateDictionary(parentDict) {
31059      var privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);
31060      parentDict.setByKey(18, [0, 0]);
31061      parentDict.privateDict = privateDict;
31062    },
31063    parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) {
31064      if (!parentDict.hasName('Private')) {
31065        this.emptyPrivateDictionary(parentDict);
31066        return;
31067      }
31068      var privateOffset = parentDict.getByName('Private');
31069      if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {
31070        parentDict.removeByName('Private');
31071        return;
31072      }
31073      var size = privateOffset[0];
31074      var offset = privateOffset[1];
31075      if (size === 0 || offset >= this.bytes.length) {
31076        this.emptyPrivateDictionary(parentDict);
31077        return;
31078      }
31079      var privateDictEnd = offset + size;
31080      var dictData = this.bytes.subarray(offset, privateDictEnd);
31081      var dict = this.parseDict(dictData);
31082      var privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);
31083      parentDict.privateDict = privateDict;
31084      if (!privateDict.getByName('Subrs')) {
31085        return;
31086      }
31087      var subrsOffset = privateDict.getByName('Subrs');
31088      var relativeOffset = offset + subrsOffset;
31089      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {
31090        this.emptyPrivateDictionary(parentDict);
31091        return;
31092      }
31093      var subrsIndex = this.parseIndex(relativeOffset);
31094      privateDict.subrsIndex = subrsIndex.obj;
31095    },
31096    parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) {
31097      if (pos === 0) {
31098        return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, _charsets.ISOAdobeCharset);
31099      } else if (pos === 1) {
31100        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, _charsets.ExpertCharset);
31101      } else if (pos === 2) {
31102        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset);
31103      }
31104      var bytes = this.bytes;
31105      var start = pos;
31106      var format = bytes[pos++];
31107      var charset = ['.notdef'];
31108      var id, count, i;
31109      length -= 1;
31110      switch (format) {
31111        case 0:
31112          for (i = 0; i < length; i++) {
31113            id = bytes[pos++] << 8 | bytes[pos++];
31114            charset.push(cid ? id : strings.get(id));
31115          }
31116          break;
31117        case 1:
31118          while (charset.length <= length) {
31119            id = bytes[pos++] << 8 | bytes[pos++];
31120            count = bytes[pos++];
31121            for (i = 0; i <= count; i++) {
31122              charset.push(cid ? id++ : strings.get(id++));
31123            }
31124          }
31125          break;
31126        case 2:
31127          while (charset.length <= length) {
31128            id = bytes[pos++] << 8 | bytes[pos++];
31129            count = bytes[pos++] << 8 | bytes[pos++];
31130            for (i = 0; i <= count; i++) {
31131              charset.push(cid ? id++ : strings.get(id++));
31132            }
31133          }
31134          break;
31135        default:
31136          throw new _util.FormatError('Unknown charset format');
31137      }
31138      var end = pos;
31139      var raw = bytes.subarray(start, end);
31140      return new CFFCharset(false, format, charset, raw);
31141    },
31142    parseEncoding: function CFFParser_parseEncoding(pos, properties, strings, charset) {
31143      var encoding = Object.create(null);
31144      var bytes = this.bytes;
31145      var predefined = false;
31146      var format, i, ii;
31147      var raw = null;
31148      function readSupplement() {
31149        var supplementsCount = bytes[pos++];
31150        for (i = 0; i < supplementsCount; i++) {
31151          var code = bytes[pos++];
31152          var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);
31153          encoding[code] = charset.indexOf(strings.get(sid));
31154        }
31155      }
31156      if (pos === 0 || pos === 1) {
31157        predefined = true;
31158        format = pos;
31159        var baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding;
31160        for (i = 0, ii = charset.length; i < ii; i++) {
31161          var index = baseEncoding.indexOf(charset[i]);
31162          if (index !== -1) {
31163            encoding[index] = i;
31164          }
31165        }
31166      } else {
31167        var dataStart = pos;
31168        format = bytes[pos++];
31169        switch (format & 0x7f) {
31170          case 0:
31171            var glyphsCount = bytes[pos++];
31172            for (i = 1; i <= glyphsCount; i++) {
31173              encoding[bytes[pos++]] = i;
31174            }
31175            break;
31176          case 1:
31177            var rangesCount = bytes[pos++];
31178            var gid = 1;
31179            for (i = 0; i < rangesCount; i++) {
31180              var start = bytes[pos++];
31181              var left = bytes[pos++];
31182              for (var j = start; j <= start + left; j++) {
31183                encoding[j] = gid++;
31184              }
31185            }
31186            break;
31187          default:
31188            throw new _util.FormatError('Unknown encoding format: ' + format + ' in CFF');
31189        }
31190        var dataEnd = pos;
31191        if (format & 0x80) {
31192          bytes[dataStart] &= 0x7f;
31193          readSupplement();
31194        }
31195        raw = bytes.subarray(dataStart, dataEnd);
31196      }
31197      format = format & 0x7f;
31198      return new CFFEncoding(predefined, format, encoding, raw);
31199    },
31200    parseFDSelect: function CFFParser_parseFDSelect(pos, length) {
31201      var bytes = this.bytes;
31202      var format = bytes[pos++];
31203      var fdSelect = [];
31204      var i;
31205      switch (format) {
31206        case 0:
31207          for (i = 0; i < length; ++i) {
31208            var id = bytes[pos++];
31209            fdSelect.push(id);
31210          }
31211          break;
31212        case 3:
31213          var rangesCount = bytes[pos++] << 8 | bytes[pos++];
31214          for (i = 0; i < rangesCount; ++i) {
31215            var first = bytes[pos++] << 8 | bytes[pos++];
31216            if (i === 0 && first !== 0) {
31217              (0, _util.warn)('parseFDSelect: The first range must have a first GID of 0' + ' -- trying to recover.');
31218              first = 0;
31219            }
31220            var fdIndex = bytes[pos++];
31221            var next = bytes[pos] << 8 | bytes[pos + 1];
31222            for (var j = first; j < next; ++j) {
31223              fdSelect.push(fdIndex);
31224            }
31225          }
31226          pos += 2;
31227          break;
31228        default:
31229          throw new _util.FormatError('parseFDSelect: Unknown format "' + format + '".');
31230      }
31231      if (fdSelect.length !== length) {
31232        throw new _util.FormatError('parseFDSelect: Invalid font data.');
31233      }
31234      return new CFFFDSelect(format, fdSelect);
31235    }
31236  };
31237  return CFFParser;
31238}();
31239var CFF = function CFFClosure() {
31240  function CFF() {
31241    this.header = null;
31242    this.names = [];
31243    this.topDict = null;
31244    this.strings = new CFFStrings();
31245    this.globalSubrIndex = null;
31246    this.encoding = null;
31247    this.charset = null;
31248    this.charStrings = null;
31249    this.fdArray = [];
31250    this.fdSelect = null;
31251    this.isCIDFont = false;
31252  }
31253  CFF.prototype = {
31254    duplicateFirstGlyph: function CFF_duplicateFirstGlyph() {
31255      if (this.charStrings.count >= 65535) {
31256        (0, _util.warn)('Not enough space in charstrings to duplicate first glyph.');
31257        return;
31258      }
31259      var glyphZero = this.charStrings.get(0);
31260      this.charStrings.add(glyphZero);
31261      if (this.isCIDFont) {
31262        this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);
31263      }
31264    },
31265    hasGlyphId: function CFF_hasGlyphID(id) {
31266      if (id < 0 || id >= this.charStrings.count) {
31267        return false;
31268      }
31269      var glyph = this.charStrings.get(id);
31270      return glyph.length > 0;
31271    }
31272  };
31273  return CFF;
31274}();
31275var CFFHeader = function CFFHeaderClosure() {
31276  function CFFHeader(major, minor, hdrSize, offSize) {
31277    this.major = major;
31278    this.minor = minor;
31279    this.hdrSize = hdrSize;
31280    this.offSize = offSize;
31281  }
31282  return CFFHeader;
31283}();
31284var CFFStrings = function CFFStringsClosure() {
31285  function CFFStrings() {
31286    this.strings = [];
31287  }
31288  CFFStrings.prototype = {
31289    get: function CFFStrings_get(index) {
31290      if (index >= 0 && index <= 390) {
31291        return CFFStandardStrings[index];
31292      }
31293      if (index - 391 <= this.strings.length) {
31294        return this.strings[index - 391];
31295      }
31296      return CFFStandardStrings[0];
31297    },
31298    add: function CFFStrings_add(value) {
31299      this.strings.push(value);
31300    },
31301    get count() {
31302      return this.strings.length;
31303    }
31304  };
31305  return CFFStrings;
31306}();
31307var CFFIndex = function CFFIndexClosure() {
31308  function CFFIndex() {
31309    this.objects = [];
31310    this.length = 0;
31311  }
31312  CFFIndex.prototype = {
31313    add: function CFFIndex_add(data) {
31314      this.length += data.length;
31315      this.objects.push(data);
31316    },
31317    set: function CFFIndex_set(index, data) {
31318      this.length += data.length - this.objects[index].length;
31319      this.objects[index] = data;
31320    },
31321    get: function CFFIndex_get(index) {
31322      return this.objects[index];
31323    },
31324    get count() {
31325      return this.objects.length;
31326    }
31327  };
31328  return CFFIndex;
31329}();
31330var CFFDict = function CFFDictClosure() {
31331  function CFFDict(tables, strings) {
31332    this.keyToNameMap = tables.keyToNameMap;
31333    this.nameToKeyMap = tables.nameToKeyMap;
31334    this.defaults = tables.defaults;
31335    this.types = tables.types;
31336    this.opcodes = tables.opcodes;
31337    this.order = tables.order;
31338    this.strings = strings;
31339    this.values = Object.create(null);
31340  }
31341  CFFDict.prototype = {
31342    setByKey: function CFFDict_setByKey(key, value) {
31343      if (!(key in this.keyToNameMap)) {
31344        return false;
31345      }
31346      var valueLength = value.length;
31347      if (valueLength === 0) {
31348        return true;
31349      }
31350      for (var i = 0; i < valueLength; i++) {
31351        if (isNaN(value[i])) {
31352          (0, _util.warn)('Invalid CFFDict value: "' + value + '" for key "' + key + '".');
31353          return true;
31354        }
31355      }
31356      var type = this.types[key];
31357      if (type === 'num' || type === 'sid' || type === 'offset') {
31358        value = value[0];
31359      }
31360      this.values[key] = value;
31361      return true;
31362    },
31363    setByName: function CFFDict_setByName(name, value) {
31364      if (!(name in this.nameToKeyMap)) {
31365        throw new _util.FormatError('Invalid dictionary name "' + name + '"');
31366      }
31367      this.values[this.nameToKeyMap[name]] = value;
31368    },
31369    hasName: function CFFDict_hasName(name) {
31370      return this.nameToKeyMap[name] in this.values;
31371    },
31372    getByName: function CFFDict_getByName(name) {
31373      if (!(name in this.nameToKeyMap)) {
31374        throw new _util.FormatError('Invalid dictionary name ' + name + '"');
31375      }
31376      var key = this.nameToKeyMap[name];
31377      if (!(key in this.values)) {
31378        return this.defaults[key];
31379      }
31380      return this.values[key];
31381    },
31382    removeByName: function CFFDict_removeByName(name) {
31383      delete this.values[this.nameToKeyMap[name]];
31384    }
31385  };
31386  CFFDict.createTables = function CFFDict_createTables(layout) {
31387    var tables = {
31388      keyToNameMap: {},
31389      nameToKeyMap: {},
31390      defaults: {},
31391      types: {},
31392      opcodes: {},
31393      order: []
31394    };
31395    for (var i = 0, ii = layout.length; i < ii; ++i) {
31396      var entry = layout[i];
31397      var key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];
31398      tables.keyToNameMap[key] = entry[1];
31399      tables.nameToKeyMap[entry[1]] = key;
31400      tables.types[key] = entry[2];
31401      tables.defaults[key] = entry[3];
31402      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];
31403      tables.order.push(key);
31404    }
31405    return tables;
31406  };
31407  return CFFDict;
31408}();
31409var CFFTopDict = function CFFTopDictClosure() {
31410  var layout = [[[12, 30], 'ROS', ['sid', 'sid', 'num'], null], [[12, 20], 'SyntheticBase', 'num', null], [0, 'version', 'sid', null], [1, '
31410Notice', 'sid', null], [[12, 0], 'Copyright', 'sid', null], [2, 'FullName', 'sid', null], [3, 'FamilyName', 'sid', null], [4, 'Weight', 'sid', null], [[12, 1], 'isFixedPitch', 'num', 0], [[12, 2], 'ItalicAngle', 'num', 0], [[12, 3], 'UnderlinePosition', 'num', -100], [[12, 4], 'UnderlineThickness', 'num', 50], [[12, 5], 'PaintType', 'num', 0], [[12, 6], 'CharstringType', 'num', 2], [[12, 7], 'FontMatrix', ['num', 'num', 'num', 'num', 'num', 'num'], [0.001, 0, 0, 0.001, 0, 0]], [13, 'UniqueID', 'num', null], [5, 'FontBBox', ['num', 'num', 'num', 'num'], [0, 0, 0, 0]], [[12, 8], 'StrokeWidth', 'num', 0], [14, 'XUID', 'array', null], [15, 'charset', 'offset', 0], [16, 'Encoding', 'offset', 0], [17, 'CharStrings', 'offset', 0], [18, 'Private', ['offset', 'offset'], null], [[12, 21], 'PostScript', 'sid', null], [[12, 22], 'BaseFontName', 'sid', null], [[12, 23], 'BaseFontBlend', 'delta', null], [[12, 31], 'CIDFontVersion', 'num', 0], [[12, 32], 'CIDFontRevision', 'num', 0], [[12, 33], 'CIDFontType', 'num', 0], [[12, 34], 'CIDCount', 'num', 8720], [[12, 35], 'UIDBase', 'num', null], [[12, 37], 'FDSelect', 'offset', null], [[12, 36], 'FDArray', 'offset', null], [[12, 38], 'FontName', 'sid', null]];
31411  var tables = null;
31412  function CFFTopDict(strings) {
31413    if (tables === null) {
31414      tables = CFFDict.createTables(layout);
31415    }
31416    CFFDict.call(this, tables, strings);
31417    this.privateDict = null;
31418  }
31419  CFFTopDict.prototype = Object.create(CFFDict.prototype);
31420  return CFFTopDict;
31421}();
31422var CFFPrivateDict = function CFFPrivateDictClosure() {
31423  var layout = [[6, 'BlueValues', 'delta', null], [7, 'OtherBlues', 'delta', null], [8, 'FamilyBlues', 'delta', null], [9, 'FamilyOtherBlues', 'delta', null], [[12, 9], 'BlueScale', 'num', 0.039625], [[12, 10], 'BlueShift', 'num', 7], [[12, 11], 'BlueFuzz', 'num', 1], [10, 'StdHW', 'num', null], [11, 'StdVW', 'num', null], [[12, 12], 'StemSnapH', 'delta', null], [[12, 13], 'StemSnapV', 'delta', null], [[12, 14], 'ForceBold', 'num', 0], [[12, 17], 'LanguageGroup', 'num', 0], [[12, 18], 'ExpansionFactor', 'num', 0.06], [[12, 19], 'initialRandomSeed', 'num', 0], [20, 'defaultWidthX', 'num', 0], [21, 'nominalWidthX', 'num', 0], [19, 'Subrs', 'offset', null]];
31424  var tables = null;
31425  function CFFPrivateDict(strings) {
31426    if (tables === null) {
31427      tables = CFFDict.createTables(layout);
31428    }
31429    CFFDict.call(this, tables, strings);
31430    this.subrsIndex = null;
31431  }
31432  CFFPrivateDict.prototype = Object.create(CFFDict.prototype);
31433  return CFFPrivateDict;
31434}();
31435var CFFCharsetPredefinedTypes = {
31436  ISO_ADOBE: 0,
31437  EXPERT: 1,
31438  EXPERT_SUBSET: 2
31439};
31440var CFFCharset = function CFFCharsetClosure() {
31441  function CFFCharset(predefined, format, charset, raw) {
31442    this.predefined = predefined;
31443    this.format = format;
31444    this.charset = charset;
31445    this.raw = raw;
31446  }
31447  return CFFCharset;
31448}();
31449var CFFEncoding = function CFFEncodingClosure() {
31450  function CFFEncoding(predefined, format, encoding, raw) {
31451    this.predefined = predefined;
31452    this.format = format;
31453    this.encoding = encoding;
31454    this.raw = raw;
31455  }
31456  return CFFEncoding;
31457}();
31458var CFFFDSelect = function CFFFDSelectClosure() {
31459  function CFFFDSelect(format, fdSelect) {
31460    this.format = format;
31461    this.fdSelect = fdSelect;
31462  }
31463  CFFFDSelect.prototype = {
31464    getFDIndex: function CFFFDSelect_get(glyphIndex) {
31465      if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {
31466        return -1;
31467      }
31468      return this.fdSelect[glyphIndex];
31469    }
31470  };
31471  return CFFFDSelect;
31472}();
31473var CFFOffsetTracker = function CFFOffsetTrackerClosure() {
31474  function CFFOffsetTracker() {
31475    this.offsets = Object.create(null);
31476  }
31477  CFFOffsetTracker.prototype = {
31478    isTracking: function CFFOffsetTracker_isTracking(key) {
31479      return key in this.offsets;
31480    },
31481    track: function CFFOffsetTracker_track(key, location) {
31482      if (key in this.offsets) {
31483        throw new _util.FormatError('Already tracking location of ' + key);
31484      }
31485      this.offsets[key] = location;
31486    },
31487    offset: function CFFOffsetTracker_offset(value) {
31488      for (var key in this.offsets) {
31489        this.offsets[key] += value;
31490      }
31491    },
31492    setEntryLocation: function CFFOffsetTracker_setEntryLocation(key, values, output) {
31493      if (!(key in this.offsets)) {
31494        throw new _util.FormatError('Not tracking location of ' + key);
31495      }
31496      var data = output.data;
31497      var dataOffset = this.offsets[key];
31498      var size = 5;
31499      for (var i = 0, ii = values.length; i < ii; ++i) {
31500        var offset0 = i * size + dataOffset;
31501        var offset1 = offset0 + 1;
31502        var offset2 = offset0 + 2;
31503        var offset3 = offset0 + 3;
31504        var offset4 = offset0 + 4;
31505        if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {
31506          throw new _util.FormatError('writing to an offset that is not empty');
31507        }
31508        var value = values[i];
31509        data[offset0] = 0x1d;
31510        data[offset1] = value >> 24 & 0xFF;
31511        data[offset2] = value >> 16 & 0xFF;
31512        data[offset3] = value >> 8 & 0xFF;
31513        data[offset4] = value & 0xFF;
31514      }
31515    }
31516  };
31517  return CFFOffsetTracker;
31518}();
31519var CFFCompiler = function CFFCompilerClosure() {
31520  function CFFCompiler(cff) {
31521    this.cff = cff;
31522  }
31523  CFFCompiler.prototype = {
31524    compile: function CFFCompiler_compile() {
31525      var cff = this.cff;
31526      var output = {
31527        data: [],
31528        length: 0,
31529        add: function CFFCompiler_add(data) {
31530          this.data = this.data.concat(data);
31531          this.length = this.data.length;
31532        }
31533      };
31534      var header = this.compileHeader(cff.header);
31535      output.add(header);
31536      var nameIndex = this.compileNameIndex(cff.names);
31537      output.add(nameIndex);
31538      if (cff.isCIDFont) {
31539        if (cff.topDict.hasName('FontMatrix')) {
31540          var base = cff.topDict.getByName('FontMatrix');
31541          cff.topDict.removeByName('FontMatrix');
31542          for (var i = 0, ii = cff.fdArray.length; i < ii; i++) {
31543            var subDict = cff.fdArray[i];
31544            var matrix = base.slice(0);
31545            if (subDict.hasName('FontMatrix')) {
31546              matrix = _util.Util.transform(matrix, subDict.getByName('FontMatrix'));
31547            }
31548            subDict.setByName('FontMatrix', matrix);
31549          }
31550        }
31551      }
31552      cff.topDict.setByName('charset', 0);
31553      var compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);
31554      output.add(compiled.output);
31555      var topDictTracker = compiled.trackers[0];
31556      var stringIndex = this.compileStringIndex(cff.strings.strings);
31557      output.add(stringIndex);
31558      var globalSubrIndex = this.compileIndex(cff.globalSubrIndex);
31559      output.add(globalSubrIndex);
31560      if (cff.encoding && cff.topDict.hasName('Encoding')) {
31561        if (cff.encoding.predefined) {
31562          topDictTracker.setEntryLocation('Encoding', [cff.encoding.format], output);
31563        } else {
31564          var encoding = this.compileEncoding(cff.encoding);
31565          topDictTracker.setEntryLocation('Encoding', [output.length], output);
31566          output.add(encoding);
31567        }
31568      }
31569      var charset = this.compileCharset(cff.charset);
31570      topDictTracker.setEntryLocation('charset', [output.length], output);
31571      output.add(charset);
31572      var charStrings = this.compileCharStrings(cff.charStrings);
31573      topDictTracker.setEntryLocation('CharStrings', [output.length], output);
31574      output.add(charStrings);
31575      if (cff.isCIDFont) {
31576        topDictTracker.setEntryLocation('FDSelect', [output.length], output);
31577        var fdSelect = this.compileFDSelect(cff.fdSelect);
31578        output.add(fdSelect);
31579        compiled = this.compileTopDicts(cff.fdArray, output.length, true);
31580        topDictTracker.setEntryLocation('FDArray', [output.length], output);
31581        output.add(compiled.output);
31582        var fontDictTrackers = compiled.trackers;
31583        this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);
31584      }
31585      this.compilePrivateDicts([cff.topDict], [topDictTracker], output);
31586      output.add([0]);
31587      return output.data;
31588    },
31589    encodeNumber: function CFFCompiler_encodeNumber(value) {
31590      if (parseFloat(value) === parseInt(value, 10) && !isNaN(value)) {
31591        return this.encodeInteger(value);
31592      }
31593      return this.encodeFloat(value);
31594    },
31595    encodeFloat: function CFFCompiler_encodeFloat(num) {
31596      var value = num.toString();
31597      var m = /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(value);
31598      if (m) {
31599        var epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length));
31600        value = (Math.round(num * epsilon) / epsilon).toString();
31601      }
31602      var nibbles = '';
31603      var i, ii;
31604      for (i = 0, ii = value.length; i < ii; ++i) {
31605        var a = value[i];
31606        if (a === 'e') {
31607          nibbles += value[++i] === '-' ? 'c' : 'b';
31608        } else if (a === '.') {
31609          nibbles += 'a';
31610        } else if (a === '-') {
31611          nibbles += 'e';
31612        } else {
31613          nibbles += a;
31614        }
31615      }
31616      nibbles += nibbles.length & 1 ? 'f' : 'ff';
31617      var out = [30];
31618      for (i = 0, ii = nibbles.length; i < ii; i += 2) {
31619        out.push(parseInt(nibbles.substring(i, i + 2), 16));
31620      }
31621      return out;
31622    },
31623    encodeInteger: function CFFCompiler_encodeInteger(value) {
31624      var code;
31625      if (value >= -107 && value <= 107) {
31626        code = [value + 139];
31627      } else if (value >= 108 && value <= 1131) {
31628        value = value - 108;
31629        code = [(value >> 8) + 247, value & 0xFF];
31630      } else if (value >= -1131 && value <= -108) {
31631        value = -value - 108;
31632        code = [(value >> 8) + 251, value & 0xFF];
31633      } else if (value >= -32768 && value <= 32767) {
31634        code = [0x1c, value >> 8 & 0xFF, value & 0xFF];
31635      } else {
31636        code = [0x1d, value >> 24 & 0xFF, value >> 16 & 0xFF, value >> 8 & 0xFF, value & 0xFF];
31637      }
31638      return code;
31639    },
31640    compileHeader: function CFFCompiler_compileHeader(header) {
31641      return [header.major, header.minor, header.hdrSize, header.offSize];
31642    },
31643    compileNameIndex: function CFFCompiler_compileNameIndex(names) {
31644      var nameIndex = new CFFIndex();
31645      for (var i = 0, ii = names.length; i < ii; ++i) {
31646        var name = names[i];
31647        var length = Math.min(name.length, 127);
31648        var sanitizedName = new Array(length);
31649        for (var j = 0; j < length; j++) {
31650          var char = name[j];
31651          if (char < '!' || char > '~' || char === '[' || char === ']' || char === '(' || char === ')' || char === '{' || char === '}' || char === '<' || char === '>' || char === '/' || char === '%') {
31652            char = '_';
31653          }
31654          sanitizedName[j] = char;
31655        }
31656        sanitizedName = sanitizedName.join('');
31657        if (sanitizedName === '') {
31658          sanitizedName = 'Bad_Font_Name';
31659        }
31660        nameIndex.add((0, _util.stringToBytes)(sanitizedName));
31661      }
31662      return this.compileIndex(nameIndex);
31663    },
31664    compileTopDicts: function CFFCompiler_compileTopDicts(dicts, length, removeCidKeys) {
31665      var fontDictTrackers = [];
31666      var fdArrayIndex = new CFFIndex();
31667      for (var i = 0, ii = dicts.length; i < ii; ++i) {
31668        var fontDict = dicts[i];
31669        if (removeCidKeys) {
31670          fontDict.removeByName('CIDFontVersion');
31671          fontDict.removeByName('CIDFontRevision');
31672          fontDict.removeByName('CIDFontType');
31673          fontDict.removeByName('CIDCount');
31674          fontDict.removeByName('UIDBase');
31675        }
31676        var fontDictTracker = new CFFOffsetTracker();
31677        var fontDictData = this.compileDict(fontDict, fontDictTracker);
31678        fontDictTrackers.push(fontDictTracker);
31679        fdArrayIndex.add(fontDictData);
31680        fontDictTracker.offset(length);
31681      }
31682      fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);
31683      return {
31684        trackers: fontDictTrackers,
31685        output: fdArrayIndex
31686      };
31687    },
31688    compilePrivateDicts: function CFFCompiler_compilePrivateDicts(dicts, trackers, output) {
31689      for (var i = 0, ii = dicts.length; i < ii; ++i) {
31690        var fontDict = dicts[i];
31691        var privateDict = fontDict.privateDict;
31692        if (!privateDict || !fontDict.hasName('Private')) {
31693          throw new _util.FormatError('There must be a private dictionary.');
31694        }
31695        var privateDictTracker = new CFFOffsetTracker();
31696        var privateDictData = this.compileDict(privateDict, privateDictTracker);
31697        var outputLength = output.length;
31698        privateDictTracker.offset(outputLength);
31699        if (!privateDictData.length) {
31700          outputLength = 0;
31701        }
31702        trackers[i].setEntryLocation('Private', [privateDictData.length, outputLength], output);
31703        output.add(privateDictData);
31704        if (privateDict.subrsIndex && privateDict.hasName('Subrs')) {
31705          var subrs = this.compileIndex(privateDict.subrsIndex);
31706          privateDictTracker.setEntryLocation('Subrs', [privateDictData.length], output);
31707          output.add(subrs);
31708        }
31709      }
31710    },
31711    compileDict: function CFFCompiler_compileDict(dict, offsetTracker) {
31712      var out = [];
31713      var order = dict.order;
31714      for (var i = 0; i < order.length; ++i) {
31715        var key = order[i];
31716        if (!(key in dict.values)) {
31717          continue;
31718        }
31719        var values = dict.values[key];
31720        var types = dict.types[key];
31721        if (!Array.isArray(types)) {
31722          types = [types];
31723        }
31724        if (!Array.isArray(values)) {
31725          values = [values];
31726        }
31727        if (values.length === 0) {
31728          continue;
31729        }
31730        for (var j = 0, jj = types.length; j < jj; ++j) {
31731          var type = types[j];
31732          var value = values[j];
31733          switch (type) {
31734            case 'num':
31735            case 'sid':
31736              out = out.concat(this.encodeNumber(value));
31737              break;
31738            case 'offset':
31739              var name = dict.keyToNameMap[key];
31740              if (!offsetTracker.isTracking(name)) {
31741                offsetTracker.track(name, out.length);
31742              }
31743              out = out.concat([0x1d, 0, 0, 0, 0]);
31744              break;
31745            case 'array':
31746            case 'delta':
31747              out = out.concat(this.encodeNumber(value));
31748              for (var k = 1, kk = values.length; k < kk; ++k) {
31749                out = out.concat(this.encodeNumber(values[k]));
31750              }
31751              break;
31752            default:
31753              throw new _util.FormatError('Unknown data type of ' + type);
31754          }
31755        }
31756        out = out.concat(dict.opcodes[key]);
31757      }
31758      return out;
31759    },
31760    compileStringIndex: function CFFCompiler_compileStringIndex(strings) {
31761      var stringIndex = new CFFIndex();
31762      for (var i = 0, ii = strings.length; i < ii; ++i) {
31763        stringIndex.add((0, _util.stringToBytes)(strings[i]));
31764      }
31765      return this.compileIndex(stringIndex);
31766    },
31767    compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() {
31768      var globalSubrIndex = this.cff.globalSubrIndex;
31769      this.out.writeByteArray(this.compileIndex(globalSubrIndex));
31770    },
31771    compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) {
31772      var charStringsIndex = new CFFIndex();
31773      for (var i = 0; i < charStrings.count; i++) {
31774        var glyph = charStrings.get(i);
31775        if (glyph.length === 0) {
31776          charStringsIndex.add(new Uint8Array([0x8B, 0x0E]));
31777          continue;
31778        }
31779        charStringsIndex.add(glyph);
31780      }
31781      return this.compileIndex(charStringsIndex);
31782    },
31783    compileCharset: function CFFCompiler_compileCharset(charset) {
31784      var length = 1 + (this.cff.charStrings.count - 1) * 2;
31785      var out = new Uint8Array(length);
31786      return this.compileTypedArray(out);
31787    },
31788    compileEncoding: function CFFCompiler_compileEncoding(encoding) {
31789      return this.compileTypedArray(encoding.raw);
31790    },
31791    compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) {
31792      var format = fdSelect.format;
31793      var out = void 0,
31794          i = void 0;
31795      switch (format) {
31796        case 0:
31797          out = new Uint8Array(1 + fdSelect.fdSelect.length);
31798          out[0] = format;
31799          for (i = 0; i < fdSelect.fdSelect.length; i++) {
31800            out[i + 1] = fdSelect.fdSelect[i];
31801          }
31802          break;
31803        case 3:
31804          var start = 0;
31805          var lastFD = fdSelect.fdSelect[0];
31806          var ranges = [format, 0, 0, start >> 8 & 0xFF, start & 0xFF, lastFD];
31807          for (i = 1; i < fdSelect.fdSelect.length; i++) {
31808            var currentFD = fdSelect.fdSelect[i];
31809            if (currentFD !== lastFD) {
31810              ranges.push(i >> 8 & 0xFF, i & 0xFF, currentFD);
31811              lastFD = currentFD;
31812            }
31813          }
31814          var numRanges = (ranges.length - 3) / 3;
31815          ranges[1] = numRanges >> 8 & 0xFF;
31816          ranges[2] = numRanges & 0xFF;
31817          ranges.push(i >> 8 & 0xFF, i & 0xFF);
31818          out = new Uint8Array(ranges);
31819          break;
31820      }
31821      return this.compileTypedArray(out);
31822    },
31823    compileTypedArray: function CFFCompiler_compileTypedArray(data) {
31824      var out = [];
31825      for (var i = 0, ii = data.length; i < ii; ++i) {
31826        out[i] = data[i];
31827      }
31828      return out;
31829    },
31830    compileIndex: function CFFCompiler_compileIndex(index, trackers) {
31831      trackers = trackers || [];
31832      var objects = index.objects;
31833      var count = objects.length;
31834      if (count === 0) {
31835        return [0, 0, 0];
31836      }
31837      var data = [count >> 8 & 0xFF, count & 0xff];
31838      var lastOffset = 1,
31839          i;
31840      for (i = 0; i < count; ++i) {
31841        lastOffset += objects[i].length;
31842      }
31843      var offsetSize;
31844      if (lastOffset < 0x100) {
31845        offsetSize = 1;
31846      } else if (lastOffset < 0x10000) {
31847        offsetSize = 2;
31848      } else if (lastOffset < 0x1000000) {
31849        offsetSize = 3;
31850      } else {
31851        offsetSize = 4;
31852      }
31853      data.push(offsetSize);
31854      var relativeOffset = 1;
31855      for (i = 0; i < count + 1; i++) {
31856        if (offsetSize === 1) {
31857          data.push(relativeOffset & 0xFF);
31858        } else if (offsetSize === 2) {
31859          data.push(relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF);
31860        } else if (offsetSize === 3) {
31861          data.push(relativeOffset >> 16 & 0xFF, relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF);
31862        } else {
31863          data.push(relativeOffset >>> 24 & 0xFF, relativeOffset >> 16 & 0xFF, relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF);
31864        }
31865        if (objects[i]) {
31866          relativeOffset += objects[i].length;
31867        }
31868      }
31869      for (i = 0; i < count; i++) {
31870        if (trackers[i]) {
31871          trackers[i].offset(data.length);
31872        }
31873        for (var j = 0, jj = objects[i].length; j < jj; j++) {
31874          data.push(objects[i][j]);
31875        }
31876      }
31877      return data;
31878    }
31879  };
31880  return CFFCompiler;
31881}();
31882exports.CFFStandardStrings = CFFStandardStrings;
31883exports.CFFParser = CFFParser;
31884exports.CFF = CFF;
31885exports.CFFHeader = CFFHeader;
31886exports.CFFStrings = CFFStrings;
31887exports.CFFIndex = CFFIndex;
31888exports.CFFCharset = CFFCharset;
31889exports.CFFTopDict = CFFTopDict;
31890exports.CFFPrivateDict = CFFPrivateDict;
31891exports.CFFCompiler = CFFCompiler;
31892exports.CFFFDSelect = CFFFDSelect;
31893
31894/***/ }),
31895/* 158 */
31896/***/ (function(module, exports, __w_pdfjs_require__) {
31897
31898"use strict";
31899
31900
31901Object.defineProperty(exports, "__esModule", {
31902  value: true
31903});
31904var ISOAdobeCharset = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron'];
31905var ExpertCharset = ['.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];
31906var ExpertSubsetCharset = ['.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior'];
31907exports.ISOAdobeCharset = ISOAdobeCharset;
31908exports.ExpertCharset = ExpertCharset;
31909exports.ExpertSubsetCharset = ExpertSubsetCharset;
31910
31911/***/ }),
31912/* 159 */
31913/***/ (function(module, exports, __w_pdfjs_require__) {
31914
31915"use strict";
31916
31917
31918Object.defineProperty(exports, "__esModule", {
31919  value: true
31920});
31921var ExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'f
31921iguredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];
31922var MacExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', '', 'threequartersemdash', '', 'questionsmall', '', '', '', '', 'Ethsmall', '', '', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', '', '', '', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hypheninferior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', 'asuperior', 'centsuperior', '', '', '', '', 'Aacutesmall', 'Agravesmall', 'Acircumflexsmall', 'Adieresissmall', 'Atildesmall', 'Aringsmall', 'Ccedillasmall', 'Eacutesmall', 'Egravesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Iacutesmall', 'Igravesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ntildesmall', 'Oacutesmall', 'Ogravesmall', 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall', 'Uacutesmall', 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall', '', 'eightsuperior', 'fourinferior', 'threeinferior', 'sixinferior', 'eightinferior', 'seveninferior', 'Scaronsmall', '', 'centinferior', 'twoinferior', '', 'Dieresissmall', '', 'Caronsmall', 'osuperior', 'fiveinferior', '', 'commainferior', 'periodinferior', 'Yacutesmall', '', 'dollarinferior', '', '', 'Thornsmall', '', 'nineinferior', 'zeroinferior', 'Zcaronsmall', 'AEsmall', 'Oslashsmall', 'questiondownsmall', 'oneinferior', 'Lslashsmall', '', '', '', '', '', '', 'Cedillasmall', '', '', '', '', '', 'OEsmall', 'figuredash', 'hyphensuperior', '', '', '', '', 'exclamdownsmall', '', 'Ydieresissmall', '', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'ninesuperior', 'zerosuperior', '', 'esuperior', 'rsuperior', 'tsuperior', '', '', 'isuperior', 'ssuperior', 'dsuperior', '', '', '', '', '', 'lsuperior', 'Ogoneksmall', 'Brevesmall', 'Macronsmall', 'bsuperior', 'nsuperior', 'msuperior', 'commasuperior', 'periodsuperior', 'Dotaccentsmall', 'Ringsmall', '', '', '', ''];
31923var MacRomanEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'space', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodce
31923ntered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron'];
31924var StandardEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls', '', '', '', ''];
31925var WinAnsiEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'bullet', 'Euro', 'bullet', 'quotesinglbase', 'florin', 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron', 'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 'bullet', 'quoteleft', 'quoteright', 'quotedblleft', 'quotedblright', 'bullet', 'endash', 'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', 'oe', 'bullet', 'zcaron', 'Ydieresis', 'space', 'exclamdown', 'cent', 'sterling', 'currency', 'yen', 'brokenbar', 'section', 'dieresis', 'copyright', 'ordfeminine', 'guillemotleft', 'logicalnot', 'hyphen', 'registered', 'macron', 'degree', 'plusminus', 'twosuperior', 'threesuperior', 'acute', 'mu', 'paragraph', 'periodcentered', 'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright', 'onequarter', 'onehalf', 'threequarters', 'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adieresis', 'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis', 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Eth', 'Ntilde', 'Ograve', 'Oacute', 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply', 'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex', 'Udieresis', 'Yacute', 'Thorn', 'germandbls', 'agrave', 'aacute', 'acircumflex', 'atilde', 'adieresis', 'aring', 'ae', 'ccedilla', 'egrave', 'eacute', 'ecircumflex', 'edieresis', 'igrave', 'iacute', 'icircumflex', 'idieresis', 'eth', 'ntilde', 'ograve', 'oacute', 'ocircumflex', 'otilde', 'odieresis', 'divi
31925de', 'oslash', 'ugrave', 'uacute', 'ucircumflex', 'udieresis', 'yacute', 'thorn', 'ydieresis'];
31926var SymbolSetEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'universal', 'numbersign', 'existential', 'percent', 'ampersand', 'suchthat', 'parenleft', 'parenright', 'asteriskmath', 'plus', 'comma', 'minus', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'congruent', 'Alpha', 'Beta', 'Chi', 'Delta', 'Epsilon', 'Phi', 'Gamma', 'Eta', 'Iota', 'theta1', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Omicron', 'Pi', 'Theta', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'sigma1', 'Omega', 'Xi', 'Psi', 'Zeta', 'bracketleft', 'therefore', 'bracketright', 'perpendicular', 'underscore', 'radicalex', 'alpha', 'beta', 'chi', 'delta', 'epsilon', 'phi', 'gamma', 'eta', 'iota', 'phi1', 'kappa', 'lambda', 'mu', 'nu', 'omicron', 'pi', 'theta', 'rho', 'sigma', 'tau', 'upsilon', 'omega1', 'omega', 'xi', 'psi', 'zeta', 'braceleft', 'bar', 'braceright', 'similar', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'Euro', 'Upsilon1', 'minute', 'lessequal', 'fraction', 'infinity', 'florin', 'club', 'diamond', 'heart', 'spade', 'arrowboth', 'arrowleft', 'arrowup', 'arrowright', 'arrowdown', 'degree', 'plusminus', 'second', 'greaterequal', 'multiply', 'proportional', 'partialdiff', 'bullet', 'divide', 'notequal', 'equivalence', 'approxequal', 'ellipsis', 'arrowvertex', 'arrowhorizex', 'carriagereturn', 'aleph', 'Ifraktur', 'Rfraktur', 'weierstrass', 'circlemultiply', 'circleplus', 'emptyset', 'intersection', 'union', 'propersuperset', 'reflexsuperset', 'notsubset', 'propersubset', 'reflexsubset', 'element', 'notelement', 'angle', 'gradient', 'registerserif', 'copyrightserif', 'trademarkserif', 'product', 'radical', 'dotmath', 'logicalnot', 'logicaland', 'logicalor', 'arrowdblboth', 'arrowdblleft', 'arrowdblup', 'arrowdblright', 'arrowdbldown', 'lozenge', 'angleleft', 'registersans', 'copyrightsans', 'trademarksans', 'summation', 'parenlefttp', 'parenleftex', 'parenleftbt', 'bracketlefttp', 'bracketleftex', 'bracketleftbt', 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex', '', 'angleright', 'integral', 'integraltp', 'integralex', 'integralbt', 'parenrighttp', 'parenrightex', 'parenrightbt', 'bracketrighttp', 'bracketrightex', 'bracketrightbt', 'bracerighttp', 'bracerightmid', 'bracerightbt', ''];
31927var ZapfDingbatsEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'a1', 'a2', 'a202', 'a3', 'a4', 'a5', 'a119', 'a118', 'a117', 'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a105', 'a17', 'a18', 'a19', 'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a6', 'a7', 'a8', 'a9', 'a10', 'a29', 'a30', 'a31', 'a32', 'a33', 'a34', 'a35', 'a36', 'a37', 'a38', 'a39', 'a40', 'a41', 'a42', 'a43', 'a44', 'a45', 'a46', 'a47', 'a48', 'a49', 'a50', 'a51', 'a52', 'a53', 'a54', 'a55', 'a56', 'a57', 'a58', 'a59', 'a60', 'a61', 'a62', 'a63', 'a64', 'a65', 'a66', 'a67', 'a68', 'a69', 'a70', 'a71', 'a72', 'a73', 'a74', 'a203', 'a75', 'a204', 'a76', 'a77', 'a78', 'a79', 'a81', 'a82', 'a83', 'a84', 'a97', 'a98', 'a99', 'a100', '', 'a89', 'a90', 'a93', 'a94', 'a91', 'a92', 'a205', 'a85', 'a206', 'a86', 'a87', 'a88', 'a95', 'a96', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'a101', 'a102', 'a103', 'a104', 'a106', 'a107', 'a108', 'a112', 'a111', 'a110', 'a109', 'a120', 'a121', 'a122', 'a123', 'a124', 'a125', 'a126', 'a127', 'a128', 'a129', 'a130', 'a131', 'a132', 'a133', 'a134', 'a135', 'a136', 'a137', 'a138', 'a139', 'a140', 'a141', 'a142', 'a143', 'a144', 'a145', 'a146', 'a147', 'a148', 'a149', 'a150', 'a151', 'a152', 'a153', 'a154', 'a155', 'a156', 'a157', 'a158', 'a159', 'a160', 'a161', 'a163', 'a164', 'a196', 'a165', 'a192', 'a166', 'a167', 'a168', 'a169', 'a170', 'a171', 'a172', 'a173', 'a162', 'a174', 'a175', 'a176', 'a177', 'a178', 'a179', 'a193', 'a180', 'a199', 'a181', 'a200', 'a182', '', 'a201', 'a183', 'a184', 'a197', 'a185', 'a194', 'a198', 'a186', 'a195', 'a187', 'a188', 'a189', 'a190', 'a191', ''];
31928function getEncoding(encodingName) {
31929  switch (encodingName) {
31930    case 'WinAnsiEncoding':
31931      return WinAnsiEncoding;
31932    case 'StandardEncoding':
31933      return StandardEncoding;
31934    case 'MacRomanEncoding':
31935      return MacRomanEncoding;
31936    case 'SymbolSetEncoding':
31937      return SymbolSetEncoding;
31938    case 'ZapfDingbatsEncoding':
31939      return ZapfDingbatsEncoding;
31940    case 'ExpertEncoding':
31941      return ExpertEncoding;
31942    case 'MacExpertEncoding':
31943      return MacExpertEncoding;
31944    default:
31945      return null;
31946  }
31947}
31948exports.WinAnsiEncoding = WinAnsiEncoding;
31949exports.StandardEncoding = StandardEncoding;
31950exports.MacRomanEncoding = MacRomanEncoding;
31951exports.SymbolSetEncoding = SymbolSetEncoding;
31952exports.ZapfDingbatsEncoding = ZapfDingbatsEncoding;
31953exports.ExpertEncoding = ExpertEncoding;
31954exports.getEncoding = getEncoding;
31955
31956/***/ }),
31957/* 160 */
31958/***/ (function(module, exports, __w_pdfjs_require__) {
31959
31960var getLookupTableFactory = __w_pdfjs_require__(2).getLookupTableFactory;
31961var getGlyphsUnicode = getLookupTableFactory(function (t) {
31962 t['A'] = 0x0041;
31963 t['AE'] = 0x00C6;
31964 t['AEacute'] = 0x01FC;
31965 t['AEmacron'] = 0x01E2;
31966 t['AEsmall'] = 0xF7E6;
31967 t['Aacute'] = 0x00C1;
31968 t['Aacutesmall'] = 0xF7E1;
31969 t['Abreve'] = 0x0102;
31970 t['Abreveacute'] = 0x1EAE;
31971 t['Abrevecyrillic'] = 0x04D0;
31972 t['Abrevedotbelow'] = 0x1EB6;
31973 t['Abrevegrave'] = 0x1EB0;
31974 t['Abrevehookabove'] = 0x1EB2;
31975 t['Abrevetilde'] = 0x1EB4;
31976 t['Acaron'] = 0x01CD;
31977 t['Acircle'] = 0x24B6;
31978 t['Acircumflex'] = 0x00C2;
31979 t['Acircumflexacute'] = 0x1EA4;
31980 t['Acircumflexdotbelow'] = 0x1EAC;
31981 t['Acircumflexgrave'] = 0x1EA6;
31982 t['Acircumflexhookabove'] = 0x1EA8;
31983 t['Acircumflexsmall'] = 0xF7E2;
31984 t['Acircumflextilde'] = 0x1EAA;
31985 t['Acute'] = 0xF6C9;
31986 t['Acutesmall'] = 0xF7B4;
31987 t['Acyrillic'] = 0x0410;
31988 t['Adblgrave'] = 0x0200;
31989 t['Adieresis'] = 0x00C4;
31990 t['Adieresiscyrillic'] = 0x04D2;
31991 t['Adieresismacron'] = 0x01DE;
31992 t['Adieresissmall'] = 0xF7E4;
31993 t['Adotbelow'] = 0x1EA0;
31994 t['Adotmacron'] = 0x01E0;
31995 t['Agrave'] = 0x00C0;
31996 t['Agravesmall'] = 0xF7E0;
31997 t['Ahookabove'] = 0x1EA2;
31998 t['Aiecyrillic'] = 0x04D4;
31999 t['Ainvertedbreve'] = 0x0202;
32000 t['Alpha'] = 0x0391;
32001 t['Alphatonos'] = 0x0386;
32002 t['Amacron'] = 0x0100;
32003 t['Amonospace'] = 0xFF21;
32004 t['Aogonek'] = 0x0104;
32005 t['Aring'] = 0x00C5;
32006 t['Aringacute'] = 0x01FA;
32007 t['Aringbelow'] = 0x1E00;
32008 t['Aringsmall'] = 0xF7E5;
32009 t['Asmall'] = 0xF761;
32010 t['Atilde'] = 0x00C3;
32011 t['Atildesmall'] = 0xF7E3;
32012 t['Aybarmenian'] = 0x0531;
32013 t['B'] = 0x0042;
32014 t['Bcircle'] = 0x24B7;
32015 t['Bdotaccent'] = 0x1E02;
32016 t['Bdotbelow'] = 0x1E04;
32017 t['Becyrillic'] = 0x0411;
32018 t['Benarmenian'] = 0x0532;
32019 t['Beta'] = 0x0392;
32020 t['Bhook'] = 0x0181;
32021 t['Blinebelow'] = 0x1E06;
32022 t['Bmonospace'] = 0xFF22;
32023 t['Brevesmall'] = 0xF6F4;
32024 t['Bsmall'] = 0xF762;
32025 t['Btopbar'] = 0x0182;
32026 t['C'] = 0x0043;
32027 t['Caarmenian'] = 0x053E;
32028 t['Cacute'] = 0x0106;
32029 t['Caron'] = 0xF6CA;
32030 t['Caronsmall'] = 0xF6F5;
32031 t['Ccaron'] = 0x010C;
32032 t['Ccedilla'] = 0x00C7;
32033 t['Ccedillaacute'] = 0x1E08;
32034 t['Ccedillasmall'] = 0xF7E7;
32035 t['Ccircle'] = 0x24B8;
32036 t['Ccircumflex'] = 0x0108;
32037 t['Cdot'] = 0x010A;
32038 t['Cdotaccent'] = 0x010A;
32039 t['Cedillasmall'] = 0xF7B8;
32040 t['Chaarmenian'] = 0x0549;
32041 t['Cheabkhasiancyrillic'] = 0x04BC;
32042 t['Checyrillic'] = 0x0427;
32043 t['Chedescenderabkhasiancyrillic'] = 0x04BE;
32044 t['Chedescendercyrillic'] = 0x04B6;
32045 t['Chedieresiscyrillic'] = 0x04F4;
32046 t['Cheharmenian'] = 0x0543;
32047 t['Chekhakassiancyrillic'] = 0x04CB;
32048 t['Cheverticalstrokecyrillic'] = 0x04B8;
32049 t['Chi'] = 0x03A7;
32050 t['Chook'] = 0x0187;
32051 t['Circumflexsmall'] = 0xF6F6;
32052 t['Cmonospace'] = 0xFF23;
32053 t['Coarmenian'] = 0x0551;
32054 t['Csmall'] = 0xF763;
32055 t['D'] = 0x0044;
32056 t['DZ'] = 0x01F1;
32057 t['DZcaron'] = 0x01C4;
32058 t['Daarmenian'] = 0x0534;
32059 t['Dafrican'] = 0x0189;
32060 t['Dcaron'] = 0x010E;
32061 t['Dcedilla'] = 0x1E10;
32062 t['Dcircle'] = 0x24B9;
32063 t['Dcircumflexbelow'] = 0x1E12;
32064 t['Dcroat'] = 0x0110;
32065 t['Ddotaccent'] = 0x1E0A;
32066 t['Ddotbelow'] = 0x1E0C;
32067 t['Decyrillic'] = 0x0414;
32068 t['Deicoptic'] = 0x03EE;
32069 t['Delta'] = 0x2206;
32070 t['Deltagreek'] = 0x0394;
32071 t['Dhook'] = 0x018A;
32072 t['Dieresis'] = 0xF6CB;
32073 t['DieresisAcute'] = 0xF6CC;
32074 t['DieresisGrave'] = 0xF6CD;
32075 t['Dieresissmall'] = 0xF7A8;
32076 t['Digammagreek'] = 0x03DC;
32077 t['Djecyrillic'] = 0x0402;
32078 t['Dlinebelow'] = 0x1E0E;
32079 t['Dmonospace'] = 0xFF24;
32080 t['Dotaccentsmall'] = 0xF6F7;
32081 t['Dslash'] = 0x0110;
32082 t['Dsmall'] = 0xF764;
32083 t['Dtopbar'] = 0x018B;
32084 t['Dz'] = 0x01F2;
32085 t['Dzcaron'] = 0x01C5;
32086 t['Dzeabkhasiancyrillic'] = 0x04E0;
32087 t['Dzecyrillic'] = 0x0405;
32088 t['Dzhecyrillic'] = 0x040F;
32089 t['E'] = 0x0045;
32090 t['Eacute'] = 0x00C9;
32091 t['Eacutesmall'] = 0xF7E9;
32092 t['Ebreve'] = 0x0114;
32093 t['Ecaron'] = 0x011A;
32094 t['Ecedillabreve'] = 0x1E1C;
32095 t['Echarmenian'] = 0x0535;
32096 t['Ecircle'] = 0x24BA;
32097 t['Ecircumflex'] = 0x00CA;
32098 t['Ecircumflexacute'] = 0x1EBE;
32099 t['Ecircumflexbelow'] = 0x1E18;
32100 t['Ecircumflexdotbelow'] = 0x1EC6;
32101 t['Ecircumflexgrave'] = 0x1EC0;
32102 t['Ecircumflexhookabove'] = 0x1EC2;
32103 t['Ecircumflexsmall'] = 0xF7EA;
32104 t['Ecircumflextilde'] = 0x1EC4;
32105 t['Ecyrillic'] = 0x0404;
32106 t['Edblgrave'] = 0x0204;
32107 t['Edieresis'] = 0x00CB;
32108 t['Edieresissmall'] = 0xF7EB;
32109 t['Edot'] = 0x0116;
32110 t['Edotaccent'] = 0x0116;
32111 t['Edotbelow'] = 0x1EB8;
32112 t['Efcyrillic'] = 0x0424;
32113 t['Egrave'] = 0x00C8;
32114 t['Egravesmall'] = 0xF7E8;
32115 t['Eharmenian'] = 0x0537;
32116 t['Ehookabove'] = 0x1EBA;
32117 t['Eightroman'] = 0x2167;
32118 t['Einvertedbreve'] = 0x0206;
32119 t['Eiotifiedcyrillic'] = 0x0464;
32120 t['Elcyrillic'] = 0x041B;
32121 t['Elevenroman'] = 0x216A;
32122 t['Emacron'] = 0x0112;
32123 t['Emacronacute'] = 0x1E16;
32124 t['Emacrongrave'] = 0x1E14;
32125 t['Emcyrillic'] = 0x041C;
32126 t['Emonospace'] = 0xFF25;
32127 t['Encyrillic'] = 0x041D;
32128 t['Endescendercyrillic'] = 0x04A2;
32129 t['Eng'] = 0x014A;
32130 t['Enghecyrillic'] = 0x04A4;
32131 t['Enhookcyrillic'] = 0x04C7;
32132 t['Eogonek'] = 0x0118;
32133 t['Eopen'] = 0x0190;
32134 t['Epsilon'] = 0x0395;
32135 t['Epsilontonos'] = 0x0388;
32136 t['Ercyrillic'] = 0x0420;
32137 t['Ereversed'] = 0x018E;
32138 t['Ereversedcyrillic'] = 0x042D;
32139 t['Escyrillic'] = 0x0421;
32140 t['Esdescendercyrillic'] = 0x04AA;
32141 t['Esh'] = 0x01A9;
32142 t['Esmall'] = 0xF765;
32143 t['Eta'] = 0x0397;
32144 t['Etarmenian'] = 0x0538;
32145 t['Etatonos'] = 0x0389;
32146 t['Eth'] = 0x00D0;
32147 t['Ethsmall'] = 0xF7F0;
32148 t['Etilde'] = 0x1EBC;
32149 t['Etildebelow'] = 0x1E1A;
32150 t['Euro'] = 0x20AC;
32151 t['Ezh'] = 0x01B7;
32152 t['Ezhcaron'] = 0x01EE;
32153 t['Ezhreversed'] = 0x01B8;
32154 t['F'] = 0x0046;
32155 t['Fcircle'] = 0x24BB;
32156 t['Fdotaccent'] = 0x1E1E;
32157 t['Feharmenian'] = 0x0556;
32158 t['Feicoptic'] = 0x03E4;
32159 t['Fhook'] = 0x0191;
32160 t['Fitacyrillic'] = 0x0472;
32161 t['Fiveroman'] = 0x2164;
32162 t['Fmonospace'] = 0xFF26;
32163 t['Fourroman'] = 0x2163;
32164 t['Fsmall'] = 0xF766;
32165 t['G'] = 0x0047;
32166 t['GBsquare'] = 0x3387;
32167 t['Gacute'] = 0x01F4;
32168 t['Gamma'] = 0x0393;
32169 t['Gammaafrican'] = 0x0194;
32170 t['Gangiacoptic'] = 0x03EA;
32171 t['Gbreve'] = 0x011E;
32172 t['Gcaron'] = 0x01E6;
32173 t['Gcedilla'] = 0x0122;
32174 t['Gcircle'] = 0x24BC;
32175 t['Gcircumflex'] = 0x011C;
32176 t['Gcommaaccent'] = 0x0122;
32177 t['Gdot'] = 0x0120;
32178 t['Gdotaccent'] = 0x0120;
32179 t['Gecyrillic'] = 0x0413;
32180 t['Ghadarmenian'] = 0x0542;
32181 t['Ghemiddlehookcyrillic'] = 0x0494;
32182 t['Ghestrokecyrillic'] = 0x0492;
32183 t['Gheupturncyrillic'] = 0x0490;
32184 t['Ghook'] = 0x0193;
32185 t['Gimarmenian'] = 0x0533;
32186 t['Gjecyrillic'] = 0x0403;
32187 t['Gmacron'] = 0x1E20;
32188 t['Gmonospace'] = 0xFF27;
32189 t['Grave'] = 0xF6CE;
32190 t['Gravesmall'] = 0xF760;
32191 t['Gsmall'] = 0xF767;
32192 t['Gsmallhook'] = 0x029B;
32193 t['Gstroke'] = 0x01E4;
32194 t['H'] = 0x0048;
32195 t['H18533'] = 0x25CF;
32196 t['H18543'] = 0x25AA;
32197 t['H18551'] = 0x25AB;
32198 t['H22073'] = 0x25A1;
32199 t['HPsquare'] = 0x33CB;
32200 t['Haabkhasiancyrillic'] = 0x04A8;
32201 t['Hadescendercyrillic'] = 0x04B2;
32202 t['Hardsigncyrillic'] = 0x042A;
32203 t['Hbar'] = 0x0126;
32204 t['Hbrevebelow'] = 0x1E2A;
32205 t['Hcedilla'] = 0x1E28;
32206 t['Hcircle'] = 0x24BD;
32207 t['Hcircumflex'] = 0x0124;
32208 t['Hdieresis'] = 0x1E26;
32209 t['Hdotaccent'] = 0x1E22;
32210 t['Hdotbelow'] = 0x1E24;
32211 t['Hmonospace'] = 0xFF28;
32212 t['Hoarmenian'] = 0x0540;
32213 t['Horicoptic'] = 0x03E8;
32214 t['Hsmall'] = 0xF768;
32215 t['Hungarumlaut'] = 0xF6CF;
32216 t['Hungarumlautsmall'] = 0xF6F8;
32217 t['Hzsquare'] = 0x3390;
32218 t['I'] = 0x0049;
32219 t['IAcyrillic'] = 0x042F;
32220 t['IJ'] = 0x0132;
32221 t['IUcyrillic'] = 0x042E;
32222 t['Iacute'] = 0x00CD;
32223 t['Iacutesmall'] = 0xF7ED;
32224 t['Ibreve'] = 0x012C;
32225 t['Icaron'] = 0x01CF;
32226 t['Icircle'] = 0x24BE;
32227 t['Icircumflex'] = 0x00CE;
32228 t['Icircumflexsmall'] = 0xF7EE;
32229 t['Icyrillic'] = 0x0406;
32230 t['Idblgrave'] = 0x0208;
32231 t['Idieresis'] = 0x00CF;
32232 t['Idieresisacute'] = 0x1E2E;
32233 t['Idieresiscyrillic'] = 0x04E4;
32234 t['Idieresissmall'] = 0xF7EF;
32235 t['Idot'] = 0x0130;
32236 t['Idotaccent'] = 0x0130;
32237 t['Idotbelow'] = 0x1ECA;
32238 t['Iebrevecyrillic'] = 0x04D6;
32239 t['Iecyrillic'] = 0x0415;
32240 t['Ifraktur'] = 0x2111;
32241 t['Igrave'] = 0x00CC;
32242 t['Igravesmall'] = 0xF7EC;
32243 t['Ihookabove'] = 0x1EC8;
32244 t['Iicyrillic'] = 0x0418;
32245 t['Iinvertedbreve'] = 0x020A;
32246 t['Iishortcyrillic'] = 0x0419;
32247 t['Imacron'] = 0x012A;
32248 t['Imacroncyrillic'] = 0x04E2;
32249 t['Imonospace'] = 0xFF29;
32250 t['Iniarmenian'] = 0x053B;
32251 t['Iocyrillic'] = 0x0401;
32252 t['Iogonek'] = 0x012E;
32253 t['Iota'] = 0x0399;
32254 t['Iotaafrican'] = 0x0196;
32255 t['Iotadieresis'] = 0x03AA;
32256 t['Iotatonos'] = 0x038A;
32257 t['Ismall'] = 0xF769;
32258 t['Istroke'] = 0x0197;
32259 t['Itilde'] = 0x0128;
32260 t['Itildebelow'] = 0x1E2C;
32261 t['Izhitsacyrillic'] = 0x0474;
32262 t['Izhitsadblgravecyrillic'] = 0x0476;
32263 t['J'] = 0x004A;
32264 t['Jaarmenian'] = 0x0541;
32265 t['Jcircle'] = 0x24BF;
32266 t['Jcircumflex'] = 0x0134;
32267 t['Jecyrillic'] = 0x0408;
32268 t['Jheharmenian'] = 0x054B;
32269 t['Jmonospace'] = 0xFF2A;
32270 t['Jsmall'] = 0xF76A;
32271 t['K'] = 0x004B;
32272 t['KBsquare'] = 0x3385;
32273 t['KKsquare'] = 0x33CD;
32274 t['Kabashkircyrillic'] = 0x04A0;
32275 t['Kacute'] = 0x1E30;
32276 t['Kacyrillic'] = 0x041A;
32277 t['Kadescendercyrillic'] = 0x049A;
32278 t['Kahookcyrillic'] = 0x04C3;
32279 t['Kappa'] = 0x039A;
32280 t['Kastrokecyrillic'] = 0x049E;
32281 t['Kaverticalstrokecyrillic'] = 0x049C;
32282 t['Kcaron'] = 0x01E8;
32283 t['Kcedilla'] = 0x0136;
32284 t['Kcircle'] = 0x24C0;
32285 t['Kcommaaccent'] = 0x0136;
32286 t['Kdotbelow'] = 0x1E32;
32287 t['Keharmenian'] = 0x0554;
32288 t['Kenarmenian'] = 0x053F;
32289 t['Khacyrillic'] = 0x0425;
32290 t['Kheicoptic'] = 0x03E6;
32291 t['Khook'] = 0x0198;
32292 t['Kjecyrillic'] = 0x040C;
32293 t['Klinebelow'] = 0x1E34;
32294 t['Kmonospace'] = 0xFF2B;
32295 t['Koppacyrillic'] = 0x0480;
32296 t['Koppagreek'] = 0x03DE;
32297 t['Ksicyrillic'] = 0x046E;
32298 t['Ksmall'] = 0xF76B;
32299 t['L'] = 0x004C;
32300 t['LJ'] = 0x01C7;
32301 t['LL'] = 0xF6BF;
32302 t['Lacute'] = 0x0139;
32303 t['Lambda'] = 0x039B;
32304 t['Lcaron'] = 0x013D;
32305 t['Lcedilla'] = 0x013B;
32306 t['Lcircle'] = 0x24C1;
32307 t['Lcircumflexbelow'] = 0x1E3C;
32308 t['Lcommaaccent'] = 0x013B;
32309 t['Ldot'] = 0x013F;
32310 t['Ldotaccent'] = 0x013F;
32311 t['Ldotbelow'] = 0x1E36;
32312 t['Ldotbelowmacron'] = 0x1E38;
32313 t['Liwnarmenian'] = 0x053C;
32314 t['Lj'] = 0x01C8;
32315 t['Ljecyrillic'] = 0x0409;
32316 t['Llinebelow'] = 0x1E3A;
32317 t['Lmonospace'] = 0xFF2C;
32318 t['Lslash'] = 0x0141;
32319 t['Lslashsmall'] = 0xF6F9;
32320 t['Lsmall'] = 0xF76C;
32321 t['M'] = 0x004D;
32322 t['MBsquare'] = 0x3386;
32323 t['Macron'] = 0xF6D0;
32324 t['Macronsmall'] = 0xF7AF;
32325 t['Macute'] = 0x1E3E;
32326 t['Mcircle'] = 0x24C2;
32327 t['Mdotaccent'] = 0x1E40;
32328 t['Mdotbelow'] = 0x1E42;
32329 t['Menarmenian'] = 0x0544;
32330 t['Mmonospace'] = 0xFF2D;
32331 t['Msmall'] = 0xF76D;
32332 t['Mturned'] = 0x019C;
32333 t['Mu'] = 0x039C;
32334 t['N'] = 0x004E;
32335 t['NJ'] = 0x01CA;
32336 t['Nacute'] = 0x0143;
32337 t['Ncaron'] = 0x0147;
32338 t['Ncedilla'] = 0x0145;
32339 t['Ncircle'] = 0x24C3;
32340 t['Ncircumflexbelow'] = 0x1E4A;
32341 t['Ncommaaccent'] = 0x0145;
32342 t['Ndotaccent'] = 0x1E44;
32343 t['Ndotbelow'] = 0x1E46;
32344 t['Nhookleft'] = 0x019D;
32345 t['Nineroman'] = 0x2168;
32346 t['Nj'] = 0x01CB;
32347 t['Njecyrillic'] = 0x040A;
32348 t['Nlinebelow'] = 0x1E48;
32349 t['Nmonospace'] = 0xFF2E;
32350 t['Nowarmenian'] = 0x0546;
32351 t['Nsmall'] = 0xF76E;
32352 t['Ntilde'] = 0x00D1;
32353 t['Ntildesmall'] = 0xF7F1;
32354 t['Nu'] = 0x039D;
32355 t['O'] = 0x004F;
32356 t['OE'] = 0x0152;
32357 t['OEsmall'] = 0xF6FA;
32358 t['Oacute'] = 0x00D3;
32359 t['Oacutesmall'] = 0xF7F3;
32360 t['Obarredcyrillic'] = 0x04E8;
32361 t['Obarreddieresiscyrillic'] = 0x04EA;
32362 t['Obreve'] = 0x014E;
32363 t['Ocaron'] = 0x01D1;
32364 t['Ocenteredtilde'] = 0x019F;
32365 t['Ocircle'] = 0x24C4;
32366 t['Ocircumflex'] = 0x00D4;
32367 t['Ocircumflexacute'] = 0x1ED0;
32368 t['Ocircumflexdotbelow'] = 0x1ED8;
32369 t['Ocircumflexgrave'] = 0x1ED2;
32370 t['Ocircumflexhookabove'] = 0x1ED4;
32371 t['Ocircumflexsmall'] = 0xF7F4;
32372 t['Ocircumflextilde'] = 0x1ED6;
32373 t['Ocyrillic'] = 0x041E;
32374 t['Odblacute'] = 0x0150;
32375 t['Odblgrave'] = 0x020C;
32376 t['Odieresis'] = 0x00D6;
32377 t['Odieresiscyrillic'] = 0x04E6;
32378 t['Odieresissmall'] = 0xF7F6;
32379 t['Odotbelow'] = 0x1ECC;
32380 t['Ogoneksmall'] = 0xF6FB;
32381 t['Ograve'] = 0x00D2;
32382 t['Ogravesmall'] = 0xF7F2;
32383 t['Oharmenian'] = 0x0555;
32384 t['Ohm'] = 0x2126;
32385 t['Ohookabove'] = 0x1ECE;
32386 t['Ohorn'] = 0x01A0;
32387 t['Ohornacute'] = 0x1EDA;
32388 t['Ohorndotbelow'] = 0x1EE2;
32389 t['Ohorngrave'] = 0x1EDC;
32390 t['Ohornhookabove'] = 0x1EDE;
32391 t['Ohorntilde'] = 0x1EE0;
32392 t['Ohungarumlaut'] = 0x0150;
32393 t['Oi'] = 0x01A2;
32394 t['Oinvertedbreve'] = 0x020E;
32395 t['Omacron'] = 0x014C;
32396 t['Omacronacute'] = 0x1E52;
32397 t['Omacrongrave'] = 0x1E50;
32398 t['Omega'] = 0x2126;
32399 t['Omegacyrillic'] = 0x0460;
32400 t['Omegagreek'] = 0x03A9;
32401 t['Omegaroundcyrillic'] = 0x047A;
32402 t['Omegatitlocyrillic'] = 0x047C;
32403 t['Omegatonos'] = 0x038F;
32404 t['Omicron'] = 0x039F;
32405 t['Omicrontonos'] = 0x038C;
32406 t['Omonospace'] = 0xFF2F;
32407 t['Oneroman'] = 0x2160;
32408 t['Oogonek'] = 0x01EA;
32409 t['Oogonekmacron'] = 0x01EC;
32410 t['Oopen'] = 0x0186;
32411 t['Oslash'] = 0x00D8;
32412 t['Oslashacute'] = 0x01FE;
32413 t['Oslashsmall'] = 0xF7F8;
32414 t['Osmall'] = 0xF76F;
32415 t['Ostrokeacute'] = 0x01FE;
32416 t['Otcyrillic'] = 0x047E;
32417 t['Otilde'] = 0x00D5;
32418 t['Otildeacute'] = 0x1E4C;
32419 t['Otildedieresis'] = 0x1E4E;
32420 t['Otildesmall'] = 0xF7F5;
32421 t['P'] = 0x0050;
32422 t['Pacute'] = 0x1E54;
32423 t['Pcircle'] = 0x24C5;
32424 t['Pdotaccent'] = 0x1E56;
32425 t['Pecyrillic'] = 0x041F;
32426 t['Peharmenian'] = 0x054A;
32427 t['Pemiddlehookcyrillic'] = 0x04A6;
32428 t['Phi'] = 0x03A6;
32429 t['Phook'] = 0x01A4;
32430 t['Pi'] = 0x03A0;
32431 t['Piwrarmenian'] = 0x0553;
32432 t['Pmonospace'] = 0xFF30;
32433 t['Psi'] = 0x03A8;
32434 t['Psicyrillic'] = 0x0470;
32435 t['Psmall'] = 0xF770;
32436 t['Q'] = 0x0051;
32437 t['Qcircle'] = 0x24C6;
32438 t['Qmonospace'] = 0xFF31;
32439 t['Qsmall'] = 0xF771;
32440 t['R'] = 0x0052;
32441 t['Raarmenian'] = 0x054C;
32442 t['Racute'] = 0x0154;
32443 t['Rcaron'] = 0x0158;
32444 t['Rcedilla'] = 0x0156;
32445 t['Rcircle'] = 0x24C7;
32446 t['Rcommaaccent'] = 0x0156;
32447 t['Rdblgrave'] = 0x0210;
32448 t['Rdotaccent'] = 0x1E58;
32449 t['Rdotbelow'] = 0x1E5A;
32450 t['Rdotbelowmacron'] = 0x1E5C;
32451 t['Reharmenian'] = 0x0550;
32452 t['Rfraktur'] = 0x211C;
32453 t['Rho'] = 0x03A1;
32454 t['Ringsmall'] = 0xF6FC;
32455 t['Rinvertedbreve'] = 0x0212;
32456 t['Rlinebelow'] = 0x1E5E;
32457 t['Rmonospace'] = 0xFF32;
32458 t['Rsmall'] = 0xF772;
32459 t['Rsmallinverted'] = 0x0281;
32460 t['Rsmallinvertedsuperior'] = 0x02B6;
32461 t['S'] = 0x0053;
32462 t['SF010000'] = 0x250C;
32463 t['SF020000'] = 0x2514;
32464 t['SF030000'] = 0x2510;
32465 t['SF040000'] = 0x2518;
32466 t['SF050000'] = 0x253C;
32467 t['SF060000'] = 0x252C;
32468 t['SF070000'] = 0x2534;
32469 t['SF080000'] = 0x251C;
32470 t['SF090000'] = 0x2524;
32471 t['SF100000'] = 0x2500;
32472 t['SF110000'] = 0x2502;
32473 t['SF190000'] = 0x2561;
32474 t['SF200000'] = 0x2562;
32475 t['SF210000'] = 0x2556;
32476 t['SF220000'] = 0x2555;
32477 t['SF230000'] = 0x2563;
32478 t['SF240000'] = 0x2551;
32479 t['SF250000'] = 0x2557;
32480 t['SF260000'] = 0x255D;
32481 t['SF270000'] = 0x255C;
32482 t['SF280000'] = 0x255B;
32483 t['SF360000'] = 0x255E;
32484 t['SF370000'] = 0x255F;
32485 t['SF380000'] = 0x255A;
32486 t['SF390000'] = 0x2554;
32487 t['SF400000'] = 0x2569;
32488 t['SF410000'] = 0x2566;
32489 t['SF420000'] = 0x2560;
32490 t['SF430000'] = 0x2550;
32491 t['SF440000'] = 0x256C;
32492 t['SF450000'] = 0x2567;
32493 t['SF460000'] = 0x2568;
32494 t['SF470000'] = 0x2564;
32495 t['SF480000'] = 0x2565;
32496 t['SF490000'] = 0x2559;
32497 t['SF500000'] = 0x2558;
32498 t['SF510000'] = 0x2552;
32499 t['SF520000'] = 0x2553;
32500 t['SF530000'] = 0x256B;
32501 t['SF540000'] = 0x256A;
32502 t['Sacute'] = 0x015A;
32503 t['Sacutedotaccent'] = 0x1E64;
32504 t['Sampigreek'] = 0x03E0;
32505 t['Scaron'] = 0x0160;
32506 t['Scarondotaccent'] = 0x1E66;
32507 t['Scaronsmall'] = 0xF6FD;
32508 t['Scedilla'] = 0x015E;
32509 t['Schwa'] = 0x018F;
32510 t['Schwacyrillic'] = 0x04D8;
32511 t['Schwadieresiscyrillic'] = 0x04DA;
32512 t['Scircle'] = 0x24C8;
32513 t['Scircumflex'] = 0x015C;
32514 t['Scommaaccent'] = 0x0218;
32515 t['Sdotaccent'] = 0x1E60;
32516 t['Sdotbelow'] = 0x1E62;
32517 t['Sdotbelowdotaccent'] = 0x1E68;
32518 t['Seharmenian'] = 0x054D;
32519 t['Sevenroman'] = 0x2166;
32520 t['Shaarmenian'] = 0x0547;
32521 t['Shacyrillic'] = 0x0428;
32522 t['Shchacyrillic'] = 0x0429;
32523 t['Sheicoptic'] = 0x03E2;
32524 t['Shhacyrillic'] = 0x04BA;
32525 t['Shimacoptic'] = 0x03EC;
32526 t['Sigma'] = 0x03A3;
32527 t['Sixroman'] = 0x2165;
32528 t['Smonospace'] = 0xFF33;
32529 t['Softsigncyrillic'] = 0x042C;
32530 t['Ssmall'] = 0xF773;
32531 t['Stigmagreek'] = 0x03DA;
32532 t['T'] = 0x0054;
32533 t['Tau'] = 0x03A4;
32534 t['Tbar'] = 0x0166;
32535 t['Tcaron'] = 0x0164;
32536 t['Tcedilla'] = 0x0162;
32537 t['Tcircle'] = 0x24C9;
32538 t['Tcircumflexbelow'] = 0x1E70;
32539 t['Tcommaaccent'] = 0x0162;
32540 t['Tdotaccent'] = 0x1E6A;
32541 t['Tdotbelow'] = 0x1E6C;
32542 t['Tecyrillic'] = 0x0422;
32543 t['Tedescendercyrillic'] = 0x04AC;
32544 t['Tenroman'] = 0x2169;
32545 t['Tetsecyrillic'] = 0x04B4;
32546 t['Theta'] = 0x0398;
32547 t['Thook'] = 0x01AC;
32548 t['Thorn'] = 0x00DE;
32549 t['Thornsmall'] = 0xF7FE;
32550 t['Threeroman'] = 0x2162;
32551 t['Tildesmall'] = 0xF6FE;
32552 t['Tiwnarmenian'] = 0x054F;
32553 t['Tlinebelow'] = 0x1E6E;
32554 t['Tmonospace'] = 0xFF34;
32555 t['Toarmenian'] = 0x0539;
32556 t['Tonefive'] = 0x01BC;
32557 t['Tonesix'] = 0x0184;
32558 t['Tonetwo'] = 0x01A7;
32559 t['Tretroflexhook'] = 0x01AE;
32560 t['Tsecyrillic'] = 0x0426;
32561 t['Tshecyrillic'] = 0x040B;
32562 t['Tsmall'] = 0xF774;
32563 t['Twelveroman'] = 0x216B;
32564 t['Tworoman'] = 0x2161;
32565 t['U'] = 0x0055;
32566 t['Uacute'] = 0x00DA;
32567 t['Uacutesmall'] = 0xF7FA;
32568 t['Ubreve'] = 0x016C;
32569 t['Ucaron'] = 0x01D3;
32570 t['Ucircle'] = 0x24CA;
32571 t['Ucircumflex'] = 0x00DB;
32572 t['Ucircumflexbelow'] = 0x1E76;
32573 t['Ucircumflexsmall'] = 0xF7FB;
32574 t['Ucyrillic'] = 0x0423;
32575 t['Udblacute'] = 0x0170;
32576 t['Udblgrave'] = 0x0214;
32577 t['Udieresis'] = 0x00DC;
32578 t['Udieresisacute'] = 0x01D7;
32579 t['Udieresisbelow'] = 0x1E72;
32580 t['Udieresiscaron'] = 0x01D9;
32581 t['Udieresiscyrillic'] = 0x04F0;
32582 t['Udieresisgrave'] = 0x01DB;
32583 t['Udieresismacron'] = 0x01D5;
32584 t['Udieresissmall'] = 0xF7FC;
32585 t['Udotbelow'] = 0x1EE4;
32586 t['Ugrave'] = 0x00D9;
32587 t['Ugravesmall'] = 0xF7F9;
32588 t['Uhookabove'] = 0x1EE6;
32589 t['Uhorn'] = 0x01AF;
32590 t['Uhornacute'] = 0x1EE8;
32591 t['Uhorndotbelow'] = 0x1EF0;
32592 t['Uhorngrave'] = 0x1EEA;
32593 t['Uhornhookabove'] = 0x1EEC;
32594 t['Uhorntilde'] = 0x1EEE;
32595 t['Uhungarumlaut'] = 0x0170;
32596 t['Uhungarumlautcyrillic'] = 0x04F2;
32597 t['Uinvertedbreve'] = 0x0216;
32598 t['Ukcyrillic'] = 0x0478;
32599 t['Umacron'] = 0x016A;
32600 t['Umacroncyrillic'] = 0x04EE;
32601 t['Umacrondieresis'] = 0x1E7A;
32602 t['Umonospace'] = 0xFF35;
32603 t['Uogonek'] = 0x0172;
32604 t['Upsilon'] = 0x03A5;
32605 t['Upsilon1'] = 0x03D2;
32606 t['Upsilonacutehooksymbolgreek'] = 0x03D3;
32607 t['Upsilonafrican'] = 0x01B1;
32608 t['Upsilondieresis'] = 0x03AB;
32609 t['Upsilondieresishooksymbolgreek'] = 0x03D4;
32610 t['Upsilonhooksymbol'] = 0x03D2;
32611 t['Upsilontonos'] = 0x038E;
32612 t['Uring'] = 0x016E;
32613 t['Ushortcyrillic'] = 0x040E;
32614 t['Usmall'] = 0xF775;
32615 t['Ustraightcyrillic'] = 0x04AE;
32616 t['Ustraightstrokecyrillic'] = 0x04B0;
32617 t['Utilde'] = 0x0168;
32618 t['Utildeacute'] = 0x1E78;
32619 t['Utildebelow'] = 0x1E74;
32620 t['V'] = 0x0056;
32621 t['Vcircle'] = 0x24CB;
32622 t['Vdotbelow'] = 0x1E7E;
32623 t['Vecyrillic'] = 0x0412;
32624 t['Vewarmenian'] = 0x054E;
32625 t['Vhook'] = 0x01B2;
32626 t['Vmonospace'] = 0xFF36;
32627 t['Voarmenian'] = 0x0548;
32628 t['Vsmall'] = 0xF776;
32629 t['Vtilde'] = 0x1E7C;
32630 t['W'] = 0x0057;
32631 t['Wacute'] = 0x1E82;
32632 t['Wcircle'] = 0x24CC;
32633 t['Wcircumflex'] = 0x0174;
32634 t['Wdieresis'] = 0x1E84;
32635 t['Wdotaccent'] = 0x1E86;
32636 t['Wdotbelow'] = 0x1E88;
32637 t['Wgrave'] = 0x1E80;
32638 t['Wmonospace'] = 0xFF37;
32639 t['Wsmall'] = 0xF777;
32640 t['X'] = 0x0058;
32641 t['Xcircle'] = 0x24CD;
32642 t['Xdieresis'] = 0x1E8C;
32643 t['Xdotaccent'] = 0x1E8A;
32644 t['Xeharmenian'] = 0x053D;
32645 t['Xi'] = 0x039E;
32646 t['Xmonospace'] = 0xFF38;
32647 t['Xsmall'] = 0xF778;
32648 t['Y'] = 0x0059;
32649 t['Yacute'] = 0x00DD;
32650 t['Yacutesmall'] = 0xF7FD;
32651 t['Yatcyrillic'] = 0x0462;
32652 t['Ycircle'] = 0x24CE;
32653 t['Ycircumflex'] = 0x0176;
32654 t['Ydieresis'] = 0x0178;
32655 t['Ydieresissmall'] = 0xF7FF;
32656 t['Ydotaccent'] = 0x1E8E;
32657 t['Ydotbelow'] = 0x1EF4;
32658 t['Yericyrillic'] = 0x042B;
32659 t['Yerudieresiscyrillic'] = 0x04F8;
32660 t['Ygrave'] = 0x1EF2;
32661 t['Yhook'] = 0x01B3;
32662 t['Yhookabove'] = 0x1EF6;
32663 t['Yiarmenian'] = 0x0545;
32664 t['Yicyrillic'] = 0x0407;
32665 t['Yiwnarmenian'] = 0x0552;
32666 t['Ymonospace'] = 0xFF39;
32667 t['Ysmall'] = 0xF779;
32668 t['Ytilde'] = 0x1EF8;
32669 t['Yusbigcyrillic'] = 0x046A;
32670 t['Yusbigiotifiedcyrillic'] = 0x046C;
32671 t['Yuslittlecyrillic'] = 0x0466;
32672 t['Yuslittleiotifiedcyrillic'] = 0x0468;
32673 t['Z'] = 0x005A;
32674 t['Zaarmenian'] = 0x0536;
32675 t['Zacute'] = 0x0179;
32676 t['Zcaron'] = 0x017D;
32677 t['Zcaronsmall'] = 0xF6FF;
32678 t['Zcircle'] = 0x24CF;
32679 t['Zcircumflex'] = 0x1E90;
32680 t['Zdot'] = 0x017B;
32681 t['Zdotaccent'] = 0x017B;
32682 t['Zdotbelow'] = 0x1E92;
32683 t['Zecyrillic'] = 0x0417;
32684 t['Zedescendercyrillic'] = 0x0498;
32685 t['Zedieresiscyrillic'] = 0x04DE;
32686 t['Zeta'] = 0x0396;
32687 t['Zhearmenian'] = 0x053A;
32688 t['Zhebrevecyrillic'] = 0x04C1;
32689 t['Zhecyrillic'] = 0x0416;
32690 t['Zhedescendercyrillic'] = 0x0496;
32691 t['Zhedieresiscyrillic'] = 0x04DC;
32692 t['Zlinebelow'] = 0x1E94;
32693 t['Zmonospace'] = 0xFF3A;
32694 t['Zsmall'] = 0xF77A;
32695 t['Zstroke'] = 0x01B5;
32696 t['a'] = 0x0061;
32697 t['aabengali'] = 0x0986;
32698 t['aacute'] = 0x00E1;
32699 t['aadeva'] = 0x0906;
32700 t['aagujarati'] = 0x0A86;
32701 t['aagurmukhi'] = 0x0A06;
32702 t['aamatragurmukhi'] = 0x0A3E;
32703 t['aarusquare'] = 0x3303;
32704 t['aavowelsignbengali'] = 0x09BE;
32705 t['aavowelsigndeva'] = 0x093E;
32706 t['aavowelsigngujarati'] = 0x0ABE;
32707 t['abbreviationmarkarmenian'] = 0x055F;
32708 t['abbreviationsigndeva'] = 0x0970;
32709 t['abengali'] = 0x0985;
32710 t['abopomofo'] = 0x311A;
32711 t['abreve'] = 0x0103;
32712 t['abreveacute'] = 0x1EAF;
32713 t['abrevecyrillic'] = 0x04D1;
32714 t['abrevedotbelow'] = 0x1EB7;
32715 t['abrevegrave'] = 0x1EB1;
32716 t['abrevehookabove'] = 0x1EB3;
32717 t['abrevetilde'] = 0x1EB5;
32718 t['acaron'] = 0x01CE;
32719 t['acircle'] = 0x24D0;
32720 t['acircumflex'] = 0x00E2;
32721 t['acircumflexacute'] = 0x1EA5;
32722 t['acircumflexdotbelow'] = 0x1EAD;
32723 t['acircumflexgrave'] = 0x1EA7;
32724 t['acircumflexhookabove'] = 0x1EA9;
32725 t['acircumflextilde'] = 0x1EAB;
32726 t['acute'] = 0x00B4;
32727 t['acutebelowcmb'] = 0x0317;
32728 t['acutecmb'] = 0x0301;
32729 t['acutecomb'] = 0x0301;
32730 t['acutedeva'] = 0x0954;
32731 t['acutelowmod'] = 0x02CF;
32732 t['acutetonecmb'] = 0x0341;
32733 t['acyrillic'] = 0x0430;
32734 t['adblgrave'] = 0x0201;
32735 t['addakgurmukhi'] = 0x0A71;
32736 t['adeva'] = 0x0905;
32737 t['adieresis'] = 0x00E4;
32738 t['adieresiscyrillic'] = 0x04D3;
32739 t['adieresismacron'] = 0x01DF;
32740 t['adotbelow'] = 0x1EA1;
32741 t['adotmacron'] = 0x01E1;
32742 t['ae'] = 0x00E6;
32743 t['aeacute'] = 0x01FD;
32744 t['aekorean'] = 0x3150;
32745 t['aemacron'] = 0x01E3;
32746 t['afii00208'] = 0x2015;
32747 t['afii08941'] = 0x20A4;
32748 t['afii10017'] = 0x0410;
32749 t['afii10018'] = 0x0411;
32750 t['afii10019'] = 0x0412;
32751 t['afii10020'] = 0x0413;
32752 t['afii10021'] = 0x0414;
32753 t['afii10022'] = 0x0415;
32754 t['afii10023'] = 0x0401;
32755 t['afii10024'] = 0x0416;
32756 t['afii10025'] = 0x0417;
32757 t['afii10026'] = 0x0418;
32758 t['afii10027'] = 0x0419;
32759 t['afii10028'] = 0x041A;
32760 t['afii10029'] = 0x041B;
32761 t['afii10030'] = 0x041C;
32762 t['afii10031'] = 0x041D;
32763 t['afii10032'] = 0x041E;
32764 t['afii10033'] = 0x041F;
32765 t['afii10034'] = 0x0420;
32766 t['afii10035'] = 0x0421;
32767 t['afii10036'] = 0x0422;
32768 t['afii10037'] = 0x0423;
32769 t['afii10038'] = 0x0424;
32770 t['afii10039'] = 0x0425;
32771 t['afii10040'] = 0x0426;
32772 t['afii10041'] = 0x0427;
32773 t['afii10042'] = 0x0428;
32774 t['afii10043'] = 0x0429;
32775 t['afii10044'] = 0x042A;
32776 t['afii10045'] = 0x042B;
32777 t['afii10046'] = 0x042C;
32778 t['afii10047'] = 0x042D;
32779 t['afii10048'] = 0x042E;
32780 t['afii10049'] = 0x042F;
32781 t['afii10050'] = 0x0490;
32782 t['afii10051'] = 0x0402;
32783 t['afii10052'] = 0x0403;
32784 t['afii10053'] = 0x0404;
32785 t['afii10054'] = 0x0405;
32786 t['afii10055'] = 0x0406;
32787 t['afii10056'] = 0x0407;
32788 t['afii10057'] = 0x0408;
32789 t['afii10058'] = 0x0409;
32790 t['afii10059'] = 0x040A;
32791 t['afii10060'] = 0x040B;
32792 t['afii10061'] = 0x040C;
32793 t['afii10062'] = 0x040E;
32794 t['afii10063'] = 0xF6C4;
32795 t['afii10064'] = 0xF6C5;
32796 t['afii10065'] = 0x0430;
32797 t['afii10066'] = 0x0431;
32798 t['afii10067'] = 0x0432;
32799 t['afii10068'] = 0x0433;
32800 t['afii10069'] = 0x0434;
32801 t['afii10070'] = 0x0435;
32802 t['afii10071'] = 0x0451;
32803 t['afii10072'] = 0x0436;
32804 t['afii10073'] = 0x0437;
32805 t['afii10074'] = 0x0438;
32806 t['afii10075'] = 0x0439;
32807 t['afii10076'] = 0x043A;
32808 t['afii10077'] = 0x043B;
32809 t['afii10078'] = 0x043C;
32810 t['afii10079'] = 0x043D;
32811 t['afii10080'] = 0x043E;
32812 t['afii10081'] = 0x043F;
32813 t['afii10082'] = 0x0440;
32814 t['afii10083'] = 0x0441;
32815 t['afii10084'] = 0x0442;
32816 t['afii10085'] = 0x0443;
32817 t['afii10086'] = 0x0444;
32818 t['afii10087'] = 0x0445;
32819 t['afii10088'] = 0x0446;
32820 t['afii10089'] = 0x0447;
32821 t['afii10090'] = 0x0448;
32822 t['afii10091'] = 0x0449;
32823 t['afii10092'] = 0x044A;
32824 t['afii10093'] = 0x044B;
32825 t['afii10094'] = 0x044C;
32826 t['afii10095'] = 0x044D;
32827 t['afii10096'] = 0x044E;
32828 t['afii10097'] = 0x044F;
32829 t['afii10098'] = 0x0491;
32830 t['afii10099'] = 0x0452;
32831 t['afii10100'] = 0x0453;
32832 t['afii10101'] = 0x0454;
32833 t['afii10102'] = 0x0455;
32834 t['afii10103'] = 0x0456;
32835 t['afii10104'] = 0x0457;
32836 t['afii10105'] = 0x0458;
32837 t['afii10106'] = 0x0459;
32838 t['afii10107'] = 0x045A;
32839 t['afii10108'] = 0x045B;
32840 t['afii10109'] = 0x045C;
32841 t['afii10110'] = 0x045E;
32842 t['afii10145'] = 0x040F;
32843 t['afii10146'] = 0x0462;
32844 t['afii10147'] = 0x0472;
32845 t['afii10148'] = 0x0474;
32846 t['afii10192'] = 0xF6C6;
32847 t['afii10193'] = 0x045F;
32848 t['afii10194'] = 0x0463;
32849 t['afii10195'] = 0x0473;
32850 t['afii10196'] = 0x0475;
32851 t['afii10831'] = 0xF6C7;
32852 t['afii10832'] = 0xF6C8;
32853 t['afii10846'] = 0x04D9;
32854 t['afii299'] = 0x200E;
32855 t['afii300'] = 0x200F;
32856 t['afii301'] = 0x200D;
32857 t['afii57381'] = 0x066A;
32858 t['afii57388'] = 0x060C;
32859 t['afii57392'] = 0x0660;
32860 t['afii57393'] = 0x0661;
32861 t['afii57394'] = 0x0662;
32862 t['afii57395'] = 0x0663;
32863 t['afii57396'] = 0x0664;
32864 t['afii57397'] = 0x0665;
32865 t['afii57398'] = 0x0666;
32866 t['afii57399'] = 0x0667;
32867 t['afii57400'] = 0x0668;
32868 t['afii57401'] = 0x0669;
32869 t['afii57403'] = 0x061B;
32870 t['afii57407'] = 0x061F;
32871 t['afii57409'] = 0x0621;
32872 t['afii57410'] = 0x0622;
32873 t['afii57411'] = 0x0623;
32874 t['afii57412'] = 0x0624;
32875 t['afii57413'] = 0x0625;
32876 t['afii57414'] = 0x0626;
32877 t['afii57415'] = 0x0627;
32878 t['afii57416'] = 0x0628;
32879 t['afii57417'] = 0x0629;
32880 t['afii57418'] = 0x062A;
32881 t['afii57419'] = 0x062B;
32882 t['afii57420'] = 0x062C;
32883 t['afii57421'] = 0x062D;
32884 t['afii57422'] = 0x062E;
32885 t['afii57423'] = 0x062F;
32886 t['afii57424'] = 0x0630;
32887 t['afii57425'] = 0x0631;
32888 t['afii57426'] = 0x0632;
32889 t['afii57427'] = 0x0633;
32890 t['afii57428'] = 0x0634;
32891 t['afii57429'] = 0x0635;
32892 t['afii57430'] = 0x0636;
32893 t['afii57431'] = 0x0637;
32894 t['afii57432'] = 0x0638;
32895 t['afii57433'] = 0x0639;
32896 t['afii57434'] = 0x063A;
32897 t['afii57440'] = 0x0640;
32898 t['afii57441'] = 0x0641;
32899 t['afii57442'] = 0x0642;
32900 t['afii57443'] = 0x0643;
32901 t['afii57444'] = 0x0644;
32902 t['afii57445'] = 0x0645;
32903 t['afii57446'] = 0x0646;
32904 t['afii57448'] = 0x0648;
32905 t['afii57449'] = 0x0649;
32906 t['afii57450'] = 0x064A;
32907 t['afii57451'] = 0x064B;
32908 t['afii57452'] = 0x064C;
32909 t['afii57453'] = 0x064D;
32910 t['afii57454'] = 0x064E;
32911 t['afii57455'] = 0x064F;
32912 t['afii57456'] = 0x0650;
32913 t['afii57457'] = 0x0651;
32914 t['afii57458'] = 0x0652;
32915 t['afii57470'] = 0x0647;
32916 t['afii57505'] = 0x06A4;
32917 t['afii57506'] = 0x067E;
32918 t['afii57507'] = 0x0686;
32919 t['afii57508'] = 0x0698;
32920 t['afii57509'] = 0x06AF;
32921 t['afii57511'] = 0x0679;
32922 t['afii57512'] = 0x0688;
32923 t['afii57513'] = 0x0691;
32924 t['afii57514'] = 0x06BA;
32925 t['afii57519'] = 0x06D2;
32926 t['afii57534'] = 0x06D5;
32927 t['afii57636'] = 0x20AA;
32928 t['afii57645'] = 0x05BE;
32929 t['afii57658'] = 0x05C3;
32930 t['afii57664'] = 0x05D0;
32931 t['afii57665'] = 0x05D1;
32932 t['afii57666'] = 0x05D2;
32933 t['afii57667'] = 0x05D3;
32934 t['afii57668'] = 0x05D4;
32935 t['afii57669'] = 0x05D5;
32936 t['afii57670'] = 0x05D6;
32937 t['afii57671'] = 0x05D7;
32938 t['afii57672'] = 0x05D8;
32939 t['afii57673'] = 0x05D9;
32940 t['afii57674'] = 0x05DA;
32941 t['afii57675'] = 0x05DB;
32942 t['afii57676'] = 0x05DC;
32943 t['afii57677'] = 0x05DD;
32944 t['afii57678'] = 0x05DE;
32945 t['afii57679'] = 0x05DF;
32946 t['afii57680'] = 0x05E0;
32947 t['afii57681'] = 0x05E1;
32948 t['afii57682'] = 0x05E2;
32949 t['afii57683'] = 0x05E3;
32950 t['afii57684'] = 0x05E4;
32951 t['afii57685'] = 0x05E5;
32952 t['afii57686'] = 0x05E6;
32953 t['afii57687'] = 0x05E7;
32954 t['afii57688'] = 0x05E8;
32955 t['afii57689'] = 0x05E9;
32956 t['afii57690'] = 0x05EA;
32957 t['afii57694'] = 0xFB2A;
32958 t['afii57695'] = 0xFB2B;
32959 t['afii57700'] = 0xFB4B;
32960 t['afii57705'] = 0xFB1F;
32961 t['afii57716'] = 0x05F0;
32962 t['afii57717'] = 0x05F1;
32963 t['afii57718'] = 0x05F2;
32964 t['afii57723'] = 0xFB35;
32965 t['afii57793'] = 0x05B4;
32966 t['afii57794'] = 0x05B5;
32967 t['afii57795'] = 0x05B6;
32968 t['afii57796'] = 0x05BB;
32969 t['afii57797'] = 0x05B8;
32970 t['afii57798'] = 0x05B7;
32971 t['afii57799'] = 0x05B0;
32972 t['afii57800'] = 0x05B2;
32973 t['afii57801'] = 0x05B1;
32974 t['afii57802'] = 0x05B3;
32975 t['afii57803'] = 0x05C2;
32976 t['afii57804'] = 0x05C1;
32977 t['afii57806'] = 0x05B9;
32978 t['afii57807'] = 0x05BC;
32979 t['afii57839'] = 0x05BD;
32980 t['afii57841'] = 0x05BF;
32981 t['afii57842'] = 0x05C0;
32982 t['afii57929'] = 0x02BC;
32983 t['afii61248'] = 0x2105;
32984 t['afii61289'] = 0x2113;
32985 t['afii61352'] = 0x2116;
32986 t['afii61573'] = 0x202C;
32987 t['afii61574'] = 0x202D;
32988 t['afii61575'] = 0x202E;
32989 t['afii61664'] = 0x200C;
32990 t['afii63167'] = 0x066D;
32991 t['afii64937'] = 0x02BD;
32992 t['agrave'] = 0x00E0;
32993 t['agujarati'] = 0x0A85;
32994 t['agurmukhi'] = 0x0A05;
32995 t['ahiragana'] = 0x3042;
32996 t['ahookabove'] = 0x1EA3;
32997 t['aibengali'] = 0x0990;
32998 t['aibopomofo'] = 0x311E;
32999 t['aideva'] = 0x0910;
33000 t['aiecyrillic'] = 0x04D5;
33001 t['aigujarati'] = 0x0A90;
33002 t['aigurmukhi'] = 0x0A10;
33003 t['aimatragurmukhi'] = 0x0A48;
33004 t['ainarabic'] = 0x0639;
33005 t['ainfinalarabic'] = 0xFECA;
33006 t['aininitialarabic'] = 0xFECB;
33007 t['ainmedialarabic'] = 0xFECC;
33008 t['ainvertedbreve'] = 0x0203;
33009 t['aivowelsignbengali'] = 0x09C8;
33010 t['aivowelsigndeva'] = 0x0948;
33011 t['aivowelsigngujarati'] = 0x0AC8;
33012 t['akatakana'] = 0x30A2;
33013 t['akatakanahalfwidth'] = 0xFF71;
33014 t['akorean'] = 0x314F;
33015 t['alef'] = 0x05D0;
33016 t['alefarabic'] = 0x0627;
33017 t['alefdageshhebrew'] = 0xFB30;
33018 t['aleffinalarabic'] = 0xFE8E;
33019 t['alefhamzaabovearabic'] = 0x0623;
33020 t['alefhamzaabovefinalarabic'] = 0xFE84;
33021 t['alefhamzabelowarabic'] = 0x0625;
33022 t['alefhamzabelowfinalarabic'] = 0xFE88;
33023 t['alefhebrew'] = 0x05D0;
33024 t['aleflamedhebrew'] = 0xFB4F;
33025 t['alefmaddaabovearabic'] = 0x0622;
33026 t['alefmaddaabovefinalarabic'] = 0xFE82;
33027 t['alefmaksuraarabic'] = 0x0649;
33028 t['alefmaksurafinalarabic'] = 0xFEF0;
33029 t['alefmaksurainitialarabic'] = 0xFEF3;
33030 t['alefmaksuramedialarabic'] = 0xFEF4;
33031 t['alefpatahhebrew'] = 0xFB2E;
33032 t['alefqamatshebrew'] = 0xFB2F;
33033 t['aleph'] = 0x2135;
33034 t['allequal'] = 0x224C;
33035 t['alpha'] = 0x03B1;
33036 t['alphatonos'] = 0x03AC;
33037 t['amacron'] = 0x0101;
33038 t['amonospace'] = 0xFF41;
33039 t['ampersand'] = 0x0026;
33040 t['ampersandmonospace'] = 0xFF06;
33041 t['ampersandsmall'] = 0xF726;
33042 t['amsquare'] = 0x33C2;
33043 t['anbopomofo'] = 0x3122;
33044 t['angbopomofo'] = 0x3124;
33045 t['angbracketleft'] = 0x3008;
33046 t['angbracketright'] = 0x3009;
33047 t['angkhankhuthai'] = 0x0E5A;
33048 t['angle'] = 0x2220;
33049 t['anglebracketleft'] = 0x3008;
33050 t['anglebracketleftvertical'] = 0xFE3F;
33051 t['anglebracketright'] = 0x3009;
33052 t['anglebracketrightvertical'] = 0xFE40;
33053 t['angleleft'] = 0x2329;
33054 t['angleright'] = 0x232A;
33055 t['angstrom'] = 0x212B;
33056 t['anoteleia'] = 0x0387;
33057 t['anudattadeva'] = 0x0952;
33058 t['anusvarabengali'] = 0x0982;
33059 t['anusvaradeva'] = 0x0902;
33060 t['anusvaragujarati'] = 0x0A82;
33061 t['aogonek'] = 0x0105;
33062 t['apaatosquare'] = 0x3300;
33063 t['aparen'] = 0x249C;
33064 t['apostrophearmenian'] = 0x055A;
33065 t['apostrophemod'] = 0x02BC;
33066 t['apple'] = 0xF8FF;
33067 t['approaches'] = 0x2250;
33068 t['approxequal'] = 0x2248;
33069 t['approxequalorimage'] = 0x2252;
33070 t['approximatelyequal'] = 0x2245;
33071 t['araeaekorean'] = 0x318E;
33072 t['araeakorean'] = 0x318D;
33073 t['arc'] = 0x2312;
33074 t['arighthalfring'] = 0x1E9A;
33075 t['aring'] = 0x00E5;
33076 t['aringacute'] = 0x01FB;
33077 t['aringbelow'] = 0x1E01;
33078 t['arrowboth'] = 0x2194;
33079 t['arrowdashdown'] = 0x21E3;
33080 t['arrowdashleft'] = 0x21E0;
33081 t['arrowdashright'] = 0x21E2;
33082 t['arrowdashup'] = 0x21E1;
33083 t['arrowdblboth'] = 0x21D4;
33084 t['arrowdbldown'] = 0x21D3;
33085 t['arrowdblleft'] = 0x21D0;
33086 t['arrowdblright'] = 0x21D2;
33087 t['arrowdblup'] = 0x21D1;
33088 t['arrowdown'] = 0x2193;
33089 t['arrowdownleft'] = 0x2199;
33090 t['arrowdownright'] = 0x2198;
33091 t['arrowdownwhite'] = 0x21E9;
33092 t['arrowheaddownmod'] = 0x02C5;
33093 t['arrowheadleftmod'] = 0x02C2;
33094 t['arrowheadrightmod'] = 0x02C3;
33095 t['arrowheadupmod'] = 0x02C4;
33096 t['arrowhorizex'] = 0xF8E7;
33097 t['arrowleft'] = 0x2190;
33098 t['arrowleftdbl'] = 0x21D0;
33099 t['arrowleftdblstroke'] = 0x21CD;
33100 t['arrowleftoverright'] = 0x21C6;
33101 t['arrowleftwhite'] = 0x21E6;
33102 t['arrowright'] = 0x2192;
33103 t['arrowrightdblstroke'] = 0x21CF;
33104 t['arrowrightheavy'] = 0x279E;
33105 t['arrowrightoverleft'] = 0x21C4;
33106 t['arrowrightwhite'] = 0x21E8;
33107 t['arrowtableft'] = 0x21E4;
33108 t['arrowtabright'] = 0x21E5;
33109 t['arrowup'] = 0x2191;
33110 t['arrowupdn'] = 0x2195;
33111 t['arrowupdnbse'] = 0x21A8;
33112 t['arrowupdownbase'] = 0x21A8;
33113 t['arrowupleft'] = 0x2196;
33114 t['arrowupleftofdown'] = 0x21C5;
33115 t['arrowupright'] = 0x2197;
33116 t['arrowupwhite'] = 0x21E7;
33117 t['arrowvertex'] = 0xF8E6;
33118 t['asciicircum'] = 0x005E;
33119 t['asciicircummonospace'] = 0xFF3E;
33120 t['asciitilde'] = 0x007E;
33121 t['asciitildemonospace'] = 0xFF5E;
33122 t['ascript'] = 0x0251;
33123 t['ascriptturned'] = 0x0252;
33124 t['asmallhiragana'] = 0x3041;
33125 t['asmallkatakana'] = 0x30A1;
33126 t['asmallkatakanahalfwidth'] = 0xFF67;
33127 t['asterisk'] = 0x002A;
33128 t['asteriskaltonearabic'] = 0x066D;
33129 t['asteriskarabic'] = 0x066D;
33130 t['asteriskmath'] = 0x2217;
33131 t['asteriskmonospace'] = 0xFF0A;
33132 t['asterisksmall'] = 0xFE61;
33133 t['asterism'] = 0x2042;
33134 t['asuperior'] = 0xF6E9;
33135 t['asymptoticallyequal'] = 0x2243;
33136 t['at'] = 0x0040;
33137 t['atilde'] = 0x00E3;
33138 t['atmonospace'] = 0xFF20;
33139 t['atsmall'] = 0xFE6B;
33140 t['aturned'] = 0x0250;
33141 t['aubengali'] = 0x0994;
33142 t['aubopomofo'] = 0x3120;
33143 t['audeva'] = 0x0914;
33144 t['augujarati'] = 0x0A94;
33145 t['augurmukhi'] = 0x0A14;
33146 t['aulengthmarkbengali'] = 0x09D7;
33147 t['aumatragurmukhi'] = 0x0A4C;
33148 t['auvowelsignbengali'] = 0x09CC;
33149 t['auvowelsigndeva'] = 0x094C;
33150 t['auvowelsigngujarati'] = 0x0ACC;
33151 t['avagrahadeva'] = 0x093D;
33152 t['aybarmenian'] = 0x0561;
33153 t['ayin'] = 0x05E2;
33154 t['ayinaltonehebrew'] = 0xFB20;
33155 t['ayinhebrew'] = 0x05E2;
33156 t['b'] = 0x0062;
33157 t['babengali'] = 0x09AC;
33158 t['backslash'] = 0x005C;
33159 t['backslashmonospace'] = 0xFF3C;
33160 t['badeva'] = 0x092C;
33161 t['bagujarati'] = 0x0AAC;
33162 t['bagurmukhi'] = 0x0A2C;
33163 t['bahiragana'] = 0x3070;
33164 t['bahtthai'] = 0x0E3F;
33165 t['bakatakana'] = 0x30D0;
33166 t['bar'] = 0x007C;
33167 t['barmonospace'] = 0xFF5C;
33168 t['bbopomofo'] = 0x3105;
33169 t['bcircle'] = 0x24D1;
33170 t['bdotaccent'] = 0x1E03;
33171 t['bdotbelow'] = 0x1E05;
33172 t['beamedsixteenthnotes'] = 0x266C;
33173 t['because'] = 0x2235;
33174 t['becyrillic'] = 0x0431;
33175 t['beharabic'] = 0x0628;
33176 t['behfinalarabic'] = 0xFE90;
33177 t['behinitialarabic'] = 0xFE91;
33178 t['behiragana'] = 0x3079;
33179 t['behmedialarabic'] = 0xFE92;
33180 t['behmeeminitialarabic'] = 0xFC9F;
33181 t['behmeemisolatedarabic'] = 0xFC08;
33182 t['behnoonfinalarabic'] = 0xFC6D;
33183 t['bekatakana'] = 0x30D9;
33184 t['benarmenian'] = 0x0562;
33185 t['bet'] = 0x05D1;
33186 t['beta'] = 0x03B2;
33187 t['betasymbolgreek'] = 0x03D0;
33188 t['betdagesh'] = 0xFB31;
33189 t['betdageshhebrew'] = 0xFB31;
33190 t['bethebrew'] = 0x05D1;
33191 t['betrafehebrew'] = 0xFB4C;
33192 t['bhabengali'] = 0x09AD;
33193 t['bhadeva'] = 0x092D;
33194 t['bhagujarati'] = 0x0AAD;
33195 t['bhagurmukhi'] = 0x0A2D;
33196 t['bhook'] = 0x0253;
33197 t['bihiragana'] = 0x3073;
33198 t['bikatakana'] = 0x30D3;
33199 t['bilabialclick'] = 0x0298;
33200 t['bindigurmukhi'] = 0x0A02;
33201 t['birusquare'] = 0x3331;
33202 t['blackcircle'] = 0x25CF;
33203 t['blackdiamond'] = 0x25C6;
33204 t['blackdownpointingtriangle'] = 0x25BC;
33205 t['blackleftpointingpointer'] = 0x25C4;
33206 t['blackleftpointingtriangle'] = 0x25C0;
33207 t['blacklenticularbracketleft'] = 0x3010;
33208 t['blacklenticularbracketleftvertical'] = 0xFE3B;
33209 t['blacklenticularbracketright'] = 0x3011;
33210 t['blacklenticularbracketrightvertical'] = 0xFE3C;
33211 t['blacklowerlefttriangle'] = 0x25E3;
33212 t['blacklowerrighttriangle'] = 0x25E2;
33213 t['blackrectangle'] = 0x25AC;
33214 t['blackrightpointingpointer'] = 0x25BA;
33215 t['blackrightpointingtriangle'] = 0x25B6;
33216 t['blacksmallsquare'] = 0x25AA;
33217 t['blacksmilingface'] = 0x263B;
33218 t['blacksquare'] = 0x25A0;
33219 t['blackstar'] = 0x2605;
33220 t['blackupperlefttriangle'] = 0x25E4;
33221 t['blackupperrighttriangle'] = 0x25E5;
33222 t['blackuppointingsmalltriangle'] = 0x25B4;
33223 t['blackuppointingtriangle'] = 0x25B2;
33224 t['blank'] = 0x2423;
33225 t['blinebelow'] = 0x1E07;
33226 t['block'] = 0x2588;
33227 t['bmonospace'] = 0xFF42;
33228 t['bobaimaithai'] = 0x0E1A;
33229 t['bohiragana'] = 0x307C;
33230 t['bokatakana'] = 0x30DC;
33231 t['bparen'] = 0x249D;
33232 t['bqsquare'] = 0x33C3;
33233 t['braceex'] = 0xF8F4;
33234 t['braceleft'] = 0x007B;
33235 t['braceleftbt'] = 0xF8F3;
33236 t['braceleftmid'] = 0xF8F2;
33237 t['braceleftmonospace'] = 0xFF5B;
33238 t['braceleftsmall'] = 0xFE5B;
33239 t['bracelefttp'] = 0xF8F1;
33240 t['braceleftvertical'] = 0xFE37;
33241 t['braceright'] = 0x007D;
33242 t['bracerightbt'] = 0xF8FE;
33243 t['bracerightmid'] = 0xF8FD;
33244 t['bracerightmonospace'] = 0xFF5D;
33245 t['bracerightsmall'] = 0xFE5C;
33246 t['bracerighttp'] = 0xF8FC;
33247 t['bracerightvertical'] = 0xFE38;
33248 t['bracketleft'] = 0x005B;
33249 t['bracketleftbt'] = 0xF8F0;
33250 t['bracketleftex'] = 0xF8EF;
33251 t['bracketleftmonospace'] = 0xFF3B;
33252 t['bracketlefttp'] = 0xF8EE;
33253 t['bracketright'] = 0x005D;
33254 t['bracketrightbt'] = 0xF8FB;
33255 t['bracketrightex'] = 0xF8FA;
33256 t['bracketrightmonospace'] = 0xFF3D;
33257 t['bracketrighttp'] = 0xF8F9;
33258 t['breve'] = 0x02D8;
33259 t['brevebelowcmb'] = 0x032E;
33260 t['brevecmb'] = 0x0306;
33261 t['breveinvertedbelowcmb'] = 0x032F;
33262 t['breveinvertedcmb'] = 0x0311;
33263 t['breveinverteddoublecmb'] = 0x0361;
33264 t['bridgebelowcmb'] = 0x032A;
33265 t['bridgeinvertedbelowcmb'] = 0x033A;
33266 t['brokenbar'] = 0x00A6;
33267 t['bstroke'] = 0x0180;
33268 t['bsuperior'] = 0xF6EA;
33269 t['btopbar'] = 0x0183;
33270 t['buhiragana'] = 0x3076;
33271 t['bukatakana'] = 0x30D6;
33272 t['bullet'] = 0x2022;
33273 t['bulletinverse'] = 0x25D8;
33274 t['bulletoperator'] = 0x2219;
33275 t['bullseye'] = 0x25CE;
33276 t['c'] = 0x0063;
33277 t['caarmenian'] = 0x056E;
33278 t['cabengali'] = 0x099A;
33279 t['cacute'] = 0x0107;
33280 t['cadeva'] = 0x091A;
33281 t['cagujarati'] = 0x0A9A;
33282 t['cagurmukhi'] = 0x0A1A;
33283 t['calsquare'] = 0x3388;
33284 t['candrabindubengali'] = 0x0981;
33285 t['candrabinducmb'] = 0x0310;
33286 t['candrabindudeva'] = 0x0901;
33287 t['candrabindugujarati'] = 0x0A81;
33288 t['capslock'] = 0x21EA;
33289 t['careof'] = 0x2105;
33290 t['caron'] = 0x02C7;
33291 t['caronbelowcmb'] = 0x032C;
33292 t['caroncmb'] = 0x030C;
33293 t['carriagereturn'] = 0x21B5;
33294 t['cbopomofo'] = 0x3118;
33295 t['ccaron'] = 0x010D;
33296 t['ccedilla'] = 0x00E7;
33297 t['ccedillaacute'] = 0x1E09;
33298 t['ccircle'] = 0x24D2;
33299 t['ccircumflex'] = 0x0109;
33300 t['ccurl'] = 0x0255;
33301 t['cdot'] = 0x010B;
33302 t['cdotaccent'] = 0x010B;
33303 t['cdsquare'] = 0x33C5;
33304 t['cedilla'] = 0x00B8;
33305 t['cedillacmb'] = 0x0327;
33306 t['cent'] = 0x00A2;
33307 t['centigrade'] = 0x2103;
33308 t['centinferior'] = 0xF6DF;
33309 t['centmonospace'] = 0xFFE0;
33310 t['centoldstyle'] = 0xF7A2;
33311 t['centsuperior'] = 0xF6E0;
33312 t['chaarmenian'] = 0x0579;
33313 t['chabengali'] = 0x099B;
33314 t['chadeva'] = 0x091B;
33315 t['chagujarati'] = 0x0A9B;
33316 t['chagurmukhi'] = 0x0A1B;
33317 t['chbopomofo'] = 0x3114;
33318 t['cheabkhasiancyrillic'] = 0x04BD;
33319 t['checkmark'] = 0x2713;
33320 t['checyrillic'] = 0x0447;
33321 t['chedescenderabkhasiancyrillic'] = 0x04BF;
33322 t['chedescendercyrillic'] = 0x04B7;
33323 t['chedieresiscyrillic'] = 0x04F5;
33324 t['cheharmenian'] = 0x0573;
33325 t['chekhakassiancyrillic'] = 0x04CC;
33326 t['cheverticalstrokecyrillic'] = 0x04B9;
33327 t['chi'] = 0x03C7;
33328 t['chieuchacirclekorean'] = 0x3277;
33329 t['chieuchaparenkorean'] = 0x3217;
33330 t['chieuchcirclekorean'] = 0x3269;
33331 t['chieuchkorean'] = 0x314A;
33332 t['chieuchparenkorean'] = 0x3209;
33333 t['chochangthai'] = 0x0E0A;
33334 t['chochanthai'] = 0x0E08;
33335 t['chochingthai'] = 0x0E09;
33336 t['chochoethai'] = 0x0E0C;
33337 t['chook'] = 0x0188;
33338 t['cieucacirclekorean'] = 0x3276;
33339 t['cieucaparenkorean'] = 0x3216;
33340 t['cieuccirclekorean'] = 0x3268;
33341 t['cieuckorean'] = 0x3148;
33342 t['cieucparenkorean'] = 0x3208;
33343 t['cieucuparenkorean'] = 0x321C;
33344 t['circle'] = 0x25CB;
33345 t['circlecopyrt'] = 0x00A9;
33346 t['circlemultiply'] = 0x2297;
33347 t['circleot'] = 0x2299;
33348 t['circleplus'] = 0x2295;
33349 t['circlepostalmark'] = 0x3036;
33350 t['circlewithlefthalfblack'] = 0x25D0;
33351 t['circlewithrighthalfblack'] = 0x25D1;
33352 t['circumflex'] = 0x02C6;
33353 t['circumflexbelowcmb'] = 0x032D;
33354 t['circumflexcmb'] = 0x0302;
33355 t['clear'] = 0x2327;
33356 t['clickalveolar'] = 0x01C2;
33357 t['clickdental'] = 0x01C0;
33358 t['clicklateral'] = 0x01C1;
33359 t['clickretroflex'] = 0x01C3;
33360 t['club'] = 0x2663;
33361 t['clubsuitblack'] = 0x2663;
33362 t['clubsuitwhite'] = 0x2667;
33363 t['cmcubedsquare'] = 0x33A4;
33364 t['cmonospace'] = 0xFF43;
33365 t['cmsquaredsquare'] = 0x33A0;
33366 t['coarmenian'] = 0x0581;
33367 t['colon'] = 0x003A;
33368 t['colonmonetary'] = 0x20A1;
33369 t['colonmonospace'] = 0xFF1A;
33370 t['colonsign'] = 0x20A1;
33371 t['colonsmall'] = 0xFE55;
33372 t['colontriangularhalfmod'] = 0x02D1;
33373 t['colontriangularmod'] = 0x02D0;
33374 t['comma'] = 0x002C;
33375 t['commaabovecmb'] = 0x0313;
33376 t['commaaboverightcmb'] = 0x0315;
33377 t['commaaccent'] = 0xF6C3;
33378 t['commaarabic'] = 0x060C;
33379 t['commaarmenian'] = 0x055D;
33380 t['commainferior'] = 0xF6E1;
33381 t['commamonospace'] = 0xFF0C;
33382 t['commareversedabovecmb'] = 0x0314;
33383 t['commareversedmod'] = 0x02BD;
33384 t['commasmall'] = 0xFE50;
33385 t['commasuperior'] = 0xF6E2;
33386 t['commaturnedabovecmb'] = 0x0312;
33387 t['commaturnedmod'] = 0x02BB;
33388 t['compass'] = 0x263C;
33389 t['congruent'] = 0x2245;
33390 t['contourintegral'] = 0x222E;
33391 t['control'] = 0x2303;
33392 t['controlACK'] = 0x0006;
33393 t['controlBEL'] = 0x0007;
33394 t['controlBS'] = 0x0008;
33395 t['controlCAN'] = 0x0018;
33396 t['controlCR'] = 0x000D;
33397 t['controlDC1'] = 0x0011;
33398 t['controlDC2'] = 0x0012;
33399 t['controlDC3'] = 0x0013;
33400 t['controlDC4'] = 0x0014;
33401 t['controlDEL'] = 0x007F;
33402 t['controlDLE'] = 0x0010;
33403 t['controlEM'] = 0x0019;
33404 t['controlENQ'] = 0x0005;
33405 t['controlEOT'] = 0x0004;
33406 t['controlESC'] = 0x001B;
33407 t['controlETB'] = 0x0017;
33408 t['controlETX'] = 0x0003;
33409 t['controlFF'] = 0x000C;
33410 t['controlFS'] = 0x001C;
33411 t['controlGS'] = 0x001D;
33412 t['controlHT'] = 0x0009;
33413 t['controlLF'] = 0x000A;
33414 t['controlNAK'] = 0x0015;
33415 t['controlNULL'] = 0x0000;
33416 t['controlRS'] = 0x001E;
33417 t['controlSI'] = 0x000F;
33418 t['controlSO'] = 0x000E;
33419 t['controlSOT'] = 0x0002;
33420 t['controlSTX'] = 0x0001;
33421 t['controlSUB'] = 0x001A;
33422 t['controlSYN'] = 0x0016;
33423 t['controlUS'] = 0x001F;
33424 t['controlVT'] = 0x000B;
33425 t['copyright'] = 0x00A9;
33426 t['copyrightsans'] = 0xF8E9;
33427 t['copyrightserif'] = 0xF6D9;
33428 t['cornerbracketleft'] = 0x300C;
33429 t['cornerbracketlefthalfwidth'] = 0xFF62;
33430 t['cornerbracketleftvertical'] = 0xFE41;
33431 t['cornerbracketright'] = 0x300D;
33432 t['cornerbracketrighthalfwidth'] = 0xFF63;
33433 t['cornerbracketrightvertical'] = 0xFE42;
33434 t['corporationsquare'] = 0x337F;
33435 t['cosquare'] = 0x33C7;
33436 t['coverkgsquare'] = 0x33C6;
33437 t['cparen'] = 0x249E;
33438 t['cruzeiro'] = 0x20A2;
33439 t['cstretched'] = 0x0297;
33440 t['curlyand'] = 0x22CF;
33441 t['curlyor'] = 0x22CE;
33442 t['currency'] = 0x00A4;
33443 t['cyrBreve'] = 0xF6D1;
33444 t['cyrFlex'] = 0xF6D2;
33445 t['cyrbreve'] = 0xF6D4;
33446 t['cyrflex'] = 0xF6D5;
33447 t['d'] = 0x0064;
33448 t['daarmenian'] = 0x0564;
33449 t['dabengali'] = 0x09A6;
33450 t['dadarabic'] = 0x0636;
33451 t['dadeva'] = 0x0926;
33452 t['dadfinalarabic'] = 0xFEBE;
33453 t['dadinitialarabic'] = 0xFEBF;
33454 t['dadmedialarabic'] = 0xFEC0;
33455 t['dagesh'] = 0x05BC;
33456 t['dageshhebrew'] = 0x05BC;
33457 t['dagger'] = 0x2020;
33458 t['daggerdbl'] = 0x2021;
33459 t['dagujarati'] = 0x0AA6;
33460 t['dagurmukhi'] = 0x0A26;
33461 t['dahiragana'] = 0x3060;
33462 t['dakatakana'] = 0x30C0;
33463 t['dalarabic'] = 0x062F;
33464 t['dalet'] = 0x05D3;
33465 t['daletdagesh'] = 0xFB33;
33466 t['daletdageshhebrew'] = 0xFB33;
33467 t['dalethebrew'] = 0x05D3;
33468 t['dalfinalarabic'] = 0xFEAA;
33469 t['dammaarabic'] = 0x064F;
33470 t['dammalowarabic'] = 0x064F;
33471 t['dammatanaltonearabic'] = 0x064C;
33472 t['dammatanarabic'] = 0x064C;
33473 t['danda'] = 0x0964;
33474 t['dargahebrew'] = 0x05A7;
33475 t['dargalefthebrew'] = 0x05A7;
33476 t['dasiapneumatacyrilliccmb'] = 0x0485;
33477 t['dblGrave'] = 0xF6D3;
33478 t['dblanglebracketleft'] = 0x300A;
33479 t['dblanglebracketleftvertical'] = 0xFE3D;
33480 t['dblanglebracketright'] = 0x300B;
33481 t['dblanglebracketrightvertical'] = 0xFE3E;
33482 t['dblarchinvertedbelowcmb'] = 0x032B;
33483 t['dblarrowleft'] = 0x21D4;
33484 t['dblarrowright'] = 0x21D2;
33485 t['dbldanda'] = 0x0965;
33486 t['dblgrave'] = 0xF6D6;
33487 t['dblgravecmb'] = 0x030F;
33488 t['dblintegral'] = 0x222C;
33489 t['dbllowline'] = 0x2017;
33490 t['dbllowlinecmb'] = 0x0333;
33491 t['dbloverlinecmb'] = 0x033F;
33492 t['dblprimemod'] = 0x02BA;
33493 t['dblverticalbar'] = 0x2016;
33494 t['dblverticallineabovecmb'] = 0x030E;
33495 t['dbopomofo'] = 0x3109;
33496 t['dbsquare'] = 0x33C8;
33497 t['dcaron'] = 0x010F;
33498 t['dcedilla'] = 0x1E11;
33499 t['dcircle'] = 0x24D3;
33500 t['dcircumflexbelow'] = 0x1E13;
33501 t['dcroat'] = 0x0111;
33502 t['ddabengali'] = 0x09A1;
33503 t['ddadeva'] = 0x0921;
33504 t['ddagujarati'] = 0x0AA1;
33505 t['ddagurmukhi'] = 0x0A21;
33506 t['ddalarabic'] = 0x0688;
33507 t['ddalfinalarabic'] = 0xFB89;
33508 t['dddhadeva'] = 0x095C;
33509 t['ddhabengali'] = 0x09A2;
33510 t['ddhadeva'] = 0x0922;
33511 t['ddhagujarati'] = 0x0AA2;
33512 t['ddhagurmukhi'] = 0x0A22;
33513 t['ddotaccent'] = 0x1E0B;
33514 t['ddotbelow'] = 0x1E0D;
33515 t['decimalseparatorarabic'] = 0x066B;
33516 t['decimalseparatorpersian'] = 0x066B;
33517 t['decyrillic'] = 0x0434;
33518 t['degree'] = 0x00B0;
33519 t['dehihebrew'] = 0x05AD;
33520 t['dehiragana'] = 0x3067;
33521 t['deicoptic'] = 0x03EF;
33522 t['dekatakana'] = 0x30C7;
33523 t['deleteleft'] = 0x232B;
33524 t['deleteright'] = 0x2326;
33525 t['delta'] = 0x03B4;
33526 t['deltaturned'] = 0x018D;
33527 t['denominatorminusonenumeratorbengali'] = 0x09F8;
33528 t['dezh'] = 0x02A4;
33529 t['dhabengali'] = 0x09A7;
33530 t['dhadeva'] = 0x0927;
33531 t['dhagujarati'] = 0x0AA7;
33532 t['dhagurmukhi'] = 0x0A27;
33533 t['dhook'] = 0x0257;
33534 t['dialytikatonos'] = 0x0385;
33535 t['dialytikatonoscmb'] = 0x0344;
33536 t['diamond'] = 0x2666;
33537 t['diamondsuitwhite'] = 0x2662;
33538 t['dieresis'] = 0x00A8;
33539 t['dieresisacute'] = 0xF6D7;
33540 t['dieresisbelowcmb'] = 0x0324;
33541 t['dieresiscmb'] = 0x0308;
33542 t['dieresisgrave'] = 0xF6D8;
33543 t['dieresistonos'] = 0x0385;
33544 t['dihiragana'] = 0x3062;
33545 t['dikatakana'] = 0x30C2;
33546 t['dittomark'] = 0x3003;
33547 t['divide'] = 0x00F7;
33548 t['divides'] = 0x2223;
33549 t['divisionslash'] = 0x2215;
33550 t['djecyrillic'] = 0x0452;
33551 t['dkshade'] = 0x2593;
33552 t['dlinebelow'] = 0x1E0F;
33553 t['dlsquare'] = 0x3397;
33554 t['dmacron'] = 0x0111;
33555 t['dmonospace'] = 0xFF44;
33556 t['dnblock'] = 0x2584;
33557 t['dochadathai'] = 0x0E0E;
33558 t['dodekthai'] = 0x0E14;
33559 t['dohiragana'] = 0x3069;
33560 t['dokatakana'] = 0x30C9;
33561 t['dollar'] = 0x0024;
33562 t['dollarinferior'] = 0xF6E3;
33563 t['dollarmonospace'] = 0xFF04;
33564 t['dollaroldstyle'] = 0xF724;
33565 t['dollarsmall'] = 0xFE69;
33566 t['dollarsuperior'] = 0xF6E4;
33567 t['dong'] = 0x20AB;
33568 t['dorusquare'] = 0x3326;
33569 t['dotaccent'] = 0x02D9;
33570 t['dotaccentcmb'] = 0x0307;
33571 t['dotbelowcmb'] = 0x0323;
33572 t['dotbelowcomb'] = 0x0323;
33573 t['dotkatakana'] = 0x30FB;
33574 t['dotlessi'] = 0x0131;
33575 t['dotlessj'] = 0xF6BE;
33576 t['dotlessjstrokehook'] = 0x0284;
33577 t['dotmath'] = 0x22C5;
33578 t['dottedcircle'] = 0x25CC;
33579 t['doubleyodpatah'] = 0xFB1F;
33580 t['doubleyodpatahhebrew'] = 0xFB1F;
33581 t['downtackbelowcmb'] = 0x031E;
33582 t['downtackmod'] = 0x02D5;
33583 t['dparen'] = 0x249F;
33584 t['dsuperior'] = 0xF6EB;
33585 t['dtail'] = 0x0256;
33586 t['dtopbar'] = 0x018C;
33587 t['duhiragana'] = 0x3065;
33588 t['dukatakana'] = 0x30C5;
33589 t['dz'] = 0x01F3;
33590 t['dzaltone'] = 0x02A3;
33591 t['dzcaron'] = 0x01C6;
33592 t['dzcurl'] = 0x02A5;
33593 t['dzeabkhasiancyrillic'] = 0x04E1;
33594 t['dzecyrillic'] = 0x0455;
33595 t['dzhecyrillic'] = 0x045F;
33596 t['e'] = 0x0065;
33597 t['eacute'] = 0x00E9;
33598 t['earth'] = 0x2641;
33599 t['ebengali'] = 0x098F;
33600 t['ebopomofo'] = 0x311C;
33601 t['ebreve'] = 0x0115;
33602 t['ecandradeva'] = 0x090D;
33603 t['ecandragujarati'] = 0x0A8D;
33604 t['ecandravowelsigndeva'] = 0x0945;
33605 t['ecandravowelsigngujarati'] = 0x0AC5;
33606 t['ecaron'] = 0x011B;
33607 t['ecedillabreve'] = 0x1E1D;
33608 t['echarmenian'] = 0x0565;
33609 t['echyiwnarmenian'] = 0x0587;
33610 t['ecircle'] = 0x24D4;
33611 t['ecircumflex'] = 0x00EA;
33612 t['ecircumflexacute'] = 0x1EBF;
33613 t['ecircumflexbelow'] = 0x1E19;
33614 t['ecircumflexdotbelow'] = 0x1EC7;
33615 t['ecircumflexgrave'] = 0x1EC1;
33616 t['ecircumflexhookabove'] = 0x1EC3;
33617 t['ecircumflextilde'] = 0x1EC5;
33618 t['ecyrillic'] = 0x0454;
33619 t['edblgrave'] = 0x0205;
33620 t['edeva'] = 0x090F;
33621 t['edieresis'] = 0x00EB;
33622 t['edot'] = 0x0117;
33623 t['edotaccent'] = 0x0117;
33624 t['edotbelow'] = 0x1EB9;
33625 t['eegurmukhi'] = 0x0A0F;
33626 t['eematragurmukhi'] = 0x0A47;
33627 t['efcyrillic'] = 0x0444;
33628 t['egrave'] = 0x00E8;
33629 t['egujarati'] = 0x0A8F;
33630 t['eharmenian'] = 0x0567;
33631 t['ehbopomofo'] = 0x311D;
33632 t['ehiragana'] = 0x3048;
33633 t['ehookabove'] = 0x1EBB;
33634 t['eibopomofo'] = 0x311F;
33635 t['eight'] = 0x0038;
33636 t['eightarabic'] = 0x0668;
33637 t['eightbengali'] = 0x09EE;
33638 t['eightcircle'] = 0x2467;
33639 t['eightcircleinversesansserif'] = 0x2791;
33640 t['eightdeva'] = 0x096E;
33641 t['eighteencircle'] = 0x2471;
33642 t['eighteenparen'] = 0x2485;
33643 t['eighteenperiod'] = 0x2499;
33644 t['eightgujarati'] = 0x0AEE;
33645 t['eightgurmukhi'] = 0x0A6E;
33646 t['eighthackarabic'] = 0x0668;
33647 t['eighthangzhou'] = 0x3028;
33648 t['eighthnotebeamed'] = 0x266B;
33649 t['eightideographicparen'] = 0x3227;
33650 t['eightinferior'] = 0x2088;
33651 t['eightmonospace'] = 0xFF18;
33652 t['eightoldstyle'] = 0xF738;
33653 t['eightparen'] = 0x247B;
33654 t['eightperiod'] = 0x248F;
33655 t['eightpersian'] = 0x06F8;
33656 t['eightroman'] = 0x2177;
33657 t['eightsuperior'] = 0x2078;
33658 t['eightthai'] = 0x0E58;
33659 t['einvertedbreve'] = 0x0207;
33660 t['eiotifiedcyrillic'] = 0x0465;
33661 t['ekatakana'] = 0x30A8;
33662 t['ekatakanahalfwidth'] = 0xFF74;
33663 t['ekonkargurmukhi'] = 0x0A74;
33664 t['ekorean'] = 0x3154;
33665 t['elcyrillic'] = 0x043B;
33666 t['element'] = 0x2208;
33667 t['elevencircle'] = 0x246A;
33668 t['elevenparen'] = 0x247E;
33669 t['elevenperiod'] = 0x2492;
33670 t['elevenroman'] = 0x217A;
33671 t['ellipsis'] = 0x2026;
33672 t['ellipsisvertical'] = 0x22EE;
33673 t['emacron'] = 0x0113;
33674 t['emacronacute'] = 0x1E17;
33675 t['emacrongrave'] = 0x1E15;
33676 t['emcyrillic'] = 0x043C;
33677 t['emdash'] = 0x2014;
33678 t['emdashvertical'] = 0xFE31;
33679 t['emonospace'] = 0xFF45;
33680 t['emphasismarkarmenian'] = 0x055B;
33681 t['emptyset'] = 0x2205;
33682 t['enbopomofo'] = 0x3123;
33683 t['encyrillic'] = 0x043D;
33684 t['endash'] = 0x2013;
33685 t['endashvertical'] = 0xFE32;
33686 t['endescendercyrillic'] = 0x04A3;
33687 t['eng'] = 0x014B;
33688 t['engbopomofo'] = 0x3125;
33689 t['enghecyrillic'] = 0x04A5;
33690 t['enhookcyrillic'] = 0x04C8;
33691 t['enspace'] = 0x2002;
33692 t['eogonek'] = 0x0119;
33693 t['eokorean'] = 0x3153;
33694 t['eopen'] = 0x025B;
33695 t['eopenclosed'] = 0x029A;
33696 t['eopenreversed'] = 0x025C;
33697 t['eopenreversedclosed'] = 0x025E;
33698 t['eopenreversedhook'] = 0x025D;
33699 t['eparen'] = 0x24A0;
33700 t['epsilon'] = 0x03B5;
33701 t['epsilontonos'] = 0x03AD;
33702 t['equal'] = 0x003D;
33703 t['equalmonospace'] = 0xFF1D;
33704 t['equalsmall'] = 0xFE66;
33705 t['equalsuperior'] = 0x207C;
33706 t['equivalence'] = 0x2261;
33707 t['erbopomofo'] = 0x3126;
33708 t['ercyrillic'] = 0x0440;
33709 t['ereversed'] = 0x0258;
33710 t['ereversedcyrillic'] = 0x044D;
33711 t['escyrillic'] = 0x0441;
33712 t['esdescendercyrillic'] = 0x04AB;
33713 t['esh'] = 0x0283;
33714 t['eshcurl'] = 0x0286;
33715 t['eshortdeva'] = 0x090E;
33716 t['eshortvowelsigndeva'] = 0x0946;
33717 t['eshreversedloop'] = 0x01AA;
33718 t['eshsquatreversed'] = 0x0285;
33719 t['esmallhiragana'] = 0x3047;
33720 t['esmallkatakana'] = 0x30A7;
33721 t['esmallkatakanahalfwidth'] = 0xFF6A;
33722 t['estimated'] = 0x212E;
33723 t['esuperior'] = 0xF6EC;
33724 t['eta'] = 0x03B7;
33725 t['etarmenian'] = 0x0568;
33726 t['etatonos'] = 0x03AE;
33727 t['eth'] = 0x00F0;
33728 t['etilde'] = 0x1EBD;
33729 t['etildebelow'] = 0x1E1B;
33730 t['etnahtafoukhhebrew'] = 0x0591;
33731 t['etnahtafoukhlefthebrew'] = 0x0591;
33732 t['etnahtahebrew'] = 0x0591;
33733 t['etnahtalefthebrew'] = 0x0591;
33734 t['eturned'] = 0x01DD;
33735 t['eukorean'] = 0x3161;
33736 t['euro'] = 0x20AC;
33737 t['evowelsignbengali'] = 0x09C7;
33738 t['evowelsigndeva'] = 0x0947;
33739 t['evowelsigngujarati'] = 0x0AC7;
33740 t['exclam'] = 0x0021;
33741 t['exclamarmenian'] = 0x055C;
33742 t['exclamdbl'] = 0x203C;
33743 t['exclamdown'] = 0x00A1;
33744 t['exclamdownsmall'] = 0xF7A1;
33745 t['exclammonospace'] = 0xFF01;
33746 t['exclamsmall'] = 0xF721;
33747 t['existential'] = 0x2203;
33748 t['ezh'] = 0x0292;
33749 t['ezhcaron'] = 0x01EF;
33750 t['ezhcurl'] = 0x0293;
33751 t['ezhreversed'] = 0x01B9;
33752 t['ezhtail'] = 0x01BA;
33753 t['f'] = 0x0066;
33754 t['fadeva'] = 0x095E;
33755 t['fagurmukhi'] = 0x0A5E;
33756 t['fahrenheit'] = 0x2109;
33757 t['fathaarabic'] = 0x064E;
33758 t['fathalowarabic'] = 0x064E;
33759 t['fathatanarabic'] = 0x064B;
33760 t['fbopomofo'] = 0x3108;
33761 t['fcircle'] = 0x24D5;
33762 t['fdotaccent'] = 0x1E1F;
33763 t['feharabic'] = 0x0641;
33764 t['feharmenian'] = 0x0586;
33765 t['fehfinalarabic'] = 0xFED2;
33766 t['fehinitialarabic'] = 0xFED3;
33767 t['fehmedialarabic'] = 0xFED4;
33768 t['feicoptic'] = 0x03E5;
33769 t['female'] = 0x2640;
33770 t['ff'] = 0xFB00;
33771 t['ffi'] = 0xFB03;
33772 t['ffl'] = 0xFB04;
33773 t['fi'] = 0xFB01;
33774 t['fifteencircle'] = 0x246E;
33775 t['fifteenparen'] = 0x2482;
33776 t['fifteenperiod'] = 0x2496;
33777 t['figuredash'] = 0x2012;
33778 t['filledbox'] = 0x25A0;
33779 t['filledrect'] = 0x25AC;
33780 t['finalkaf'] = 0x05DA;
33781 t['finalkafdagesh'] = 0xFB3A;
33782 t['finalkafdageshhebrew'] = 0xFB3A;
33783 t['finalkafhebrew'] = 0x05DA;
33784 t['finalmem'] = 0x05DD;
33785 t['finalmemhebrew'] = 0x05DD;
33786 t['finalnun'] = 0x05DF;
33787 t['finalnunhebrew'] = 0x05DF;
33788 t['finalpe'] = 0x05E3;
33789 t['finalpehebrew'] = 0x05E3;
33790 t['finaltsadi'] = 0x05E5;
33791 t['finaltsadihebrew'] = 0x05E5;
33792 t['firsttonechinese'] = 0x02C9;
33793 t['fisheye'] = 0x25C9;
33794 t['fitacyrillic'] = 0x0473;
33795 t['five'] = 0x0035;
33796 t['fivearabic'] = 0x0665;
33797 t['fivebengali'] = 0x09EB;
33798 t['fivecircle'] = 0x2464;
33799 t['fivecircleinversesansserif'] = 0x278E;
33800 t['fivedeva'] = 0x096B;
33801 t['fiveeighths'] = 0x215D;
33802 t['fivegujarati'] = 0x0AEB;
33803 t['fivegurmukhi'] = 0x0A6B;
33804 t['fivehackarabic'] = 0x0665;
33805 t['fivehangzhou'] = 0x3025;
33806 t['fiveideographicparen'] = 0x3224;
33807 t['fiveinferior'] = 0x2085;
33808 t['fivemonospace'] = 0xFF15;
33809 t['fiveoldstyle'] = 0xF735;
33810 t['fiveparen'] = 0x2478;
33811 t['fiveperiod'] = 0x248C;
33812 t['fivepersian'] = 0x06F5;
33813 t['fiveroman'] = 0x2174;
33814 t['fivesuperior'] = 0x2075;
33815 t['fivethai'] = 0x0E55;
33816 t['fl'] = 0xFB02;
33817 t['florin'] = 0x0192;
33818 t['fmonospace'] = 0xFF46;
33819 t['fmsquare'] = 0x3399;
33820 t['fofanthai'] = 0x0E1F;
33821 t['fofathai'] = 0x0E1D;
33822 t['fongmanthai'] = 0x0E4F;
33823 t['forall'] = 0x2200;
33824 t['four'] = 0x0034;
33825 t['fourarabic'] = 0x0664;
33826 t['fourbengali'] = 0x09EA;
33827 t['fourcircle'] = 0x2463;
33828 t['fourcircleinversesansserif'] = 0x278D;
33829 t['fourdeva'] = 0x096A;
33830 t['fourgujarati'] = 0x0AEA;
33831 t['fourgurmukhi'] = 0x0A6A;
33832 t['fourhackarabic'] = 0x0664;
33833 t['fourhangzhou'] = 0x3024;
33834 t['fourideographicparen'] = 0x3223;
33835 t['fourinferior'] = 0x2084;
33836 t['fourmonospace'] = 0xFF14;
33837 t['fournumeratorbengali'] = 0x09F7;
33838 t['fouroldstyle'] = 0xF734;
33839 t['fourparen'] = 0x2477;
33840 t['fourperiod'] = 0x248B;
33841 t['fourpersian'] = 0x06F4;
33842 t['fourroman'] = 0x2173;
33843 t['foursuperior'] = 0x2074;
33844 t['fourteencircle'] = 0x246D;
33845 t['fourteenparen'] = 0x2481;
33846 t['fourteenperiod'] = 0x2495;
33847 t['fourthai'] = 0x0E54;
33848 t['fourthtonechinese'] = 0x02CB;
33849 t['fparen'] = 0x24A1;
33850 t['fraction'] = 0x2044;
33851 t['franc'] = 0x20A3;
33852 t['g'] = 0x0067;
33853 t['gabengali'] = 0x0997;
33854 t['gacute'] = 0x01F5;
33855 t['gadeva'] = 0x0917;
33856 t['gafarabic'] = 0x06AF;
33857 t['gaffinalarabic'] = 0xFB93;
33858 t['gafinitialarabic'] = 0xFB94;
33859 t['gafmedialarabic'] = 0xFB95;
33860 t['gagujarati'] = 0x0A97;
33861 t['gagurmukhi'] = 0x0A17;
33862 t['gahiragana'] = 0x304C;
33863 t['gakatakana'] = 0x30AC;
33864 t['gamma'] = 0x03B3;
33865 t['gammalatinsmall'] = 0x0263;
33866 t['gammasuperior'] = 0x02E0;
33867 t['gangiacoptic'] = 0x03EB;
33868 t['gbopomofo'] = 0x310D;
33869 t['gbreve'] = 0x011F;
33870 t['gcaron'] = 0x01E7;
33871 t['gcedilla'] = 0x0123;
33872 t['gcircle'] = 0x24D6;
33873 t['gcircumflex'] = 0x011D;
33874 t['gcommaaccent'] = 0x0123;
33875 t['gdot'] = 0x0121;
33876 t['gdotaccent'] = 0x0121;
33877 t['gecyrillic'] = 0x0433;
33878 t['gehiragana'] = 0x3052;
33879 t['gekatakana'] = 0x30B2;
33880 t['geometricallyequal'] = 0x2251;
33881 t['gereshaccenthebrew'] = 0x059C;
33882 t['gereshhebrew'] = 0x05F3;
33883 t['gereshmuqdamhebrew'] = 0x059D;
33884 t['germandbls'] = 0x00DF;
33885 t['gershayimaccenthebrew'] = 0x059E;
33886 t['gershayimhebrew'] = 0x05F4;
33887 t['getamark'] = 0x3013;
33888 t['ghabengali'] = 0x0998;
33889 t['ghadarmenian'] = 0x0572;
33890 t['ghadeva'] = 0x0918;
33891 t['ghagujarati'] = 0x0A98;
33892 t['ghagurmukhi'] = 0x0A18;
33893 t['ghainarabic'] = 0x063A;
33894 t['ghainfinalarabic'] = 0xFECE;
33895 t['ghaininitialarabic'] = 0xFECF;
33896 t['ghainmedialarabic'] = 0xFED0;
33897 t['ghemiddlehookcyrillic'] = 0x0495;
33898 t['ghestrokecyrillic'] = 0x0493;
33899 t['gheupturncyrillic'] = 0x0491;
33900 t['ghhadeva'] = 0x095A;
33901 t['ghhagurmukhi'] = 0x0A5A;
33902 t['ghook'] = 0x0260;
33903 t['ghzsquare'] = 0x3393;
33904 t['gihiragana'] = 0x304E;
33905 t['gikatakana'] = 0x30AE;
33906 t['gimarmenian'] = 0x0563;
33907 t['gimel'] = 0x05D2;
33908 t['gimeldagesh'] = 0xFB32;
33909 t['gimeldageshhebrew'] = 0xFB32;
33910 t['gimelhebrew'] = 0x05D2;
33911 t['gjecyrillic'] = 0x0453;
33912 t['glottalinvertedstroke'] = 0x01BE;
33913 t['glottalstop'] = 0x0294;
33914 t['glottalstopinverted'] = 0x0296;
33915 t['glottalstopmod'] = 0x02C0;
33916 t['glottalstopreversed'] = 0x0295;
33917 t['glottalstopreversedmod'] = 0x02C1;
33918 t['glottalstopreversedsuperior'] = 0x02E4;
33919 t['glottalstopstroke'] = 0x02A1;
33920 t['glottalstopstrokereversed'] = 0x02A2;
33921 t['gmacron'] = 0x1E21;
33922 t['gmonospace'] = 0xFF47;
33923 t['gohiragana'] = 0x3054;
33924 t['gokatakana'] = 0x30B4;
33925 t['gparen'] = 0x24A2;
33926 t['gpasquare'] = 0x33AC;
33927 t['gradient'] = 0x2207;
33928 t['grave'] = 0x0060;
33929 t['gravebelowcmb'] = 0x0316;
33930 t['gravecmb'] = 0x0300;
33931 t['gravecomb'] = 0x0300;
33932 t['gravedeva'] = 0x0953;
33933 t['gravelowmod'] = 0x02CE;
33934 t['gravemonospace'] = 0xFF40;
33935 t['gravetonecmb'] = 0x0340;
33936 t['greater'] = 0x003E;
33937 t['greaterequal'] = 0x2265;
33938 t['greaterequalorless'] = 0x22DB;
33939 t['greatermonospace'] = 0xFF1E;
33940 t['greaterorequivalent'] = 0x2273;
33941 t['greaterorless'] = 0x2277;
33942 t['greateroverequal'] = 0x2267;
33943 t['greatersmall'] = 0xFE65;
33944 t['gscript'] = 0x0261;
33945 t['gstroke'] = 0x01E5;
33946 t['guhiragana'] = 0x3050;
33947 t['guillemotleft'] = 0x00AB;
33948 t['guillemotright'] = 0x00BB;
33949 t['guilsinglleft'] = 0x2039;
33950 t['guilsinglright'] = 0x203A;
33951 t['gukatakana'] = 0x30B0;
33952 t['guramusquare'] = 0x3318;
33953 t['gysquare'] = 0x33C9;
33954 t['h'] = 0x0068;
33955 t['haabkhasiancyrillic'] = 0x04A9;
33956 t['haaltonearabic'] = 0x06C1;
33957 t['habengali'] = 0x09B9;
33958 t['hadescendercyrillic'] = 0x04B3;
33959 t['hadeva'] = 0x0939;
33960 t['hagujarati'] = 0x0AB9;
33961 t['hagurmukhi'] = 0x0A39;
33962 t['haharabic'] = 0x062D;
33963 t['hahfinalarabic'] = 0xFEA2;
33964 t['hahinitialarabic'] = 0xFEA3;
33965 t['hahiragana'] = 0x306F;
33966 t['hahmedialarabic'] = 0xFEA4;
33967 t['haitusquare'] = 0x332A;
33968 t['hakatakana'] = 0x30CF;
33969 t['hakatakanahalfwidth'] = 0xFF8A;
33970 t['halantgurmukhi'] = 0x0A4D;
33971 t['hamzaarabic'] = 0x0621;
33972 t['hamzalowarabic'] = 0x0621;
33973 t['hangulfiller'] = 0x3164;
33974 t['hardsigncyrillic'] = 0x044A;
33975 t['harpoonleftbarbup'] = 0x21BC;
33976 t['harpoonrightbarbup'] = 0x21C0;
33977 t['hasquare'] = 0x33CA;
33978 t['hatafpatah'] = 0x05B2;
33979 t['hatafpatah16'] = 0x05B2;
33980 t['hatafpatah23'] = 0x05B2;
33981 t['hatafpatah2f'] = 0x05B2;
33982 t['hatafpatahhebrew'] = 0x05B2;
33983 t['hatafpatahnarrowhebrew'] = 0x05B2;
33984 t['hatafpatahquarterhebrew'] = 0x05B2;
33985 t['hatafpatahwidehebrew'] = 0x05B2;
33986 t['hatafqamats'] = 0x05B3;
33987 t['hatafqamats1b'] = 0x05B3;
33988 t['hatafqamats28'] = 0x05B3;
33989 t['hatafqamats34'] = 0x05B3;
33990 t['hatafqamatshebrew'] = 0x05B3;
33991 t['hatafqamatsnarrowhebrew'] = 0x05B3;
33992 t['hatafqamatsquarterhebrew'] = 0x05B3;
33993 t['hatafqamatswidehebrew'] = 0x05B3;
33994 t['hatafsegol'] = 0x05B1;
33995 t['hatafsegol17'] = 0x05B1;
33996 t['hatafsegol24'] = 0x05B1;
33997 t['hatafsegol30'] = 0x05B1;
33998 t['hatafsegolhebrew'] = 0x05B1;
33999 t['hatafsegolnarrowhebrew'] = 0x05B1;
34000 t['hatafsegolquarterhebrew'] = 0x05B1;
34001 t['hatafsegolwidehebrew'] = 0x05B1;
34002 t['hbar'] = 0x0127;
34003 t['hbopomofo'] = 0x310F;
34004 t['hbrevebelow'] = 0x1E2B;
34005 t['hcedilla'] = 0x1E29;
34006 t['hcircle'] = 0x24D7;
34007 t['hcircumflex'] = 0x0125;
34008 t['hdieresis'] = 0x1E27;
34009 t['hdotaccent'] = 0x1E23;
34010 t['hdotbelow'] = 0x1E25;
34011 t['he'] = 0x05D4;
34012 t['heart'] = 0x2665;
34013 t['heartsuitblack'] = 0x2665;
34014 t['heartsuitwhite'] = 0x2661;
34015 t['hedagesh'] = 0xFB34;
34016 t['hedageshhebrew'] = 0xFB34;
34017 t['hehaltonearabic'] = 0x06C1;
34018 t['heharabic'] = 0x0647;
34019 t['hehebrew'] = 0x05D4;
34020 t['hehfinalaltonearabic'] = 0xFBA7;
34021 t['hehfinalalttwoarabic'] = 0xFEEA;
34022 t['hehfinalarabic'] = 0xFEEA;
34023 t['hehhamzaabovefinalarabic'] = 0xFBA5;
34024 t['hehhamzaaboveisolatedarabic'] = 0xFBA4;
34025 t['hehinitialaltonearabic'] = 0xFBA8;
34026 t['hehinitialarabic'] = 0xFEEB;
34027 t['hehiragana'] = 0x3078;
34028 t['hehmedialaltonearabic'] = 0xFBA9;
34029 t['hehmedialarabic'] = 0xFEEC;
34030 t['heiseierasquare'] = 0x337B;
34031 t['hekatakana'] = 0x30D8;
34032 t['hekatakanahalfwidth'] = 0xFF8D;
34033 t['hekutaarusquare'] = 0x3336;
34034 t['henghook'] = 0x0267;
34035 t['herutusquare'] = 0x3339;
34036 t['het'] = 0x05D7;
34037 t['hethebrew'] = 0x05D7;
34038 t['hhook'] = 0x0266;
34039 t['hhooksuperior'] = 0x02B1;
34040 t['hieuhacirclekorean'] = 0x327B;
34041 t['hieuhaparenkorean'] = 0x321B;
34042 t['hieuhcirclekorean'] = 0x326D;
34043 t['hieuhkorean'] = 0x314E;
34044 t['hieuhparenkorean'] = 0x320D;
34045 t['hihiragana'] = 0x3072;
34046 t['hikatakana'] = 0x30D2;
34047 t['hikatakanahalfwidth'] = 0xFF8B;
34048 t['hiriq'] = 0x05B4;
34049 t['hiriq14'] = 0x05B4;
34050 t['hiriq21'] = 0x05B4;
34051 t['hiriq2d'] = 0x05B4;
34052 t['hiriqhebrew'] = 0x05B4;
34053 t['hiriqnarrowhebrew'] = 0x05B4;
34054 t['hiriqquarterhebrew'] = 0x05B4;
34055 t['hiriqwidehebrew'] = 0x05B4;
34056 t['hlinebelow'] = 0x1E96;
34057 t['hmonospace'] = 0xFF48;
34058 t['hoarmenian'] = 0x0570;
34059 t['hohipthai'] = 0x0E2B;
34060 t['hohiragana'] = 0x307B;
34061 t['hokatakana'] = 0x30DB;
34062 t['hokatakanahalfwidth'] = 0xFF8E;
34063 t['holam'] = 0x05B9;
34064 t['holam19'] = 0x05B9;
34065 t['holam26'] = 0x05B9;
34066 t['holam32'] = 0x05B9;
34067 t['holamhebrew'] = 0x05B9;
34068 t['holamnarrowhebrew'] = 0x05B9;
34069 t['holamquarterhebrew'] = 0x05B9;
34070 t['holamwidehebrew'] = 0x05B9;
34071 t['honokhukthai'] = 0x0E2E;
34072 t['hookabovecomb'] = 0x0309;
34073 t['hookcmb'] = 0x0309;
34074 t['hookpalatalizedbelowcmb'] = 0x0321;
34075 t['hookretroflexbelowcmb'] = 0x0322;
34076 t['hoonsquare'] = 0x3342;
34077 t['horicoptic'] = 0x03E9;
34078 t['horizontalbar'] = 0x2015;
34079 t['horncmb'] = 0x031B;
34080 t['hotsprings'] = 0x2668;
34081 t['house'] = 0x2302;
34082 t['hparen'] = 0x24A3;
34083 t['hsuperior'] = 0x02B0;
34084 t['hturned'] = 0x0265;
34085 t['huhiragana'] = 0x3075;
34086 t['huiitosquare'] = 0x3333;
34087 t['hukatakana'] = 0x30D5;
34088 t['hukatakanahalfwidth'] = 0xFF8C;
34089 t['hungarumlaut'] = 0x02DD;
34090 t['hungarumlautcmb'] = 0x030B;
34091 t['hv'] = 0x0195;
34092 t['hyphen'] = 0x002D;
34093 t['hypheninferior'] = 0xF6E5;
34094 t['hyphenmonospace'] = 0xFF0D;
34095 t['hyphensmall'] = 0xFE63;
34096 t['hyphensuperior'] = 0xF6E6;
34097 t['hyphentwo'] = 0x2010;
34098 t['i'] = 0x0069;
34099 t['iacute'] = 0x00ED;
34100 t['iacyrillic'] = 0x044F;
34101 t['ibengali'] = 0x0987;
34102 t['ibopomofo'] = 0x3127;
34103 t['ibreve'] = 0x012D;
34104 t['icaron'] = 0x01D0;
34105 t['icircle'] = 0x24D8;
34106 t['icircumflex'] = 0x00EE;
34107 t['icyrillic'] = 0x0456;
34108 t['idblgrave'] = 0x0209;
34109 t['ideographearthcircle'] = 0x328F;
34110 t['ideographfirecircle'] = 0x328B;
34111 t['ideographicallianceparen'] = 0x323F;
34112 t['ideographiccallparen'] = 0x323A;
34113 t['ideographiccentrecircle'] = 0x32A5;
34114 t['ideographicclose'] = 0x3006;
34115 t['ideographiccomma'] = 0x3001;
34116 t['ideographiccommaleft'] = 0xFF64;
34117 t['ideographiccongratulationparen'] = 0x3237;
34118 t['ideographiccorrectcircle'] = 0x32A3;
34119 t['ideographicearthparen'] = 0x322F;
34120 t['ideographicenterpriseparen'] = 0x323D;
34121 t['ideographicexcellentcircle'] = 0x329D;
34122 t['ideographicfestivalparen'] = 0x3240;
34123 t['ideographicfinancialcircle'] = 0x3296;
34124 t['ideographicfinancialparen'] = 0x3236;
34125 t['ideographicfireparen'] = 0x322B;
34126 t['ideographichaveparen'] = 0x3232;
34127 t['ideographichighcircle'] = 0x32A4;
34128 t['ideographiciterationmark'] = 0x3005;
34129 t['ideographiclaborcircle'] = 0x3298;
34130 t['ideographiclaborparen'] = 0x3238;
34131 t['ideographicleftcircle'] = 0x32A7;
34132 t['ideographiclowcircle'] = 0x32A6;
34133 t['ideographicmedicinecircle'] = 0x32A9;
34134 t['ideographicmetalparen'] = 0x322E;
34135 t['ideographicmoonparen'] = 0x322A;
34136 t['ideographicnameparen'] = 0x3234;
34137 t['ideographicperiod'] = 0x3002;
34138 t['ideographicprintcircle'] = 0x329E;
34139 t['ideographicreachparen'] = 0x3243;
34140 t['ideographicrepresentparen'] = 0x3239;
34141 t['ideographicresourceparen'] = 0x323E;
34142 t['ideographicrightcircle'] = 0x32A8;
34143 t['ideographicsecretcircle'] = 0x3299;
34144 t['ideographicselfparen'] = 0x3242;
34145 t['ideographicsocietyparen'] = 0x3233;
34146 t['ideographicspace'] = 0x3000;
34147 t['ideographicspecialparen'] = 0x3235;
34148 t['ideographicstockparen'] = 0x3231;
34149 t['ideographicstudyparen'] = 0x323B;
34150 t['ideographicsunparen'] = 0x3230;
34151 t['ideographicsuperviseparen'] = 0x323C;
34152 t['ideographicwaterparen'] = 0x322C;
34153 t['ideographicwoodparen'] = 0x322D;
34154 t['ideographiczero'] = 0x3007;
34155 t['ideographmetalcircle'] = 0x328E;
34156 t['ideographmooncircle'] = 0x328A;
34157 t['ideographnamecircle'] = 0x3294;
34158 t['ideographsuncircle'] = 0x3290;
34159 t['ideographwatercircle'] = 0x328C;
34160 t['ideographwoodcircle'] = 0x328D;
34161 t['ideva'] = 0x0907;
34162 t['idieresis'] = 0x00EF;
34163 t['idieresisacute'] = 0x1E2F;
34164 t['idieresiscyrillic'] = 0x04E5;
34165 t['idotbelow'] = 0x1ECB;
34166 t['iebrevecyrillic'] = 0x04D7;
34167 t['iecyrillic'] = 0x0435;
34168 t['ieungacirclekorean'] = 0x3275;
34169 t['ieungaparenkorean'] = 0x3215;
34170 t['ieungcirclekorean'] = 0x3267;
34171 t['ieungkorean'] = 0x3147;
34172 t['ieungparenkorean'] = 0x3207;
34173 t['igrave'] = 0x00EC;
34174 t['igujarati'] = 0x0A87;
34175 t['igurmukhi'] = 0x0A07;
34176 t['ihiragana'] = 0x3044;
34177 t['ihookabove'] = 0x1EC9;
34178 t['iibengali'] = 0x0988;
34179 t['iicyrillic'] = 0x0438;
34180 t['iideva'] = 0x0908;
34181 t['iigujarati'] = 0x0A88;
34182 t['iigurmukhi'] = 0x0A08;
34183 t['iimatragurmukhi'] = 0x0A40;
34184 t['iinvertedbreve'] = 0x020B;
34185 t['iishortcyrillic'] = 0x0439;
34186 t['iivowelsignbengali'] = 0x09C0;
34187 t['iivowelsigndeva'] = 0x0940;
34188 t['iivowelsigngujarati'] = 0x0AC0;
34189 t['ij'] = 0x0133;
34190 t['ikatakana'] = 0x30A4;
34191 t['ikatakanahalfwidth'] = 0xFF72;
34192 t['ikorean'] = 0x3163;
34193 t['ilde'] = 0x02DC;
34194 t['iluyhebrew'] = 0x05AC;
34195 t['imacron'] = 0x012B;
34196 t['imacroncyrillic'] = 0x04E3;
34197 t['imageorapproximatelyequal'] = 0x2253;
34198 t['imatragurmukhi'] = 0x0A3F;
34199 t['imonospace'] = 0xFF49;
34200 t['increment'] = 0x2206;
34201 t['infinity'] = 0x221E;
34202 t['iniarmenian'] = 0x056B;
34203 t['integral'] = 0x222B;
34204 t['integralbottom'] = 0x2321;
34205 t['integralbt'] = 0x2321;
34206 t['integralex'] = 0xF8F5;
34207 t['integraltop'] = 0x2320;
34208 t['integraltp'] = 0x2320;
34209 t['intersection'] = 0x2229;
34210 t['intisquare'] = 0x3305;
34211 t['invbullet'] = 0x25D8;
34212 t['invcircle'] = 0x25D9;
34213 t['invsmileface'] = 0x263B;
34214 t['iocyrillic'] = 0x0451;
34215 t['iogonek'] = 0x012F;
34216 t['iota'] = 0x03B9;
34217 t['iotadieresis'] = 0x03CA;
34218 t['iotadieresistonos'] = 0x0390;
34219 t['iotalatin'] = 0x0269;
34220 t['iotatonos'] = 0x03AF;
34221 t['iparen'] = 0x24A4;
34222 t['irigurmukhi'] = 0x0A72;
34223 t['ismallhiragana'] = 0x3043;
34224 t['ismallkatakana'] = 0x30A3;
34225 t['ismallkatakanahalfwidth'] = 0xFF68;
34226 t['issharbengali'] = 0x09FA;
34227 t['istroke'] = 0x0268;
34228 t['isuperior'] = 0xF6ED;
34229 t['iterationhiragana'] = 0x309D;
34230 t['iterationkatakana'] = 0x30FD;
34231 t['itilde'] = 0x0129;
34232 t['itildebelow'] = 0x1E2D;
34233 t['iubopomofo'] = 0x3129;
34234 t['iucyrillic'] = 0x044E;
34235 t['ivowelsignbengali'] = 0x09BF;
34236 t['ivowelsigndeva'] = 0x093F;
34237 t['ivowelsigngujarati'] = 0x0ABF;
34238 t['izhitsacyrillic'] = 0x0475;
34239 t['izhitsadblgravecyrillic'] = 0x0477;
34240 t['j'] = 0x006A;
34241 t['jaarmenian'] = 0x0571;
34242 t['jabengali'] = 0x099C;
34243 t['jadeva'] = 0x091C;
34244 t['jagujarati'] = 0x0A9C;
34245 t['jagurmukhi'] = 0x0A1C;
34246 t['jbopomofo'] = 0x3110;
34247 t['jcaron'] = 0x01F0;
34248 t['jcircle'] = 0x24D9;
34249 t['jcircumflex'] = 0x0135;
34250 t['jcrossedtail'] = 0x029D;
34251 t['jdotlessstroke'] = 0x025F;
34252 t['jecyrillic'] = 0x0458;
34253 t['jeemarabic'] = 0x062C;
34254 t['jeemfinalarabic'] = 0xFE9E;
34255 t['jeeminitialarabic'] = 0xFE9F;
34256 t['jeemmedialarabic'] = 0xFEA0;
34257 t['jeharabic'] = 0x0698;
34258 t['jehfinalarabic'] = 0xFB8B;
34259 t['jhabengali'] = 0x099D;
34260 t['jhadeva'] = 0x091D;
34261 t['jhagujarati'] = 0x0A9D;
34262 t['jhagurmukhi'] = 0x0A1D;
34263 t['jheharmenian'] = 0x057B;
34264 t['jis'] = 0x3004;
34265 t['jmonospace'] = 0xFF4A;
34266 t['jparen'] = 0x24A5;
34267 t['jsuperior'] = 0x02B2;
34268 t['k'] = 0x006B;
34269 t['kabashkircyrillic'] = 0x04A1;
34270 t['kabengali'] = 0x0995;
34271 t['kacute'] = 0x1E31;
34272 t['kacyrillic'] = 0x043A;
34273 t['kadescendercyrillic'] = 0x049B;
34274 t['kadeva'] = 0x0915;
34275 t['kaf'] = 0x05DB;
34276 t['kafarabic'] = 0x0643;
34277 t['kafdagesh'] = 0xFB3B;
34278 t['kafdageshhebrew'] = 0xFB3B;
34279 t['kaffinalarabic'] = 0xFEDA;
34280 t['kafhebrew'] = 0x05DB;
34281 t['kafinitialarabic'] = 0xFEDB;
34282 t['kafmedialarabic'] = 0xFEDC;
34283 t['kafrafehebrew'] = 0xFB4D;
34284 t['kagujarati'] = 0x0A95;
34285 t['kagurmukhi'] = 0x0A15;
34286 t['kahiragana'] = 0x304B;
34287 t['kahookcyrillic'] = 0x04C4;
34288 t['kakatakana'] = 0x30AB;
34289 t['kakatakanahalfwidth'] = 0xFF76;
34290 t['kappa'] = 0x03BA;
34291 t['kappasymbolgreek'] = 0x03F0;
34292 t['kapyeounmieumkorean'] = 0x3171;
34293 t['kapyeounphieuphkorean'] = 0x3184;
34294 t['kapyeounpieupkorean'] = 0x3178;
34295 t['kapyeounssangpieupkorean'] = 0x3179;
34296 t['karoriisquare'] = 0x330D;
34297 t['kashidaautoarabic'] = 0x0640;
34298 t['kashidaautonosidebearingarabic'] = 0x0640;
34299 t['kasmallkatakana'] = 0x30F5;
34300 t['kasquare'] = 0x3384;
34301 t['kasraarabic'] = 0x0650;
34302 t['kasratanarabic'] = 0x064D;
34303 t['kastrokecyrillic'] = 0x049F;
34304 t['katahiraprolongmarkhalfwidth'] = 0xFF70;
34305 t['kaverticalstrokecyrillic'] = 0x049D;
34306 t['kbopomofo'] = 0x310E;
34307 t['kcalsquare'] = 0x3389;
34308 t['kcaron'] = 0x01E9;
34309 t['kcedilla'] = 0x0137;
34310 t['kcircle'] = 0x24DA;
34311 t['kcommaaccent'] = 0x0137;
34312 t['kdotbelow'] = 0x1E33;
34313 t['keharmenian'] = 0x0584;
34314 t['kehiragana'] = 0x3051;
34315 t['kekatakana'] = 0x30B1;
34316 t['kekatakanahalfwidth'] = 0xFF79;
34317 t['kenarmenian'] = 0x056F;
34318 t['kesmallkatakana'] = 0x30F6;
34319 t['kgreenlandic'] = 0x0138;
34320 t['khabengali'] = 0x0996;
34321 t['khacyrillic'] = 0x0445;
34322 t['khadeva'] = 0x0916;
34323 t['khagujarati'] = 0x0A96;
34324 t['khagurmukhi'] = 0x0A16;
34325 t['khaharabic'] = 0x062E;
34326 t['khahfinalarabic'] = 0xFEA6;
34327 t['khahinitialarabic'] = 0xFEA7;
34328 t['khahmedialarabic'] = 0xFEA8;
34329 t['kheicoptic'] = 0x03E7;
34330 t['khhadeva'] = 0x0959;
34331 t['khhagurmukhi'] = 0x0A59;
34332 t['khieukhacirclekorean'] = 0x3278;
34333 t['khieukhaparenkorean'] = 0x3218;
34334 t['khieukhcirclekorean'] = 0x326A;
34335 t['khieukhkorean'] = 0x314B;
34336 t['khieukhparenkorean'] = 0x320A;
34337 t['khokhaithai'] = 0x0E02;
34338 t['khokhonthai'] = 0x0E05;
34339 t['khokhuatthai'] = 0x0E03;
34340 t['khokhwaithai'] = 0x0E04;
34341 t['khomutthai'] = 0x0E5B;
34342 t['khook'] = 0x0199;
34343 t['khorakhangthai'] = 0x0E06;
34344 t['khzsquare'] = 0x3391;
34345 t['kihiragana'] = 0x304D;
34346 t['kikatakana'] = 0x30AD;
34347 t['kikatakanahalfwidth'] = 0xFF77;
34348 t['kiroguramusquare'] = 0x3315;
34349 t['kiromeetorusquare'] = 0x3316;
34350 t['kirosquare'] = 0x3314;
34351 t['kiyeokacirclekorean'] = 0x326E;
34352 t['kiyeokaparenkorean'] = 0x320E;
34353 t['kiyeokcirclekorean'] = 0x3260;
34354 t['kiyeokkorean'] = 0x3131;
34355 t['kiyeokparenkorean'] = 0x3200;
34356 t['kiyeoksioskorean'] = 0x3133;
34357 t['kjecyrillic'] = 0x045C;
34358 t['klinebelow'] = 0x1E35;
34359 t['klsquare'] = 0x3398;
34360 t['kmcubedsquare'] = 0x33A6;
34361 t['kmonospace'] = 0xFF4B;
34362 t['kmsquaredsquare'] = 0x33A2;
34363 t['kohiragana'] = 0x3053;
34364 t['kohmsquare'] = 0x33C0;
34365 t['kokaithai'] = 0x0E01;
34366 t['kokatakana'] = 0x30B3;
34367 t['kokatakanahalfwidth'] = 0xFF7A;
34368 t['kooposquare'] = 0x331E;
34369 t['koppacyrillic'] = 0x0481;
34370 t['koreanstandardsymbol'] = 0x327F;
34371 t['koroniscmb'] = 0x0343;
34372 t['kparen'] = 0x24A6;
34373 t['kpasquare'] = 0x33AA;
34374 t['ksicyrillic'] = 0x046F;
34375 t['ktsquare'] = 0x33CF;
34376 t['kturned'] = 0x029E;
34377 t['kuhiragana'] = 0x304F;
34378 t['kukatakana'] = 0x30AF;
34379 t['kukatakanahalfwidth'] = 0xFF78;
34380 t['kvsquare'] = 0x33B8;
34381 t['kwsquare'] = 0x33BE;
34382 t['l'] = 0x006C;
34383 t['labengali'] = 0x09B2;
34384 t['lacute'] = 0x013A;
34385 t['ladeva'] = 0x0932;
34386 t['lagujarati'] = 0x0AB2;
34387 t['lagurmukhi'] = 0x0A32;
34388 t['lakkhangyaothai'] = 0x0E45;
34389 t['lamaleffinalarabic'] = 0xFEFC;
34390 t['lamalefhamzaabovefinalarabic'] = 0xFEF8;
34391 t['lamalefhamzaaboveisolatedarabic'] = 0xFEF7;
34392 t['lamalefhamzabelowfinalarabic'] = 0xFEFA;
34393 t['lamalefhamzabelowisolatedarabic'] = 0xFEF9;
34394 t['lamalefisolatedarabic'] = 0xFEFB;
34395 t['lamalefmaddaabovefinalarabic'] = 0xFEF6;
34396 t['lamalefmaddaaboveisolatedarabic'] = 0xFEF5;
34397 t['lamarabic'] = 0x0644;
34398 t['lambda'] = 0x03BB;
34399 t['lambdastroke'] = 0x019B;
34400 t['lamed'] = 0x05DC;
34401 t['lameddagesh'] = 0xFB3C;
34402 t['lameddageshhebrew'] = 0xFB3C;
34403 t['lamedhebrew'] = 0x05DC;
34404 t['lamfinalarabic'] = 0xFEDE;
34405 t['lamhahinitialarabic'] = 0xFCCA;
34406 t['laminitialarabic'] = 0xFEDF;
34407 t['lamjeeminitialarabic'] = 0xFCC9;
34408 t['lamkhahinitialarabic'] = 0xFCCB;
34409 t['lamlamhehisolatedarabic'] = 0xFDF2;
34410 t['lammedialarabic'] = 0xFEE0;
34411 t['lammeemhahinitialarabic'] = 0xFD88;
34412 t['lammeeminitialarabic'] = 0xFCCC;
34413 t['largecircle'] = 0x25EF;
34414 t['lbar'] = 0x019A;
34415 t['lbelt'] = 0x026C;
34416 t['lbopomofo'] = 0x310C;
34417 t['lcaron'] = 0x013E;
34418 t['lcedilla'] = 0x013C;
34419 t['lcircle'] = 0x24DB;
34420 t['lcircumflexbelow'] = 0x1E3D;
34421 t['lcommaaccent'] = 0x013C;
34422 t['ldot'] = 0x0140;
34423 t['ldotaccent'] = 0x0140;
34424 t['ldotbelow'] = 0x1E37;
34425 t['ldotbelowmacron'] = 0x1E39;
34426 t['leftangleabovecmb'] = 0x031A;
34427 t['lefttackbelowcmb'] = 0x0318;
34428 t['less'] = 0x003C;
34429 t['lessequal'] = 0x2264;
34430 t['lessequalorgreater'] = 0x22DA;
34431 t['lessmonospace'] = 0xFF1C;
34432 t['lessorequivalent'] = 0x2272;
34433 t['lessorgreater'] = 0x2276;
34434 t['lessoverequal'] = 0x2266;
34435 t['lesssmall'] = 0xFE64;
34436 t['lezh'] = 0x026E;
34437 t['lfblock'] = 0x258C;
34438 t['lhookretroflex'] = 0x026D;
34439 t['lira'] = 0x20A4;
34440 t['liwnarmenian'] = 0x056C;
34441 t['lj'] = 0x01C9;
34442 t['ljecyrillic'] = 0x0459;
34443 t['ll'] = 0xF6C0;
34444 t['lladeva'] = 0x0933;
34445 t['llagujarati'] = 0x0AB3;
34446 t['llinebelow'] = 0x1E3B;
34447 t['llladeva'] = 0x0934;
34448 t['llvocalicbengali'] = 0x09E1;
34449 t['llvocalicdeva'] = 0x0961;
34450 t['llvocalicvowelsignbengali'] = 0x09E3;
34451 t['llvocalicvowelsigndeva'] = 0x0963;
34452 t['lmiddletilde'] = 0x026B;
34453 t['lmonospace'] = 0xFF4C;
34454 t['lmsquare'] = 0x33D0;
34455 t['lochulathai'] = 0x0E2C;
34456 t['logicaland'] = 0x2227;
34457 t['logicalnot'] = 0x00AC;
34458 t['logicalnotreversed'] = 0x2310;
34459 t['logicalor'] = 0x2228;
34460 t['lolingthai'] = 0x0E25;
34461 t['longs'] = 0x017F;
34462 t['lowlinecenterline'] = 0xFE4E;
34463 t['lowlinecmb'] = 0x0332;
34464 t['lowlinedashed'] = 0xFE4D;
34465 t['lozenge'] = 0x25CA;
34466 t['lparen'] = 0x24A7;
34467 t['lslash'] = 0x0142;
34468 t['lsquare'] = 0x2113;
34469 t['lsuperior'] = 0xF6EE;
34470 t['ltshade'] = 0x2591;
34471 t['luthai'] = 0x0E26;
34472 t['lvocalicbengali'] = 0x098C;
34473 t['lvocalicdeva'] = 0x090C;
34474 t['lvocalicvowelsignbengali'] = 0x09E2;
34475 t['lvocalicvowelsigndeva'] = 0x0962;
34476 t['lxsquare'] = 0x33D3;
34477 t['m'] = 0x006D;
34478 t['mabengali'] = 0x09AE;
34479 t['macron'] = 0x00AF;
34480 t['macronbelowcmb'] = 0x0331;
34481 t['macroncmb'] = 0x0304;
34482 t['macronlowmod'] = 0x02CD;
34483 t['macronmonospace'] = 0xFFE3;
34484 t['macute'] = 0x1E3F;
34485 t['madeva'] = 0x092E;
34486 t['magujarati'] = 0x0AAE;
34487 t['magurmukhi'] = 0x0A2E;
34488 t['mahapakhhebrew'] = 0x05A4;
34489 t['mahapakhlefthebrew'] = 0x05A4;
34490 t['mahiragana'] = 0x307E;
34491 t['maichattawalowleftthai'] = 0xF895;
34492 t['maichattawalowrightthai'] = 0xF894;
34493 t['maichattawathai'] = 0x0E4B;
34494 t['maichattawaupperleftthai'] = 0xF893;
34495 t['maieklowleftthai'] = 0xF88C;
34496 t['maieklowrightthai'] = 0xF88B;
34497 t['maiekthai'] = 0x0E48;
34498 t['maiekupperleftthai'] = 0xF88A;
34499 t['maihanakatleftthai'] = 0xF884;
34500 t['maihanakatthai'] = 0x0E31;
34501 t['maitaikhuleftthai'] = 0xF889;
34502 t['maitaikhuthai'] = 0x0E47;
34503 t['maitholowleftthai'] = 0xF88F;
34504 t['maitholowrightthai'] = 0xF88E;
34505 t['maithothai'] = 0x0E49;
34506 t['maithoupperleftthai'] = 0xF88D;
34507 t['maitrilowleftthai'] = 0xF892;
34508 t['maitrilowrightthai'] = 0xF891;
34509 t['maitrithai'] = 0x0E4A;
34510 t['maitriupperleftthai'] = 0xF890;
34511 t['maiyamokthai'] = 0x0E46;
34512 t['makatakana'] = 0x30DE;
34513 t['makatakanahalfwidth'] = 0xFF8F;
34514 t['male'] = 0x2642;
34515 t['mansyonsquare'] = 0x3347;
34516 t['maqafhebrew'] = 0x05BE;
34517 t['mars'] = 0x2642;
34518 t['masoracirclehebrew'] = 0x05AF;
34519 t['masquare'] = 0x3383;
34520 t['mbopomofo'] = 0x3107;
34521 t['mbsquare'] = 0x33D4;
34522 t['mcircle'] = 0x24DC;
34523 t['mcubedsquare'] = 0x33A5;
34524 t['mdotaccent'] = 0x1E41;
34525 t['mdotbelow'] = 0x1E43;
34526 t['meemarabic'] = 0x0645;
34527 t['meemfinalarabic'] = 0xFEE2;
34528 t['meeminitialarabic'] = 0xFEE3;
34529 t['meemmedialarabic'] = 0xFEE4;
34530 t['meemmeeminitialarabic'] = 0xFCD1;
34531 t['meemmeemisolatedarabic'] = 0xFC48;
34532 t['meetorusquare'] = 0x334D;
34533 t['mehiragana'] = 0x3081;
34534 t['meizierasquare'] = 0x337E;
34535 t['mekatakana'] = 0x30E1;
34536 t['mekatakanahalfwidth'] = 0xFF92;
34537 t['mem'] = 0x05DE;
34538 t['memdagesh'] = 0xFB3E;
34539 t['memdageshhebrew'] = 0xFB3E;
34540 t['memhebrew'] = 0x05DE;
34541 t['menarmenian'] = 0x0574;
34542 t['merkhahebrew'] = 0x05A5;
34543 t['merkhakefulahebrew'] = 0x05A6;
34544 t['merkhakefulalefthebrew'] = 0x05A6;
34545 t['merkhalefthebrew'] = 0x05A5;
34546 t['mhook'] = 0x0271;
34547 t['mhzsquare'] = 0x3392;
34548 t['middledotkatakanahalfwidth'] = 0xFF65;
34549 t['middot'] = 0x00B7;
34550 t['mieumacirclekorean'] = 0x3272;
34551 t['mieumaparenkorean'] = 0x3212;
34552 t['mieumcirclekorean'] = 0x3264;
34553 t['mieumkorean'] = 0x3141;
34554 t['mieumpansioskorean'] = 0x3170;
34555 t['mieumparenkorean'] = 0x3204;
34556 t['mieumpieupkorean'] = 0x316E;
34557 t['mieumsioskorean'] = 0x316F;
34558 t['mihiragana'] = 0x307F;
34559 t['mikatakana'] = 0x30DF;
34560 t['mikatakanahalfwidth'] = 0xFF90;
34561 t['minus'] = 0x2212;
34562 t['minusbelowcmb'] = 0x0320;
34563 t['minuscircle'] = 0x2296;
34564 t['minusmod'] = 0x02D7;
34565 t['minusplus'] = 0x2213;
34566 t['minute'] = 0x2032;
34567 t['miribaarusquare'] = 0x334A;
34568 t['mirisquare'] = 0x3349;
34569 t['mlonglegturned'] = 0x0270;
34570 t['mlsquare'] = 0x3396;
34571 t['mmcubedsquare'] = 0x33A3;
34572 t['mmonospace'] = 0xFF4D;
34573 t['mmsquaredsquare'] = 0x339F;
34574 t['mohiragana'] = 0x3082;
34575 t['mohmsquare'] = 0x33C1;
34576 t['mokatakana'] = 0x30E2;
34577 t['mokatakanahalfwidth'] = 0xFF93;
34578 t['molsquare'] = 0x33D6;
34579 t['momathai'] = 0x0E21;
34580 t['moverssquare'] = 0x33A7;
34581 t['moverssquaredsquare'] = 0x33A8;
34582 t['mparen'] = 0x24A8;
34583 t['mpasquare'] = 0x33AB;
34584 t['mssquare'] = 0x33B3;
34585 t['msuperior'] = 0xF6EF;
34586 t['mturned'] = 0x026F;
34587 t['mu'] = 0x00B5;
34588 t['mu1'] = 0x00B5;
34589 t['muasquare'] = 0x3382;
34590 t['muchgreater'] = 0x226B;
34591 t['muchless'] = 0x226A;
34592 t['mufsquare'] = 0x338C;
34593 t['mugreek'] = 0x03BC;
34594 t['mugsquare'] = 0x338D;
34595 t['muhiragana'] = 0x3080;
34596 t['mukatakana'] = 0x30E0;
34597 t['mukatakanahalfwidth'] = 0xFF91;
34598 t['mulsquare'] = 0x3395;
34599 t['multiply'] = 0x00D7;
34600 t['mumsquare'] = 0x339B;
34601 t['munahhebrew'] = 0x05A3;
34602 t['munahlefthebrew'] = 0x05A3;
34603 t['musicalnote'] = 0x266A;
34604 t['musicalnotedbl'] = 0x266B;
34605 t['musicflatsign'] = 0x266D;
34606 t['musicsharpsign'] = 0x266F;
34607 t['mussquare'] = 0x33B2;
34608 t['muvsquare'] = 0x33B6;
34609 t['muwsquare'] = 0x33BC;
34610 t['mvmegasquare'] = 0x33B9;
34611 t['mvsquare'] = 0x33B7;
34612 t['mwmegasquare'] = 0x33BF;
34613 t['mwsquare'] = 0x33BD;
34614 t['n'] = 0x006E;
34615 t['nabengali'] = 0x09A8;
34616 t['nabla'] = 0x2207;
34617 t['nacute'] = 0x0144;
34618 t['nadeva'] = 0x0928;
34619 t['nagujarati'] = 0x0AA8;
34620 t['nagurmukhi'] = 0x0A28;
34621 t['nahiragana'] = 0x306A;
34622 t['nakatakana'] = 0x30CA;
34623 t['nakatakanahalfwidth'] = 0xFF85;
34624 t['napostrophe'] = 0x0149;
34625 t['nasquare'] = 0x3381;
34626 t['nbopomofo'] = 0x310B;
34627 t['nbspace'] = 0x00A0;
34628 t['ncaron'] = 0x0148;
34629 t['ncedilla'] = 0x0146;
34630 t['ncircle'] = 0x24DD;
34631 t['ncircumflexbelow'] = 0x1E4B;
34632 t['ncommaaccent'] = 0x0146;
34633 t['ndotaccent'] = 0x1E45;
34634 t['ndotbelow'] = 0x1E47;
34635 t['nehiragana'] = 0x306D;
34636 t['nekatakana'] = 0x30CD;
34637 t['nekatakanahalfwidth'] = 0xFF88;
34638 t['newsheqelsign'] = 0x20AA;
34639 t['nfsquare'] = 0x338B;
34640 t['ngabengali'] = 0x0999;
34641 t['ngadeva'] = 0x0919;
34642 t['ngagujarati'] = 0x0A99;
34643 t['ngagurmukhi'] = 0x0A19;
34644 t['ngonguthai'] = 0x0E07;
34645 t['nhiragana'] = 0x3093;
34646 t['nhookleft'] = 0x0272;
34647 t['nhookretroflex'] = 0x0273;
34648 t['nieunacirclekorean'] = 0x326F;
34649 t['nieunaparenkorean'] = 0x320F;
34650 t['nieuncieuckorean'] = 0x3135;
34651 t['nieuncirclekorean'] = 0x3261;
34652 t['nieunhieuhkorean'] = 0x3136;
34653 t['nieunkorean'] = 0x3134;
34654 t['nieunpansioskorean'] = 0x3168;
34655 t['nieunparenkorean'] = 0x3201;
34656 t['nieunsioskorean'] = 0x3167;
34657 t['nieuntikeutkorean'] = 0x3166;
34658 t['nihiragana'] = 0x306B;
34659 t['nikatakana'] = 0x30CB;
34660 t['nikatakanahalfwidth'] = 0xFF86;
34661 t['nikhahitleftthai'] = 0xF899;
34662 t['nikhahitthai'] = 0x0E4D;
34663 t['nine'] = 0x0039;
34664 t['ninearabic'] = 0x0669;
34665 t['ninebengali'] = 0x09EF;
34666 t['ninecircle'] = 0x2468;
34667 t['ninecircleinversesansserif'] = 0x2792;
34668 t['ninedeva'] = 0x096F;
34669 t['ninegujarati'] = 0x0AEF;
34670 t['ninegurmukhi'] = 0x0A6F;
34671 t['ninehackarabic'] = 0x0669;
34672 t['ninehangzhou'] = 0x3029;
34673 t['nineideographicparen'] = 0x3228;
34674 t['nineinferior'] = 0x2089;
34675 t['ninemonospace'] = 0xFF19;
34676 t['nineoldstyle'] = 0xF739;
34677 t['nineparen'] = 0x247C;
34678 t['nineperiod'] = 0x2490;
34679 t['ninepersian'] = 0x06F9;
34680 t['nineroman'] = 0x2178;
34681 t['ninesuperior'] = 0x2079;
34682 t['nineteencircle'] = 0x2472;
34683 t['nineteenparen'] = 0x2486;
34684 t['nineteenperiod'] = 0x249A;
34685 t['ninethai'] = 0x0E59;
34686 t['nj'] = 0x01CC;
34687 t['njecyrillic'] = 0x045A;
34688 t['nkatakana'] = 0x30F3;
34689 t['nkatakanahalfwidth'] = 0xFF9D;
34690 t['nlegrightlong'] = 0x019E;
34691 t['nlinebelow'] = 0x1E49;
34692 t['nmonospace'] = 0xFF4E;
34693 t['nmsquare'] = 0x339A;
34694 t['nnabengali'] = 0x09A3;
34695 t['nnadeva'] = 0x0923;
34696 t['nnagujarati'] = 0x0AA3;
34697 t['nnagurmukhi'] = 0x0A23;
34698 t['nnnadeva'] = 0x0929;
34699 t['nohiragana'] = 0x306E;
34700 t['nokatakana'] = 0x30CE;
34701 t['nokatakanahalfwidth'] = 0xFF89;
34702 t['nonbreakingspace'] = 0x00A0;
34703 t['nonenthai'] = 0x0E13;
34704 t['nonuthai'] = 0x0E19;
34705 t['noonarabic'] = 0x0646;
34706 t['noonfinalarabic'] = 0xFEE6;
34707 t['noonghunnaarabic'] = 0x06BA;
34708 t['noonghunnafinalarabic'] = 0xFB9F;
34709 t['nooninitialarabic'] = 0xFEE7;
34710 t['noonjeeminitialarabic'] = 0xFCD2;
34711 t['noonjeemisolatedarabic'] = 0xFC4B;
34712 t['noonmedialarabic'] = 0xFEE8;
34713 t['noonmeeminitialarabic'] = 0xFCD5;
34714 t['noonmeemisolatedarabic'] = 0xFC4E;
34715 t['noonnoonfinalarabic'] = 0xFC8D;
34716 t['notcontains'] = 0x220C;
34717 t['notelement'] = 0x2209;
34718 t['notelementof'] = 0x2209;
34719 t['notequal'] = 0x2260;
34720 t['notgreater'] = 0x226F;
34721 t['notgreaternorequal'] = 0x2271;
34722 t['notgreaternorless'] = 0x2279;
34723 t['notidentical'] = 0x2262;
34724 t['notless'] = 0x226E;
34725 t['notlessnorequal'] = 0x2270;
34726 t['notparallel'] = 0x2226;
34727 t['notprecedes'] = 0x2280;
34728 t['notsubset'] = 0x2284;
34729 t['notsucceeds'] = 0x2281;
34730 t['notsuperset'] = 0x2285;
34731 t['nowarmenian'] = 0x0576;
34732 t['nparen'] = 0x24A9;
34733 t['nssquare'] = 0x33B1;
34734 t['nsuperior'] = 0x207F;
34735 t['ntilde'] = 0x00F1;
34736 t['nu'] = 0x03BD;
34737 t['nuhiragana'] = 0x306C;
34738 t['nukatakana'] = 0x30CC;
34739 t['nukatakanahalfwidth'] = 0xFF87;
34740 t['nuktabengali'] = 0x09BC;
34741 t['nuktadeva'] = 0x093C;
34742 t['nuktagujarati'] = 0x0ABC;
34743 t['nuktagurmukhi'] = 0x0A3C;
34744 t['numbersign'] = 0x0023;
34745 t['numbersignmonospace'] = 0xFF03;
34746 t['numbersignsmall'] = 0xFE5F;
34747 t['numeralsigngreek'] = 0x0374;
34748 t['numeralsignlowergreek'] = 0x0375;
34749 t['numero'] = 0x2116;
34750 t['nun'] = 0x05E0;
34751 t['nundagesh'] = 0xFB40;
34752 t['nundageshhebrew'] = 0xFB40;
34753 t['nunhebrew'] = 0x05E0;
34754 t['nvsquare'] = 0x33B5;
34755 t['nwsquare'] = 0x33BB;
34756 t['nyabengali'] = 0x099E;
34757 t['nyadeva'] = 0x091E;
34758 t['nyagujarati'] = 0x0A9E;
34759 t['nyagurmukhi'] = 0x0A1E;
34760 t['o'] = 0x006F;
34761 t['oacute'] = 0x00F3;
34762 t['oangthai'] = 0x0E2D;
34763 t['obarred'] = 0x0275;
34764 t['obarredcyrillic'] = 0x04E9;
34765 t['obarreddieresiscyrillic'] = 0x04EB;
34766 t['obengali'] = 0x0993;
34767 t['obopomofo'] = 0x311B;
34768 t['obreve'] = 0x014F;
34769 t['ocandradeva'] = 0x0911;
34770 t['ocandragujarati'] = 0x0A91;
34771 t['ocandravowelsigndeva'] = 0x0949;
34772 t['ocandravowelsigngujarati'] = 0x0AC9;
34773 t['ocaron'] = 0x01D2;
34774 t['ocircle'] = 0x24DE;
34775 t['ocircumflex'] = 0x00F4;
34776 t['ocircumflexacute'] = 0x1ED1;
34777 t['ocircumflexdotbelow'] = 0x1ED9;
34778 t['ocircumflexgrave'] = 0x1ED3;
34779 t['ocircumflexhookabove'] = 0x1ED5;
34780 t['ocircumflextilde'] = 0x1ED7;
34781 t['ocyrillic'] = 0x043E;
34782 t['odblacute'] = 0x0151;
34783 t['odblgrave'] = 0x020D;
34784 t['odeva'] = 0x0913;
34785 t['odieresis'] = 0x00F6;
34786 t['odieresiscyrillic'] = 0x04E7;
34787 t['odotbelow'] = 0x1ECD;
34788 t['oe'] = 0x0153;
34789 t['oekorean'] = 0x315A;
34790 t['ogonek'] = 0x02DB;
34791 t['ogonekcmb'] = 0x0328;
34792 t['ograve'] = 0x00F2;
34793 t['ogujarati'] = 0x0A93;
34794 t['oharmenian'] = 0x0585;
34795 t['ohiragana'] = 0x304A;
34796 t['ohookabove'] = 0x1ECF;
34797 t['ohorn'] = 0x01A1;
34798 t['ohornacute'] = 0x1EDB;
34799 t['ohorndotbelow'] = 0x1EE3;
34800 t['ohorngrave'] = 0x1EDD;
34801 t['ohornhookabove'] = 0x1EDF;
34802 t['ohorntilde'] = 0x1EE1;
34803 t['ohungarumlaut'] = 0x0151;
34804 t['oi'] = 0x01A3;
34805 t['oinvertedbreve'] = 0x020F;
34806 t['okatakana'] = 0x30AA;
34807 t['okatakanahalfwidth'] = 0xFF75;
34808 t['okorean'] = 0x3157;
34809 t['olehebrew'] = 0x05AB;
34810 t['omacron'] = 0x014D;
34811 t['omacronacute'] = 0x1E53;
34812 t['omacrongrave'] = 0x1E51;
34813 t['omdeva'] = 0x0950;
34814 t['omega'] = 0x03C9;
34815 t['omega1'] = 0x03D6;
34816 t['omegacyrillic'] = 0x0461;
34817 t['omegalatinclosed'] = 0x0277;
34818 t['omegaroundcyrillic'] = 0x047B;
34819 t['omegatitlocyrillic'] = 0x047D;
34820 t['omegatonos'] = 0x03CE;
34821 t['omgujarati'] = 0x0AD0;
34822 t['omicron'] = 0x03BF;
34823 t['omicrontonos'] = 0x03CC;
34824 t['omonospace'] = 0xFF4F;
34825 t['one'] = 0x0031;
34826 t['onearabic'] = 0x0661;
34827 t['onebengali'] = 0x09E7;
34828 t['onecircle'] = 0x2460;
34829 t['onecircleinversesansserif'] = 0x278A;
34830 t['onedeva'] = 0x0967;
34831 t['onedotenleader'] = 0x2024;
34832 t['oneeighth'] = 0x215B;
34833 t['onefitted'] = 0xF6DC;
34834 t['onegujarati'] = 0x0AE7;
34835 t['onegurmukhi'] = 0x0A67;
34836 t['onehackarabic'] = 0x0661;
34837 t['onehalf'] = 0x00BD;
34838 t['onehangzhou'] = 0x3021;
34839 t['oneideographicparen'] = 0x3220;
34840 t['oneinferior'] = 0x2081;
34841 t['onemonospace'] = 0xFF11;
34842 t['onenumeratorbengali'] = 0x09F4;
34843 t['oneoldstyle'] = 0xF731;
34844 t['oneparen'] = 0x2474;
34845 t['oneperiod'] = 0x2488;
34846 t['onepersian'] = 0x06F1;
34847 t['onequarter'] = 0x00BC;
34848 t['oneroman'] = 0x2170;
34849 t['onesuperior'] = 0x00B9;
34850 t['onethai'] = 0x0E51;
34851 t['onethird'] = 0x2153;
34852 t['oogonek'] = 0x01EB;
34853 t['oogonekmacron'] = 0x01ED;
34854 t['oogurmukhi'] = 0x0A13;
34855 t['oomatragurmukhi'] = 0x0A4B;
34856 t['oopen'] = 0x0254;
34857 t['oparen'] = 0x24AA;
34858 t['openbullet'] = 0x25E6;
34859 t['option'] = 0x2325;
34860 t['ordfeminine'] = 0x00AA;
34861 t['ordmasculine'] = 0x00BA;
34862 t['orthogonal'] = 0x221F;
34863 t['oshortdeva'] = 0x0912;
34864 t['oshortvowelsigndeva'] = 0x094A;
34865 t['oslash'] = 0x00F8;
34866 t['oslashacute'] = 0x01FF;
34867 t['osmallhiragana'] = 0x3049;
34868 t['osmallkatakana'] = 0x30A9;
34869 t['osmallkatakanahalfwidth'] = 0xFF6B;
34870 t['ostrokeacute'] = 0x01FF;
34871 t['osuperior'] = 0xF6F0;
34872 t['otcyrillic'] = 0x047F;
34873 t['otilde'] = 0x00F5;
34874 t['otildeacute'] = 0x1E4D;
34875 t['otildedieresis'] = 0x1E4F;
34876 t['oubopomofo'] = 0x3121;
34877 t['overline'] = 0x203E;
34878 t['overlinecenterline'] = 0xFE4A;
34879 t['overlinecmb'] = 0x0305;
34880 t['overlinedashed'] = 0xFE49;
34881 t['overlinedblwavy'] = 0xFE4C;
34882 t['overlinewavy'] = 0xFE4B;
34883 t['overscore'] = 0x00AF;
34884 t['ovowelsignbengali'] = 0x09CB;
34885 t['ovowelsigndeva'] = 0x094B;
34886 t['ovowelsigngujarati'] = 0x0ACB;
34887 t['p'] = 0x0070;
34888 t['paampssquare'] = 0x3380;
34889 t['paasentosquare'] = 0x332B;
34890 t['pabengali'] = 0x09AA;
34891 t['pacute'] = 0x1E55;
34892 t['padeva'] = 0x092A;
34893 t['pagedown'] = 0x21DF;
34894 t['pageup'] = 0x21DE;
34895 t['pagujarati'] = 0x0AAA;
34896 t['pagurmukhi'] = 0x0A2A;
34897 t['pahiragana'] = 0x3071;
34898 t['paiyannoithai'] = 0x0E2F;
34899 t['pakatakana'] = 0x30D1;
34900 t['palatalizationcyrilliccmb'] = 0x0484;
34901 t['palochkacyrillic'] = 0x04C0;
34902 t['pansioskorean'] = 0x317F;
34903 t['paragraph'] = 0x00B6;
34904 t['parallel'] = 0x2225;
34905 t['parenleft'] = 0x0028;
34906 t['parenleftaltonearabic'] = 0xFD3E;
34907 t['parenleftbt'] = 0xF8ED;
34908 t['parenleftex'] = 0xF8EC;
34909 t['parenleftinferior'] = 0x208D;
34910 t['parenleftmonospace'] = 0xFF08;
34911 t['parenleftsmall'] = 0xFE59;
34912 t['parenleftsuperior'] = 0x207D;
34913 t['parenlefttp'] = 0xF8EB;
34914 t['parenleftvertical'] = 0xFE35;
34915 t['parenright'] = 0x0029;
34916 t['parenrightaltonearabic'] = 0xFD3F;
34917 t['parenrightbt'] = 0xF8F8;
34918 t['parenrightex'] = 0xF8F7;
34919 t['parenrightinferior'] = 0x208E;
34920 t['parenrightmonospace'] = 0xFF09;
34921 t['parenrightsmall'] = 0xFE5A;
34922 t['parenrightsuperior'] = 0x207E;
34923 t['parenrighttp'] = 0xF8F6;
34924 t['parenrightvertical'] = 0xFE36;
34925 t['partialdiff'] = 0x2202;
34926 t['paseqhebrew'] = 0x05C0;
34927 t['pashtahebrew'] = 0x0599;
34928 t['pasquare'] = 0x33A9;
34929 t['patah'] = 0x05B7;
34930 t['patah11'] = 0x05B7;
34931 t['patah1d'] = 0x05B7;
34932 t['patah2a'] = 0x05B7;
34933 t['patahhebrew'] = 0x05B7;
34934 t['patahnarrowhebrew'] = 0x05B7;
34935 t['patahquarterhebrew'] = 0x05B7;
34936 t['patahwidehebrew'] = 0x05B7;
34937 t['pazerhebrew'] = 0x05A1;
34938 t['pbopomofo'] = 0x3106;
34939 t['pcircle'] = 0x24DF;
34940 t['pdotaccent'] = 0x1E57;
34941 t['pe'] = 0x05E4;
34942 t['pecyrillic'] = 0x043F;
34943 t['pedagesh'] = 0xFB44;
34944 t['pedageshhebrew'] = 0xFB44;
34945 t['peezisquare'] = 0x333B;
34946 t['pefinaldageshhebrew'] = 0xFB43;
34947 t['peharabic'] = 0x067E;
34948 t['peharmenian'] = 0x057A;
34949 t['pehebrew'] = 0x05E4;
34950 t['pehfinalarabic'] = 0xFB57;
34951 t['pehinitialarabic'] = 0xFB58;
34952 t['pehiragana'] = 0x307A;
34953 t['pehmedialarabic'] = 0xFB59;
34954 t['pekatakana'] = 0x30DA;
34955 t['pemiddlehookcyrillic'] = 0x04A7;
34956 t['perafehebrew'] = 0xFB4E;
34957 t['percent'] = 0x0025;
34958 t['percentarabic'] = 0x066A;
34959 t['percentmonospace'] = 0xFF05;
34960 t['percentsmall'] = 0xFE6A;
34961 t['period'] = 0x002E;
34962 t['periodarmenian'] = 0x0589;
34963 t['periodcentered'] = 0x00B7;
34964 t['periodhalfwidth'] = 0xFF61;
34965 t['periodinferior'] = 0xF6E7;
34966 t['periodmonospace'] = 0xFF0E;
34967 t['periodsmall'] = 0xFE52;
34968 t['periodsuperior'] = 0xF6E8;
34969 t['perispomenigreekcmb'] = 0x0342;
34970 t['perpendicular'] = 0x22A5;
34971 t['perthousand'] = 0x2030;
34972 t['peseta'] = 0x20A7;
34973 t['pfsquare'] = 0x338A;
34974 t['phabengali'] = 0x09AB;
34975 t['phadeva'] = 0x092B;
34976 t['phagujarati'] = 0x0AAB;
34977 t['phagurmukhi'] = 0x0A2B;
34978 t['phi'] = 0x03C6;
34979 t['phi1'] = 0x03D5;
34980 t['phieuphacirclekorean'] = 0x327A;
34981 t['phieuphaparenkorean'] = 0x321A;
34982 t['phieuphcirclekorean'] = 0x326C;
34983 t['phieuphkorean'] = 0x314D;
34984 t['phieuphparenkorean'] = 0x320C;
34985 t['philatin'] = 0x0278;
34986 t['phinthuthai'] = 0x0E3A;
34987 t['phisymbolgreek'] = 0x03D5;
34988 t['phook'] = 0x01A5;
34989 t['phophanthai'] = 0x0E1E;
34990 t['phophungthai'] = 0x0E1C;
34991 t['phosamphaothai'] = 0x0E20;
34992 t['pi'] = 0x03C0;
34993 t['pieupacirclekorean'] = 0x3273;
34994 t['pieupaparenkorean'] = 0x3213;
34995 t['pieupcieuckorean'] = 0x3176;
34996 t['pieupcirclekorean'] = 0x3265;
34997 t['pieupkiyeokkorean'] = 0x3172;
34998 t['pieupkorean'] = 0x3142;
34999 t['pieupparenkorean'] = 0x3205;
35000 t['pieupsioskiyeokkorean'] = 0x3174;
35001 t['pieupsioskorean'] = 0x3144;
35002 t['pieupsiostikeutkorean'] = 0x3175;
35003 t['pieupthieuthkorean'] = 0x3177;
35004 t['pieuptikeutkorean'] = 0x3173;
35005 t['pihiragana'] = 0x3074;
35006 t['pikatakana'] = 0x30D4;
35007 t['pisymbolgreek'] = 0x03D6;
35008 t['piwrarmenian'] = 0x0583;
35009 t['plus'] = 0x002B;
35010 t['plusbelowcmb'] = 0x031F;
35011 t['pluscircle'] = 0x2295;
35012 t['plusminus'] = 0x00B1;
35013 t['plusmod'] = 0x02D6;
35014 t['plusmonospace'] = 0xFF0B;
35015 t['plussmall'] = 0xFE62;
35016 t['plussuperior'] = 0x207A;
35017 t['pmonospace'] = 0xFF50;
35018 t['pmsquare'] = 0x33D8;
35019 t['pohiragana'] = 0x307D;
35020 t['pointingindexdownwhite'] = 0x261F;
35021 t['pointingindexleftwhite'] = 0x261C;
35022 t['pointingindexrightwhite'] = 0x261E;
35023 t['pointingindexupwhite'] = 0x261D;
35024 t['pokatakana'] = 0x30DD;
35025 t['poplathai'] = 0x0E1B;
35026 t['postalmark'] = 0x3012;
35027 t['postalmarkface'] = 0x3020;
35028 t['pparen'] = 0x24AB;
35029 t['precedes'] = 0x227A;
35030 t['prescription'] = 0x211E;
35031 t['primemod'] = 0x02B9;
35032 t['primereversed'] = 0x2035;
35033 t['product'] = 0x220F;
35034 t['projective'] = 0x2305;
35035 t['prolongedkana'] = 0x30FC;
35036 t['propellor'] = 0x2318;
35037 t['propersubset'] = 0x2282;
35038 t['propersuperset'] = 0x2283;
35039 t['proportion'] = 0x2237;
35040 t['proportional'] = 0x221D;
35041 t['psi'] = 0x03C8;
35042 t['psicyrillic'] = 0x0471;
35043 t['psilipneumatacyrilliccmb'] = 0x0486;
35044 t['pssquare'] = 0x33B0;
35045 t['puhiragana'] = 0x3077;
35046 t['pukatakana'] = 0x30D7;
35047 t['pvsquare'] = 0x33B4;
35048 t['pwsquare'] = 0x33BA;
35049 t['q'] = 0x0071;
35050 t['qadeva'] = 0x0958;
35051 t['qadmahebrew'] = 0x05A8;
35052 t['qafarabic'] = 0x0642;
35053 t['qaffinalarabic'] = 0xFED6;
35054 t['qafinitialarabic'] = 0xFED7;
35055 t['qafmedialarabic'] = 0xFED8;
35056 t['qamats'] = 0x05B8;
35057 t['qamats10'] = 0x05B8;
35058 t['qamats1a'] = 0x05B8;
35059 t['qamats1c'] = 0x05B8;
35060 t['qamats27'] = 0x05B8;
35061 t['qamats29'] = 0x05B8;
35062 t['qamats33'] = 0x05B8;
35063 t['qamatsde'] = 0x05B8;
35064 t['qamatshebrew'] = 0x05B8;
35065 t['qamatsnarrowhebrew'] = 0x05B8;
35066 t['qamatsqatanhebrew'] = 0x05B8;
35067 t['qamatsqatannarrowhebrew'] = 0x05B8;
35068 t['qamatsqatanquarterhebrew'] = 0x05B8;
35069 t['qamatsqatanwidehebrew'] = 0x05B8;
35070 t['qamatsquarterhebrew'] = 0x05B8;
35071 t['qamatswidehebrew'] = 0x05B8;
35072 t['qarneyparahebrew'] = 0x059F;
35073 t['qbopomofo'] = 0x3111;
35074 t['qcircle'] = 0x24E0;
35075 t['qhook'] = 0x02A0;
35076 t['qmonospace'] = 0xFF51;
35077 t['qof'] = 0x05E7;
35078 t['qofdagesh'] = 0xFB47;
35079 t['qofdageshhebrew'] = 0xFB47;
35080 t['qofhebrew'] = 0x05E7;
35081 t['qparen'] = 0x24AC;
35082 t['quarternote'] = 0x2669;
35083 t['qubuts'] = 0x05BB;
35084 t['qubuts18'] = 0x05BB;
35085 t['qubuts25'] = 0x05BB;
35086 t['qubuts31'] = 0x05BB;
35087 t['qubutshebrew'] = 0x05BB;
35088 t['qubutsnarrowhebrew'] = 0x05BB;
35089 t['qubutsquarterhebrew'] = 0x05BB;
35090 t['qubutswidehebrew'] = 0x05BB;
35091 t['question'] = 0x003F;
35092 t['questionarabic'] = 0x061F;
35093 t['questionarmenian'] = 0x055E;
35094 t['questiondown'] = 0x00BF;
35095 t['questiondownsmall'] = 0xF7BF;
35096 t['questiongreek'] = 0x037E;
35097 t['questionmonospace'] = 0xFF1F;
35098 t['questionsmall'] = 0xF73F;
35099 t['quotedbl'] = 0x0022;
35100 t['quotedblbase'] = 0x201E;
35101 t['quotedblleft'] = 0x201C;
35102 t['quotedblmonospace'] = 0xFF02;
35103 t['quotedblprime'] = 0x301E;
35104 t['quotedblprimereversed'] = 0x301D;
35105 t['quotedblright'] = 0x201D;
35106 t['quoteleft'] = 0x2018;
35107 t['quoteleftreversed'] = 0x201B;
35108 t['quotereversed'] = 0x201B;
35109 t['quoteright'] = 0x2019;
35110 t['quoterightn'] = 0x0149;
35111 t['quotesinglbase'] = 0x201A;
35112 t['quotesingle'] = 0x0027;
35113 t['quotesinglemonospace'] = 0xFF07;
35114 t['r'] = 0x0072;
35115 t['raarmenian'] = 0x057C;
35116 t['rabengali'] = 0x09B0;
35117 t['racute'] = 0x0155;
35118 t['radeva'] = 0x0930;
35119 t['radical'] = 0x221A;
35120 t['radicalex'] = 0xF8E5;
35121 t['radoverssquare'] = 0x33AE;
35122 t['radoverssquaredsquare'] = 0x33AF;
35123 t['radsquare'] = 0x33AD;
35124 t['rafe'] = 0x05BF;
35125 t['rafehebrew'] = 0x05BF;
35126 t['ragujarati'] = 0x0AB0;
35127 t['ragurmukhi'] = 0x0A30;
35128 t['rahiragana'] = 0x3089;
35129 t['rakatakana'] = 0x30E9;
35130 t['rakatakanahalfwidth'] = 0xFF97;
35131 t['ralowerdiagonalbengali'] = 0x09F1;
35132 t['ramiddlediagonalbengali'] = 0x09F0;
35133 t['ramshorn'] = 0x0264;
35134 t['ratio'] = 0x2236;
35135 t['rbopomofo'] = 0x3116;
35136 t['rcaron'] = 0x0159;
35137 t['rcedilla'] = 0x0157;
35138 t['rcircle'] = 0x24E1;
35139 t['rcommaaccent'] = 0x0157;
35140 t['rdblgrave'] = 0x0211;
35141 t['rdotaccent'] = 0x1E59;
35142 t['rdotbelow'] = 0x1E5B;
35143 t['rdotbelowmacron'] = 0x1E5D;
35144 t['referencemark'] = 0x203B;
35145 t['reflexsubset'] = 0x2286;
35146 t['reflexsuperset'] = 0x2287;
35147 t['registered'] = 0x00AE;
35148 t['registersans'] = 0xF8E8;
35149 t['registerserif'] = 0xF6DA;
35150 t['reharabic'] = 0x0631;
35151 t['reharmenian'] = 0x0580;
35152 t['rehfinalarabic'] = 0xFEAE;
35153 t['rehiragana'] = 0x308C;
35154 t['rekatakana'] = 0x30EC;
35155 t['rekatakanahalfwidth'] = 0xFF9A;
35156 t['resh'] = 0x05E8;
35157 t['reshdageshhebrew'] = 0xFB48;
35158 t['reshhebrew'] = 0x05E8;
35159 t['reversedtilde'] = 0x223D;
35160 t['reviahebrew'] = 0x0597;
35161 t['reviamugrashhebrew'] = 0x0597;
35162 t['revlogicalnot'] = 0x2310;
35163 t['rfishhook'] = 0x027E;
35164 t['rfishhookreversed'] = 0x027F;
35165 t['rhabengali'] = 0x09DD;
35166 t['rhadeva'] = 0x095D;
35167 t['rho'] = 0x03C1;
35168 t['rhook'] = 0x027D;
35169 t['rhookturned'] = 0x027B;
35170 t['rhookturnedsuperior'] = 0x02B5;
35171 t['rhosymbolgreek'] = 0x03F1;
35172 t['rhotichookmod'] = 0x02DE;
35173 t['rieulacirclekorean'] = 0x3271;
35174 t['rieulaparenkorean'] = 0x3211;
35175 t['rieulcirclekorean'] = 0x3263;
35176 t['rieulhieuhkorean'] = 0x3140;
35177 t['rieulkiyeokkorean'] = 0x313A;
35178 t['rieulkiyeoksioskorean'] = 0x3169;
35179 t['rieulkorean'] = 0x3139;
35180 t['rieulmieumkorean'] = 0x313B;
35181 t['rieulpansioskorean'] = 0x316C;
35182 t['rieulparenkorean'] = 0x3203;
35183 t['rieulphieuphkorean'] = 0x313F;
35184 t['rieulpieupkorean'] = 0x313C;
35185 t['rieulpieupsioskorean'] = 0x316B;
35186 t['rieulsioskorean'] = 0x313D;
35187 t['rieulthieuthkorean'] = 0x313E;
35188 t['rieultikeutkorean'] = 0x316A;
35189 t['rieulyeorinhieuhkorean'] = 0x316D;
35190 t['rightangle'] = 0x221F;
35191 t['righttackbelowcmb'] = 0x0319;
35192 t['righttriangle'] = 0x22BF;
35193 t['rihiragana'] = 0x308A;
35194 t['rikatakana'] = 0x30EA;
35195 t['rikatakanahalfwidth'] = 0xFF98;
35196 t['ring'] = 0x02DA;
35197 t['ringbelowcmb'] = 0x0325;
35198 t['ringcmb'] = 0x030A;
35199 t['ringhalfleft'] = 0x02BF;
35200 t['ringhalfleftarmenian'] = 0x0559;
35201 t['ringhalfleftbelowcmb'] = 0x031C;
35202 t['ringhalfleftcentered'] = 0x02D3;
35203 t['ringhalfright'] = 0x02BE;
35204 t['ringhalfrightbelowcmb'] = 0x0339;
35205 t['ringhalfrightcentered'] = 0x02D2;
35206 t['rinvertedbreve'] = 0x0213;
35207 t['rittorusquare'] = 0x3351;
35208 t['rlinebelow'] = 0x1E5F;
35209 t['rlongleg'] = 0x027C;
35210 t['rlonglegturned'] = 0x027A;
35211 t['rmonospace'] = 0xFF52;
35212 t['rohiragana'] = 0x308D;
35213 t['rokatakana'] = 0x30ED;
35214 t['rokatakanahalfwidth'] = 0xFF9B;
35215 t['roruathai'] = 0x0E23;
35216 t['rparen'] = 0x24AD;
35217 t['rrabengali'] = 0x09DC;
35218 t['rradeva'] = 0x0931;
35219 t['rragurmukhi'] = 0x0A5C;
35220 t['rreharabic'] = 0x0691;
35221 t['rrehfinalarabic'] = 0xFB8D;
35222 t['rrvocalicbengali'] = 0x09E0;
35223 t['rrvocalicdeva'] = 0x0960;
35224 t['rrvocalicgujarati'] = 0x0AE0;
35225 t['rrvocalicvowelsignbengali'] = 0x09C4;
35226 t['rrvocalicvowelsigndeva'] = 0x0944;
35227 t['rrvocalicvowelsigngujarati'] = 0x0AC4;
35228 t['rsuperior'] = 0xF6F1;
35229 t['rtblock'] = 0x2590;
35230 t['rturned'] = 0x0279;
35231 t['rturnedsuperior'] = 0x02B4;
35232 t['ruhiragana'] = 0x308B;
35233 t['rukatakana'] = 0x30EB;
35234 t['rukatakanahalfwidth'] = 0xFF99;
35235 t['rupeemarkbengali'] = 0x09F2;
35236 t['rupeesignbengali'] = 0x09F3;
35237 t['rupiah'] = 0xF6DD;
35238 t['ruthai'] = 0x0E24;
35239 t['rvocalicbengali'] = 0x098B;
35240 t['rvocalicdeva'] = 0x090B;
35241 t['rvocalicgujarati'] = 0x0A8B;
35242 t['rvocalicvowelsignbengali'] = 0x09C3;
35243 t['rvocalicvowelsigndeva'] = 0x0943;
35244 t['rvocalicvowelsigngujarati'] = 0x0AC3;
35245 t['s'] = 0x0073;
35246 t['sabengali'] = 0x09B8;
35247 t['sacute'] = 0x015B;
35248 t['sacutedotaccent'] = 0x1E65;
35249 t['sadarabic'] = 0x0635;
35250 t['sadeva'] = 0x0938;
35251 t['sadfinalarabic'] = 0xFEBA;
35252 t['sadinitialarabic'] = 0xFEBB;
35253 t['sadmedialarabic'] = 0xFEBC;
35254 t['sagujarati'] = 0x0AB8;
35255 t['sagurmukhi'] = 0x0A38;
35256 t['sahiragana'] = 0x3055;
35257 t['sakatakana'] = 0x30B5;
35258 t['sakatakanahalfwidth'] = 0xFF7B;
35259 t['sallallahoualayhewasallamarabic'] = 0xFDFA;
35260 t['samekh'] = 0x05E1;
35261 t['samekhdagesh'] = 0xFB41;
35262 t['samekhdageshhebrew'] = 0xFB41;
35263 t['samekhhebrew'] = 0x05E1;
35264 t['saraaathai'] = 0x0E32;
35265 t['saraaethai'] = 0x0E41;
35266 t['saraaimaimalaithai'] = 0x0E44;
35267 t['saraaimaimuanthai'] = 0x0E43;
35268 t['saraamthai'] = 0x0E33;
35269 t['saraathai'] = 0x0E30;
35270 t['saraethai'] = 0x0E40;
35271 t['saraiileftthai'] = 0xF886;
35272 t['saraiithai'] = 0x0E35;
35273 t['saraileftthai'] = 0xF885;
35274 t['saraithai'] = 0x0E34;
35275 t['saraothai'] = 0x0E42;
35276 t['saraueeleftthai'] = 0xF888;
35277 t['saraueethai'] = 0x0E37;
35278 t['saraueleftthai'] = 0xF887;
35279 t['sarauethai'] = 0x0E36;
35280 t['sarauthai'] = 0x0E38;
35281 t['sarauuthai'] = 0x0E39;
35282 t['sbopomofo'] = 0x3119;
35283 t['scaron'] = 0x0161;
35284 t['scarondotaccent'] = 0x1E67;
35285 t['scedilla'] = 0x015F;
35286 t['schwa'] = 0x0259;
35287 t['schwacyrillic'] = 0x04D9;
35288 t['schwadieresiscyrillic'] = 0x04DB;
35289 t['schwahook'] = 0x025A;
35290 t['scircle'] = 0x24E2;
35291 t['scircumflex'] = 0x015D;
35292 t['scommaaccent'] = 0x0219;
35293 t['sdotaccent'] = 0x1E61;
35294 t['sdotbelow'] = 0x1E63;
35295 t['sdotbelowdotaccent'] = 0x1E69;
35296 t['seagullbelowcmb'] = 0x033C;
35297 t['second'] = 0x2033;
35298 t['secondtonechinese'] = 0x02CA;
35299 t['section'] = 0x00A7;
35300 t['seenarabic'] = 0x0633;
35301 t['seenfinalarabic'] = 0xFEB2;
35302 t['seeninitialarabic'] = 0xFEB3;
35303 t['seenmedialarabic'] = 0xFEB4;
35304 t['segol'] = 0x05B6;
35305 t['segol13'] = 0x05B6;
35306 t['segol1f'] = 0x05B6;
35307 t['segol2c'] = 0x05B6;
35308 t['segolhebrew'] = 0x05B6;
35309 t['segolnarrowhebrew'] = 0x05B6;
35310 t['segolquarterhebrew'] = 0x05B6;
35311 t['segoltahebrew'] = 0x0592;
35312 t['segolwidehebrew'] = 0x05B6;
35313 t['seharmenian'] = 0x057D;
35314 t['sehiragana'] = 0x305B;
35315 t['sekatakana'] = 0x30BB;
35316 t['sekatakanahalfwidth'] = 0xFF7E;
35317 t['semicolon'] = 0x003B;
35318 t['semicolonarabic'] = 0x061B;
35319 t['semicolonmonospace'] = 0xFF1B;
35320 t['semicolonsmall'] = 0xFE54;
35321 t['semivoicedmarkkana'] = 0x309C;
35322 t['semivoicedmarkkanahalfwidth'] = 0xFF9F;
35323 t['sentisquare'] = 0x3322;
35324 t['sentosquare'] = 0x3323;
35325 t['seven'] = 0x0037;
35326 t['sevenarabic'] = 0x0667;
35327 t['sevenbengali'] = 0x09ED;
35328 t['sevencircle'] = 0x2466;
35329 t['sevencircleinversesansserif'] = 0x2790;
35330 t['sevendeva'] = 0x096D;
35331 t['seveneighths'] = 0x215E;
35332 t['sevengujarati'] = 0x0AED;
35333 t['sevengurmukhi'] = 0x0A6D;
35334 t['sevenhackarabic'] = 0x0667;
35335 t['sevenhangzhou'] = 0x3027;
35336 t['sevenideographicparen'] = 0x3226;
35337 t['seveninferior'] = 0x2087;
35338 t['sevenmonospace'] = 0xFF17;
35339 t['sevenoldstyle'] = 0xF737;
35340 t['sevenparen'] = 0x247A;
35341 t['sevenperiod'] = 0x248E;
35342 t['sevenpersian'] = 0x06F7;
35343 t['sevenroman'] = 0x2176;
35344 t['sevensuperior'] = 0x2077;
35345 t['seventeencircle'] = 0x2470;
35346 t['seventeenparen'] = 0x2484;
35347 t['seventeenperiod'] = 0x2498;
35348 t['seventhai'] = 0x0E57;
35349 t['sfthyphen'] = 0x00AD;
35350 t['shaarmenian'] = 0x0577;
35351 t['shabengali'] = 0x09B6;
35352 t['shacyrillic'] = 0x0448;
35353 t['shaddaarabic'] = 0x0651;
35354 t['shaddadammaarabic'] = 0xFC61;
35355 t['shaddadammatanarabic'] = 0xFC5E;
35356 t['shaddafathaarabic'] = 0xFC60;
35357 t['shaddakasraarabic'] = 0xFC62;
35358 t['shaddakasratanarabic'] = 0xFC5F;
35359 t['shade'] = 0x2592;
35360 t['shadedark'] = 0x2593;
35361 t['shadelight'] = 0x2591;
35362 t['shademedium'] = 0x2592;
35363 t['shadeva'] = 0x0936;
35364 t['shagujarati'] = 0x0AB6;
35365 t['shagurmukhi'] = 0x0A36;
35366 t['shalshelethebrew'] = 0x0593;
35367 t['shbopomofo'] = 0x3115;
35368 t['shchacyrillic'] = 0x0449;
35369 t['sheenarabic'] = 0x0634;
35370 t['sheenfinalarabic'] = 0xFEB6;
35371 t['sheeninitialarabic'] = 0xFEB7;
35372 t['sheenmedialarabic'] = 0xFEB8;
35373 t['sheicoptic'] = 0x03E3;
35374 t['sheqel'] = 0x20AA;
35375 t['sheqelhebrew'] = 0x20AA;
35376 t['sheva'] = 0x05B0;
35377 t['sheva115'] = 0x05B0;
35378 t['sheva15'] = 0x05B0;
35379 t['sheva22'] = 0x05B0;
35380 t['sheva2e'] = 0x05B0;
35381 t['shevahebrew'] = 0x05B0;
35382 t['shevanarrowhebrew'] = 0x05B0;
35383 t['shevaquarterhebrew'] = 0x05B0;
35384 t['shevawidehebrew'] = 0x05B0;
35385 t['shhacyrillic'] = 0x04BB;
35386 t['shimacoptic'] = 0x03ED;
35387 t['shin'] = 0x05E9;
35388 t['shindagesh'] = 0xFB49;
35389 t['shindageshhebrew'] = 0xFB49;
35390 t['shindageshshindot'] = 0xFB2C;
35391 t['shindageshshindothebrew'] = 0xFB2C;
35392 t['shindageshsindot'] = 0xFB2D;
35393 t['shindageshsindothebrew'] = 0xFB2D;
35394 t['shindothebrew'] = 0x05C1;
35395 t['shinhebrew'] = 0x05E9;
35396 t['shinshindot'] = 0xFB2A;
35397 t['shinshindothebrew'] = 0xFB2A;
35398 t['shinsindot'] = 0xFB2B;
35399 t['shinsindothebrew'] = 0xFB2B;
35400 t['shook'] = 0x0282;
35401 t['sigma'] = 0x03C3;
35402 t['sigma1'] = 0x03C2;
35403 t['sigmafinal'] = 0x03C2;
35404 t['sigmalunatesymbolgreek'] = 0x03F2;
35405 t['sihiragana'] = 0x3057;
35406 t['sikatakana'] = 0x30B7;
35407 t['sikatakanahalfwidth'] = 0xFF7C;
35408 t['siluqhebrew'] = 0x05BD;
35409 t['siluqlefthebrew'] = 0x05BD;
35410 t['similar'] = 0x223C;
35411 t['sindothebrew'] = 0x05C2;
35412 t['siosacirclekorean'] = 0x3274;
35413 t['siosaparenkorean'] = 0x3214;
35414 t['sioscieuckorean'] = 0x317E;
35415 t['sioscirclekorean'] = 0x3266;
35416 t['sioskiyeokkorean'] = 0x317A;
35417 t['sioskorean'] = 0x3145;
35418 t['siosnieunkorean'] = 0x317B;
35419 t['siosparenkorean'] = 0x3206;
35420 t['siospieupkorean'] = 0x317D;
35421 t['siostikeutkorean'] = 0x317C;
35422 t['six'] = 0x0036;
35423 t['sixarabic'] = 0x0666;
35424 t['sixbengali'] = 0x09EC;
35425 t['sixcircle'] = 0x2465;
35426 t['sixcircleinversesansserif'] = 0x278F;
35427 t['sixdeva'] = 0x096C;
35428 t['sixgujarati'] = 0x0AEC;
35429 t['sixgurmukhi'] = 0x0A6C;
35430 t['sixhackarabic'] = 0x0666;
35431 t['sixhangzhou'] = 0x3026;
35432 t['sixideographicparen'] = 0x3225;
35433 t['sixinferior'] = 0x2086;
35434 t['sixmonospace'] = 0xFF16;
35435 t['sixoldstyle'] = 0xF736;
35436 t['sixparen'] = 0x2479;
35437 t['sixperiod'] = 0x248D;
35438 t['sixpersian'] = 0x06F6;
35439 t['sixroman'] = 0x2175;
35440 t['sixsuperior'] = 0x2076;
35441 t['sixteencircle'] = 0x246F;
35442 t['sixteencurrencydenominatorbengali'] = 0x09F9;
35443 t['sixteenparen'] = 0x2483;
35444 t['sixteenperiod'] = 0x2497;
35445 t['sixthai'] = 0x0E56;
35446 t['slash'] = 0x002F;
35447 t['slashmonospace'] = 0xFF0F;
35448 t['slong'] = 0x017F;
35449 t['slongdotaccent'] = 0x1E9B;
35450 t['smileface'] = 0x263A;
35451 t['smonospace'] = 0xFF53;
35452 t['sofpasuqhebrew'] = 0x05C3;
35453 t['softhyphen'] = 0x00AD;
35454 t['softsigncyrillic'] = 0x044C;
35455 t['sohiragana'] = 0x305D;
35456 t['sokatakana'] = 0x30BD;
35457 t['sokatakanahalfwidth'] = 0xFF7F;
35458 t['soliduslongoverlaycmb'] = 0x0338;
35459 t['solidusshortoverlaycmb'] = 0x0337;
35460 t['sorusithai'] = 0x0E29;
35461 t['sosalathai'] = 0x0E28;
35462 t['sosothai'] = 0x0E0B;
35463 t['sosuathai'] = 0x0E2A;
35464 t['space'] = 0x0020;
35465 t['spacehackarabic'] = 0x0020;
35466 t['spade'] = 0x2660;
35467 t['spadesuitblack'] = 0x2660;
35468 t['spadesuitwhite'] = 0x2664;
35469 t['sparen'] = 0x24AE;
35470 t['squarebelowcmb'] = 0x033B;
35471 t['squarecc'] = 0x33C4;
35472 t['squarecm'] = 0x339D;
35473 t['squarediagonalcrosshatchfill'] = 0x25A9;
35474 t['squarehorizontalfill'] = 0x25A4;
35475 t['squarekg'] = 0x338F;
35476 t['squarekm'] = 0x339E;
35477 t['squarekmcapital'] = 0x33CE;
35478 t['squareln'] = 0x33D1;
35479 t['squarelog'] = 0x33D2;
35480 t['squaremg'] = 0x338E;
35481 t['squaremil'] = 0x33D5;
35482 t['squaremm'] = 0x339C;
35483 t['squaremsquared'] = 0x33A1;
35484 t['squareorthogonalcrosshatchfill'] = 0x25A6;
35485 t['squareupperlefttolowerrightfill'] = 0x25A7;
35486 t['squareupperrighttolowerleftfill'] = 0x25A8;
35487 t['squareverticalfill'] = 0x25A5;
35488 t['squarewhitewithsmallblack'] = 0x25A3;
35489 t['srsquare'] = 0x33DB;
35490 t['ssabengali'] = 0x09B7;
35491 t['ssadeva'] = 0x0937;
35492 t['ssagujarati'] = 0x0AB7;
35493 t['ssangcieuckorean'] = 0x3149;
35494 t['ssanghieuhkorean'] = 0x3185;
35495 t['ssangieungkorean'] = 0x3180;
35496 t['ssangkiyeokkorean'] = 0x3132;
35497 t['ssangnieunkorean'] = 0x3165;
35498 t['ssangpieupkorean'] = 0x3143;
35499 t['ssangsioskorean'] = 0x3146;
35500 t['ssangtikeutkorean'] = 0x3138;
35501 t['ssuperior'] = 0xF6F2;
35502 t['sterling'] = 0x00A3;
35503 t['sterlingmonospace'] = 0xFFE1;
35504 t['strokelongoverlaycmb'] = 0x0336;
35505 t['strokeshortoverlaycmb'] = 0x0335;
35506 t['subset'] = 0x2282;
35507 t['subsetnotequal'] = 0x228A;
35508 t['subsetorequal'] = 0x2286;
35509 t['succeeds'] = 0x227B;
35510 t['suchthat'] = 0x220B;
35511 t['suhiragana'] = 0x3059;
35512 t['sukatakana'] = 0x30B9;
35513 t['sukatakanahalfwidth'] = 0xFF7D;
35514 t['sukunarabic'] = 0x0652;
35515 t['summation'] = 0x2211;
35516 t['sun'] = 0x263C;
35517 t['superset'] = 0x2283;
35518 t['supersetnotequal'] = 0x228B;
35519 t['supersetorequal'] = 0x2287;
35520 t['svsquare'] = 0x33DC;
35521 t['syouwaerasquare'] = 0x337C;
35522 t['t'] = 0x0074;
35523 t['tabengali'] = 0x09A4;
35524 t['tackdown'] = 0x22A4;
35525 t['tackleft'] = 0x22A3;
35526 t['tadeva'] = 0x0924;
35527 t['tagujarati'] = 0x0AA4;
35528 t['tagurmukhi'] = 0x0A24;
35529 t['taharabic'] = 0x0637;
35530 t['tahfinalarabic'] = 0xFEC2;
35531 t['tahinitialarabic'] = 0xFEC3;
35532 t['tahiragana'] = 0x305F;
35533 t['tahmedialarabic'] = 0xFEC4;
35534 t['taisyouerasquare'] = 0x337D;
35535 t['takatakana'] = 0x30BF;
35536 t['takatakanahalfwidth'] = 0xFF80;
35537 t['tatweelarabic'] = 0x0640;
35538 t['tau'] = 0x03C4;
35539 t['tav'] = 0x05EA;
35540 t['tavdages'] = 0xFB4A;
35541 t['tavdagesh'] = 0xFB4A;
35542 t['tavdageshhebrew'] = 0xFB4A;
35543 t['tavhebrew'] = 0x05EA;
35544 t['tbar'] = 0x0167;
35545 t['tbopomofo'] = 0x310A;
35546 t['tcaron'] = 0x0165;
35547 t['tccurl'] = 0x02A8;
35548 t['tcedilla'] = 0x0163;
35549 t['tcheharabic'] = 0x0686;
35550 t['tchehfinalarabic'] = 0xFB7B;
35551 t['tchehinitialarabic'] = 0xFB7C;
35552 t['tchehmedialarabic'] = 0xFB7D;
35553 t['tcircle'] = 0x24E3;
35554 t['tcircumflexbelow'] = 0x1E71;
35555 t['tcommaaccent'] = 0x0163;
35556 t['tdieresis'] = 0x1E97;
35557 t['tdotaccent'] = 0x1E6B;
35558 t['tdotbelow'] = 0x1E6D;
35559 t['tecyrillic'] = 0x0442;
35560 t['tedescendercyrillic'] = 0x04AD;
35561 t['teharabic'] = 0x062A;
35562 t['tehfinalarabic'] = 0xFE96;
35563 t['tehhahinitialarabic'] = 0xFCA2;
35564 t['tehhahisolatedarabic'] = 0xFC0C;
35565 t['tehinitialarabic'] = 0xFE97;
35566 t['tehiragana'] = 0x3066;
35567 t['tehjeeminitialarabic'] = 0xFCA1;
35568 t['tehjeemisolatedarabic'] = 0xFC0B;
35569 t['tehmarbutaarabic'] = 0x0629;
35570 t['tehmarbutafinalarabic'] = 0xFE94;
35571 t['tehmedialarabic'] = 0xFE98;
35572 t['tehmeeminitialarabic'] = 0xFCA4;
35573 t['tehmeemisolatedarabic'] = 0xFC0E;
35574 t['tehnoonfinalarabic'] = 0xFC73;
35575 t['tekatakana'] = 0x30C6;
35576 t['tekatakanahalfwidth'] = 0xFF83;
35577 t['telephone'] = 0x2121;
35578 t['telephoneblack'] = 0x260E;
35579 t['telishagedolahebrew'] = 0x05A0;
35580 t['telishaqetanahebrew'] = 0x05A9;
35581 t['tencircle'] = 0x2469;
35582 t['tenideographicparen'] = 0x3229;
35583 t['tenparen'] = 0x247D;
35584 t['tenperiod'] = 0x2491;
35585 t['tenroman'] = 0x2179;
35586 t['tesh'] = 0x02A7;
35587 t['tet'] = 0x05D8;
35588 t['tetdagesh'] = 0xFB38;
35589 t['tetdageshhebrew'] = 0xFB38;
35590 t['tethebrew'] = 0x05D8;
35591 t['tetsecyrillic'] = 0x04B5;
35592 t['tevirhebrew'] = 0x059B;
35593 t['tevirlefthebrew'] = 0x059B;
35594 t['thabengali'] = 0x09A5;
35595 t['thadeva'] = 0x0925;
35596 t['thagujarati'] = 0x0AA5;
35597 t['thagurmukhi'] = 0x0A25;
35598 t['thalarabic'] = 0x0630;
35599 t['thalfinalarabic'] = 0xFEAC;
35600 t['thanthakhatlowleftthai'] = 0xF898;
35601 t['thanthakhatlowrightthai'] = 0xF897;
35602 t['thanthakhatthai'] = 0x0E4C;
35603 t['thanthakhatupperleftthai'] = 0xF896;
35604 t['theharabic'] = 0x062B;
35605 t['thehfinalarabic'] = 0xFE9A;
35606 t['thehinitialarabic'] = 0xFE9B;
35607 t['thehmedialarabic'] = 0xFE9C;
35608 t['thereexists'] = 0x2203;
35609 t['therefore'] = 0x2234;
35610 t['theta'] = 0x03B8;
35611 t['theta1'] = 0x03D1;
35612 t['thetasymbolgreek'] = 0x03D1;
35613 t['thieuthacirclekorean'] = 0x3279;
35614 t['thieuthaparenkorean'] = 0x3219;
35615 t['thieuthcirclekorean'] = 0x326B;
35616 t['thieuthkorean'] = 0x314C;
35617 t['thieuthparenkorean'] = 0x320B;
35618 t['thirteencircle'] = 0x246C;
35619 t['thirteenparen'] = 0x2480;
35620 t['thirteenperiod'] = 0x2494;
35621 t['thonangmonthothai'] = 0x0E11;
35622 t['thook'] = 0x01AD;
35623 t['thophuthaothai'] = 0x0E12;
35624 t['thorn'] = 0x00FE;
35625 t['thothahanthai'] = 0x0E17;
35626 t['thothanthai'] = 0x0E10;
35627 t['thothongthai'] = 0x0E18;
35628 t['thothungthai'] = 0x0E16;
35629 t['thousandcyrillic'] = 0x0482;
35630 t['thousandsseparatorarabic'] = 0x066C;
35631 t['thousandsseparatorpersian'] = 0x066C;
35632 t['three'] = 0x0033;
35633 t['threearabic'] = 0x0663;
35634 t['threebengali'] = 0x09E9;
35635 t['threecircle'] = 0x2462;
35636 t['threecircleinversesansserif'] = 0x278C;
35637 t['threedeva'] = 0x0969;
35638 t['threeeighths'] = 0x215C;
35639 t['threegujarati'] = 0x0AE9;
35640 t['threegurmukhi'] = 0x0A69;
35641 t['threehackarabic'] = 0x0663;
35642 t['threehangzhou'] = 0x3023;
35643 t['threeideographicparen'] = 0x3222;
35644 t['threeinferior'] = 0x2083;
35645 t['threemonospace'] = 0xFF13;
35646 t['threenumeratorbengali'] = 0x09F6;
35647 t['threeoldstyle'] = 0xF733;
35648 t['threeparen'] = 0x2476;
35649 t['threeperiod'] = 0x248A;
35650 t['threepersian'] = 0x06F3;
35651 t['threequarters'] = 0x00BE;
35652 t['threequartersemdash'] = 0xF6DE;
35653 t['threeroman'] = 0x2172;
35654 t['threesuperior'] = 0x00B3;
35655 t['threethai'] = 0x0E53;
35656 t['thzsquare'] = 0x3394;
35657 t['tihiragana'] = 0x3061;
35658 t['tikatakana'] = 0x30C1;
35659 t['tikatakanahalfwidth'] = 0xFF81;
35660 t['tikeutacirclekorean'] = 0x3270;
35661 t['tikeutaparenkorean'] = 0x3210;
35662 t['tikeutcirclekorean'] = 0x3262;
35663 t['tikeutkorean'] = 0x3137;
35664 t['tikeutparenkorean'] = 0x3202;
35665 t['tilde'] = 0x02DC;
35666 t['tildebelowcmb'] = 0x0330;
35667 t['tildecmb'] = 0x0303;
35668 t['tildecomb'] = 0x0303;
35669 t['tildedoublecmb'] = 0x0360;
35670 t['tildeoperator'] = 0x223C;
35671 t['tildeoverlaycmb'] = 0x0334;
35672 t['tildeverticalcmb'] = 0x033E;
35673 t['timescircle'] = 0x2297;
35674 t['tipehahebrew'] = 0x0596;
35675 t['tipehalefthebrew'] = 0x0596;
35676 t['tippigurmukhi'] = 0x0A70;
35677 t['titlocyrilliccmb'] = 0x0483;
35678 t['tiwnarmenian'] = 0x057F;
35679 t['tlinebelow'] = 0x1E6F;
35680 t['tmonospace'] = 0xFF54;
35681 t['toarmenian'] = 0x0569;
35682 t['tohiragana'] = 0x3068;
35683 t['tokatakana'] = 0x30C8;
35684 t['tokatakanahalfwidth'] = 0xFF84;
35685 t['tonebarextrahighmod'] = 0x02E5;
35686 t['tonebarextralowmod'] = 0x02E9;
35687 t['tonebarhighmod'] = 0x02E6;
35688 t['tonebarlowmod'] = 0x02E8;
35689 t['tonebarmidmod'] = 0x02E7;
35690 t['tonefive'] = 0x01BD;
35691 t['tonesix'] = 0x0185;
35692 t['tonetwo'] = 0x01A8;
35693 t['tonos'] = 0x0384;
35694 t['tonsquare'] = 0x3327;
35695 t['topatakthai'] = 0x0E0F;
35696 t['tortoiseshellbracketleft'] = 0x3014;
35697 t['tortoiseshellbracketleftsmall'] = 0xFE5D;
35698 t['tortoiseshellbracketleftvertical'] = 0xFE39;
35699 t['tortoiseshellbracketright'] = 0x3015;
35700 t['tortoiseshellbracketrightsmall'] = 0xFE5E;
35701 t['tortoiseshellbracketrightvertical'] = 0xFE3A;
35702 t['totaothai'] = 0x0E15;
35703 t['tpalatalhook'] = 0x01AB;
35704 t['tparen'] = 0x24AF;
35705 t['trademark'] = 0x2122;
35706 t['trademarksans'] = 0xF8EA;
35707 t['trademarkserif'] = 0xF6DB;
35708 t['tretroflexhook'] = 0x0288;
35709 t['triagdn'] = 0x25BC;
35710 t['triaglf'] = 0x25C4;
35711 t['triagrt'] = 0x25BA;
35712 t['triagup'] = 0x25B2;
35713 t['ts'] = 0x02A6;
35714 t['tsadi'] = 0x05E6;
35715 t['tsadidagesh'] = 0xFB46;
35716 t['tsadidageshhebrew'] = 0xFB46;
35717 t['tsadihebrew'] = 0x05E6;
35718 t['tsecyrillic'] = 0x0446;
35719 t['tsere'] = 0x05B5;
35720 t['tsere12'] = 0x05B5;
35721 t['tsere1e'] = 0x05B5;
35722 t['tsere2b'] = 0x05B5;
35723 t['tserehebrew'] = 0x05B5;
35724 t['tserenarrowhebrew'] = 0x05B5;
35725 t['tserequarterhebrew'] = 0x05B5;
35726 t['tserewidehebrew'] = 0x05B5;
35727 t['tshecyrillic'] = 0x045B;
35728 t['tsuperior'] = 0xF6F3;
35729 t['ttabengali'] = 0x099F;
35730 t['ttadeva'] = 0x091F;
35731 t['ttagujarati'] = 0x0A9F;
35732 t['ttagurmukhi'] = 0x0A1F;
35733 t['tteharabic'] = 0x0679;
35734 t['ttehfinalarabic'] = 0xFB67;
35735 t['ttehinitialarabic'] = 0xFB68;
35736 t['ttehmedialarabic'] = 0xFB69;
35737 t['tthabengali'] = 0x09A0;
35738 t['tthadeva'] = 0x0920;
35739 t['tthagujarati'] = 0x0AA0;
35740 t['tthagurmukhi'] = 0x0A20;
35741 t['tturned'] = 0x0287;
35742 t['tuhiragana'] = 0x3064;
35743 t['tukatakana'] = 0x30C4;
35744 t['tukatakanahalfwidth'] = 0xFF82;
35745 t['tusmallhiragana'] = 0x3063;
35746 t['tusmallkatakana'] = 0x30C3;
35747 t['tusmallkatakanahalfwidth'] = 0xFF6F;
35748 t['twelvecircle'] = 0x246B;
35749 t['twelveparen'] = 0x247F;
35750 t['twelveperiod'] = 0x2493;
35751 t['twelveroman'] = 0x217B;
35752 t['twentycircle'] = 0x2473;
35753 t['twentyhangzhou'] = 0x5344;
35754 t['twentyparen'] = 0x2487;
35755 t['twentyperiod'] = 0x249B;
35756 t['two'] = 0x0032;
35757 t['twoarabic'] = 0x0662;
35758 t['twobengali'] = 0x09E8;
35759 t['twocircle'] = 0x2461;
35760 t['twocircleinversesansserif'] = 0x278B;
35761 t['twodeva'] = 0x0968;
35762 t['twodotenleader'] = 0x2025;
35763 t['twodotleader'] = 0x2025;
35764 t['twodotleadervertical'] = 0xFE30;
35765 t['twogujarati'] = 0x0AE8;
35766 t['twogurmukhi'] = 0x0A68;
35767 t['twohackarabic'] = 0x0662;
35768 t['twohangzhou'] = 0x3022;
35769 t['twoideographicparen'] = 0x3221;
35770 t['twoinferior'] = 0x2082;
35771 t['twomonospace'] = 0xFF12;
35772 t['twonumeratorbengali'] = 0x09F5;
35773 t['twooldstyle'] = 0xF732;
35774 t['twoparen'] = 0x2475;
35775 t['twoperiod'] = 0x2489;
35776 t['twopersian'] = 0x06F2;
35777 t['tworoman'] = 0x2171;
35778 t['twostroke'] = 0x01BB;
35779 t['twosuperior'] = 0x00B2;
35780 t['twothai'] = 0x0E52;
35781 t['twothirds'] = 0x2154;
35782 t['u'] = 0x0075;
35783 t['uacute'] = 0x00FA;
35784 t['ubar'] = 0x0289;
35785 t['ubengali'] = 0x0989;
35786 t['ubopomofo'] = 0x3128;
35787 t['ubreve'] = 0x016D;
35788 t['ucaron'] = 0x01D4;
35789 t['ucircle'] = 0x24E4;
35790 t['ucircumflex'] = 0x00FB;
35791 t['ucircumflexbelow'] = 0x1E77;
35792 t['ucyrillic'] = 0x0443;
35793 t['udattadeva'] = 0x0951;
35794 t['udblacute'] = 0x0171;
35795 t['udblgrave'] = 0x0215;
35796 t['udeva'] = 0x0909;
35797 t['udieresis'] = 0x00FC;
35798 t['udieresisacute'] = 0x01D8;
35799 t['udieresisbelow'] = 0x1E73;
35800 t['udieresiscaron'] = 0x01DA;
35801 t['udieresiscyrillic'] = 0x04F1;
35802 t['udieresisgrave'] = 0x01DC;
35803 t['udieresismacron'] = 0x01D6;
35804 t['udotbelow'] = 0x1EE5;
35805 t['ugrave'] = 0x00F9;
35806 t['ugujarati'] = 0x0A89;
35807 t['ugurmukhi'] = 0x0A09;
35808 t['uhiragana'] = 0x3046;
35809 t['uhookabove'] = 0x1EE7;
35810 t['uhorn'] = 0x01B0;
35811 t['uhornacute'] = 0x1EE9;
35812 t['uhorndotbelow'] = 0x1EF1;
35813 t['uhorngrave'] = 0x1EEB;
35814 t['uhornhookabove'] = 0x1EED;
35815 t['uhorntilde'] = 0x1EEF;
35816 t['uhungarumlaut'] = 0x0171;
35817 t['uhungarumlautcyrillic'] = 0x04F3;
35818 t['uinvertedbreve'] = 0x0217;
35819 t['ukatakana'] = 0x30A6;
35820 t['ukatakanahalfwidth'] = 0xFF73;
35821 t['ukcyrillic'] = 0x0479;
35822 t['ukorean'] = 0x315C;
35823 t['umacron'] = 0x016B;
35824 t['umacroncyrillic'] = 0x04EF;
35825 t['umacrondieresis'] = 0x1E7B;
35826 t['umatragurmukhi'] = 0x0A41;
35827 t['umonospace'] = 0xFF55;
35828 t['underscore'] = 0x005F;
35829 t['underscoredbl'] = 0x2017;
35830 t['underscoremonospace'] = 0xFF3F;
35831 t['underscorevertical'] = 0xFE33;
35832 t['underscorewavy'] = 0xFE4F;
35833 t['union'] = 0x222A;
35834 t['universal'] = 0x2200;
35835 t['uogonek'] = 0x0173;
35836 t['uparen'] = 0x24B0;
35837 t['upblock'] = 0x2580;
35838 t['upperdothebrew'] = 0x05C4;
35839 t['upsilon'] = 0x03C5;
35840 t['upsilondieresis'] = 0x03CB;
35841 t['upsilondieresistonos'] = 0x03B0;
35842 t['upsilonlatin'] = 0x028A;
35843 t['upsilontonos'] = 0x03CD;
35844 t['uptackbelowcmb'] = 0x031D;
35845 t['uptackmod'] = 0x02D4;
35846 t['uragurmukhi'] = 0x0A73;
35847 t['uring'] = 0x016F;
35848 t['ushortcyrillic'] = 0x045E;
35849 t['usmallhiragana'] = 0x3045;
35850 t['usmallkatakana'] = 0x30A5;
35851 t['usmallkatakanahalfwidth'] = 0xFF69;
35852 t['ustraightcyrillic'] = 0x04AF;
35853 t['ustraightstrokecyrillic'] = 0x04B1;
35854 t['utilde'] = 0x0169;
35855 t['utildeacute'] = 0x1E79;
35856 t['utildebelow'] = 0x1E75;
35857 t['uubengali'] = 0x098A;
35858 t['uudeva'] = 0x090A;
35859 t['uugujarati'] = 0x0A8A;
35860 t['uugurmukhi'] = 0x0A0A;
35861 t['uumatragurmukhi'] = 0x0A42;
35862 t['uuvowelsignbengali'] = 0x09C2;
35863 t['uuvowelsigndeva'] = 0x0942;
35864 t['uuvowelsigngujarati'] = 0x0AC2;
35865 t['uvowelsignbengali'] = 0x09C1;
35866 t['uvowelsigndeva'] = 0x0941;
35867 t['uvowelsigngujarati'] = 0x0AC1;
35868 t['v'] = 0x0076;
35869 t['vadeva'] = 0x0935;
35870 t['vagujarati'] = 0x0AB5;
35871 t['vagurmukhi'] = 0x0A35;
35872 t['vakatakana'] = 0x30F7;
35873 t['vav'] = 0x05D5;
35874 t['vavdagesh'] = 0xFB35;
35875 t['vavdagesh65'] = 0xFB35;
35876 t['vavdageshhebrew'] = 0xFB35;
35877 t['vavhebrew'] = 0x05D5;
35878 t['vavholam'] = 0xFB4B;
35879 t['vavholamhebrew'] = 0xFB4B;
35880 t['vavvavhebrew'] = 0x05F0;
35881 t['vavyodhebrew'] = 0x05F1;
35882 t['vcircle'] = 0x24E5;
35883 t['vdotbelow'] = 0x1E7F;
35884 t['vecyrillic'] = 0x0432;
35885 t['veharabic'] = 0x06A4;
35886 t['vehfinalarabic'] = 0xFB6B;
35887 t['vehinitialarabic'] = 0xFB6C;
35888 t['vehmedialarabic'] = 0xFB6D;
35889 t['vekatakana'] = 0x30F9;
35890 t['venus'] = 0x2640;
35891 t['verticalbar'] = 0x007C;
35892 t['verticallineabovecmb'] = 0x030D;
35893 t['verticallinebelowcmb'] = 0x0329;
35894 t['verticallinelowmod'] = 0x02CC;
35895 t['verticallinemod'] = 0x02C8;
35896 t['vewarmenian'] = 0x057E;
35897 t['vhook'] = 0x028B;
35898 t['vikatakana'] = 0x30F8;
35899 t['viramabengali'] = 0x09CD;
35900 t['viramadeva'] = 0x094D;
35901 t['viramagujarati'] = 0x0ACD;
35902 t['visargabengali'] = 0x0983;
35903 t['visargadeva'] = 0x0903;
35904 t['visargagujarati'] = 0x0A83;
35905 t['vmonospace'] = 0xFF56;
35906 t['voarmenian'] = 0x0578;
35907 t['voicediterationhiragana'] = 0x309E;
35908 t['voicediterationkatakana'] = 0x30FE;
35909 t['voicedmarkkana'] = 0x309B;
35910 t['voicedmarkkanahalfwidth'] = 0xFF9E;
35911 t['vokatakana'] = 0x30FA;
35912 t['vparen'] = 0x24B1;
35913 t['vtilde'] = 0x1E7D;
35914 t['vturned'] = 0x028C;
35915 t['vuhiragana'] = 0x3094;
35916 t['vukatakana'] = 0x30F4;
35917 t['w'] = 0x0077;
35918 t['wacute'] = 0x1E83;
35919 t['waekorean'] = 0x3159;
35920 t['wahiragana'] = 0x308F;
35921 t['wakatakana'] = 0x30EF;
35922 t['wakatakanahalfwidth'] = 0xFF9C;
35923 t['wakorean'] = 0x3158;
35924 t['wasmallhiragana'] = 0x308E;
35925 t['wasmallkatakana'] = 0x30EE;
35926 t['wattosquare'] = 0x3357;
35927 t['wavedash'] = 0x301C;
35928 t['wavyunderscorevertical'] = 0xFE34;
35929 t['wawarabic'] = 0x0648;
35930 t['wawfinalarabic'] = 0xFEEE;
35931 t['wawhamzaabovearabic'] = 0x0624;
35932 t['wawhamzaabovefinalarabic'] = 0xFE86;
35933 t['wbsquare'] = 0x33DD;
35934 t['wcircle'] = 0x24E6;
35935 t['wcircumflex'] = 0x0175;
35936 t['wdieresis'] = 0x1E85;
35937 t['wdotaccent'] = 0x1E87;
35938 t['wdotbelow'] = 0x1E89;
35939 t['wehiragana'] = 0x3091;
35940 t['weierstrass'] = 0x2118;
35941 t['wekatakana'] = 0x30F1;
35942 t['wekorean'] = 0x315E;
35943 t['weokorean'] = 0x315D;
35944 t['wgrave'] = 0x1E81;
35945 t['whitebullet'] = 0x25E6;
35946 t['whitecircle'] = 0x25CB;
35947 t['whitecircleinverse'] = 0x25D9;
35948 t['whitecornerbracketleft'] = 0x300E;
35949 t['whitecornerbracketleftvertical'] = 0xFE43;
35950 t['whitecornerbracketright'] = 0x300F;
35951 t['whitecornerbracketrightvertical'] = 0xFE44;
35952 t['whitediamond'] = 0x25C7;
35953 t['whitediamondcontainingblacksmalldiamond'] = 0x25C8;
35954 t['whitedownpointingsmalltriangle'] = 0x25BF;
35955 t['whitedownpointingtriangle'] = 0x25BD;
35956 t['whiteleftpointingsmalltriangle'] = 0x25C3;
35957 t['whiteleftpointingtriangle'] = 0x25C1;
35958 t['whitelenticularbracketleft'] = 0x3016;
35959 t['whitelenticularbracketright'] = 0x3017;
35960 t['whiterightpointingsmalltriangle'] = 0x25B9;
35961 t['whiterightpointingtriangle'] = 0x25B7;
35962 t['whitesmallsquare'] = 0x25AB;
35963 t['whitesmilingface'] = 0x263A;
35964 t['whitesquare'] = 0x25A1;
35965 t['whitestar'] = 0x2606;
35966 t['whitetelephone'] = 0x260F;
35967 t['whitetortoiseshellbracketleft'] = 0x3018;
35968 t['whitetortoiseshellbracketright'] = 0x3019;
35969 t['whiteuppointingsmalltriangle'] = 0x25B5;
35970 t['whiteuppointingtriangle'] = 0x25B3;
35971 t['wihiragana'] = 0x3090;
35972 t['wikatakana'] = 0x30F0;
35973 t['wikorean'] = 0x315F;
35974 t['wmonospace'] = 0xFF57;
35975 t['wohiragana'] = 0x3092;
35976 t['wokatakana'] = 0x30F2;
35977 t['wokatakanahalfwidth'] = 0xFF66;
35978 t['won'] = 0x20A9;
35979 t['wonmonospace'] = 0xFFE6;
35980 t['wowaenthai'] = 0x0E27;
35981 t['wparen'] = 0x24B2;
35982 t['wring'] = 0x1E98;
35983 t['wsuperior'] = 0x02B7;
35984 t['wturned'] = 0x028D;
35985 t['wynn'] = 0x01BF;
35986 t['x'] = 0x0078;
35987 t['xabovecmb'] = 0x033D;
35988 t['xbopomofo'] = 0x3112;
35989 t['xcircle'] = 0x24E7;
35990 t['xdieresis'] = 0x1E8D;
35991 t['xdotaccent'] = 0x1E8B;
35992 t['xeharmenian'] = 0x056D;
35993 t['xi'] = 0x03BE;
35994 t['xmonospace'] = 0xFF58;
35995 t['xparen'] = 0x24B3;
35996 t['xsuperior'] = 0x02E3;
35997 t['y'] = 0x0079;
35998 t['yaadosquare'] = 0x334E;
35999 t['yabengali'] = 0x09AF;
36000 t['yacute'] = 0x00FD;
36001 t['yadeva'] = 0x092F;
36002 t['yaekorean'] = 0x3152;
36003 t['yagujarati'] = 0x0AAF;
36004 t['yagurmukhi'] = 0x0A2F;
36005 t['yahiragana'] = 0x3084;
36006 t['yakatakana'] = 0x30E4;
36007 t['yakatakanahalfwidth'] = 0xFF94;
36008 t['yakorean'] = 0x3151;
36009 t['yamakkanthai'] = 0x0E4E;
36010 t['yasmallhiragana'] = 0x3083;
36011 t['yasmallkatakana'] = 0x30E3;
36012 t['yasmallkatakanahalfwidth'] = 0xFF6C;
36013 t['yatcyrillic'] = 0x0463;
36014 t['ycircle'] = 0x24E8;
36015 t['ycircumflex'] = 0x0177;
36016 t['ydieresis'] = 0x00FF;
36017 t['ydotaccent'] = 0x1E8F;
36018 t['ydotbelow'] = 0x1EF5;
36019 t['yeharabic'] = 0x064A;
36020 t['yehbarreearabic'] = 0x06D2;
36021 t['yehbarreefinalarabic'] = 0xFBAF;
36022 t['yehfinalarabic'] = 0xFEF2;
36023 t['yehhamzaabovearabic'] = 0x0626;
36024 t['yehhamzaabovefinalarabic'] = 0xFE8A;
36025 t['yehhamzaaboveinitialarabic'] = 0xFE8B;
36026 t['yehhamzaabovemedialarabic'] = 0xFE8C;
36027 t['yehinitialarabic'] = 0xFEF3;
36028 t['yehmedialarabic'] = 0xFEF4;
36029 t['yehmeeminitialarabic'] = 0xFCDD;
36030 t['yehmeemisolatedarabic'] = 0xFC58;
36031 t['yehnoonfinalarabic'] = 0xFC94;
36032 t['yehthreedotsbelowarabic'] = 0x06D1;
36033 t['yekorean'] = 0x3156;
36034 t['yen'] = 0x00A5;
36035 t['yenmonospace'] = 0xFFE5;
36036 t['yeokorean'] = 0x3155;
36037 t['yeorinhieuhkorean'] = 0x3186;
36038 t['yerahbenyomohebrew'] = 0x05AA;
36039 t['yerahbenyomolefthebrew'] = 0x05AA;
36040 t['yericyrillic'] = 0x044B;
36041 t['yerudieresiscyrillic'] = 0x04F9;
36042 t['yesieungkorean'] = 0x3181;
36043 t['yesieungpansioskorean'] = 0x3183;
36044 t['yesieungsioskorean'] = 0x3182;
36045 t['yetivhebrew'] = 0x059A;
36046 t['ygrave'] = 0x1EF3;
36047 t['yhook'] = 0x01B4;
36048 t['yhookabove'] = 0x1EF7;
36049 t['yiarmenian'] = 0x0575;
36050 t['yicyrillic'] = 0x0457;
36051 t['yikorean'] = 0x3162;
36052 t['yinyang'] = 0x262F;
36053 t['yiwnarmenian'] = 0x0582;
36054 t['ymonospace'] = 0xFF59;
36055 t['yod'] = 0x05D9;
36056 t['yoddagesh'] = 0xFB39;
36057 t['yoddageshhebrew'] = 0xFB39;
36058 t['yodhebrew'] = 0x05D9;
36059 t['yodyodhebrew'] = 0x05F2;
36060 t['yodyodpatahhebrew'] = 0xFB1F;
36061 t['yohiragana'] = 0x3088;
36062 t['yoikorean'] = 0x3189;
36063 t['yokatakana'] = 0x30E8;
36064 t['yokatakanahalfwidth'] = 0xFF96;
36065 t['yokorean'] = 0x315B;
36066 t['yosmallhiragana'] = 0x3087;
36067 t['yosmallkatakana'] = 0x30E7;
36068 t['yosmallkatakanahalfwidth'] = 0xFF6E;
36069 t['yotgreek'] = 0x03F3;
36070 t['yoyaekorean'] = 0x3188;
36071 t['yoyakorean'] = 0x3187;
36072 t['yoyakthai'] = 0x0E22;
36073 t['yoyingthai'] = 0x0E0D;
36074 t['yparen'] = 0x24B4;
36075 t['ypogegrammeni'] = 0x037A;
36076 t['ypogegrammenigreekcmb'] = 0x0345;
36077 t['yr'] = 0x01A6;
36078 t['yring'] = 0x1E99;
36079 t['ysuperior'] = 0x02B8;
36080 t['ytilde'] = 0x1EF9;
36081 t['yturned'] = 0x028E;
36082 t['yuhiragana'] = 0x3086;
36083 t['yuikorean'] = 0x318C;
36084 t['yukatakana'] = 0x30E6;
36085 t['yukatakanahalfwidth'] = 0xFF95;
36086 t['yukorean'] = 0x3160;
36087 t['yusbigcyrillic'] = 0x046B;
36088 t['yusbigiotifiedcyrillic'] = 0x046D;
36089 t['yuslittlecyrillic'] = 0x0467;
36090 t['yuslittleiotifiedcyrillic'] = 0x0469;
36091 t['yusmallhiragana'] = 0x3085;
36092 t['yusmallkatakana'] = 0x30E5;
36093 t['yusmallkatakanahalfwidth'] = 0xFF6D;
36094 t['yuyekorean'] = 0x318B;
36095 t['yuyeokorean'] = 0x318A;
36096 t['yyabengali'] = 0x09DF;
36097 t['yyadeva'] = 0x095F;
36098 t['z'] = 0x007A;
36099 t['zaarmenian'] = 0x0566;
36100 t['zacute'] = 0x017A;
36101 t['zadeva'] = 0x095B;
36102 t['zagurmukhi'] = 0x0A5B;
36103 t['zaharabic'] = 0x0638;
36104 t['zahfinalarabic'] = 0xFEC6;
36105 t['zahinitialarabic'] = 0xFEC7;
36106 t['zahiragana'] = 0x3056;
36107 t['zahmedialarabic'] = 0xFEC8;
36108 t['zainarabic'] = 0x0632;
36109 t['zainfinalarabic'] = 0xFEB0;
36110 t['zakatakana'] = 0x30B6;
36111 t['zaqefgadolhebrew'] = 0x0595;
36112 t['zaqefqatanhebrew'] = 0x0594;
36113 t['zarqahebrew'] = 0x0598;
36114 t['zayin'] = 0x05D6;
36115 t['zayindagesh'] = 0xFB36;
36116 t['zayindageshhebrew'] = 0xFB36;
36117 t['zayinhebrew'] = 0x05D6;
36118 t['zbopomofo'] = 0x3117;
36119 t['zcaron'] = 0x017E;
36120 t['zcircle'] = 0x24E9;
36121 t['zcircumflex'] = 0x1E91;
36122 t['zcurl'] = 0x0291;
36123 t['zdot'] = 0x017C;
36124 t['zdotaccent'] = 0x017C;
36125 t['zdotbelow'] = 0x1E93;
36126 t['zecyrillic'] = 0x0437;
36127 t['zedescendercyrillic'] = 0x0499;
36128 t['zedieresiscyrillic'] = 0x04DF;
36129 t['zehiragana'] = 0x305C;
36130 t['zekatakana'] = 0x30BC;
36131 t['zero'] = 0x0030;
36132 t['zeroarabic'] = 0x0660;
36133 t['zerobengali'] = 0x09E6;
36134 t['zerodeva'] = 0x0966;
36135 t['zerogujarati'] = 0x0AE6;
36136 t['zerogurmukhi'] = 0x0A66;
36137 t['zerohackarabic'] = 0x0660;
36138 t['zeroinferior'] = 0x2080;
36139 t['zeromonospace'] = 0xFF10;
36140 t['zerooldstyle'] = 0xF730;
36141 t['zeropersian'] = 0x06F0;
36142 t['zerosuperior'] = 0x2070;
36143 t['zerothai'] = 0x0E50;
36144 t['zerowidthjoiner'] = 0xFEFF;
36145 t['zerowidthnonjoiner'] = 0x200C;
36146 t['zerowidthspace'] = 0x200B;
36147 t['zeta'] = 0x03B6;
36148 t['zhbopomofo'] = 0x3113;
36149 t['zhearmenian'] = 0x056A;
36150 t['zhebrevecyrillic'] = 0x04C2;
36151 t['zhecyrillic'] = 0x0436;
36152 t['zhedescendercyrillic'] = 0x0497;
36153 t['zhedieresiscyrillic'] = 0x04DD;
36154 t['zihiragana'] = 0x3058;
36155 t['zikatakana'] = 0x30B8;
36156 t['zinorhebrew'] = 0x05AE;
36157 t['zlinebelow'] = 0x1E95;
36158 t['zmonospace'] = 0xFF5A;
36159 t['zohiragana'] = 0x305E;
36160 t['zokatakana'] = 0x30BE;
36161 t['zparen'] = 0x24B5;
36162 t['zretroflexhook'] = 0x0290;
36163 t['zstroke'] = 0x01B6;
36164 t['zuhiragana'] = 0x305A;
36165 t['zukatakana'] = 0x30BA;
36166 t['.notdef'] = 0x0000;
36167 t['angbracketleftbig'] = 0x2329;
36168 t['angbracketleftBig'] = 0x2329;
36169 t['angbracketleftbigg'] = 0x2329;
36170 t['angbracketleftBigg'] = 0x2329;
36171 t['angbracketrightBig'] = 0x232A;
36172 t['angbracketrightbig'] = 0x232A;
36173 t['angbracketrightBigg'] = 0x232A;
36174 t['angbracketrightbigg'] = 0x232A;
36175 t['arrowhookleft'] = 0x21AA;
36176 t['arrowhookright'] = 0x21A9;
36177 t['arrowlefttophalf'] = 0x21BC;
36178 t['arrowleftbothalf'] = 0x21BD;
36179 t['arrownortheast'] = 0x2197;
36180 t['arrownorthwest'] = 0x2196;
36181 t['arrowrighttophalf'] = 0x21C0;
36182 t['arrowrightbothalf'] = 0x21C1;
36183 t['arrowsoutheast'] = 0x2198;
36184 t['arrowsouthwest'] = 0x2199;
36185 t['backslashbig'] = 0x2216;
36186 t['backslashBig'] = 0x2216;
36187 t['backslashBigg'] = 0x2216;
36188 t['backslashbigg'] = 0x2216;
36189 t['bardbl'] = 0x2016;
36190 t['bracehtipdownleft'] = 0xFE37;
36191 t['bracehtipdownright'] = 0xFE37;
36192 t['bracehtipupleft'] = 0xFE38;
36193 t['bracehtipupright'] = 0xFE38;
36194 t['braceleftBig'] = 0x007B;
36195 t['braceleftbig'] = 0x007B;
36196 t['braceleftbigg'] = 0x007B;
36197 t['braceleftBigg'] = 0x007B;
36198 t['bracerightBig'] = 0x007D;
36199 t['bracerightbig'] = 0x007D;
36200 t['bracerightbigg'] = 0x007D;
36201 t['bracerightBigg'] = 0x007D;
36202 t['bracketleftbig'] = 0x005B;
36203 t['bracketleftBig'] = 0x005B;
36204 t['bracketleftbigg'] = 0x005B;
36205 t['bracketleftBigg'] = 0x005B;
36206 t['bracketrightBig'] = 0x005D;
36207 t['bracketrightbig'] = 0x005D;
36208 t['bracketrightbigg'] = 0x005D;
36209 t['bracketrightBigg'] = 0x005D;
36210 t['ceilingleftbig'] = 0x2308;
36211 t['ceilingleftBig'] = 0x2308;
36212 t['ceilingleftBigg'] = 0x2308;
36213 t['ceilingleftbigg'] = 0x2308;
36214 t['ceilingrightbig'] = 0x2309;
36215 t['ceilingrightBig'] = 0x2309;
36216 t['ceilingrightbigg'] = 0x2309;
36217 t['ceilingrightBigg'] = 0x2309;
36218 t['circledotdisplay'] = 0x2299;
36219 t['circledottext'] = 0x2299;
36220 t['circlemultiplydisplay'] = 0x2297;
36221 t['circlemultiplytext'] = 0x2297;
36222 t['circleplusdisplay'] = 0x2295;
36223 t['circleplustext'] = 0x2295;
36224 t['contintegraldisplay'] = 0x222E;
36225 t['contintegraltext'] = 0x222E;
36226 t['coproductdisplay'] = 0x2210;
36227 t['coproducttext'] = 0x2210;
36228 t['floorleftBig'] = 0x230A;
36229 t['floorleftbig'] = 0x230A;
36230 t['floorleftbigg'] = 0x230A;
36231 t['floorleftBigg'] = 0x230A;
36232 t['floorrightbig'] = 0x230B;
36233 t['floorrightBig'] = 0x230B;
36234 t['floorrightBigg'] = 0x230B;
36235 t['floorrightbigg'] = 0x230B;
36236 t['hatwide'] = 0x0302;
36237 t['hatwider'] = 0x0302;
36238 t['hatwidest'] = 0x0302;
36239 t['intercal'] = 0x1D40;
36240 t['integraldisplay'] = 0x222B;
36241 t['integraltext'] = 0x222B;
36242 t['intersectiondisplay'] = 0x22C2;
36243 t['intersectiontext'] = 0x22C2;
36244 t['logicalanddisplay'] = 0x2227;
36245 t['logicalandtext'] = 0x2227;
36246 t['logicalordisplay'] = 0x2228;
36247 t['logicalortext'] = 0x2228;
36248 t['parenleftBig'] = 0x0028;
36249 t['parenleftbig'] = 0x0028;
36250 t['parenleftBigg'] = 0x0028;
36251 t['parenleftbigg'] = 0x0028;
36252 t['parenrightBig'] = 0x0029;
36253 t['parenrightbig'] = 0x0029;
36254 t['parenrightBigg'] = 0x0029;
36255 t['parenrightbigg'] = 0x0029;
36256 t['prime'] = 0x2032;
36257 t['productdisplay'] = 0x220F;
36258 t['producttext'] = 0x220F;
36259 t['radicalbig'] = 0x221A;
36260 t['radicalBig'] = 0x221A;
36261 t['radicalBigg'] = 0x221A;
36262 t['radicalbigg'] = 0x221A;
36263 t['radicalbt'] = 0x221A;
36264 t['radicaltp'] = 0x221A;
36265 t['radicalvertex'] = 0x221A;
36266 t['slashbig'] = 0x002F;
36267 t['slashBig'] = 0x002F;
36268 t['slashBigg'] = 0x002F;
36269 t['slashbigg'] = 0x002F;
36270 t['summationdisplay'] = 0x2211;
36271 t['summationtext'] = 0x2211;
36272 t['tildewide'] = 0x02DC;
36273 t['tildewider'] = 0x02DC;
36274 t['tildewidest'] = 0x02DC;
36275 t['uniondisplay'] = 0x22C3;
36276 t['unionmultidisplay'] = 0x228E;
36277 t['unionmultitext'] = 0x228E;
36278 t['unionsqdisplay'] = 0x2294;
36279 t['unionsqtext'] = 0x2294;
36280 t['uniontext'] = 0x22C3;
36281 t['vextenddouble'] = 0x2225;
36282 t['vextendsingle'] = 0x2223;
36283});
36284var getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {
36285 t['space'] = 0x0020;
36286 t['a1'] = 0x2701;
36287 t['a2'] = 0x2702;
36288 t['a202'] = 0x2703;
36289 t['a3'] = 0x2704;
36290 t['a4'] = 0x260E;
36291 t['a5'] = 0x2706;
36292 t['a119'] = 0x2707;
36293 t['a118'] = 0x2708;
36294 t['a117'] = 0x2709;
36295 t['a11'] = 0x261B;
36296 t['a12'] = 0x261E;
36297 t['a13'] = 0x270C;
36298 t['a14'] = 0x270D;
36299 t['a15'] = 0x270E;
36300 t['a16'] = 0x270F;
36301 t['a105'] = 0x2710;
36302 t['a17'] = 0x2711;
36303 t['a18'] = 0x2712;
36304 t['a19'] = 0x2713;
36305 t['a20'] = 0x2714;
36306 t['a21'] = 0x2715;
36307 t['a22'] = 0x2716;
36308 t['a23'] = 0x2717;
36309 t['a24'] = 0x2718;
36310 t['a25'] = 0x2719;
36311 t['a26'] = 0x271A;
36312 t['a27'] = 0x271B;
36313 t['a28'] = 0x271C;
36314 t['a6'] = 0x271D;
36315 t['a7'] = 0x271E;
36316 t['a8'] = 0x271F;
36317 t['a9'] = 0x2720;
36318 t['a10'] = 0x2721;
36319 t['a29'] = 0x2722;
36320 t['a30'] = 0x2723;
36321 t['a31'] = 0x2724;
36322 t['a32'] = 0x2725;
36323 t['a33'] = 0x2726;
36324 t['a34'] = 0x2727;
36325 t['a35'] = 0x2605;
36326 t['a36'] = 0x2729;
36327 t['a37'] = 0x272A;
36328 t['a38'] = 0x272B;
36329 t['a39'] = 0x272C;
36330 t['a40'] = 0x272D;
36331 t['a41'] = 0x272E;
36332 t['a42'] = 0x272F;
36333 t['a43'] = 0x2730;
36334 t['a44'] = 0x2731;
36335 t['a45'] = 0x2732;
36336 t['a46'] = 0x2733;
36337 t['a47'] = 0x2734;
36338 t['a48'] = 0x2735;
36339 t['a49'] = 0x2736;
36340 t['a50'] = 0x2737;
36341 t['a51'] = 0x2738;
36342 t['a52'] = 0x2739;
36343 t['a53'] = 0x273A;
36344 t['a54'] = 0x273B;
36345 t['a55'] = 0x273C;
36346 t['a56'] = 0x273D;
36347 t['a57'] = 0x273E;
36348 t['a58'] = 0x273F;
36349 t['a59'] = 0x2740;
36350 t['a60'] = 0x2741;
36351 t['a61'] = 0x2742;
36352 t['a62'] = 0x2743;
36353 t['a63'] = 0x2744;
36354 t['a64'] = 0x2745;
36355 t['a65'] = 0x2746;
36356 t['a66'] = 0x2747;
36357 t['a67'] = 0x2748;
36358 t['a68'] = 0x2749;
36359 t['a69'] = 0x274A;
36360 t['a70'] = 0x274B;
36361 t['a71'] = 0x25CF;
36362 t['a72'] = 0x274D;
36363 t['a73'] = 0x25A0;
36364 t['a74'] = 0x274F;
36365 t['a203'] = 0x2750;
36366 t['a75'] = 0x2751;
36367 t['a204'] = 0x2752;
36368 t['a76'] = 0x25B2;
36369 t['a77'] = 0x25BC;
36370 t['a78'] = 0x25C6;
36371 t['a79'] = 0x2756;
36372 t['a81'] = 0x25D7;
36373 t['a82'] = 0x2758;
36374 t['a83'] = 0x2759;
36375 t['a84'] = 0x275A;
36376 t['a97'] = 0x275B;
36377 t['a98'] = 0x275C;
36378 t['a99'] = 0x275D;
36379 t['a100'] = 0x275E;
36380 t['a101'] = 0x2761;
36381 t['a102'] = 0x2762;
36382 t['a103'] = 0x2763;
36383 t['a104'] = 0x2764;
36384 t['a106'] = 0x2765;
36385 t['a107'] = 0x2766;
36386 t['a108'] = 0x2767;
36387 t['a112'] = 0x2663;
36388 t['a111'] = 0x2666;
36389 t['a110'] = 0x2665;
36390 t['a109'] = 0x2660;
36391 t['a120'] = 0x2460;
36392 t['a121'] = 0x2461;
36393 t['a122'] = 0x2462;
36394 t['a123'] = 0x2463;
36395 t['a124'] = 0x2464;
36396 t['a125'] = 0x2465;
36397 t['a126'] = 0x2466;
36398 t['a127'] = 0x2467;
36399 t['a128'] = 0x2468;
36400 t['a129'] = 0x2469;
36401 t['a130'] = 0x2776;
36402 t['a131'] = 0x2777;
36403 t['a132'] = 0x2778;
36404 t['a133'] = 0x2779;
36405 t['a134'] = 0x277A;
36406 t['a135'] = 0x277B;
36407 t['a136'] = 0x277C;
36408 t['a137'] = 0x277D;
36409 t['a138'] = 0x277E;
36410 t['a139'] = 0x277F;
36411 t['a140'] = 0x2780;
36412 t['a141'] = 0x2781;
36413 t['a142'] = 0x2782;
36414 t['a143'] = 0x2783;
36415 t['a144'] = 0x2784;
36416 t['a145'] = 0x2785;
36417 t['a146'] = 0x2786;
36418 t['a147'] = 0x2787;
36419 t['a148'] = 0x2788;
36420 t['a149'] = 0x2789;
36421 t['a150'] = 0x278A;
36422 t['a151'] = 0x278B;
36423 t['a152'] = 0x278C;
36424 t['a153'] = 0x278D;
36425 t['a154'] = 0x278E;
36426 t['a155'] = 0x278F;
36427 t['a156'] = 0x2790;
36428 t['a157'] = 0x2791;
36429 t['a158'] = 0x2792;
36430 t['a159'] = 0x2793;
36431 t['a160'] = 0x2794;
36432 t['a161'] = 0x2192;
36433 t['a163'] = 0x2194;
36434 t['a164'] = 0x2195;
36435 t['a196'] = 0x2798;
36436 t['a165'] = 0x2799;
36437 t['a192'] = 0x279A;
36438 t['a166'] = 0x279B;
36439 t['a167'] = 0x279C;
36440 t['a168'] = 0x279D;
36441 t['a169'] = 0x279E;
36442 t['a170'] = 0x279F;
36443 t['a171'] = 0x27A0;
36444 t['a172'] = 0x27A1;
36445 t['a173'] = 0x27A2;
36446 t['a162'] = 0x27A3;
36447 t['a174'] = 0x27A4;
36448 t['a175'] = 0x27A5;
36449 t['a176'] = 0x27A6;
36450 t['a177'] = 0x27A7;
36451 t['a178'] = 0x27A8;
36452 t['a179'] = 0x27A9;
36453 t['a193'] = 0x27AA;
36454 t['a180'] = 0x27AB;
36455 t['a199'] = 0x27AC;
36456 t['a181'] = 0x27AD;
36457 t['a200'] = 0x27AE;
36458 t['a182'] = 0x27AF;
36459 t['a201'] = 0x27B1;
36460 t['a183'] = 0x27B2;
36461 t['a184'] = 0x27B3;
36462 t['a197'] = 0x27B4;
36463 t['a185'] = 0x27B5;
36464 t['a194'] = 0x27B6;
36465 t['a198'] = 0x27B7;
36466 t['a186'] = 0x27B8;
36467 t['a195'] = 0x27B9;
36468 t['a187'] = 0x27BA;
36469 t['a188'] = 0x27BB;
36470 t['a189'] = 0x27BC;
36471 t['a190'] = 0x27BD;
36472 t['a191'] = 0x27BE;
36473 t['a89'] = 0x2768;
36474 t['a90'] = 0x2769;
36475 t['a93'] = 0x276A;
36476 t['a94'] = 0x276B;
36477 t['a91'] = 0x276C;
36478 t['a92'] = 0x276D;
36479 t['a205'] = 0x276E;
36480 t['a85'] = 0x276F;
36481 t['a206'] = 0x2770;
36482 t['a86'] = 0x2771;
36483 t['a87'] = 0x2772;
36484 t['a88'] = 0x2773;
36485 t['a95'] = 0x2774;
36486 t['a96'] = 0x2775;
36487 t['.notdef'] = 0x0000;
36488});
36489exports.getGlyphsUnicode = getGlyphsUnicode;
36490exports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode;
36491
36492/***/ }),
36493/* 161 */
36494/***/ (function(module, exports, __w_pdfjs_require__) {
36495
36496"use strict";
36497
36498
36499Object.defineProperty(exports, "__esModule", {
36500  value: true
36501});
36502exports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getGlyphMapForStandardFonts = exports.getSymbolsFonts = exports.getSerifFonts = exports.getNonStdFontMap = exports.getStdFontMap = undefined;
36503
36504var _util = __w_pdfjs_require__(2);
36505
36506var getStdFontMap = (0, _util.getLookupTableFactory)(function (t) {
36507  t['ArialNarrow'] = 'Helvetica';
36508  t['ArialNarrow-Bold'] = 'Helvetica-Bold';
36509  t['ArialNarrow-BoldItalic'] = 'Helvetica-BoldOblique';
36510  t['ArialNarrow-Italic'] = 'Helvetica-Oblique';
36511  t['ArialBlack'] = 'Helvetica';
36512  t['ArialBlack-Bold'] = 'Helvetica-Bold';
36513  t['ArialBlack-BoldItalic'] = 'Helvetica-BoldOblique';
36514  t['ArialBlack-Italic'] = 'Helvetica-Oblique';
36515  t['Arial-Black'] = 'Helvetica';
36516  t['Arial-Black-Bold'] = 'Helvetica-Bold';
36517  t['Arial-Black-BoldItalic'] = 'Helvetica-BoldOblique';
36518  t['Arial-Black-Italic'] = 'Helvetica-Oblique';
36519  t['Arial'] = 'Helvetica';
36520  t['Arial-Bold'] = 'Helvetica-Bold';
36521  t['Arial-BoldItalic'] = 'Helvetica-BoldOblique';
36522  t['Arial-Italic'] = 'Helvetica-Oblique';
36523  t['Arial-BoldItalicMT'] = 'Helvetica-BoldOblique';
36524  t['Arial-BoldMT'] = 'Helvetica-Bold';
36525  t['Arial-ItalicMT'] = 'Helvetica-Oblique';
36526  t['ArialMT'] = 'Helvetica';
36527  t['Courier-Bold'] = 'Courier-Bold';
36528  t['Courier-BoldItalic'] = 'Courier-BoldOblique';
36529  t['Courier-Italic'] = 'Courier-Oblique';
36530  t['CourierNew'] = 'Courier';
36531  t['CourierNew-Bold'] = 'Courier-Bold';
36532  t['CourierNew-BoldItalic'] = 'Courier-BoldOblique';
36533  t['CourierNew-Italic'] = 'Courier-Oblique';
36534  t['CourierNewPS-BoldItalicMT'] = 'Courier-BoldOblique';
36535  t['CourierNewPS-BoldMT'] = 'Courier-Bold';
36536  t['CourierNewPS-ItalicMT'] = 'Courier-Oblique';
36537  t['CourierNewPSMT'] = 'Courier';
36538  t['Helvetica'] = 'Helvetica';
36539  t['Helvetica-Bold'] = 'Helvetica-Bold';
36540  t['Helvetica-BoldItalic'] = 'Helvetica-BoldOblique';
36541  t['Helvetica-BoldOblique'] = 'Helvetica-BoldOblique';
36542  t['Helvetica-Italic'] = 'Helvetica-Oblique';
36543  t['Helvetica-Oblique'] = 'Helvetica-Oblique';
36544  t['SegoeUISymbol'] = 'Helvetica';
36545  t['Symbol-Bold'] = 'Symbol';
36546  t['Symbol-BoldItalic'] = 'Symbol';
36547  t['Symbol-Italic'] = 'Symbol';
36548  t['TimesNewRoman'] = 'Times-Roman';
36549  t['TimesNewRoman-Bold'] = 'Times-Bold';
36550  t['TimesNewRoman-BoldItalic'] = 'Times-BoldItalic';
36551  t['TimesNewRoman-Italic'] = 'Times-Italic';
36552  t['TimesNewRomanPS'] = 'Times-Roman';
36553  t['TimesNewRomanPS-Bold'] = 'Times-Bold';
36554  t['TimesNewRomanPS-BoldItalic'] = 'Times-BoldItalic';
36555  t['TimesNewRomanPS-BoldItalicMT'] = 'Times-BoldItalic';
36556  t['TimesNewRomanPS-BoldMT'] = 'Times-Bold';
36557  t['TimesNewRomanPS-Italic'] = 'Times-Italic';
36558  t['TimesNewRomanPS-ItalicMT'] = 'Times-Italic';
36559  t['TimesNewRomanPSMT'] = 'Times-Roman';
36560  t['TimesNewRomanPSMT-Bold'] = 'Times-Bold';
36561  t['TimesNewRomanPSMT-BoldItalic'] = 'Times-BoldItalic';
36562  t['TimesNewRomanPSMT-Italic'] = 'Times-Italic';
36563});
36564var getNonStdFontMap = (0, _util.getLookupTableFactory)(function (t) {
36565  t['Calibri'] = 'Helvetica';
36566  t['Calibri-Bold'] = 'Helvetica-Bold';
36567  t['Calibri-BoldItalic'] = 'Helvetica-BoldOblique';
36568  t['Calibri-Italic'] = 'Helvetica-Oblique';
36569  t['CenturyGothic'] = 'Helvetica';
36570  t['CenturyGothic-Bold'] = 'Helvetica-Bold';
36571  t['CenturyGothic-BoldItalic'] = 'Helvetica-BoldOblique';
36572  t['CenturyGothic-Italic'] = 'Helvetica-Oblique';
36573  t['ComicSansMS'] = 'Comic Sans MS';
36574  t['ComicSansMS-Bold'] = 'Comic Sans MS-Bold';
36575  t['ComicSansMS-BoldItalic'] = 'Comic Sans MS-BoldItalic';
36576  t['ComicSansMS-Italic'] = 'Comic Sans MS-Italic';
36577  t['LucidaConsole'] = 'Courier';
36578  t['LucidaConsole-Bold'] = 'Courier-Bold';
36579  t['LucidaConsole-BoldItalic'] = 'Courier-BoldOblique';
36580  t['LucidaConsole-Italic'] = 'Courier-Oblique';
36581  t['LucidaSans-Demi'] = 'Helvetica-Bold';
36582  t['MS-Gothic'] = 'MS Gothic';
36583  t['MS-Gothic-Bold'] = 'MS Gothic-Bold';
36584  t['MS-Gothic-BoldItalic'] = 'MS Gothic-BoldItalic';
36585  t['MS-Gothic-Italic'] = 'MS Gothic-Italic';
36586  t['MS-Mincho'] = 'MS Mincho';
36587  t['MS-Mincho-Bold'] = 'MS Mincho-Bold';
36588  t['MS-Mincho-BoldItalic'] = 'MS Mincho-BoldItalic';
36589  t['MS-Mincho-Italic'] = 'MS Mincho-Italic';
36590  t['MS-PGothic'] = 'MS PGothic';
36591  t['MS-PGothic-Bold'] = 'MS PGothic-Bold';
36592  t['MS-PGothic-BoldItalic'] = 'MS PGothic-BoldItalic';
36593  t['MS-PGothic-Italic'] = 'MS PGothic-Italic';
36594  t['MS-PMincho'] = 'MS PMincho';
36595  t['MS-PMincho-Bold'] = 'MS PMincho-Bold';
36596  t['MS-PMincho-BoldItalic'] = 'MS PMincho-BoldItalic';
36597  t['MS-PMincho-Italic'] = 'MS PMincho-Italic';
36598  t['NuptialScript'] = 'Times-Italic';
36599  t['Wingdings'] = 'ZapfDingbats';
36600});
36601var getSerifFonts = (0, _util.getLookupTableFactory)(function (t) {
36602  t['Adobe Jenson'] = true;
36603  t['Adobe Text'] = true;
36604  t['Albertus'] = true;
36605  t['Aldus'] = true;
36606  t['Alexandria'] = true;
36607  t['Algerian'] = true;
36608  t['American Typewriter'] = true;
36609  t['Antiqua'] = true;
36610  t['Apex'] = true;
36611  t['Arno'] = true;
36612  t['Aster'] = true;
36613  t['Aurora'] = true;
36614  t['Baskerville'] = true;
36615  t['Bell'] = true;
36616  t['Bembo'] = true;
36617  t['Bembo Schoolbook'] = true;
36618  t['Benguiat'] = true;
36619  t['Berkeley Old Style'] = true;
36620  t['Bernhard Modern'] = true;
36621  t['Berthold City'] = true;
36622  t['Bodoni'] = true;
36623  t['Bauer Bodoni'] = true;
36624  t['Book Antiqua'] = true;
36625  t['Bookman'] = true;
36626  t['Bordeaux Roman'] = true;
36627  t['Californian FB'] = true;
36628  t['Calisto'] = true;
36629  t['Calvert'] = true;
36630  t['Capitals'] = true;
36631  t['Cambria'] = true;
36632  t['Cartier'] = true;
36633  t['Caslon'] = true;
36634  t['Catull'] = true;
36635  t['Centaur'] = true;
36636  t['Century Old Style'] = true;
36637  t['Century Schoolbook'] = true;
36638  t['Chaparral'] = true;
36639  t['Charis SIL'] = true;
36640  t['Cheltenham'] = true;
36641  t['Cholla Slab'] = true;
36642  t['Clarendon'] = true;
36643  t['Clearface'] = true;
36644  t['Cochin'] = true;
36645  t['Colonna'] = true;
36646  t['Computer Modern'] = true;
36647  t['Concrete Roman'] = true;
36648  t['Constantia'] = true;
36649  t['Cooper Black'] = true;
36650  t['Corona'] = true;
36651  t['Ecotype'] = true;
36652  t['Egyptienne'] = true;
36653  t['Elephant'] = true;
36654  t['Excelsior'] = true;
36655  t['Fairfield'] = true;
36656  t['FF Scala'] = true;
36657  t['Folkard'] = true;
36658  t['Footlight'] = true;
36659  t['FreeSerif'] = true;
36660  t['Friz Quadrata'] = true;
36661  t['Garamond'] = true;
36662  t['Gentium'] = true;
36663  t['Georgia'] = true;
36664  t['Gloucester'] = true;
36665  t['Goudy Old Style'] = true;
36666  t['Goudy Schoolbook'] = true;
36667  t['Goudy Pro Font'] = true;
36668  t['Granjon'] = true;
36669  t['Guardian Egyptian'] = true;
36670  t['Heather'] = true;
36671  t['Hercules'] = true;
36672  t['High Tower Text'] = true;
36673  t['Hiroshige'] = true;
36674  t['Hoefler Text'] = true;
36675  t['Humana Serif'] = true;
36676  t['Imprint'] = true;
36677  t['Ionic No. 5'] = true;
36678  t['Janson'] = true;
36679  t['Joanna'] = true;
36680  t['Korinna'] = true;
36681  t['Lexicon'] = true;
36682  t['Liberation Serif'] = true;
36683  t['Linux Libertine'] = true;
36684  t['Literaturnaya'] = true;
36685  t['Lucida'] = true;
36686  t['Lucida Bright'] = true;
36687  t['Melior'] = true;
36688  t['Memphis'] = true;
36689  t['Miller'] = true;
36690  t['Minion'] = true;
36691  t['Modern'] = true;
36692  t['Mona Lisa'] = true;
36693  t['Mrs Eaves'] = true;
36694  t['MS Serif'] = true;
36695  t['Museo Slab'] = true;
36696  t['New York'] = true;
36697  t['Nimbus Roman'] = true;
36698  t['NPS Rawlinson Roadway'] = true;
36699  t['NuptialScript'] = true;
36700  t['Palatino'] = true;
36701  t['Perpetua'] = true;
36702  t['Plantin'] = true;
36703  t['Plantin Schoolbook'] = true;
36704  t['Playbill'] = true;
36705  t['Poor Richard'] = true;
36706  t['Rawlinson Roadway'] = true;
36707  t['Renault'] = true;
36708  t['Requiem'] = true;
36709  t['Rockwell'] = true;
36710  t['Roman'] = true;
36711  t['Rotis Serif'] = true;
36712  t['Sabon'] = true;
36713  t['Scala'] = true;
36714  t['Seagull'] = true;
36715  t['Sistina'] = true;
36716  t['Souvenir'] = true;
36717  t['STIX'] = true;
36718  t['Stone Informal'] = true;
36719  t['Stone Serif'] = true;
36720  t['Sylfaen'] = true;
36721  t['Times'] = true;
36722  t['Trajan'] = true;
36723  t['Trump Mediaeval'] = true;
36724  t['Utopia'] = true;
36725  t['Vale Type'] = true;
36726  t['Bitstream Vera'] = true;
36727  t['Vera Serif'] = true;
36728  t['Versailles'] = true;
36729  t['Wanted'] = true;
36730  t['Weiss'] = true;
36731  t['Wide Latin'] = true;
36732  t['Windsor'] = true;
36733  t['XITS'] = true;
36734});
36735var getSymbolsFonts = (0, _util.getLookupTableFactory)(function (t) {
36736  t['Dingbats'] = true;
36737  t['Symbol'] = true;
36738  t['ZapfDingbats'] = true;
36739});
36740var getGlyphMapForStandardFonts = (0, _util.getLookupTableFactory)(function (t) {
36741  t[2] = 10;
36742  t[3] = 32;
36743  t[4] = 33;
36744  t[5] = 34;
36745  t[6] = 35;
36746  t[7] = 36;
36747  t[8] = 37;
36748  t[9] = 38;
36749  t[10] = 39;
36750  t[11] = 40;
36751  t[12] = 41;
36752  t[13] = 42;
36753  t[14] = 43;
36754  t[15] = 44;
36755  t[16] = 45;
36756  t[17] = 46;
36757  t[18] = 47;
36758  t[19] = 48;
36759  t[20] = 49;
36760  t[21] = 50;
36761  t[22] = 51;
36762  t[23] = 52;
36763  t[24] = 53;
36764  t[25] = 54;
36765  t[26] = 55;
36766  t[27] = 56;
36767  t[28] = 57;
36768  t[29] = 58;
36769  t[30] = 894;
36770  t[31] = 60;
36771  t[32] = 61;
36772  t[33] = 62;
36773  t[34] = 63;
36774  t[35] = 64;
36775  t[36] = 65;
36776  t[37] = 66;
36777  t[38] = 67;
36778  t[39] = 68;
36779  t[40] = 69;
36780  t[41] = 70;
36781  t[42] = 71;
36782  t[43] = 72;
36783  t[44] = 73;
36784  t[45] = 74;
36785  t[46] = 75;
36786  t[47] = 76;
36787  t[48] = 77;
36788  t[49] = 78;
36789  t[50] = 79;
36790  t[51] = 80;
36791  t[52] = 81;
36792  t[53] = 82;
36793  t[54] = 83;
36794  t[55] = 84;
36795  t[56] = 85;
36796  t[57] = 86;
36797  t[58] = 87;
36798  t[59] = 88;
36799  t[60] = 89;
36800  t[61] = 90;
36801  t[62] = 91;
36802  t[63] = 92;
36803  t[64] = 93;
36804  t[65] = 94;
36805  t[66] = 95;
36806  t[67] = 96;
36807  t[68] = 97;
36808  t[69] = 98;
36809  t[70] = 99;
36810  t[71] = 100;
36811  t[72] = 101;
36812  t[73] = 102;
36813  t[74] = 103;
36814  t[75] = 104;
36815  t[76] = 105;
36816  t[77] = 106;
36817  t[78] = 107;
36818  t[79] = 108;
36819  t[80] = 109;
36820  t[81] = 110;
36821  t[82] = 111;
36822  t[83] = 112;
36823  t[84] = 113;
36824  t[85] = 114;
36825  t[86] = 115;
36826  t[87] = 116;
36827  t[88] = 117;
36828  t[89] = 118;
36829  t[90] = 119;
36830  t[91] = 120;
36831  t[92] = 121;
36832  t[93] = 122;
36833  t[94] = 123;
36834  t[95] = 124;
36835  t[96] = 125;
36836  t[97] = 126;
36837  t[98] = 196;
36838  t[99] = 197;
36839  t[100] = 199;
36840  t[101] = 201;
36841  t[102] = 209;
36842  t[103] = 214;
36843  t[104] = 220;
36844  t[105] = 225;
36845  t[106] = 224;
36846  t[107] = 226;
36847  t[108] = 228;
36848  t[109] = 227;
36849  t[110] = 229;
36850  t[111] = 231;
36851  t[112] = 233;
36852  t[113] = 232;
36853  t[114] = 234;
36854  t[115] = 235;
36855  t[116] = 237;
36856  t[117] = 236;
36857  t[118] = 238;
36858  t[119] = 239;
36859  t[120] = 241;
36860  t[121] = 243;
36861  t[122] = 242;
36862  t[123] = 244;
36863  t[124] = 246;
36864  t[125] = 245;
36865  t[126] = 250;
36866  t[127] = 249;
36867  t[128] = 251;
36868  t[129] = 252;
36869  t[130] = 8224;
36870  t[131] = 176;
36871  t[132] = 162;
36872  t[133] = 163;
36873  t[134] = 167;
36874  t[135] = 8226;
36875  t[136] = 182;
36876  t[137] = 223;
36877  t[138] = 174;
36878  t[139] = 169;
36879  t[140] = 8482;
36880  t[141] = 180;
36881  t[142] = 168;
36882  t[143] = 8800;
36883  t[144] = 198;
36884  t[145] = 216;
36885  t[146] = 8734;
36886  t[147] = 177;
36887  t[148] = 8804;
36888  t[149] = 8805;
36889  t[150] = 165;
36890  t[151] = 181;
36891  t[152] = 8706;
36892  t[153] = 8721;
36893  t[154] = 8719;
36894  t[156] = 8747;
36895  t[157] = 170;
36896  t[158] = 186;
36897  t[159] = 8486;
36898  t[160] = 230;
36899  t[161] = 248;
36900  t[162] = 191;
36901  t[163] = 161;
36902  t[164] = 172;
36903  t[165] = 8730;
36904  t[166] = 402;
36905  t[167] = 8776;
36906  t[168] = 8710;
36907  t[169] = 171;
36908  t[170] = 187;
36909  t[171] = 8230;
36910  t[210] = 218;
36911  t[223] = 711;
36912  t[224] = 321;
36913  t[225] = 322;
36914  t[227] = 353;
36915  t[229] = 382;
36916  t[234] = 253;
36917  t[252] = 263;
36918  t[253] = 268;
36919  t[254] = 269;
36920  t[258] = 258;
36921  t[260] = 260;
36922  t[261] = 261;
36923  t[265] = 280;
36924  t[266] = 281;
36925  t[268] = 283;
36926  t[269] = 313;
36927  t[275] = 323;
36928  t[276] = 324;
36929  t[278] = 328;
36930  t[284] = 345;
36931  t[285] = 346;
36932  t[286] = 347;
36933  t[292] = 367;
36934  t[295] = 377;
36935  t[296] = 378;
36936  t[298] = 380;
36937  t[305] = 963;
36938  t[306] = 964;
36939  t[307] = 966;
36940  t[308] = 8215;
36941  t[309] = 8252;
36942  t[310] = 8319;
36943  t[311] = 8359;
36944  t[312] = 8592;
36945  t[313] = 8593;
36946  t[337] = 9552;
36947  t[493] = 1039;
36948  t[494] = 1040;
36949  t[705] = 1524;
36950  t[706] = 8362;
36951  t[710] = 64288;
36952  t[711] = 64298;
36953  t[759] = 1617;
36954  t[761] = 1776;
36955  t[763] = 1778;
36956  t[775] = 1652;
36957  t[777] = 1764;
36958  t[778] = 1780;
36959  t[779] = 1781;
36960  t[780] = 1782;
36961  t[782] = 771;
36962  t[783] = 64726;
36963  t[786] = 8363;
36964  t[788] = 8532;
36965  t[790] = 768;
36966  t[791] = 769;
36967  t[792] = 768;
36968  t[795] = 803;
36969  t[797] = 64336;
36970  t[798] = 64337;
36971  t[799] = 64342;
36972  t[800] = 64343;
36973  t[801] = 64344;
36974  t[802] = 64345;
36975  t[803] = 64362;
36976  t[804] = 64363;
36977  t[805] = 64364;
36978  t[2424] = 7821;
36979  t[2425] = 7822;
36980  t[2426] = 7823;
36981  t[2427] = 7824;
36982  t[2428] = 7825;
36983  t[2429] = 7826;
36984  t[2430] = 7827;
36985  t[2433] = 7682;
36986  t[2678] = 8045;
36987  t[2679] = 8046;
36988  t[2830] = 1552;
36989  t[2838] = 686;
36990  t[2840] = 751;
36991  t[2842] = 753;
36992  t[2843] = 754;
36993  t[2844] = 755;
36994  t[2846] = 757;
36995  t[2856] = 767;
36996  t[2857] = 848;
36997  t[2858] = 849;
36998  t[2862] = 853;
36999  t[2863] = 854;
37000  t[2864] = 855;
37001  t[2865] = 861;
37002  t[2866] = 862;
37003  t[2906] = 7460;
37004  t[2908] = 7462;
37005  t[2909] = 7463;
37006  t[2910] = 7464;
37007  t[2912] = 7466;
37008  t[2913] = 7467;
37009  t[2914] = 7468;
37010  t[2916] = 7470;
37011  t[2917] = 7471;
37012  t[2918] = 7472;
37013  t[2920] = 7474;
37014  t[2921] = 7475;
37015  t[2922] = 7476;
37016  t[2924] = 7478;
37017  t[2925] = 7479;
37018  t[2926] = 7480;
37019  t[2928] = 7482;
37020  t[2929] = 7483;
37021  t[2930] = 7484;
37022  t[2932] = 7486;
37023  t[2933] = 7487;
37024  t[2934] = 7488;
37025  t[2936] = 7490;
37026  t[2937] = 7491;
37027  t[2938] = 7492;
37028  t[2940] = 7494;
37029  t[2941] = 7495;
37030  t[2942] = 7496;
37031  t[2944] = 7498;
37032  t[2946] = 7500;
37033  t[2948] = 7502;
37034  t[2950] = 7504;
37035  t[2951] = 7505;
37036  t[2952] = 7506;
37037  t[2954] = 7508;
37038  t[2955] = 7509;
37039  t[2956] = 7510;
37040  t[2958] = 7512;
37041  t[2959] = 7513;
37042  t[2960] = 7514;
37043  t[2962] = 7516;
37044  t[2963] = 7517;
37045  t[2964] = 7518;
37046  t[2966] = 7520;
37047  t[2967] = 7521;
37048  t[2968] = 7522;
37049  t[2970] = 7524;
37050  t[2971] = 7525;
37051  t[2972] = 7526;
37052  t[2974] = 7528;
37053  t[2975] = 7529;
37054  t[2976] = 7530;
37055  t[2978] = 1537;
37056  t[2979] = 1538;
37057  t[2980] = 1539;
37058  t[2982] = 1549;
37059  t[2983] = 1551;
37060  t[2984] = 1552;
37061  t[2986] = 1554;
37062  t[2987] = 1555;
37063  t[2988] = 1556;
37064  t[2990] = 1623;
37065  t[2991] = 1624;
37066  t[2995] = 1775;
37067  t[2999] = 1791;
37068  t[3002] = 64290;
37069  t[3003] = 64291;
37070  t[3004] = 64292;
37071  t[3006] = 64294;
37072  t[3007] = 64295;
37073  t[3008] = 64296;
37074  t[3011] = 1900;
37075  t[3014] = 8223;
37076  t[3015] = 8244;
37077  t[3017] = 7532;
37078  t[3018] = 7533;
37079  t[3019] = 7534;
37080  t[3075] = 7590;
37081  t[3076] = 7591;
37082  t[3079] = 7594;
37083  t[3080] = 7595;
37084  t[3083] = 7598;
37085  t[3084] = 7599;
37086  t[3087] = 7602;
37087  t[3088] = 7603;
37088  t[3091] = 7606;
37089  t[3092] = 7607;
37090  t[3095] = 7610;
37091  t[3096] = 7611;
37092  t[3099] = 7614;
37093  t[3100] = 7615;
37094  t[3103] = 7618;
37095  t[3104] = 7619;
37096  t[3107] = 8337;
37097  t[3108] = 8338;
37098  t[3116] = 1884;
37099  t[3119] = 1885;
37100  t[3120] = 1885;
37101  t[3123] = 1886;
37102  t[3124] = 1886;
37103  t[3127] = 1887;
37104  t[3128] = 1887;
37105  t[3131] = 1888;
37106  t[3132] = 1888;
37107  t[3135] = 1889;
37108  t[3136] = 1889;
37109  t[3139] = 1890;
37110  t[3140] = 1890;
37111  t[3143] = 1891;
37112  t[3144] = 1891;
37113  t[3147] = 1892;
37114  t[3148] = 1892;
37115  t[3153] = 580;
37116  t[3154] = 581;
37117  t[3157] = 584;
37118  t[3158] = 585;
37119  t[3161] = 588;
37120  t[3162] = 589;
37121  t[3165] = 891;
37122  t[3166] = 892;
37123  t[3169] = 1274;
37124  t[3170] = 1275;
37125  t[3173] = 1278;
37126  t[3174] = 1279;
37127  t[3181] = 7622;
37128  t[3182] = 7623;
37129  t[3282] = 11799;
37130  t[3316] = 578;
37131  t[3379] = 42785;
37132  t[3393] = 1159;
37133  t[3416] = 8377;
37134});
37135var getSupplementalGlyphMapForArialBlack = (0, _util.getLookupTableFactory)(function (t) {
37136  t[227] = 322;
37137  t[264] = 261;
37138  t[291] = 346;
37139});
37140var getSupplementalGlyphMapForCalibri = (0, _util.getLookupTableFactory)(function (t) {
37141  t[1] = 32;
37142  t[4] = 65;
37143  t[17] = 66;
37144  t[18] = 67;
37145  t[24] = 68;
37146  t[28] = 69;
37147  t[38] = 70;
37148  t[39] = 71;
37149  t[44] = 72;
37150  t[47] = 73;
37151  t[58] = 74;
37152  t[60] = 75;
37153  t[62] = 76;
37154  t[68] = 77;
37155  t[69] = 78;
37156  t[75] = 79;
37157  t[87] = 80;
37158  t[89] = 81;
37159  t[90] = 82;
37160  t[94] = 83;
37161  t[100] = 84;
37162  t[104] = 85;
37163  t[115] = 86;
37164  t[116] = 87;
37165  t[121] = 88;
37166  t[122] = 89;
37167  t[127] = 90;
37168  t[258] = 97;
37169  t[268] = 261;
37170  t[271] = 98;
37171  t[272] = 99;
37172  t[273] = 263;
37173  t[282] = 100;
37174  t[286] = 101;
37175  t[295] = 281;
37176  t[296] = 102;
37177  t[336] = 103;
37178  t[346] = 104;
37179  t[349] = 105;
37180  t[361] = 106;
37181  t[364] = 107;
37182  t[367] = 108;
37183  t[371] = 322;
37184  t[373] = 109;
37185  t[374] = 110;
37186  t[381] = 111;
37187  t[383] = 243;
37188  t[393] = 112;
37189  t[395] = 113;
37190  t[396] = 114;
37191  t[400] = 115;
37192  t[401] = 347;
37193  t[410] = 116;
37194  t[437] = 117;
37195  t[448] = 118;
37196  t[449] = 119;
37197  t[454] = 120;
37198  t[455] = 121;
37199  t[460] = 122;
37200  t[463] = 380;
37201  t[853] = 44;
37202  t[855] = 58;
37203  t[856] = 46;
37204  t[876] = 47;
37205  t[878] = 45;
37206  t[882] = 45;
37207  t[894] = 40;
37208  t[895] = 41;
37209  t[896] = 91;
37210  t[897] = 93;
37211  t[923] = 64;
37212  t[1004] = 48;
37213  t[1005] = 49;
37214  t[1006] = 50;
37215  t[1007] = 51;
37216  t[1008] = 52;
37217  t[1009] = 53;
37218  t[1010] = 54;
37219  t[1011] = 55;
37220  t[1012] = 56;
37221  t[1013] = 57;
37222  t[1081] = 37;
37223  t[1085] = 43;
37224  t[1086] = 45;
37225});
37226exports.getStdFontMap = getStdFontMap;
37227exports.getNonStdFontMap = getNonStdFontMap;
37228exports.getSerifFonts = getSerifFonts;
37229exports.getSymbolsFonts = getSymbolsFonts;
37230exports.getGlyphMapForStandardFonts = getGlyphMapForStandardFonts;
37231exports.getSupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack;
37232exports.getSupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri;
37233
37234/***/ }),
37235/* 162 */
37236/***/ (function(module, exports, __w_pdfjs_require__) {
37237
37238var getLookupTableFactory = __w_pdfjs_require__(2).getLookupTableFactory;
37239var getSpecialPUASymbols = getLookupTableFactory(function (t) {
37240 t[63721] = 0x00A9;
37241 t[63193] = 0x00A9;
37242 t[63720] = 0x00AE;
37243 t[63194] = 0x00AE;
37244 t[63722] = 0x2122;
37245 t[63195] = 0x2122;
37246 t[63729] = 0x23A7;
37247 t[63730] = 0x23A8;
37248 t[63731] = 0x23A9;
37249 t[63740] = 0x23AB;
37250 t[63741] = 0x23AC;
37251 t[63742] = 0x23AD;
37252 t[63726] = 0x23A1;
37253 t[63727] = 0x23A2;
37254 t[63728] = 0x23A3;
37255 t[63737] = 0x23A4;
37256 t[63738] = 0x23A5;
37257 t[63739] = 0x23A6;
37258 t[63723] = 0x239B;
37259 t[63724] = 0x239C;
37260 t[63725] = 0x239D;
37261 t[63734] = 0x239E;
37262 t[63735] = 0x239F;
37263 t[63736] = 0x23A0;
37264});
37265function mapSpecialUnicodeValues(code) {
37266 if (code >= 0xFFF0 && code <= 0xFFFF) {
37267  return 0;
37268 } else if (code >= 0xF600 && code <= 0xF8FF) {
37269  return getSpecialPUASymbols()[code] || code;
37270 } else if (code === 0x00AD) {
37271  return 0x002D;
37272 }
37273 return code;
37274}
37275function getUnicodeForGlyph(name, glyphsUnicodeMap) {
37276 var unicode = glyphsUnicodeMap[name];
37277 if (unicode !== undefined) {
37278  return unicode;
37279 }
37280 if (!name) {
37281  return -1;
37282 }
37283 if (name[0] === 'u') {
37284  var nameLen = name.length, hexStr;
37285  if (nameLen === 7 && name[1] === 'n' && name[2] === 'i') {
37286   hexStr = name.substring(3);
37287  } else if (nameLen >= 5 && nameLen <= 7) {
37288   hexStr = name.substring(1);
37289  } else {
37290   return -1;
37291  }
37292  if (hexStr === hexStr.toUpperCase()) {
37293   unicode = parseInt(hexStr, 16);
37294   if (unicode >= 0) {
37295    return unicode;
37296   }
37297  }
37298 }
37299 return -1;
37300}
37301var UnicodeRanges = [
37302 {
37303  'begin': 0x0000,
37304  'end': 0x007F
37305 },
37306 {
37307  'begin': 0x0080,
37308  'end': 0x00FF
37309 },
37310 {
37311  'begin': 0x0100,
37312  'end': 0x017F
37313 },
37314 {
37315  'begin': 0x0180,
37316  'end': 0x024F
37317 },
37318 {
37319  'begin': 0x0250,
37320  'end': 0x02AF
37321 },
37322 {
37323  'begin': 0x02B0,
37324  'end': 0x02FF
37325 },
37326 {
37327  'begin': 0x0300,
37328  'end': 0x036F
37329 },
37330 {
37331  'begin': 0x0370,
37332  'end': 0x03FF
37333 },
37334 {
37335  'begin': 0x2C80,
37336  'end': 0x2CFF
37337 },
37338 {
37339  'begin': 0x0400,
37340  'end': 0x04FF
37341 },
37342 {
37343  'begin': 0x0530,
37344  'end': 0x058F
37345 },
37346 {
37347  'begin': 0x0590,
37348  'end': 0x05FF
37349 },
37350 {
37351  'begin': 0xA500,
37352  'end': 0xA63F
37353 },
37354 {
37355  'begin': 0x0600,
37356  'end': 0x06FF
37357 },
37358 {
37359  'begin': 0x07C0,
37360  'end': 0x07FF
37361 },
37362 {
37363  'begin': 0x0900,
37364  'end': 0x097F
37365 },
37366 {
37367  'begin': 0x0980,
37368  'end': 0x09FF
37369 },
37370 {
37371  'begin': 0x0A00,
37372  'end': 0x0A7F
37373 },
37374 {
37375  'begin': 0x0A80,
37376  'end': 0x0AFF
37377 },
37378 {
37379  'begin': 0x0B00,
37380  'end': 0x0B7F
37381 },
37382 {
37383  'begin': 0x0B80,
37384  'end': 0x0BFF
37385 },
37386 {
37387  'begin': 0x0C00,
37388  'end': 0x0C7F
37389 },
37390 {
37391  'begin': 0x0C80,
37392  'end': 0x0CFF
37393 },
37394 {
37395  'begin': 0x0D00,
37396  'end': 0x0D7F
37397 },
37398 {
37399  'begin': 0x0E00,
37400  'end': 0x0E7F
37401 },
37402 {
37403  'begin': 0x0E80,
37404  'end': 0x0EFF
37405 },
37406 {
37407  'begin': 0x10A0,
37408  'end': 0x10FF
37409 },
37410 {
37411  'begin': 0x1B00,
37412  'end': 0x1B7F
37413 },
37414 {
37415  'begin': 0x1100,
37416  'end': 0x11FF
37417 },
37418 {
37419  'begin': 0x1E00,
37420  'end': 0x1EFF
37421 },
37422 {
37423  'begin': 0x1F00,
37424  'end': 0x1FFF
37425 },
37426 {
37427  'begin': 0x2000,
37428  'end': 0x206F
37429 },
37430 {
37431  'begin': 0x2070,
37432  'end': 0x209F
37433 },
37434 {
37435  'begin': 0x20A0,
37436  'end': 0x20CF
37437 },
37438 {
37439  'begin': 0x20D0,
37440  'end': 0x20FF
37441 },
37442 {
37443  'begin': 0x2100,
37444  'end': 0x214F
37445 },
37446 {
37447  'begin': 0x2150,
37448  'end': 0x218F
37449 },
37450 {
37451  'begin': 0x2190,
37452  'end': 0x21FF
37453 },
37454 {
37455  'begin': 0x2200,
37456  'end': 0x22FF
37457 },
37458 {
37459  'begin': 0x2300,
37460  'end': 0x23FF
37461 },
37462 {
37463  'begin': 0x2400,
37464  'end': 0x243F
37465 },
37466 {
37467  'begin': 0x2440,
37468  'end': 0x245F
37469 },
37470 {
37471  'begin': 0x2460,
37472  'end': 0x24FF
37473 },
37474 {
37475  'begin': 0x2500,
37476  'end': 0x257F
37477 },
37478 {
37479  'begin': 0x2580,
37480  'end': 0x259F
37481 },
37482 {
37483  'begin': 0x25A0,
37484  'end': 0x25FF
37485 },
37486 {
37487  'begin': 0x2600,
37488  'end': 0x26FF
37489 },
37490 {
37491  'begin': 0x2700,
37492  'end': 0x27BF
37493 },
37494 {
37495  'begin': 0x3000,
37496  'end': 0x303F
37497 },
37498 {
37499  'begin': 0x3040,
37500  'end': 0x309F
37501 },
37502 {
37503  'begin': 0x30A0,
37504  'end': 0x30FF
37505 },
37506 {
37507  'begin': 0x3100,
37508  'end': 0x312F
37509 },
37510 {
37511  'begin': 0x3130,
37512  'end': 0x318F
37513 },
37514 {
37515  'begin': 0xA840,
37516  'end': 0xA87F
37517 },
37518 {
37519  'begin': 0x3200,
37520  'end': 0x32FF
37521 },
37522 {
37523  'begin': 0x3300,
37524  'end': 0x33FF
37525 },
37526 {
37527  'begin': 0xAC00,
37528  'end': 0xD7AF
37529 },
37530 {
37531  'begin': 0xD800,
37532  'end': 0xDFFF
37533 },
37534 {
37535  'begin': 0x10900,
37536  'end': 0x1091F
37537 },
37538 {
37539  'begin': 0x4E00,
37540  'end': 0x9FFF
37541 },
37542 {
37543  'begin': 0xE000,
37544  'end': 0xF8FF
37545 },
37546 {
37547  'begin': 0x31C0,
37548  'end': 0x31EF
37549 },
37550 {
37551  'begin': 0xFB00,
37552  'end': 0xFB4F
37553 },
37554 {
37555  'begin': 0xFB50,
37556  'end': 0xFDFF
37557 },
37558 {
37559  'begin': 0xFE20,
37560  'end': 0xFE2F
37561 },
37562 {
37563  'begin': 0xFE10,
37564  'end': 0xFE1F
37565 },
37566 {
37567  'begin': 0xFE50,
37568  'end': 0xFE6F
37569 },
37570 {
37571  'begin': 0xFE70,
37572  'end': 0xFEFF
37573 },
37574 {
37575  'begin': 0xFF00,
37576  'end': 0xFFEF
37577 },
37578 {
37579  'begin': 0xFFF0,
37580  'end': 0xFFFF
37581 },
37582 {
37583  'begin': 0x0F00,
37584  'end': 0x0FFF
37585 },
37586 {
37587  'begin': 0x0700,
37588  'end': 0x074F
37589 },
37590 {
37591  'begin': 0x0780,
37592  'end': 0x07BF
37593 },
37594 {
37595  'begin': 0x0D80,
37596  'end': 0x0DFF
37597 },
37598 {
37599  'begin': 0x1000,
37600  'end': 0x109F
37601 },
37602 {
37603  'begin': 0x1200,
37604  'end': 0x137F
37605 },
37606 {
37607  'begin': 0x13A0,
37608  'end': 0x13FF
37609 },
37610 {
37611  'begin': 0x1400,
37612  'end': 0x167F
37613 },
37614 {
37615  'begin': 0x1680,
37616  'end': 0x169F
37617 },
37618 {
37619  'begin': 0x16A0,
37620  'end': 0x16FF
37621 },
37622 {
37623  'begin': 0x1780,
37624  'end': 0x17FF
37625 },
37626 {
37627  'begin': 0x1800,
37628  'end': 0x18AF
37629 },
37630 {
37631  'begin': 0x2800,
37632  'end': 0x28FF
37633 },
37634 {
37635  'begin': 0xA000,
37636  'end': 0xA48F
37637 },
37638 {
37639  'begin': 0x1700,
37640  'end': 0x171F
37641 },
37642 {
37643  'begin': 0x10300,
37644  'end': 0x1032F
37645 },
37646 {
37647  'begin': 0x10330,
37648  'end': 0x1034F
37649 },
37650 {
37651  'begin': 0x10400,
37652  'end': 0x1044F
37653 },
37654 {
37655  'begin': 0x1D000,
37656  'end': 0x1D0FF
37657 },
37658 {
37659  'begin': 0x1D400,
37660  'end': 0x1D7FF
37661 },
37662 {
37663  'begin': 0xFF000,
37664  'end': 0xFFFFD
37665 },
37666 {
37667  'begin': 0xFE00,
37668  'end': 0xFE0F
37669 },
37670 {
37671  'begin': 0xE0000,
37672  'end': 0xE007F
37673 },
37674 {
37675  'begin': 0x1900,
37676  'end': 0x194F
37677 },
37678 {
37679  'begin': 0x1950,
37680  'end': 0x197F
37681 },
37682 {
37683  'begin': 0x1980,
37684  'end': 0x19DF
37685 },
37686 {
37687  'begin': 0x1A00,
37688  'end': 0x1A1F
37689 },
37690 {
37691  'begin': 0x2C00,
37692  'end': 0x2C5F
37693 },
37694 {
37695  'begin': 0x2D30,
37696  'end': 0x2D7F
37697 },
37698 {
37699  'begin': 0x4DC0,
37700  'end': 0x4DFF
37701 },
37702 {
37703  'begin': 0xA800,
37704  'end': 0xA82F
37705 },
37706 {
37707  'begin': 0x10000,
37708  'end': 0x1007F
37709 },
37710 {
37711  'begin': 0x10140,
37712  'end': 0x1018F
37713 },
37714 {
37715  'begin': 0x10380,
37716  'end': 0x1039F
37717 },
37718 {
37719  'begin': 0x103A0,
37720  'end': 0x103DF
37721 },
37722 {
37723  'begin': 0x10450,
37724  'end': 0x1047F
37725 },
37726 {
37727  'begin': 0x10480,
37728  'end': 0x104AF
37729 },
37730 {
37731  'begin': 0x10800,
37732  'end': 0x1083F
37733 },
37734 {
37735  'begin': 0x10A00,
37736  'end': 0x10A5F
37737 },
37738 {
37739  'begin': 0x1D300,
37740  'end': 0x1D35F
37741 },
37742 {
37743  'begin': 0x12000,
37744  'end': 0x123FF
37745 },
37746 {
37747  'begin': 0x1D360,
37748  'end': 0x1D37F
37749 },
37750 {
37751  'begin': 0x1B80,
37752  'end': 0x1BBF
37753 },
37754 {
37755  'begin': 0x1C00,
37756  'end': 0x1C4F
37757 },
37758 {
37759  'begin': 0x1C50,
37760  'end': 0x1C7F
37761 },
37762 {
37763  'begin': 0xA880,
37764  'end': 0xA8DF
37765 },
37766 {
37767  'begin': 0xA900,
37768  'end': 0xA92F
37769 },
37770 {
37771  'begin': 0xA930,
37772  'end': 0xA95F
37773 },
37774 {
37775  'begin': 0xAA00,
37776  'end': 0xAA5F
37777 },
37778 {
37779  'begin': 0x10190,
37780  'end': 0x101CF
37781 },
37782 {
37783  'begin': 0x101D0,
37784  'end': 0x101FF
37785 },
37786 {
37787  'begin': 0x102A0,
37788  'end': 0x102DF
37789 },
37790 {
37791  'begin': 0x1F030,
37792  'end': 0x1F09F
37793 }
37794];
37795function getUnicodeRangeFor(value) {
37796 for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {
37797  var range = UnicodeRanges[i];
37798  if (value >= range.begin && value < range.end) {
37799   return i;
37800  }
37801 }
37802 return -1;
37803}
37804function isRTLRangeFor(value) {
37805 var range = UnicodeRanges[13];
37806 if (value >= range.begin && value < range.end) {
37807  return true;
37808 }
37809 range = UnicodeRanges[11];
37810 if (value >= range.begin && value < range.end) {
37811  return true;
37812 }
37813 return false;
37814}
37815var getNormalizedUnicodes = getLookupTableFactory(function (t) {
37816 t['\u00A8'] = '\u0020\u0308';
37817 t['\u00AF'] = '\u0020\u0304';
37818 t['\u00B4'] = '\u0020\u0301';
37819 t['\u00B5'] = '\u03BC';
37820 t['\u00B8'] = '\u0020\u0327';
37821 t['\u0132'] = '\u0049\u004A';
37822 t['\u0133'] = '\u0069\u006A';
37823 t['\u013F'] = '\u004C\u00B7';
37824 t['\u0140'] = '\u006C\u00B7';
37825 t['\u0149'] = '\u02BC\u006E';
37826 t['\u017F'] = '\u0073';
37827 t['\u01C4'] = '\u0044\u017D';
37828 t['\u01C5'] = '\u0044\u017E';
37829 t['\u01C6'] = '\u0064\u017E';
37830 t['\u01C7'] = '\u004C\u004A';
37831 t['\u01C8'] = '\u004C\u006A';
37832 t['\u01C9'] = '\u006C\u006A';
37833 t['\u01CA'] = '\u004E\u004A';
37834 t['\u01CB'] = '\u004E\u006A';
37835 t['\u01CC'] = '\u006E\u006A';
37836 t['\u01F1'] = '\u0044\u005A';
37837 t['\u01F2'] = '\u0044\u007A';
37838 t['\u01F3'] = '\u0064\u007A';
37839 t['\u02D8'] = '\u0020\u0306';
37840 t['\u02D9'] = '\u0020\u0307';
37841 t['\u02DA'] = '\u0020\u030A';
37842 t['\u02DB'] = '\u0020\u0328';
37843 t['\u02DC'] = '\u0020\u0303';
37844 t['\u02DD'] = '\u0020\u030B';
37845 t['\u037A'] = '\u0020\u0345';
37846 t['\u0384'] = '\u0020\u0301';
37847 t['\u03D0'] = '\u03B2';
37848 t['\u03D1'] = '\u03B8';
37849 t['\u03D2'] = '\u03A5';
37850 t['\u03D5'] = '\u03C6';
37851 t['\u03D6'] = '\u03C0';
37852 t['\u03F0'] = '\u03BA';
37853 t['\u03F1'] = '\u03C1';
37854 t['\u03F2'] = '\u03C2';
37855 t['\u03F4'] = '\u0398';
37856 t['\u03F5'] = '\u03B5';
37857 t['\u03F9'] = '\u03A3';
37858 t['\u0587'] = '\u0565\u0582';
37859 t['\u0675'] = '\u0627\u0674';
37860 t['\u0676'] = '\u0648\u0674';
37861 t['\u0677'] = '\u06C7\u0674';
37862 t['\u0678'] = '\u064A\u0674';
37863 t['\u0E33'] = '\u0E4D\u0E32';
37864 t['\u0EB3'] = '\u0ECD\u0EB2';
37865 t['\u0EDC'] = '\u0EAB\u0E99';
37866 t['\u0EDD'] = '\u0EAB\u0EA1';
37867 t['\u0F77'] = '\u0FB2\u0F81';
37868 t['\u0F79'] = '\u0FB3\u0F81';
37869 t['\u1E9A'] = '\u0061\u02BE';
37870 t['\u1FBD'] = '\u0020\u0313';
37871 t['\u1FBF'] = '\u0020\u0313';
37872 t['\u1FC0'] = '\u0020\u0342';
37873 t['\u1FFE'] = '\u0020\u0314';
37874 t['\u2002'] = '\u0020';
37875 t['\u2003'] = '\u0020';
37876 t['\u2004'] = '\u0020';
37877 t['\u2005'] = '\u0020';
37878 t['\u2006'] = '\u0020';
37879 t['\u2008'] = '\u0020';
37880 t['\u2009'] = '\u0020';
37881 t['\u200A'] = '\u0020';
37882 t['\u2017'] = '\u0020\u0333';
37883 t['\u2024'] = '\u002E';
37884 t['\u2025'] = '\u002E\u002E';
37885 t['\u2026'] = '\u002E\u002E\u002E';
37886 t['\u2033'] = '\u2032\u2032';
37887 t['\u2034'] = '\u2032\u2032\u2032';
37888 t['\u2036'] = '\u2035\u2035';
37889 t['\u2037'] = '\u2035\u2035\u2035';
37890 t['\u203C'] = '\u0021\u0021';
37891 t['\u203E'] = '\u0020\u0305';
37892 t['\u2047'] = '\u003F\u003F';
37893 t['\u2048'] = '\u003F\u0021';
37894 t['\u2049'] = '\u0021\u003F';
37895 t['\u2057'] = '\u2032\u2032\u2032\u2032';
37896 t['\u205F'] = '\u0020';
37897 t['\u20A8'] = '\u0052\u0073';
37898 t['\u2100'] = '\u0061\u002F\u0063';
37899 t['\u2101'] = '\u0061\u002F\u0073';
37900 t['\u2103'] = '\u00B0\u0043';
37901 t['\u2105'] = '\u0063\u002F\u006F';
37902 t['\u2106'] = '\u0063\u002F\u0075';
37903 t['\u2107'] = '\u0190';
37904 t['\u2109'] = '\u00B0\u0046';
37905 t['\u2116'] = '\u004E\u006F';
37906 t['\u2121'] = '\u0054\u0045\u004C';
37907 t['\u2135'] = '\u05D0';
37908 t['\u2136'] = '\u05D1';
37909 t['\u2137'] = '\u05D2';
37910 t['\u2138'] = '\u05D3';
37911 t['\u213B'] = '\u0046\u0041\u0058';
37912 t['\u2160'] = '\u0049';
37913 t['\u2161'] = '\u0049\u0049';
37914 t['\u2162'] = '\u0049\u0049\u0049';
37915 t['\u2163'] = '\u0049\u0056';
37916 t['\u2164'] = '\u0056';
37917 t['\u2165'] = '\u0056\u0049';
37918 t['\u2166'] = '\u0056\u0049\u0049';
37919 t['\u2167'] = '\u0056\u0049\u0049\u0049';
37920 t['\u2168'] = '\u0049\u0058';
37921 t['\u2169'] = '\u0058';
37922 t['\u216A'] = '\u0058\u0049';
37923 t['\u216B'] = '\u0058\u0049\u0049';
37924 t['\u216C'] = '\u004C';
37925 t['\u216D'] = '\u0043';
37926 t['\u216E'] = '\u0044';
37927 t['\u216F'] = '\u004D';
37928 t['\u2170'] = '\u0069';
37929 t['\u2171'] = '\u0069\u0069';
37930 t['\u2172'] = '\u0069\u0069\u0069';
37931 t['\u2173'] = '\u0069\u0076';
37932 t['\u2174'] = '\u0076';
37933 t['\u2175'] = '\u0076\u0069';
37934 t['\u2176'] = '\u0076\u0069\u0069';
37935 t['\u2177'] = '\u0076\u0069\u0069\u0069';
37936 t['\u2178'] = '\u0069\u0078';
37937 t['\u2179'] = '\u0078';
37938 t['\u217A'] = '\u0078\u0069';
37939 t['\u217B'] = '\u0078\u0069\u0069';
37940 t['\u217C'] = '\u006C';
37941 t['\u217D'] = '\u0063';
37942 t['\u217E'] = '\u0064';
37943 t['\u217F'] = '\u006D';
37944 t['\u222C'] = '\u222B\u222B';
37945 t['\u222D'] = '\u222B\u222B\u222B';
37946 t['\u222F'] = '\u222E\u222E';
37947 t['\u2230'] = '\u222E\u222E\u222E';
37948 t['\u2474'] = '\u0028\u0031\u0029';
37949 t['\u2475'] = '\u0028\u0032\u0029';
37950 t['\u2476'] = '\u0028\u0033\u0029';
37951 t['\u2477'] = '\u0028\u0034\u0029';
37952 t['\u2478'] = '\u0028\u0035\u0029';
37953 t['\u2479'] = '\u0028\u0036\u0029';
37954 t['\u247A'] = '\u0028\u0037\u0029';
37955 t['\u247B'] = '\u0028\u0038\u0029';
37956 t['\u247C'] = '\u0028\u0039\u0029';
37957 t['\u247D'] = '\u0028\u0031\u0030\u0029';
37958 t['\u247E'] = '\u0028\u0031\u0031\u0029';
37959 t['\u247F'] = '\u0028\u0031\u0032\u0029';
37960 t['\u2480'] = '\u0028\u0031\u0033\u0029';
37961 t['\u2481'] = '\u0028\u0031\u0034\u0029';
37962 t['\u2482'] = '\u0028\u0031\u0035\u0029';
37963 t['\u2483'] = '\u0028\u0031\u0036\u0029';
37964 t['\u2484'] = '\u0028\u0031\u0037\u0029';
37965 t['\u2485'] = '\u0028\u0031\u0038\u0029';
37966 t['\u2486'] = '\u0028\u0031\u0039\u0029';
37967 t['\u2487'] = '\u0028\u0032\u0030\u0029';
37968 t['\u2488'] = '\u0031\u002E';
37969 t['\u2489'] = '\u0032\u002E';
37970 t['\u248A'] = '\u0033\u002E';
37971 t['\u248B'] = '\u0034\u002E';
37972 t['\u248C'] = '\u0035\u002E';
37973 t['\u248D'] = '\u0036\u002E';
37974 t['\u248E'] = '\u0037\u002E';
37975 t['\u248F'] = '\u0038\u002E';
37976 t['\u2490'] = '\u0039\u002E';
37977 t['\u2491'] = '\u0031\u0030\u002E';
37978 t['\u2492'] = '\u0031\u0031\u002E';
37979 t['\u2493'] = '\u0031\u0032\u002E';
37980 t['\u2494'] = '\u0031\u0033\u002E';
37981 t['\u2495'] = '\u0031\u0034\u002E';
37982 t['\u2496'] = '\u0031\u0035\u002E';
37983 t['\u2497'] = '\u0031\u0036\u002E';
37984 t['\u2498'] = '\u0031\u0037\u002E';
37985 t['\u2499'] = '\u0031\u0038\u002E';
37986 t['\u249A'] = '\u0031\u0039\u002E';
37987 t['\u249B'] = '\u0032\u0030\u002E';
37988 t['\u249C'] = '\u0028\u0061\u0029';
37989 t['\u249D'] = '\u0028\u0062\u0029';
37990 t['\u249E'] = '\u0028\u0063\u0029';
37991 t['\u249F'] = '\u0028\u0064\u0029';
37992 t['\u24A0'] = '\u0028\u0065\u0029';
37993 t['\u24A1'] = '\u0028\u0066\u0029';
37994 t['\u24A2'] = '\u0028\u0067\u0029';
37995 t['\u24A3'] = '\u0028\u0068\u0029';
37996 t['\u24A4'] = '\u0028\u0069\u0029';
37997 t['\u24A5'] = '\u0028\u006A\u0029';
37998 t['\u24A6'] = '\u0028\u006B\u0029';
37999 t['\u24A7'] = '\u0028\u006C\u0029';
38000 t['\u24A8'] = '\u0028\u006D\u0029';
38001 t['\u24A9'] = '\u0028\u006E\u0029';
38002 t['\u24AA'] = '\u0028\u006F\u0029';
38003 t['\u24AB'] = '\u0028\u0070\u0029';
38004 t['\u24AC'] = '\u0028\u0071\u0029';
38005 t['\u24AD'] = '\u0028\u0072\u0029';
38006 t['\u24AE'] = '\u0028\u0073\u0029';
38007 t['\u24AF'] = '\u0028\u0074\u0029';
38008 t['\u24B0'] = '\u0028\u0075\u0029';
38009 t['\u24B1'] = '\u0028\u0076\u0029';
38010 t['\u24B2'] = '\u0028\u0077\u0029';
38011 t['\u24B3'] = '\u0028\u0078\u0029';
38012 t['\u24B4'] = '\u0028\u0079\u0029';
38013 t['\u24B5'] = '\u0028\u007A\u0029';
38014 t['\u2A0C'] = '\u222B\u222B\u222B\u222B';
38015 t['\u2A74'] = '\u003A\u003A\u003D';
38016 t['\u2A75'] = '\u003D\u003D';
38017 t['\u2A76'] = '\u003D\u003D\u003D';
38018 t['\u2E9F'] = '\u6BCD';
38019 t['\u2EF3'] = '\u9F9F';
38020 t['\u2F00'] = '\u4E00';
38021 t['\u2F01'] = '\u4E28';
38022 t['\u2F02'] = '\u4E36';
38023 t['\u2F03'] = '\u4E3F';
38024 t['\u2F04'] = '\u4E59';
38025 t['\u2F05'] = '\u4E85';
38026 t['\u2F06'] = '\u4E8C';
38027 t['\u2F07'] = '\u4EA0';
38028 t['\u2F08'] = '\u4EBA';
38029 t['\u2F09'] = '\u513F';
38030 t['\u2F0A'] = '\u5165';
38031 t['\u2F0B'] = '\u516B';
38032 t['\u2F0C'] = '\u5182';
38033 t['\u2F0D'] = '\u5196';
38034 t['\u2F0E'] = '\u51AB';
38035 t['\u2F0F'] = '\u51E0';
38036 t['\u2F10'] = '\u51F5';
38037 t['\u2F11'] = '\u5200';
38038 t['\u2F12'] = '\u529B';
38039 t['\u2F13'] = '\u52F9';
38040 t['\u2F14'] = '\u5315';
38041 t['\u2F15'] = '\u531A';
38042 t['\u2F16'] = '\u5338';
38043 t['\u2F17'] = '\u5341';
38044 t['\u2F18'] = '\u535C';
38045 t['\u2F19'] = '\u5369';
38046 t['\u2F1A'] = '\u5382';
38047 t['\u2F1B'] = '\u53B6';
38048 t['\u2F1C'] = '\u53C8';
38049 t['\u2F1D'] = '\u53E3';
38050 t['\u2F1E'] = '\u56D7';
38051 t['\u2F1F'] = '\u571F';
38052 t['\u2F20'] = '\u58EB';
38053 t['\u2F21'] = '\u5902';
38054 t['\u2F22'] = '\u590A';
38055 t['\u2F23'] = '\u5915';
38056 t['\u2F24'] = '\u5927';
38057 t['\u2F25'] = '\u5973';
38058 t['\u2F26'] = '\u5B50';
38059 t['\u2F27'] = '\u5B80';
38060 t['\u2F28'] = '\u5BF8';
38061 t['\u2F29'] = '\u5C0F';
38062 t['\u2F2A'] = '\u5C22';
38063 t['\u2F2B'] = '\u5C38';
38064 t['\u2F2C'] = '\u5C6E';
38065 t['\u2F2D'] = '\u5C71';
38066 t['\u2F2E'] = '\u5DDB';
38067 t['\u2F2F'] = '\u5DE5';
38068 t['\u2F30'] = '\u5DF1';
38069 t['\u2F31'] = '\u5DFE';
38070 t['\u2F32'] = '\u5E72';
38071 t['\u2F33'] = '\u5E7A';
38072 t['\u2F34'] = '\u5E7F';
38073 t['\u2F35'] = '\u5EF4';
38074 t['\u2F36'] = '\u5EFE';
38075 t['\u2F37'] = '\u5F0B';
38076 t['\u2F38'] = '\u5F13';
38077 t['\u2F39'] = '\u5F50';
38078 t['\u2F3A'] = '\u5F61';
38079 t['\u2F3B'] = '\u5F73';
38080 t['\u2F3C'] = '\u5FC3';
38081 t['\u2F3D'] = '\u6208';
38082 t['\u2F3E'] = '\u6236';
38083 t['\u2F3F'] = '\u624B';
38084 t['\u2F40'] = '\u652F';
38085 t['\u2F41'] = '\u6534';
38086 t['\u2F42'] = '\u6587';
38087 t['\u2F43'] = '\u6597';
38088 t['\u2F44'] = '\u65A4';
38089 t['\u2F45'] = '\u65B9';
38090 t['\u2F46'] = '\u65E0';
38091 t['\u2F47'] = '\u65E5';
38092 t['\u2F48'] = '\u66F0';
38093 t['\u2F49'] = '\u6708';
38094 t['\u2F4A'] = '\u6728';
38095 t['\u2F4B'] = '\u6B20';
38096 t['\u2F4C'] = '\u6B62';
38097 t['\u2F4D'] = '\u6B79';
38098 t['\u2F4E'] = '\u6BB3';
38099 t['\u2F4F'] = '\u6BCB';
38100 t['\u2F50'] = '\u6BD4';
38101 t['\u2F51'] = '\u6BDB';
38102 t['\u2F52'] = '\u6C0F';
38103 t['\u2F53'] = '\u6C14';
38104 t['\u2F54'] = '\u6C34';
38105 t['\u2F55'] = '\u706B';
38106 t['\u2F56'] = '\u722A';
38107 t['\u2F57'] = '\u7236';
38108 t['\u2F58'] = '\u723B';
38109 t['\u2F59'] = '\u723F';
38110 t['\u2F5A'] = '\u7247';
38111 t['\u2F5B'] = '\u7259';
38112 t['\u2F5C'] = '\u725B';
38113 t['\u2F5D'] = '\u72AC';
38114 t['\u2F5E'] = '\u7384';
38115 t['\u2F5F'] = '\u7389';
38116 t['\u2F60'] = '\u74DC';
38117 t['\u2F61'] = '\u74E6';
38118 t['\u2F62'] = '\u7518';
38119 t['\u2F63'] = '\u751F';
38120 t['\u2F64'] = '\u7528';
38121 t['\u2F65'] = '\u7530';
38122 t['\u2F66'] = '\u758B';
38123 t['\u2F67'] = '\u7592';
38124 t['\u2F68'] = '\u7676';
38125 t['\u2F69'] = '\u767D';
38126 t['\u2F6A'] = '\u76AE';
38127 t['\u2F6B'] = '\u76BF';
38128 t['\u2F6C'] = '\u76EE';
38129 t['\u2F6D'] = '\u77DB';
38130 t['\u2F6E'] = '\u77E2';
38131 t['\u2F6F'] = '\u77F3';
38132 t['\u2F70'] = '\u793A';
38133 t['\u2F71'] = '\u79B8';
38134 t['\u2F72'] = '\u79BE';
38135 t['\u2F73'] = '\u7A74';
38136 t['\u2F74'] = '\u7ACB';
38137 t['\u2F75'] = '\u7AF9';
38138 t['\u2F76'] = '\u7C73';
38139 t['\u2F77'] = '\u7CF8';
38140 t['\u2F78'] = '\u7F36';
38141 t['\u2F79'] = '\u7F51';
38142 t['\u2F7A'] = '\u7F8A';
38143 t['\u2F7B'] = '\u7FBD';
38144 t['\u2F7C'] = '\u8001';
38145 t['\u2F7D'] = '\u800C';
38146 t['\u2F7E'] = '\u8012';
38147 t['\u2F7F'] = '\u8033';
38148 t['\u2F80'] = '\u807F';
38149 t['\u2F81'] = '\u8089';
38150 t['\u2F82'] = '\u81E3';
38151 t['\u2F83'] = '\u81EA';
38152 t['\u2F84'] = '\u81F3';
38153 t['\u2F85'] = '\u81FC';
38154 t['\u2F86'] = '\u820C';
38155 t['\u2F87'] = '\u821B';
38156 t['\u2F88'] = '\u821F';
38157 t['\u2F89'] = '\u826E';
38158 t['\u2F8A'] = '\u8272';
38159 t['\u2F8B'] = '\u8278';
38160 t['\u2F8C'] = '\u864D';
38161 t['\u2F8D'] = '\u866B';
38162 t['\u2F8E'] = '\u8840';
38163 t['\u2F8F'] = '\u884C';
38164 t['\u2F90'] = '\u8863';
38165 t['\u2F91'] = '\u897E';
38166 t['\u2F92'] = '\u898B';
38167 t['\u2F93'] = '\u89D2';
38168 t['\u2F94'] = '\u8A00';
38169 t['\u2F95'] = '\u8C37';
38170 t['\u2F96'] = '\u8C46';
38171 t['\u2F97'] = '\u8C55';
38172 t['\u2F98'] = '\u8C78';
38173 t['\u2F99'] = '\u8C9D';
38174 t['\u2F9A'] = '\u8D64';
38175 t['\u2F9B'] = '\u8D70';
38176 t['\u2F9C'] = '\u8DB3';
38177 t['\u2F9D'] = '\u8EAB';
38178 t['\u2F9E'] = '\u8ECA';
38179 t['\u2F9F'] = '\u8F9B';
38180 t['\u2FA0'] = '\u8FB0';
38181 t['\u2FA1'] = '\u8FB5';
38182 t['\u2FA2'] = '\u9091';
38183 t['\u2FA3'] = '\u9149';
38184 t['\u2FA4'] = '\u91C6';
38185 t['\u2FA5'] = '\u91CC';
38186 t['\u2FA6'] = '\u91D1';
38187 t['\u2FA7'] = '\u9577';
38188 t['\u2FA8'] = '\u9580';
38189 t['\u2FA9'] = '\u961C';
38190 t['\u2FAA'] = '\u96B6';
38191 t['\u2FAB'] = '\u96B9';
38192 t['\u2FAC'] = '\u96E8';
38193 t['\u2FAD'] = '\u9751';
38194 t['\u2FAE'] = '\u975E';
38195 t['\u2FAF'] = '\u9762';
38196 t['\u2FB0'] = '\u9769';
38197 t['\u2FB1'] = '\u97CB';
38198 t['\u2FB2'] = '\u97ED';
38199 t['\u2FB3'] = '\u97F3';
38200 t['\u2FB4'] = '\u9801';
38201 t['\u2FB5'] = '\u98A8';
38202 t['\u2FB6'] = '\u98DB';
38203 t['\u2FB7'] = '\u98DF';
38204 t['\u2FB8'] = '\u9996';
38205 t['\u2FB9'] = '\u9999';
38206 t['\u2FBA'] = '\u99AC';
38207 t['\u2FBB'] = '\u9AA8';
38208 t['\u2FBC'] = '\u9AD8';
38209 t['\u2FBD'] = '\u9ADF';
38210 t['\u2FBE'] = '\u9B25';
38211 t['\u2FBF'] = '\u9B2F';
38212 t['\u2FC0'] = '\u9B32';
38213 t['\u2FC1'] = '\u9B3C';
38214 t['\u2FC2'] = '\u9B5A';
38215 t['\u2FC3'] = '\u9CE5';
38216 t['\u2FC4'] = '\u9E75';
38217 t['\u2FC5'] = '\u9E7F';
38218 t['\u2FC6'] = '\u9EA5';
38219 t['\u2FC7'] = '\u9EBB';
38220 t['\u2FC8'] = '\u9EC3';
38221 t['\u2FC9'] = '\u9ECD';
38222 t['\u2FCA'] = '\u9ED1';
38223 t['\u2FCB'] = '\u9EF9';
38224 t['\u2FCC'] = '\u9EFD';
38225 t['\u2FCD'] = '\u9F0E';
38226 t['\u2FCE'] = '\u9F13';
38227 t['\u2FCF'] = '\u9F20';
38228 t['\u2FD0'] = '\u9F3B';
38229 t['\u2FD1'] = '\u9F4A';
38230 t['\u2FD2'] = '\u9F52';
38231 t['\u2FD3'] = '\u9F8D';
38232 t['\u2FD4'] = '\u9F9C';
38233 t['\u2FD5'] = '\u9FA0';
38234 t['\u3036'] = '\u3012';
38235 t['\u3038'] = '\u5341';
38236 t['\u3039'] = '\u5344';
38237 t['\u303A'] = '\u5345';
38238 t['\u309B'] = '\u0020\u3099';
38239 t['\u309C'] = '\u0020\u309A';
38240 t['\u3131'] = '\u1100';
38241 t['\u3132'] = '\u1101';
38242 t['\u3133'] = '\u11AA';
38243 t['\u3134'] = '\u1102';
38244 t['\u3135'] = '\u11AC';
38245 t['\u3136'] = '\u11AD';
38246 t['\u3137'] = '\u1103';
38247 t['\u3138'] = '\u1104';
38248 t['\u3139'] = '\u1105';
38249 t['\u313A'] = '\u11B0';
38250 t['\u313B'] = '\u11B1';
38251 t['\u313C'] = '\u11B2';
38252 t['\u313D'] = '\u11B3';
38253 t['\u313E'] = '\u11B4';
38254 t['\u313F'] = '\u11B5';
38255 t['\u3140'] = '\u111A';
38256 t['\u3141'] = '\u1106';
38257 t['\u3142'] = '\u1107';
38258 t['\u3143'] = '\u1108';
38259 t['\u3144'] = '\u1121';
38260 t['\u3145'] = '\u1109';
38261 t['\u3146'] = '\u110A';
38262 t['\u3147'] = '\u110B';
38263 t['\u3148'] = '\u110C';
38264 t['\u3149'] = '\u110D';
38265 t['\u314A'] = '\u110E';
38266 t['\u314B'] = '\u110F';
38267 t['\u314C'] = '\u1110';
38268 t['\u314D'] = '\u1111';
38269 t['\u314E'] = '\u1112';
38270 t['\u314F'] = '\u1161';
38271 t['\u3150'] = '\u1162';
38272 t['\u3151'] = '\u1163';
38273 t['\u3152'] = '\u1164';
38274 t['\u3153'] = '\u1165';
38275 t['\u3154'] = '\u1166';
38276 t['\u3155'] = '\u1167';
38277 t['\u3156'] = '\u1168';
38278 t['\u3157'] = '\u1169';
38279 t['\u3158'] = '\u116A';
38280 t['\u3159'] = '\u116B';
38281 t['\u315A'] = '\u116C';
38282 t['\u315B'] = '\u116D';
38283 t['\u315C'] = '\u116E';
38284 t['\u315D'] = '\u116F';
38285 t['\u315E'] = '\u1170';
38286 t['\u315F'] = '\u1171';
38287 t['\u3160'] = '\u1172';
38288 t['\u3161'] = '\u1173';
38289 t['\u3162'] = '\u1174';
38290 t['\u3163'] = '\u1175';
38291 t['\u3164'] = '\u1160';
38292 t['\u3165'] = '\u1114';
38293 t['\u3166'] = '\u1115';
38294 t['\u3167'] = '\u11C7';
38295 t['\u3168'] = '\u11C8';
38296 t['\u3169'] = '\u11CC';
38297 t['\u316A'] = '\u11CE';
38298 t['\u316B'] = '\u11D3';
38299 t['\u316C'] = '\u11D7';
38300 t['\u316D'] = '\u11D9';
38301 t['\u316E'] = '\u111C';
38302 t['\u316F'] = '\u11DD';
38303 t['\u3170'] = '\u11DF';
38304 t['\u3171'] = '\u111D';
38305 t['\u3172'] = '\u111E';
38306 t['\u3173'] = '\u1120';
38307 t['\u3174'] = '\u1122';
38308 t['\u3175'] = '\u1123';
38309 t['\u3176'] = '\u1127';
38310 t['\u3177'] = '\u1129';
38311 t['\u3178'] = '\u112B';
38312 t['\u3179'] = '\u112C';
38313 t['\u317A'] = '\u112D';
38314 t['\u317B'] = '\u112E';
38315 t['\u317C'] = '\u112F';
38316 t['\u317D'] = '\u1132';
38317 t['\u317E'] = '\u1136';
38318 t['\u317F'] = '\u1140';
38319 t['\u3180'] = '\u1147';
38320 t['\u3181'] = '\u114C';
38321 t['\u3182'] = '\u11F1';
38322 t['\u3183'] = '\u11F2';
38323 t['\u3184'] = '\u1157';
38324 t['\u3185'] = '\u1158';
38325 t['\u3186'] = '\u1159';
38326 t['\u3187'] = '\u1184';
38327 t['\u3188'] = '\u1185';
38328 t['\u3189'] = '\u1188';
38329 t['\u318A'] = '\u1191';
38330 t['\u318B'] = '\u1192';
38331 t['\u318C'] = '\u1194';
38332 t['\u318D'] = '\u119E';
38333 t['\u318E'] = '\u11A1';
38334 t['\u3200'] = '\u0028\u1100\u0029';
38335 t['\u3201'] = '\u0028\u1102\u0029';
38336 t['\u3202'] = '\u0028\u1103\u0029';
38337 t['\u3203'] = '\u0028\u1105\u0029';
38338 t['\u3204'] = '\u0028\u1106\u0029';
38339 t['\u3205'] = '\u0028\u1107\u0029';
38340 t['\u3206'] = '\u0028\u1109\u0029';
38341 t['\u3207'] = '\u0028\u110B\u0029';
38342 t['\u3208'] = '\u0028\u110C\u0029';
38343 t['\u3209'] = '\u0028\u110E\u0029';
38344 t['\u320A'] = '\u0028\u110F\u0029';
38345 t['\u320B'] = '\u0028\u1110\u0029';
38346 t['\u320C'] = '\u0028\u1111\u0029';
38347 t['\u320D'] = '\u0028\u1112\u0029';
38348 t['\u320E'] = '\u0028\u1100\u1161\u0029';
38349 t['\u320F'] = '\u0028\u1102\u1161\u0029';
38350 t['\u3210'] = '\u0028\u1103\u1161\u0029';
38351 t['\u3211'] = '\u0028\u1105\u1161\u0029';
38352 t['\u3212'] = '\u0028\u1106\u1161\u0029';
38353 t['\u3213'] = '\u0028\u1107\u1161\u0029';
38354 t['\u3214'] = '\u0028\u1109\u1161\u0029';
38355 t['\u3215'] = '\u0028\u110B\u1161\u0029';
38356 t['\u3216'] = '\u0028\u110C\u1161\u0029';
38357 t['\u3217'] = '\u0028\u110E\u1161\u0029';
38358 t['\u3218'] = '\u0028\u110F\u1161\u0029';
38359 t['\u3219'] = '\u0028\u1110\u1161\u0029';
38360 t['\u321A'] = '\u0028\u1111\u1161\u0029';
38361 t['\u321B'] = '\u0028\u1112\u1161\u0029';
38362 t['\u321C'] = '\u0028\u110C\u116E\u0029';
38363 t['\u321D'] = '\u0028\u110B\u1169\u110C\u1165\u11AB\u0029';
38364 t['\u321E'] = '\u0028\u110B\u1169\u1112\u116E\u0029';
38365 t['\u3220'] = '\u0028\u4E00\u0029';
38366 t['\u3221'] = '\u0028\u4E8C\u0029';
38367 t['\u3222'] = '\u0028\u4E09\u0029';
38368 t['\u3223'] = '\u0028\u56DB\u0029';
38369 t['\u3224'] = '\u0028\u4E94\u0029';
38370 t['\u3225'] = '\u0028\u516D\u0029';
38371 t['\u3226'] = '\u0028\u4E03\u0029';
38372 t['\u3227'] = '\u0028\u516B\u0029';
38373 t['\u3228'] = '\u0028\u4E5D\u0029';
38374 t['\u3229'] = '\u0028\u5341\u0029';
38375 t['\u322A'] = '\u0028\u6708\u0029';
38376 t['\u322B'] = '\u0028\u706B\u0029';
38377 t['\u322C'] = '\u0028\u6C34\u0029';
38378 t['\u322D'] = '\u0028\u6728\u0029';
38379 t['\u322E'] = '\u0028\u91D1\u0029';
38380 t['\u322F'] = '\u0028\u571F\u0029';
38381 t['\u3230'] = '\u0028\u65E5\u0029';
38382 t['\u3231'] = '\u0028\u682A\u0029';
38383 t['\u3232'] = '\u0028\u6709\u0029';
38384 t['\u3233'] = '\u0028\u793E\u0029';
38385 t['\u3234'] = '\u0028\u540D\u0029';
38386 t['\u3235'] = '\u0028\u7279\u0029';
38387 t['\u3236'] = '\u0028\u8CA1\u0029';
38388 t['\u3237'] = '\u0028\u795D\u0029';
38389 t['\u3238'] = '\u0028\u52B4\u0029';
38390 t['\u3239'] = '\u0028\u4EE3\u0029';
38391 t['\u323A'] = '\u0028\u547C\u0029';
38392 t['\u323B'] = '\u0028\u5B66\u0029';
38393 t['\u323C'] = '\u0028\u76E3\u0029';
38394 t['\u323D'] = '\u0028\u4F01\u0029';
38395 t['\u323E'] = '\u0028\u8CC7\u0029';
38396 t['\u323F'] = '\u0028\u5354\u0029';
38397 t['\u3240'] = '\u0028\u796D\u0029';
38398 t['\u3241'] = '\u0028\u4F11\u0029';
38399 t['\u3242'] = '\u0028\u81EA\u0029';
38400 t['\u3243'] = '\u0028\u81F3\u0029';
38401 t['\u32C0'] = '\u0031\u6708';
38402 t['\u32C1'] = '\u0032\u6708';
38403 t['\u32C2'] = '\u0033\u6708';
38404 t['\u32C3'] = '\u0034\u6708';
38405 t['\u32C4'] = '\u0035\u6708';
38406 t['\u32C5'] = '\u0036\u6708';
38407 t['\u32C6'] = '\u0037\u6708';
38408 t['\u32C7'] = '\u0038\u6708';
38409 t['\u32C8'] = '\u0039\u6708';
38410 t['\u32C9'] = '\u0031\u0030\u6708';
38411 t['\u32CA'] = '\u0031\u0031\u6708';
38412 t['\u32CB'] = '\u0031\u0032\u6708';
38413 t['\u3358'] = '\u0030\u70B9';
38414 t['\u3359'] = '\u0031\u70B9';
38415 t['\u335A'] = '\u0032\u70B9';
38416 t['\u335B'] = '\u0033\u70B9';
38417 t['\u335C'] = '\u0034\u70B9';
38418 t['\u335D'] = '\u0035\u70B9';
38419 t['\u335E'] = '\u0036\u70B9';
38420 t['\u335F'] = '\u0037\u70B9';
38421 t['\u3360'] = '\u0038\u70B9';
38422 t['\u3361'] = '\u0039\u70B9';
38423 t['\u3362'] = '\u0031\u0030\u70B9';
38424 t['\u3363'] = '\u0031\u0031\u70B9';
38425 t['\u3364'] = '\u0031\u0032\u70B9';
38426 t['\u3365'] = '\u0031\u0033\u70B9';
38427 t['\u3366'] = '\u0031\u0034\u70B9';
38428 t['\u3367'] = '\u0031\u0035\u70B9';
38429 t['\u3368'] = '\u0031\u0036\u70B9';
38430 t['\u3369'] = '\u0031\u0037\u70B9';
38431 t['\u336A'] = '\u0031\u0038\u70B9';
38432 t['\u336B'] = '\u0031\u0039\u70B9';
38433 t['\u336C'] = '\u0032\u0030\u70B9';
38434 t['\u336D'] = '\u0032\u0031\u70B9';
38435 t['\u336E'] = '\u0032\u0032\u70B9';
38436 t['\u336F'] = '\u0032\u0033\u70B9';
38437 t['\u3370'] = '\u0032\u0034\u70B9';
38438 t['\u33E0'] = '\u0031\u65E5';
38439 t['\u33E1'] = '\u0032\u65E5';
38440 t['\u33E2'] = '\u0033\u65E5';
38441 t['\u33E3'] = '\u0034\u65E5';
38442 t['\u33E4'] = '\u0035\u65E5';
38443 t['\u33E5'] = '\u0036\u65E5';
38444 t['\u33E6'] = '\u0037\u65E5';
38445 t['\u33E7'] = '\u0038\u65E5';
38446 t['\u33E8'] = '\u0039\u65E5';
38447 t['\u33E9'] = '\u0031\u0030\u65E5';
38448 t['\u33EA'] = '\u0031\u0031\u65E5';
38449 t['\u33EB'] = '\u0031\u0032\u65E5';
38450 t['\u33EC'] = '\u0031\u0033\u65E5';
38451 t['\u33ED'] = '\u0031\u0034\u65E5';
38452 t['\u33EE'] = '\u0031\u0035\u65E5';
38453 t['\u33EF'] = '\u0031\u0036\u65E5';
38454 t['\u33F0'] = '\u0031\u0037\u65E5';
38455 t['\u33F1'] = '\u0031\u0038\u65E5';
38456 t['\u33F2'] = '\u0031\u0039\u65E5';
38457 t['\u33F3'] = '\u0032\u0030\u65E5';
38458 t['\u33F4'] = '\u0032\u0031\u65E5';
38459 t['\u33F5'] = '\u0032\u0032\u65E5';
38460 t['\u33F6'] = '\u0032\u0033\u65E5';
38461 t['\u33F7'] = '\u0032\u0034\u65E5';
38462 t['\u33F8'] = '\u0032\u0035\u65E5';
38463 t['\u33F9'] = '\u0032\u0036\u65E5';
38464 t['\u33FA'] = '\u0032\u0037\u65E5';
38465 t['\u33FB'] = '\u0032\u0038\u65E5';
38466 t['\u33FC'] = '\u0032\u0039\u65E5';
38467 t['\u33FD'] = '\u0033\u0030\u65E5';
38468 t['\u33FE'] = '\u0033\u0031\u65E5';
38469 t['\uFB00'] = '\u0066\u0066';
38470 t['\uFB01'] = '\u0066\u0069';
38471 t['\uFB02'] = '\u0066\u006C';
38472 t['\uFB03'] = '\u0066\u0066\u0069';
38473 t['\uFB04'] = '\u0066\u0066\u006C';
38474 t['\uFB05'] = '\u017F\u0074';
38475 t['\uFB06'] = '\u0073\u0074';
38476 t['\uFB13'] = '\u0574\u0576';
38477 t['\uFB14'] = '\u0574\u0565';
38478 t['\uFB15'] = '\u0574\u056B';
38479 t['\uFB16'] = '\u057E\u0576';
38480 t['\uFB17'] = '\u0574\u056D';
38481 t['\uFB4F'] = '\u05D0\u05DC';
38482 t['\uFB50'] = '\u0671';
38483 t['\uFB51'] = '\u0671';
38484 t['\uFB52'] = '\u067B';
38485 t['\uFB53'] = '\u067B';
38486 t['\uFB54'] = '\u067B';
38487 t['\uFB55'] = '\u067B';
38488 t['\uFB56'] = '\u067E';
38489 t['\uFB57'] = '\u067E';
38490 t['\uFB58'] = '\u067E';
38491 t['\uFB59'] = '\u067E';
38492 t['\uFB5A'] = '\u0680';
38493 t['\uFB5B'] = '\u0680';
38494 t['\uFB5C'] = '\u0680';
38495 t['\uFB5D'] = '\u0680';
38496 t['\uFB5E'] = '\u067A';
38497 t['\uFB5F'] = '\u067A';
38498 t['\uFB60'] = '\u067A';
38499 t['\uFB61'] = '\u067A';
38500 t['\uFB62'] = '\u067F';
38501 t['\uFB63'] = '\u067F';
38502 t['\uFB64'] = '\u067F';
38503 t['\uFB65'] = '\u067F';
38504 t['\uFB66'] = '\u0679';
38505 t['\uFB67'] = '\u0679';
38506 t['\uFB68'] = '\u0679';
38507 t['\uFB69'] = '\u0679';
38508 t['\uFB6A'] = '\u06A4';
38509 t['\uFB6B'] = '\u06A4';
38510 t['\uFB6C'] = '\u06A4';
38511 t['\uFB6D'] = '\u06A4';
38512 t['\uFB6E'] = '\u06A6';
38513 t['\uFB6F'] = '\u06A6';
38514 t['\uFB70'] = '\u06A6';
38515 t['\uFB71'] = '\u06A6';
38516 t['\uFB72'] = '\u0684';
38517 t['\uFB73'] = '\u0684';
38518 t['\uFB74'] = '\u0684';
38519 t['\uFB75'] = '\u0684';
38520 t['\uFB76'] = '\u0683';
38521 t['\uFB77'] = '\u0683';
38522 t['\uFB78'] = '\u0683';
38523 t['\uFB79'] = '\u0683';
38524 t['\uFB7A'] = '\u0686';
38525 t['\uFB7B'] = '\u0686';
38526 t['\uFB7C'] = '\u0686';
38527 t['\uFB7D'] = '\u0686';
38528 t['\uFB7E'] = '\u0687';
38529 t['\uFB7F'] = '\u0687';
38530 t['\uFB80'] = '\u0687';
38531 t['\uFB81'] = '\u0687';
38532 t['\uFB82'] = '\u068D';
38533 t['\uFB83'] = '\u068D';
38534 t['\uFB84'] = '\u068C';
38535 t['\uFB85'] = '\u068C';
38536 t['\uFB86'] = '\u068E';
38537 t['\uFB87'] = '\u068E';
38538 t['\uFB88'] = '\u0688';
38539 t['\uFB89'] = '\u0688';
38540 t['\uFB8A'] = '\u0698';
38541 t['\uFB8B'] = '\u0698';
38542 t['\uFB8C'] = '\u0691';
38543 t['\uFB8D'] = '\u0691';
38544 t['\uFB8E'] = '\u06A9';
38545 t['\uFB8F'] = '\u06A9';
38546 t['\uFB90'] = '\u06A9';
38547 t['\uFB91'] = '\u06A9';
38548 t['\uFB92'] = '\u06AF';
38549 t['\uFB93'] = '\u06AF';
38550 t['\uFB94'] = '\u06AF';
38551 t['\uFB95'] = '\u06AF';
38552 t['\uFB96'] = '\u06B3';
38553 t['\uFB97'] = '\u06B3';
38554 t['\uFB98'] = '\u06B3';
38555 t['\uFB99'] = '\u06B3';
38556 t['\uFB9A'] = '\u06B1';
38557 t['\uFB9B'] = '\u06B1';
38558 t['\uFB9C'] = '\u06B1';
38559 t['\uFB9D'] = '\u06B1';
38560 t['\uFB9E'] = '\u06BA';
38561 t['\uFB9F'] = '\u06BA';
38562 t['\uFBA0'] = '\u06BB';
38563 t['\uFBA1'] = '\u06BB';
38564 t['\uFBA2'] = '\u06BB';
38565 t['\uFBA3'] = '\u06BB';
38566 t['\uFBA4'] = '\u06C0';
38567 t['\uFBA5'] = '\u06C0';
38568 t['\uFBA6'] = '\u06C1';
38569 t['\uFBA7'] = '\u06C1';
38570 t['\uFBA8'] = '\u06C1';
38571 t['\uFBA9'] = '\u06C1';
38572 t['\uFBAA'] = '\u06BE';
38573 t['\uFBAB'] = '\u06BE';
38574 t['\uFBAC'] = '\u06BE';
38575 t['\uFBAD'] = '\u06BE';
38576 t['\uFBAE'] = '\u06D2';
38577 t['\uFBAF'] = '\u06D2';
38578 t['\uFBB0'] = '\u06D3';
38579 t['\uFBB1'] = '\u06D3';
38580 t['\uFBD3'] = '\u06AD';
38581 t['\uFBD4'] = '\u06AD';
38582 t['\uFBD5'] = '\u06AD';
38583 t['\uFBD6'] = '\u06AD';
38584 t['\uFBD7'] = '\u06C7';
38585 t['\uFBD8'] = '\u06C7';
38586 t['\uFBD9'] = '\u06C6';
38587 t['\uFBDA'] = '\u06C6';
38588 t['\uFBDB'] = '\u06C8';
38589 t['\uFBDC'] = '\u06C8';
38590 t['\uFBDD'] = '\u0677';
38591 t['\uFBDE'] = '\u06CB';
38592 t['\uFBDF'] = '\u06CB';
38593 t['\uFBE0'] = '\u06C5';
38594 t['\uFBE1'] = '\u06C5';
38595 t['\uFBE2'] = '\u06C9';
38596 t['\uFBE3'] = '\u06C9';
38597 t['\uFBE4'] = '\u06D0';
38598 t['\uFBE5'] = '\u06D0';
38599 t['\uFBE6'] = '\u06D0';
38600 t['\uFBE7'] = '\u06D0';
38601 t['\uFBE8'] = '\u0649';
38602 t['\uFBE9'] = '\u0649';
38603 t['\uFBEA'] = '\u0626\u0627';
38604 t['\uFBEB'] = '\u0626\u0627';
38605 t['\uFBEC'] = '\u0626\u06D5';
38606 t['\uFBED'] = '\u0626\u06D5';
38607 t['\uFBEE'] = '\u0626\u0648';
38608 t['\uFBEF'] = '\u0626\u0648';
38609 t['\uFBF0'] = '\u0626\u06C7';
38610 t['\uFBF1'] = '\u0626\u06C7';
38611 t['\uFBF2'] = '\u0626\u06C6';
38612 t['\uFBF3'] = '\u0626\u06C6';
38613 t['\uFBF4'] = '\u0626\u06C8';
38614 t['\uFBF5'] = '\u0626\u06C8';
38615 t['\uFBF6'] = '\u0626\u06D0';
38616 t['\uFBF7'] = '\u0626\u06D0';
38617 t['\uFBF8'] = '\u0626\u06D0';
38618 t['\uFBF9'] = '\u0626\u0649';
38619 t['\uFBFA'] = '\u0626\u0649';
38620 t['\uFBFB'] = '\u0626\u0649';
38621 t['\uFBFC'] = '\u06CC';
38622 t['\uFBFD'] = '\u06CC';
38623 t['\uFBFE'] = '\u06CC';
38624 t['\uFBFF'] = '\u06CC';
38625 t['\uFC00'] = '\u0626\u062C';
38626 t['\uFC01'] = '\u0626\u062D';
38627 t['\uFC02'] = '\u0626\u0645';
38628 t['\uFC03'] = '\u0626\u0649';
38629 t['\uFC04'] = '\u0626\u064A';
38630 t['\uFC05'] = '\u0628\u062C';
38631 t['\uFC06'] = '\u0628\u062D';
38632 t['\uFC07'] = '\u0628\u062E';
38633 t['\uFC08'] = '\u0628\u0645';
38634 t['\uFC09'] = '\u0628\u0649';
38635 t['\uFC0A'] = '\u0628\u064A';
38636 t['\uFC0B'] = '\u062A\u062C';
38637 t['\uFC0C'] = '\u062A\u062D';
38638 t['\uFC0D'] = '\u062A\u062E';
38639 t['\uFC0E'] = '\u062A\u0645';
38640 t['\uFC0F'] = '\u062A\u0649';
38641 t['\uFC10'] = '\u062A\u064A';
38642 t['\uFC11'] = '\u062B\u062C';
38643 t['\uFC12'] = '\u062B\u0645';
38644 t['\uFC13'] = '\u062B\u0649';
38645 t['\uFC14'] = '\u062B\u064A';
38646 t['\uFC15'] = '\u062C\u062D';
38647 t['\uFC16'] = '\u062C\u0645';
38648 t['\uFC17'] = '\u062D\u062C';
38649 t['\uFC18'] = '\u062D\u0645';
38650 t['\uFC19'] = '\u062E\u062C';
38651 t['\uFC1A'] = '\u062E\u062D';
38652 t['\uFC1B'] = '\u062E\u0645';
38653 t['\uFC1C'] = '\u0633\u062C';
38654 t['\uFC1D'] = '\u0633\u062D';
38655 t['\uFC1E'] = '\u0633\u062E';
38656 t['\uFC1F'] = '\u0633\u0645';
38657 t['\uFC20'] = '\u0635\u062D';
38658 t['\uFC21'] = '\u0635\u0645';
38659 t['\uFC22'] = '\u0636\u062C';
38660 t['\uFC23'] = '\u0636\u062D';
38661 t['\uFC24'] = '\u0636\u062E';
38662 t['\uFC25'] = '\u0636\u0645';
38663 t['\uFC26'] = '\u0637\u062D';
38664 t['\uFC27'] = '\u0637\u0645';
38665 t['\uFC28'] = '\u0638\u0645';
38666 t['\uFC29'] = '\u0639\u062C';
38667 t['\uFC2A'] = '\u0639\u0645';
38668 t['\uFC2B'] = '\u063A\u062C';
38669 t['\uFC2C'] = '\u063A\u0645';
38670 t['\uFC2D'] = '\u0641\u062C';
38671 t['\uFC2E'] = '\u0641\u062D';
38672 t['\uFC2F'] = '\u0641\u062E';
38673 t['\uFC30'] = '\u0641\u0645';
38674 t['\uFC31'] = '\u0641\u0649';
38675 t['\uFC32'] = '\u0641\u064A';
38676 t['\uFC33'] = '\u0642\u062D';
38677 t['\uFC34'] = '\u0642\u0645';
38678 t['\uFC35'] = '\u0642\u0649';
38679 t['\uFC36'] = '\u0642\u064A';
38680 t['\uFC37'] = '\u0643\u0627';
38681 t['\uFC38'] = '\u0643\u062C';
38682 t['\uFC39'] = '\u0643\u062D';
38683 t['\uFC3A'] = '\u0643\u062E';
38684 t['\uFC3B'] = '\u0643\u0644';
38685 t['\uFC3C'] = '\u0643\u0645';
38686 t['\uFC3D'] = '\u0643\u0649';
38687 t['\uFC3E'] = '\u0643\u064A';
38688 t['\uFC3F'] = '\u0644\u062C';
38689 t['\uFC40'] = '\u0644\u062D';
38690 t['\uFC41'] = '\u0644\u062E';
38691 t['\uFC42'] = '\u0644\u0645';
38692 t['\uFC43'] = '\u0644\u0649';
38693 t['\uFC44'] = '\u0644\u064A';
38694 t['\uFC45'] = '\u0645\u062C';
38695 t['\uFC46'] = '\u0645\u062D';
38696 t['\uFC47'] = '\u0645\u062E';
38697 t['\uFC48'] = '\u0645\u0645';
38698 t['\uFC49'] = '\u0645\u0649';
38699 t['\uFC4A'] = '\u0645\u064A';
38700 t['\uFC4B'] = '\u0646\u062C';
38701 t['\uFC4C'] = '\u0646\u062D';
38702 t['\uFC4D'] = '\u0646\u062E';
38703 t['\uFC4E'] = '\u0646\u0645';
38704 t['\uFC4F'] = '\u0646\u0649';
38705 t['\uFC50'] = '\u0646\u064A';
38706 t['\uFC51'] = '\u0647\u062C';
38707 t['\uFC52'] = '\u0647\u0645';
38708 t['\uFC53'] = '\u0647\u0649';
38709 t['\uFC54'] = '\u0647\u064A';
38710 t['\uFC55'] = '\u064A\u062C';
38711 t['\uFC56'] = '\u064A\u062D';
38712 t['\uFC57'] = '\u064A\u062E';
38713 t['\uFC58'] = '\u064A\u0645';
38714 t['\uFC59'] = '\u064A\u0649';
38715 t['\uFC5A'] = '\u064A\u064A';
38716 t['\uFC5B'] = '\u0630\u0670';
38717 t['\uFC5C'] = '\u0631\u0670';
38718 t['\uFC5D'] = '\u0649\u0670';
38719 t['\uFC5E'] = '\u0020\u064C\u0651';
38720 t['\uFC5F'] = '\u0020\u064D\u0651';
38721 t['\uFC60'] = '\u0020\u064E\u0651';
38722 t['\uFC61'] = '\u0020\u064F\u0651';
38723 t['\uFC62'] = '\u0020\u0650\u0651';
38724 t['\uFC63'] = '\u0020\u0651\u0670';
38725 t['\uFC64'] = '\u0626\u0631';
38726 t['\uFC65'] = '\u0626\u0632';
38727 t['\uFC66'] = '\u0626\u0645';
38728 t['\uFC67'] = '\u0626\u0646';
38729 t['\uFC68'] = '\u0626\u0649';
38730 t['\uFC69'] = '\u0626\u064A';
38731 t['\uFC6A'] = '\u0628\u0631';
38732 t['\uFC6B'] = '\u0628\u0632';
38733 t['\uFC6C'] = '\u0628\u0645';
38734 t['\uFC6D'] = '\u0628\u0646';
38735 t['\uFC6E'] = '\u0628\u0649';
38736 t['\uFC6F'] = '\u0628\u064A';
38737 t['\uFC70'] = '\u062A\u0631';
38738 t['\uFC71'] = '\u062A\u0632';
38739 t['\uFC72'] = '\u062A\u0645';
38740 t['\uFC73'] = '\u062A\u0646';
38741 t['\uFC74'] = '\u062A\u0649';
38742 t['\uFC75'] = '\u062A\u064A';
38743 t['\uFC76'] = '\u062B\u0631';
38744 t['\uFC77'] = '\u062B\u0632';
38745 t['\uFC78'] = '\u062B\u0645';
38746 t['\uFC79'] = '\u062B\u0646';
38747 t['\uFC7A'] = '\u062B\u0649';
38748 t['\uFC7B'] = '\u062B\u064A';
38749 t['\uFC7C'] = '\u0641\u0649';
38750 t['\uFC7D'] = '\u0641\u064A';
38751 t['\uFC7E'] = '\u0642\u0649';
38752 t['\uFC7F'] = '\u0642\u064A';
38753 t['\uFC80'] = '\u0643\u0627';
38754 t['\uFC81'] = '\u0643\u0644';
38755 t['\uFC82'] = '\u0643\u0645';
38756 t['\uFC83'] = '\u0643\u0649';
38757 t['\uFC84'] = '\u0643\u064A';
38758 t['\uFC85'] = '\u0644\u0645';
38759 t['\uFC86'] = '\u0644\u0649';
38760 t['\uFC87'] = '\u0644\u064A';
38761 t['\uFC88'] = '\u0645\u0627';
38762 t['\uFC89'] = '\u0645\u0645';
38763 t['\uFC8A'] = '\u0646\u0631';
38764 t['\uFC8B'] = '\u0646\u0632';
38765 t['\uFC8C'] = '\u0646\u0645';
38766 t['\uFC8D'] = '\u0646\u0646';
38767 t['\uFC8E'] = '\u0646\u0649';
38768 t['\uFC8F'] = '\u0646\u064A';
38769 t['\uFC90'] = '\u0649\u0670';
38770 t['\uFC91'] = '\u064A\u0631';
38771 t['\uFC92'] = '\u064A\u0632';
38772 t['\uFC93'] = '\u064A\u0645';
38773 t['\uFC94'] = '\u064A\u0646';
38774 t['\uFC95'] = '\u064A\u0649';
38775 t['\uFC96'] = '\u064A\u064A';
38776 t['\uFC97'] = '\u0626\u062C';
38777 t['\uFC98'] = '\u0626\u062D';
38778 t['\uFC99'] = '\u0626\u062E';
38779 t['\uFC9A'] = '\u0626\u0645';
38780 t['\uFC9B'] = '\u0626\u0647';
38781 t['\uFC9C'] = '\u0628\u062C';
38782 t['\uFC9D'] = '\u0628\u062D';
38783 t['\uFC9E'] = '\u0628\u062E';
38784 t['\uFC9F'] = '\u0628\u0645';
38785 t['\uFCA0'] = '\u0628\u0647';
38786 t['\uFCA1'] = '\u062A\u062C';
38787 t['\uFCA2'] = '\u062A\u062D';
38788 t['\uFCA3'] = '\u062A\u062E';
38789 t['\uFCA4'] = '\u062A\u0645';
38790 t['\uFCA5'] = '\u062A\u0647';
38791 t['\uFCA6'] = '\u062B\u0645';
38792 t['\uFCA7'] = '\u062C\u062D';
38793 t['\uFCA8'] = '\u062C\u0645';
38794 t['\uFCA9'] = '\u062D\u062C';
38795 t['\uFCAA'] = '\u062D\u0645';
38796 t['\uFCAB'] = '\u062E\u062C';
38797 t['\uFCAC'] = '\u062E\u0645';
38798 t['\uFCAD'] = '\u0633\u062C';
38799 t['\uFCAE'] = '\u0633\u062D';
38800 t['\uFCAF'] = '\u0633\u062E';
38801 t['\uFCB0'] = '\u0633\u0645';
38802 t['\uFCB1'] = '\u0635\u062D';
38803 t['\uFCB2'] = '\u0635\u062E';
38804 t['\uFCB3'] = '\u0635\u0645';
38805 t['\uFCB4'] = '\u0636\u062C';
38806 t['\uFCB5'] = '\u0636\u062D';
38807 t['\uFCB6'] = '\u0636\u062E';
38808 t['\uFCB7'] = '\u0636\u0645';
38809 t['\uFCB8'] = '\u0637\u062D';
38810 t['\uFCB9'] = '\u0638\u0645';
38811 t['\uFCBA'] = '\u0639\u062C';
38812 t['\uFCBB'] = '\u0639\u0645';
38813 t['\uFCBC'] = '\u063A\u062C';
38814 t['\uFCBD'] = '\u063A\u0645';
38815 t['\uFCBE'] = '\u0641\u062C';
38816 t['\uFCBF'] = '\u0641\u062D';
38817 t['\uFCC0'] = '\u0641\u062E';
38818 t['\uFCC1'] = '\u0641\u0645';
38819 t['\uFCC2'] = '\u0642\u062D';
38820 t['\uFCC3'] = '\u0642\u0645';
38821 t['\uFCC4'] = '\u0643\u062C';
38822 t['\uFCC5'] = '\u0643\u062D';
38823 t['\uFCC6'] = '\u0643\u062E';
38824 t['\uFCC7'] = '\u0643\u0644';
38825 t['\uFCC8'] = '\u0643\u0645';
38826 t['\uFCC9'] = '\u0644\u062C';
38827 t['\uFCCA'] = '\u0644\u062D';
38828 t['\uFCCB'] = '\u0644\u062E';
38829 t['\uFCCC'] = '\u0644\u0645';
38830 t['\uFCCD'] = '\u0644\u0647';
38831 t['\uFCCE'] = '\u0645\u062C';
38832 t['\uFCCF'] = '\u0645\u062D';
38833 t['\uFCD0'] = '\u0645\u062E';
38834 t['\uFCD1'] = '\u0645\u0645';
38835 t['\uFCD2'] = '\u0646\u062C';
38836 t['\uFCD3'] = '\u0646\u062D';
38837 t['\uFCD4'] = '\u0646\u062E';
38838 t['\uFCD5'] = '\u0646\u0645';
38839 t['\uFCD6'] = '\u0646\u0647';
38840 t['\uFCD7'] = '\u0647\u062C';
38841 t['\uFCD8'] = '\u0647\u0645';
38842 t['\uFCD9'] = '\u0647\u0670';
38843 t['\uFCDA'] = '\u064A\u062C';
38844 t['\uFCDB'] = '\u064A\u062D';
38845 t['\uFCDC'] = '\u064A\u062E';
38846 t['\uFCDD'] = '\u064A\u0645';
38847 t['\uFCDE'] = '\u064A\u0647';
38848 t['\uFCDF'] = '\u0626\u0645';
38849 t['\uFCE0'] = '\u0626\u0647';
38850 t['\uFCE1'] = '\u0628\u0645';
38851 t['\uFCE2'] = '\u0628\u0647';
38852 t['\uFCE3'] = '\u062A\u0645';
38853 t['\uFCE4'] = '\u062A\u0647';
38854 t['\uFCE5'] = '\u062B\u0645';
38855 t['\uFCE6'] = '\u062B\u0647';
38856 t['\uFCE7'] = '\u0633\u0645';
38857 t['\uFCE8'] = '\u0633\u0647';
38858 t['\uFCE9'] = '\u0634\u0645';
38859 t['\uFCEA'] = '\u0634\u0647';
38860 t['\uFCEB'] = '\u0643\u0644';
38861 t['\uFCEC'] = '\u0643\u0645';
38862 t['\uFCED'] = '\u0644\u0645';
38863 t['\uFCEE'] = '\u0646\u0645';
38864 t['\uFCEF'] = '\u0646\u0647';
38865 t['\uFCF0'] = '\u064A\u0645';
38866 t['\uFCF1'] = '\u064A\u0647';
38867 t['\uFCF2'] = '\u0640\u064E\u0651';
38868 t['\uFCF3'] = '\u0640\u064F\u0651';
38869 t['\uFCF4'] = '\u0640\u0650\u0651';
38870 t['\uFCF5'] = '\u0637\u0649';
38871 t['\uFCF6'] = '\u0637\u064A';
38872 t['\uFCF7'] = '\u0639\u0649';
38873 t['\uFCF8'] = '\u0639\u064A';
38874 t['\uFCF9'] = '\u063A\u0649';
38875 t['\uFCFA'] = '\u063A\u064A';
38876 t['\uFCFB'] = '\u0633\u0649';
38877 t['\uFCFC'] = '\u0633\u064A';
38878 t['\uFCFD'] = '\u0634\u0649';
38879 t['\uFCFE'] = '\u0634\u064A';
38880 t['\uFCFF'] = '\u062D\u0649';
38881 t['\uFD00'] = '\u062D\u064A';
38882 t['\uFD01'] = '\u062C\u0649';
38883 t['\uFD02'] = '\u062C\u064A';
38884 t['\uFD03'] = '\u062E\u0649';
38885 t['\uFD04'] = '\u062E\u064A';
38886 t['\uFD05'] = '\u0635\u0649';
38887 t['\uFD06'] = '\u0635\u064A';
38888 t['\uFD07'] = '\u0636\u0649';
38889 t['\uFD08'] = '\u0636\u064A';
38890 t['\uFD09'] = '\u0634\u062C';
38891 t['\uFD0A'] = '\u0634\u062D';
38892 t['\uFD0B'] = '\u0634\u062E';
38893 t['\uFD0C'] = '\u0634\u0645';
38894 t['\uFD0D'] = '\u0634\u0631';
38895 t['\uFD0E'] = '\u0633\u0631';
38896 t['\uFD0F'] = '\u0635\u0631';
38897 t['\uFD10'] = '\u0636\u0631';
38898 t['\uFD11'] = '\u0637\u0649';
38899 t['\uFD12'] = '\u0637\u064A';
38900 t['\uFD13'] = '\u0639\u0649';
38901 t['\uFD14'] = '\u0639\u064A';
38902 t['\uFD15'] = '\u063A\u0649';
38903 t['\uFD16'] = '\u063A\u064A';
38904 t['\uFD17'] = '\u0633\u0649';
38905 t['\uFD18'] = '\u0633\u064A';
38906 t['\uFD19'] = '\u0634\u0649';
38907 t['\uFD1A'] = '\u0634\u064A';
38908 t['\uFD1B'] = '\u062D\u0649';
38909 t['\uFD1C'] = '\u062D\u064A';
38910 t['\uFD1D'] = '\u062C\u0649';
38911 t['\uFD1E'] = '\u062C\u064A';
38912 t['\uFD1F'] = '\u062E\u0649';
38913 t['\uFD20'] = '\u062E\u064A';
38914 t['\uFD21'] = '\u0635\u0649';
38915 t['\uFD22'] = '\u0635\u064A';
38916 t['\uFD23'] = '\u0636\u0649';
38917 t['\uFD24'] = '\u0636\u064A';
38918 t['\uFD25'] = '\u0634\u062C';
38919 t['\uFD26'] = '\u0634\u062D';
38920 t['\uFD27'] = '\u0634\u062E';
38921 t['\uFD28'] = '\u0634\u0645';
38922 t['\uFD29'] = '\u0634\u0631';
38923 t['\uFD2A'] = '\u0633\u0631';
38924 t['\uFD2B'] = '\u0635\u0631';
38925 t['\uFD2C'] = '\u0636\u0631';
38926 t['\uFD2D'] = '\u0634\u062C';
38927 t['\uFD2E'] = '\u0634\u062D';
38928 t['\uFD2F'] = '\u0634\u062E';
38929 t['\uFD30'] = '\u0634\u0645';
38930 t['\uFD31'] = '\u0633\u0647';
38931 t['\uFD32'] = '\u0634\u0647';
38932 t['\uFD33'] = '\u0637\u0645';
38933 t['\uFD34'] = '\u0633\u062C';
38934 t['\uFD35'] = '\u0633\u062D';
38935 t['\uFD36'] = '\u0633\u062E';
38936 t['\uFD37'] = '\u0634\u062C';
38937 t['\uFD38'] = '\u0634\u062D';
38938 t['\uFD39'] = '\u0634\u062E';
38939 t['\uFD3A'] = '\u0637\u0645';
38940 t['\uFD3B'] = '\u0638\u0645';
38941 t['\uFD3C'] = '\u0627\u064B';
38942 t['\uFD3D'] = '\u0627\u064B';
38943 t['\uFD50'] = '\u062A\u062C\u0645';
38944 t['\uFD51'] = '\u062A\u062D\u062C';
38945 t['\uFD52'] = '\u062A\u062D\u062C';
38946 t['\uFD53'] = '\u062A\u062D\u0645';
38947 t['\uFD54'] = '\u062A\u062E\u0645';
38948 t['\uFD55'] = '\u062A\u0645\u062C';
38949 t['\uFD56'] = '\u062A\u0645\u062D';
38950 t['\uFD57'] = '\u062A\u0645\u062E';
38951 t['\uFD58'] = '\u062C\u0645\u062D';
38952 t['\uFD59'] = '\u062C\u0645\u062D';
38953 t['\uFD5A'] = '\u062D\u0645\u064A';
38954 t['\uFD5B'] = '\u062D\u0645\u0649';
38955 t['\uFD5C'] = '\u0633\u062D\u062C';
38956 t['\uFD5D'] = '\u0633\u062C\u062D';
38957 t['\uFD5E'] = '\u0633\u062C\u0649';
38958 t['\uFD5F'] = '\u0633\u0645\u062D';
38959 t['\uFD60'] = '\u0633\u0645\u062D';
38960 t['\uFD61'] = '\u0633\u0645\u062C';
38961 t['\uFD62'] = '\u0633\u0645\u0645';
38962 t['\uFD63'] = '\u0633\u0645\u0645';
38963 t['\uFD64'] = '\u0635\u062D\u062D';
38964 t['\uFD65'] = '\u0635\u062D\u062D';
38965 t['\uFD66'] = '\u0635\u0645\u0645';
38966 t['\uFD67'] = '\u0634\u062D\u0645';
38967 t['\uFD68'] = '\u0634\u062D\u0645';
38968 t['\uFD69'] = '\u0634\u062C\u064A';
38969 t['\uFD6A'] = '\u0634\u0645\u062E';
38970 t['\uFD6B'] = '\u0634\u0645\u062E';
38971 t['\uFD6C'] = '\u0634\u0645\u0645';
38972 t['\uFD6D'] = '\u0634\u0645\u0645';
38973 t['\uFD6E'] = '\u0636\u062D\u0649';
38974 t['\uFD6F'] = '\u0636\u062E\u0645';
38975 t['\uFD70'] = '\u0636\u062E\u0645';
38976 t['\uFD71'] = '\u0637\u0645\u062D';
38977 t['\uFD72'] = '\u0637\u0645\u062D';
38978 t['\uFD73'] = '\u0637\u0645\u0645';
38979 t['\uFD74'] = '\u0637\u0645\u064A';
38980 t['\uFD75'] = '\u0639\u062C\u0645';
38981 t['\uFD76'] = '\u0639\u0645\u0645';
38982 t['\uFD77'] = '\u0639\u0645\u0645';
38983 t['\uFD78'] = '\u0639\u0645\u0649';
38984 t['\uFD79'] = '\u063A\u0645\u0645';
38985 t['\uFD7A'] = '\u063A\u0645\u064A';
38986 t['\uFD7B'] = '\u063A\u0645\u0649';
38987 t['\uFD7C'] = '\u0641\u062E\u0645';
38988 t['\uFD7D'] = '\u0641\u062E\u0645';
38989 t['\uFD7E'] = '\u0642\u0645\u062D';
38990 t['\uFD7F'] = '\u0642\u0645\u0645';
38991 t['\uFD80'] = '\u0644\u062D\u0645';
38992 t['\uFD81'] = '\u0644\u062D\u064A';
38993 t['\uFD82'] = '\u0644\u062D\u0649';
38994 t['\uFD83'] = '\u0644\u062C\u062C';
38995 t['\uFD84'] = '\u0644\u062C\u062C';
38996 t['\uFD85'] = '\u0644\u062E\u0645';
38997 t['\uFD86'] = '\u0644\u062E\u0645';
38998 t['\uFD87'] = '\u0644\u0645\u062D';
38999 t['\uFD88'] = '\u0644\u0645\u062D';
39000 t['\uFD89'] = '\u0645\u062D\u062C';
39001 t['\uFD8A'] = '\u0645\u062D\u0645';
39002 t['\uFD8B'] = '\u0645\u062D\u064A';
39003 t['\uFD8C'] = '\u0645\u062C\u062D';
39004 t['\uFD8D'] = '\u0645\u062C\u0645';
39005 t['\uFD8E'] = '\u0645\u062E\u062C';
39006 t['\uFD8F'] = '\u0645\u062E\u0645';
39007 t['\uFD92'] = '\u0645\u062C\u062E';
39008 t['\uFD93'] = '\u0647\u0645\u062C';
39009 t['\uFD94'] = '\u0647\u0645\u0645';
39010 t['\uFD95'] = '\u0646\u062D\u0645';
39011 t['\uFD96'] = '\u0646\u062D\u0649';
39012 t['\uFD97'] = '\u0646\u062C\u0645';
39013 t['\uFD98'] = '\u0646\u062C\u0645';
39014 t['\uFD99'] = '\u0646\u062C\u0649';
39015 t['\uFD9A'] = '\u0646\u0645\u064A';
39016 t['\uFD9B'] = '\u0646\u0645\u0649';
39017 t['\uFD9C'] = '\u064A\u0645\u0645';
39018 t['\uFD9D'] = '\u064A\u0645\u0645';
39019 t['\uFD9E'] = '\u0628\u062E\u064A';
39020 t['\uFD9F'] = '\u062A\u062C\u064A';
39021 t['\uFDA0'] = '\u062A\u062C\u0649';
39022 t['\uFDA1'] = '\u062A\u062E\u064A';
39023 t['\uFDA2'] = '\u062A\u062E\u0649';
39024 t['\uFDA3'] = '\u062A\u0645\u064A';
39025 t['\uFDA4'] = '\u062A\u0645\u0649';
39026 t['\uFDA5'] = '\u062C\u0645\u064A';
39027 t['\uFDA6'] = '\u062C\u062D\u0649';
39028 t['\uFDA7'] = '\u062C\u0645\u0649';
39029 t['\uFDA8'] = '\u0633\u062E\u0649';
39030 t['\uFDA9'] = '\u0635\u062D\u064A';
39031 t['\uFDAA'] = '\u0634\u062D\u064A';
39032 t['\uFDAB'] = '\u0636\u062D\u064A';
39033 t['\uFDAC'] = '\u0644\u062C\u064A';
39034 t['\uFDAD'] = '\u0644\u0645\u064A';
39035 t['\uFDAE'] = '\u064A\u062D\u064A';
39036 t['\uFDAF'] = '\u064A\u062C\u064A';
39037 t['\uFDB0'] = '\u064A\u0645\u064A';
39038 t['\uFDB1'] = '\u0645\u0645\u064A';
39039 t['\uFDB2'] = '\u0642\u0645\u064A';
39040 t['\uFDB3'] = '\u0646\u062D\u064A';
39041 t['\uFDB4'] = '\u0642\u0645\u062D';
39042 t['\uFDB5'] = '\u0644\u062D\u0645';
39043 t['\uFDB6'] = '\u0639\u0645\u064A';
39044 t['\uFDB7'] = '\u0643\u0645\u064A';
39045 t['\uFDB8'] = '\u0646\u062C\u062D';
39046 t['\uFDB9'] = '\u0645\u062E\u064A';
39047 t['\uFDBA'] = '\u0644\u062C\u0645';
39048 t['\uFDBB'] = '\u0643\u0645\u0645';
39049 t['\uFDBC'] = '\u0644\u062C\u0645';
39050 t['\uFDBD'] = '\u0646\u062C\u062D';
39051 t['\uFDBE'] = '\u062C\u062D\u064A';
39052 t['\uFDBF'] = '\u062D\u062C\u064A';
39053 t['\uFDC0'] = '\u0645\u062C\u064A';
39054 t['\uFDC1'] = '\u0641\u0645\u064A';
39055 t['\uFDC2'] = '\u0628\u062D\u064A';
39056 t['\uFDC3'] = '\u0643\u0645\u0645';
39057 t['\uFDC4'] = '\u0639\u062C\u0645';
39058 t['\uFDC5'] = '\u0635\u0645\u0645';
39059 t['\uFDC6'] = '\u0633\u062E\u064A';
39060 t['\uFDC7'] = '\u0646\u062C\u064A';
39061 t['\uFE49'] = '\u203E';
39062 t['\uFE4A'] = '\u203E';
39063 t['\uFE4B'] = '\u203E';
39064 t['\uFE4C'] = '\u203E';
39065 t['\uFE4D'] = '\u005F';
39066 t['\uFE4E'] = '\u005F';
39067 t['\uFE4F'] = '\u005F';
39068 t['\uFE80'] = '\u0621';
39069 t['\uFE81'] = '\u0622';
39070 t['\uFE82'] = '\u0622';
39071 t['\uFE83'] = '\u0623';
39072 t['\uFE84'] = '\u0623';
39073 t['\uFE85'] = '\u0624';
39074 t['\uFE86'] = '\u0624';
39075 t['\uFE87'] = '\u0625';
39076 t['\uFE88'] = '\u0625';
39077 t['\uFE89'] = '\u0626';
39078 t['\uFE8A'] = '\u0626';
39079 t['\uFE8B'] = '\u0626';
39080 t['\uFE8C'] = '\u0626';
39081 t['\uFE8D'] = '\u0627';
39082 t['\uFE8E'] = '\u0627';
39083 t['\uFE8F'] = '\u0628';
39084 t['\uFE90'] = '\u0628';
39085 t['\uFE91'] = '\u0628';
39086 t['\uFE92'] = '\u0628';
39087 t['\uFE93'] = '\u0629';
39088 t['\uFE94'] = '\u0629';
39089 t['\uFE95'] = '\u062A';
39090 t['\uFE96'] = '\u062A';
39091 t['\uFE97'] = '\u062A';
39092 t['\uFE98'] = '\u062A';
39093 t['\uFE99'] = '\u062B';
39094 t['\uFE9A'] = '\u062B';
39095 t['\uFE9B'] = '\u062B';
39096 t['\uFE9C'] = '\u062B';
39097 t['\uFE9D'] = '\u062C';
39098 t['\uFE9E'] = '\u062C';
39099 t['\uFE9F'] = '\u062C';
39100 t['\uFEA0'] = '\u062C';
39101 t['\uFEA1'] = '\u062D';
39102 t['\uFEA2'] = '\u062D';
39103 t['\uFEA3'] = '\u062D';
39104 t['\uFEA4'] = '\u062D';
39105 t['\uFEA5'] = '\u062E';
39106 t['\uFEA6'] = '\u062E';
39107 t['\uFEA7'] = '\u062E';
39108 t['\uFEA8'] = '\u062E';
39109 t['\uFEA9'] = '\u062F';
39110 t['\uFEAA'] = '\u062F';
39111 t['\uFEAB'] = '\u0630';
39112 t['\uFEAC'] = '\u0630';
39113 t['\uFEAD'] = '\u0631';
39114 t['\uFEAE'] = '\u0631';
39115 t['\uFEAF'] = '\u0632';
39116 t['\uFEB0'] = '\u0632';
39117 t['\uFEB1'] = '\u0633';
39118 t['\uFEB2'] = '\u0633';
39119 t['\uFEB3'] = '\u0633';
39120 t['\uFEB4'] = '\u0633';
39121 t['\uFEB5'] = '\u0634';
39122 t['\uFEB6'] = '\u0634';
39123 t['\uFEB7'] = '\u0634';
39124 t['\uFEB8'] = '\u0634';
39125 t['\uFEB9'] = '\u0635';
39126 t['\uFEBA'] = '\u0635';
39127 t['\uFEBB'] = '\u0635';
39128 t['\uFEBC'] = '\u0635';
39129 t['\uFEBD'] = '\u0636';
39130 t['\uFEBE'] = '\u0636';
39131 t['\uFEBF'] = '\u0636';
39132 t['\uFEC0'] = '\u0636';
39133 t['\uFEC1'] = '\u0637';
39134 t['\uFEC2'] = '\u0637';
39135 t['\uFEC3'] = '\u0637';
39136 t['\uFEC4'] = '\u0637';
39137 t['\uFEC5'] = '\u0638';
39138 t['\uFEC6'] = '\u0638';
39139 t['\uFEC7'] = '\u0638';
39140 t['\uFEC8'] = '\u0638';
39141 t['\uFEC9'] = '\u0639';
39142 t['\uFECA'] = '\u0639';
39143 t['\uFECB'] = '\u0639';
39144 t['\uFECC'] = '\u0639';
39145 t['\uFECD'] = '\u063A';
39146 t['\uFECE'] = '\u063A';
39147 t['\uFECF'] = '\u063A';
39148 t['\uFED0'] = '\u063A';
39149 t['\uFED1'] = '\u0641';
39150 t['\uFED2'] = '\u0641';
39151 t['\uFED3'] = '\u0641';
39152 t['\uFED4'] = '\u0641';
39153 t['\uFED5'] = '\u0642';
39154 t['\uFED6'] = '\u0642';
39155 t['\uFED7'] = '\u0642';
39156 t['\uFED8'] = '\u0642';
39157 t['\uFED9'] = '\u0643';
39158 t['\uFEDA'] = '\u0643';
39159 t['\uFEDB'] = '\u0643';
39160 t['\uFEDC'] = '\u0643';
39161 t['\uFEDD'] = '\u0644';
39162 t['\uFEDE'] = '\u0644';
39163 t['\uFEDF'] = '\u0644';
39164 t['\uFEE0'] = '\u0644';
39165 t['\uFEE1'] = '\u0645';
39166 t['\uFEE2'] = '\u0645';
39167 t['\uFEE3'] = '\u0645';
39168 t['\uFEE4'] = '\u0645';
39169 t['\uFEE5'] = '\u0646';
39170 t['\uFEE6'] = '\u0646';
39171 t['\uFEE7'] = '\u0646';
39172 t['\uFEE8'] = '\u0646';
39173 t['\uFEE9'] = '\u0647';
39174 t['\uFEEA'] = '\u0647';
39175 t['\uFEEB'] = '\u0647';
39176 t['\uFEEC'] = '\u0647';
39177 t['\uFEED'] = '\u0648';
39178 t['\uFEEE'] = '\u0648';
39179 t['\uFEEF'] = '\u0649';
39180 t['\uFEF0'] = '\u0649';
39181 t['\uFEF1'] = '\u064A';
39182 t['\uFEF2'] = '\u064A';
39183 t['\uFEF3'] = '\u064A';
39184 t['\uFEF4'] = '\u064A';
39185 t['\uFEF5'] = '\u0644\u0622';
39186 t['\uFEF6'] = '\u0644\u0622';
39187 t['\uFEF7'] = '\u0644\u0623';
39188 t['\uFEF8'] = '\u0644\u0623';
39189 t['\uFEF9'] = '\u0644\u0625';
39190 t['\uFEFA'] = '\u0644\u0625';
39191 t['\uFEFB'] = '\u0644\u0627';
39192 t['\uFEFC'] = '\u0644\u0627';
39193});
39194function reverseIfRtl(chars) {
39195 var charsLength = chars.length;
39196 if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {
39197  return chars;
39198 }
39199 var s = '';
39200 for (var ii = charsLength - 1; ii >= 0; ii--) {
39201  s += chars[ii];
39202 }
39203 return s;
39204}
39205exports.mapSpecialUnicodeValues = mapSpecialUnicodeValues;
39206exports.reverseIfRtl = reverseIfRtl;
39207exports.getUnicodeRangeFor = getUnicodeRangeFor;
39208exports.getNormalizedUnicodes = getNormalizedUnicodes;
39209exports.getUnicodeForGlyph = getUnicodeForGlyph;
39210
39211/***/ }),
39212/* 163 */
39213/***/ (function(module, exports, __w_pdfjs_require__) {
39214
39215"use strict";
39216
39217
39218Object.defineProperty(exports, "__esModule", {
39219  value: true
39220});
39221exports.FontRendererFactory = undefined;
39222
39223var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
39224
39225var _util = __w_pdfjs_require__(2);
39226
39227var _cff_parser = __w_pdfjs_require__(157);
39228
39229var _glyphlist = __w_pdfjs_require__(160);
39230
39231var _encodings = __w_pdfjs_require__(159);
39232
39233var _stream = __w_pdfjs_require__(140);
39234
39235function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
39236
39237function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { c
39237onstructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
39238
39239function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
39240
39241var FontRendererFactory = function FontRendererFactoryClosure() {
39242  function getLong(data, offset) {
39243    return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];
39244  }
39245  function getUshort(data, offset) {
39246    return data[offset] << 8 | data[offset + 1];
39247  }
39248  function parseCmap(data, start, end) {
39249    var offset = getUshort(data, start + 2) === 1 ? getLong(data, start + 8) : getLong(data, start + 16);
39250    var format = getUshort(data, start + offset);
39251    var ranges, p, i;
39252    if (format === 4) {
39253      getUshort(data, start + offset + 2);
39254      var segCount = getUshort(data, start + offset + 6) >> 1;
39255      p = start + offset + 14;
39256      ranges = [];
39257      for (i = 0; i < segCount; i++, p += 2) {
39258        ranges[i] = { end: getUshort(data, p) };
39259      }
39260      p += 2;
39261      for (i = 0; i < segCount; i++, p += 2) {
39262        ranges[i].start = getUshort(data, p);
39263      }
39264      for (i = 0; i < segCount; i++, p += 2) {
39265        ranges[i].idDelta = getUshort(data, p);
39266      }
39267      for (i = 0; i < segCount; i++, p += 2) {
39268        var idOffset = getUshort(data, p);
39269        if (idOffset === 0) {
39270          continue;
39271        }
39272        ranges[i].ids = [];
39273        for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {
39274          ranges[i].ids[j] = getUshort(data, p + idOffset);
39275          idOffset += 2;
39276        }
39277      }
39278      return ranges;
39279    } else if (format === 12) {
39280      getLong(data, start + offset + 4);
39281      var groups = getLong(data, start + offset + 12);
39282      p = start + offset + 16;
39283      ranges = [];
39284      for (i = 0; i < groups; i++) {
39285        ranges.push({
39286          start: getLong(data, p),
39287          end: getLong(data, p + 4),
39288          idDelta: getLong(data, p + 8) - getLong(data, p)
39289        });
39290        p += 12;
39291      }
39292      return ranges;
39293    }
39294    throw new _util.FormatError('unsupported cmap: ' + format);
39295  }
39296  function parseCff(data, start, end, seacAnalysisEnabled) {
39297    var properties = {};
39298    var parser = new _cff_parser.CFFParser(new _stream.Stream(data, start, end - start), properties, seacAnalysisEnabled);
39299    var cff = parser.parse();
39300    return {
39301      glyphs: cff.charStrings.objects,
39302      subrs: cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex && cff.topDict.privateDict.subrsIndex.objects,
39303      gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,
39304      isCFFCIDFont: cff.isCIDFont,
39305      fdSelect: cff.fdSelect,
39306      fdArray: cff.fdArray
39307    };
39308  }
39309  function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {
39310    var itemSize, itemDecode;
39311    if (isGlyphLocationsLong) {
39312      itemSize = 4;
39313      itemDecode = function fontItemDecodeLong(data, offset) {
39314        return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];
39315      };
39316    } else {
39317      itemSize = 2;
39318      itemDecode = function fontItemDecode(data, offset) {
39319        return data[offset] << 9 | data[offset + 1] << 1;
39320      };
39321    }
39322    var glyphs = [];
39323    var startOffset = itemDecode(loca, 0);
39324    for (var j = itemSize; j < loca.length; j += itemSize) {
39325      var endOffset = itemDecode(loca, j);
39326      glyphs.push(glyf.subarray(startOffset, endOffset));
39327      startOffset = endOffset;
39328    }
39329    return glyphs;
39330  }
39331  function lookupCmap(ranges, unicode) {
39332    var code = unicode.codePointAt(0),
39333        gid = 0;
39334    var l = 0,
39335        r = ranges.length - 1;
39336    while (l < r) {
39337      var c = l + r + 1 >> 1;
39338      if (code < ranges[c].start) {
39339        r = c - 1;
39340      } else {
39341        l = c;
39342      }
39343    }
39344    if (ranges[l].start <= code && code <= ranges[l].end) {
39345      gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xFFFF;
39346    }
39347    return {
39348      charCode: code,
39349      glyphId: gid
39350    };
39351  }
39352  function compileGlyf(code, cmds, font) {
39353    function moveTo(x, y) {
39354      cmds.push({
39355        cmd: 'moveTo',
39356        args: [x, y]
39357      });
39358    }
39359    function lineTo(x, y) {
39360      cmds.push({
39361        cmd: 'lineTo',
39362        args: [x, y]
39363      });
39364    }
39365    function quadraticCurveTo(xa, ya, x, y) {
39366      cmds.push({
39367        cmd: 'quadraticCurveTo',
39368        args: [xa, ya, x, y]
39369      });
39370    }
39371    var i = 0;
39372    var numberOfContours = (code[i] << 24 | code[i + 1] << 16) >> 16;
39373    var flags;
39374    var x = 0,
39375        y = 0;
39376    i += 10;
39377    if (numberOfContours < 0) {
39378      do {
39379        flags = code[i] << 8 | code[i + 1];
39380        var glyphIndex = code[i + 2] << 8 | code[i + 3];
39381        i += 4;
39382        var arg1, arg2;
39383        if (flags & 0x01) {
39384          arg1 = (code[i] << 24 | code[i + 1] << 16) >> 16;
39385          arg2 = (code[i + 2] << 24 | code[i + 3] << 16) >> 16;
39386          i += 4;
39387        } else {
39388          arg1 = code[i++];
39389          arg2 = code[i++];
39390        }
39391        if (flags & 0x02) {
39392          x = arg1;
39393          y = arg2;
39394        } else {
39395          x = 0;
39396          y = 0;
39397        }
39398        var scaleX = 1,
39399            scaleY = 1,
39400            scale01 = 0,
39401            scale10 = 0;
39402        if (flags & 0x08) {
39403          scaleX = scaleY = (code[i] << 24 | code[i + 1] << 16) / 1073741824;
39404          i += 2;
39405        } else if (flags & 0x40) {
39406          scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824;
39407          scaleY = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824;
39408          i += 4;
39409        } else if (flags & 0x80) {
39410          scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824;
39411          scale01 = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824;
39412          scale10 = (code[i + 4] << 24 | code[i + 5] << 16) / 1073741824;
39413          scaleY = (code[i + 6] << 24 | code[i + 7] << 16) / 1073741824;
39414          i += 8;
39415        }
39416        var subglyph = font.glyphs[glyphIndex];
39417        if (subglyph) {
39418          cmds.push({ cmd: 'save' });
39419          cmds.push({
39420            cmd: 'transform',
39421            args: [scaleX, scale01, scale10, scaleY, x, y]
39422          });
39423          compileGlyf(subglyph, cmds, font);
39424          cmds.push({ cmd: 'restore' });
39425        }
39426      } while (flags & 0x20);
39427    } else {
39428      var endPtsOfContours = [];
39429      var j, jj;
39430      for (j = 0; j < numberOfContours; j++) {
39431        endPtsOfContours.push(code[i] << 8 | code[i + 1]);
39432        i += 2;
39433      }
39434      var instructionLength = code[i] << 8 | code[i + 1];
39435      i += 2 + instructionLength;
39436      var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;
39437      var points = [];
39438      while (points.length < numberOfPoints) {
39439        flags = code[i++];
39440        var repeat = 1;
39441        if (flags & 0x08) {
39442          repeat += code[i++];
39443        }
39444        while (repeat-- > 0) {
39445          points.push({ flags: flags });
39446        }
39447      }
39448      for (j = 0; j < numberOfPoints; j++) {
39449        switch (points[j].flags & 0x12) {
39450          case 0x00:
39451            x += (code[i] << 24 | code[i + 1] << 16) >> 16;
39452            i += 2;
39453            break;
39454          case 0x02:
39455            x -= code[i++];
39456            break;
39457          case 0x12:
39458            x += code[i++];
39459            break;
39460        }
39461        points[j].x = x;
39462      }
39463      for (j = 0; j < numberOfPoints; j++) {
39464        switch (points[j].flags & 0x24) {
39465          case 0x00:
39466            y += (code[i] << 24 | code[i + 1] << 16) >> 16;
39467            i += 2;
39468            break;
39469          case 0x04:
39470            y -= code[i++];
39471            break;
39472          case 0x24:
39473            y += code[i++];
39474            break;
39475        }
39476        points[j].y = y;
39477      }
39478      var startPoint = 0;
39479      for (i = 0; i < numberOfContours; i++) {
39480        var endPoint = endPtsOfContours[i];
39481        var contour = points.slice(startPoint, endPoint + 1);
39482        if (contour[0].flags & 1) {
39483          contour.push(contour[0]);
39484        } else if (contour[contour.length - 1].flags & 1) {
39485          contour.unshift(contour[contour.length - 1]);
39486        } else {
39487          var p = {
39488            flags: 1,
39489            x: (contour[0].x + contour[contour.length - 1].x) / 2,
39490            y: (contour[0].y + contour[contour.length - 1].y) / 2
39491          };
39492          contour.unshift(p);
39493          contour.push(p);
39494        }
39495        moveTo(contour[0].x, contour[0].y);
39496        for (j = 1, jj = contour.length; j < jj; j++) {
39497          if (contour[j].flags & 1) {
39498            lineTo(contour[j].x, contour[j].y);
39499          } else if (contour[j + 1].flags & 1) {
39500            quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y);
39501            j++;
39502          } else {
39503            quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2);
39504          }
39505        }
39506        startPoint = endPoint + 1;
39507      }
39508    }
39509  }
39510  function compileCharString(code, cmds, font, glyphId) {
39511    var stack = [];
39512    var x = 0,
39513        y = 0;
39514    var stems = 0;
39515    function moveTo(x, y) {
39516      cmds.push({
39517        cmd: 'moveTo',
39518        args: [x, y]
39519      });
39520    }
39521    function lineTo(x, y) {
39522      cmds.push({
39523        cmd: 'lineTo',
39524        args: [x, y]
39525      });
39526    }
39527    function bezierCurveTo(x1, y1, x2, y2, x, y) {
39528      cmds.push({
39529        cmd: 'bezierCurveTo',
39530        args: [x1, y1, x2, y2, x, y]
39531      });
39532    }
39533    function parse(code) {
39534      var i = 0;
39535      while (i < code.length) {
39536        var stackClean = false;
vendor: 10,816 bytes, lines 39537-39856
39537        var v = code[i++];
39538        var xa, xb, ya, yb, y1, y2, y3, n, subrCode;
39539        switch (v) {
39540          case 1:
39541            stems += stack.length >> 1;
39542            stackClean = true;
39543            break;
39544          case 3:
39545            stems += stack.length >> 1;
39546            stackClean = true;
39547            break;
39548          case 4:
39549            y += stack.pop();
39550            moveTo(x, y);
39551            stackClean = true;
39552            break;
39553          case 5:
39554            while (stack.length > 0) {
39555              x += stack.shift();
39556              y += stack.shift();
39557              lineTo(x, y);
39558            }
39559            break;
39560          case 6:
39561            while (stack.length > 0) {
39562              x += stack.shift();
39563              lineTo(x, y);
39564              if (stack.length === 0) {
39565                break;
39566              }
39567              y += stack.shift();
39568              lineTo(x, y);
39569            }
39570            break;
39571          case 7:
39572            while (stack.length > 0) {
39573              y += stack.shift();
39574              lineTo(x, y);
39575              if (stack.length === 0) {
39576                break;
39577              }
39578              x += stack.shift();
39579              lineTo(x, y);
39580            }
39581            break;
39582          case 8:
39583            while (stack.length > 0) {
39584              xa = x + stack.shift();
39585              ya = y + stack.shift();
39586              xb = xa + stack.shift();
39587              yb = ya + stack.shift();
39588              x = xb + stack.shift();
39589              y = yb + stack.shift();
39590              bezierCurveTo(xa, ya, xb, yb, x, y);
39591            }
39592            break;
39593          case 10:
39594            n = stack.pop();
39595            subrCode = null;
39596            if (font.isCFFCIDFont) {
39597              var fdIndex = font.fdSelect.getFDIndex(glyphId);
39598              if (fdIndex >= 0 && fdIndex < font.fdArray.length) {
39599                var fontDict = font.fdArray[fdIndex],
39600                    subrs = void 0;
39601                if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {
39602                  subrs = fontDict.privateDict.subrsIndex.objects;
39603                }
39604                if (subrs) {
39605                  var numSubrs = subrs.length;
39606                  n += numSubrs < 1240 ? 107 : numSubrs < 33900 ? 1131 : 32768;
39607                  subrCode = subrs[n];
39608                }
39609              } else {
39610                (0, _util.warn)('Invalid fd index for glyph index.');
39611              }
39612            } else {
39613              subrCode = font.subrs[n + font.subrsBias];
39614            }
39615            if (subrCode) {
39616              parse(subrCode);
39617            }
39618            break;
39619          case 11:
39620            return;
39621          case 12:
39622            v = code[i++];
39623            switch (v) {
39624              case 34:
39625                xa = x + stack.shift();
39626                xb = xa + stack.shift();
39627                y1 = y + stack.shift();
39628                x = xb + stack.shift();
39629                bezierCurveTo(xa, y, xb, y1, x, y1);
39630                xa = x + stack.shift();
39631                xb = xa + stack.shift();
39632                x = xb + stack.shift();
39633                bezierCurveTo(xa, y1, xb, y, x, y);
39634                break;
39635              case 35:
39636                xa = x + stack.shift();
39637                ya = y + stack.shift();
39638                xb = xa + stack.shift();
39639                yb = ya + stack.shift();
39640                x = xb + stack.shift();
39641                y = yb + stack.shift();
39642                bezierCurveTo(xa, ya, xb, yb, x, y);
39643                xa = x + stack.shift();
39644                ya = y + stack.shift();
39645                xb = xa + stack.shift();
39646                yb = ya + stack.shift();
39647                x = xb + stack.shift();
39648                y = yb + stack.shift();
39649                bezierCurveTo(xa, ya, xb, yb, x, y);
39650                stack.pop();
39651                break;
39652              case 36:
39653                xa = x + stack.shift();
39654                y1 = y + stack.shift();
39655                xb = xa + stack.shift();
39656                y2 = y1 + stack.shift();
39657                x = xb + stack.shift();
39658                bezierCurveTo(xa, y1, xb, y2, x, y2);
39659                xa = x + stack.shift();
39660                xb = xa + stack.shift();
39661                y3 = y2 + stack.shift();
39662                x = xb + stack.shift();
39663                bezierCurveTo(xa, y2, xb, y3, x, y);
39664                break;
39665              case 37:
39666                var x0 = x,
39667                    y0 = y;
39668                xa = x + stack.shift();
39669                ya = y + stack.shift();
39670                xb = xa + stack.shift();
39671                yb = ya + stack.shift();
39672                x = xb + stack.shift();
39673                y = yb + stack.shift();
39674                bezierCurveTo(xa, ya, xb, yb, x, y);
39675                xa = x + stack.shift();
39676                ya = y + stack.shift();
39677                xb = xa + stack.shift();
39678                yb = ya + stack.shift();
39679                x = xb;
39680                y = yb;
39681                if (Math.abs(x - x0) > Math.abs(y - y0)) {
39682                  x += stack.shift();
39683                } else {
39684                  y += stack.shift();
39685                }
39686                bezierCurveTo(xa, ya, xb, yb, x, y);
39687                break;
39688              default:
39689                throw new _util.FormatError('unknown operator: 12 ' + v);
39690            }
39691            break;
39692          case 14:
39693            if (stack.length >= 4) {
39694              var achar = stack.pop();
39695              var bchar = stack.pop();
39696              y = stack.pop();
39697              x = stack.pop();
39698              cmds.push({ cmd: 'save' });
39699              cmds.push({
39700                cmd: 'translate',
39701                args: [x, y]
39702              });
39703              var cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[achar]]));
39704              compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);
39705              cmds.push({ cmd: 'restore' });
39706              cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[bchar]]));
39707              compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);
39708            }
39709            return;
39710          case 18:
39711            stems += stack.length >> 1;
39712            stackClean = true;
39713            break;
39714          case 19:
39715            stems += stack.length >> 1;
39716            i += stems + 7 >> 3;
39717            stackClean = true;
39718            break;
39719          case 20:
39720            stems += stack.length >> 1;
39721            i += stems + 7 >> 3;
39722            stackClean = true;
39723            break;
39724          case 21:
39725            y += stack.pop();
39726            x += stack.pop();
39727            moveTo(x, y);
39728            stackClean = true;
39729            break;
39730          case 22:
39731            x += stack.pop();
39732            moveTo(x, y);
39733            stackClean = true;
39734            break;
39735          case 23:
39736            stems += stack.length >> 1;
39737            stackClean = true;
39738            break;
39739          case 24:
39740            while (stack.length > 2) {
39741              xa = x + stack.shift();
39742              ya = y + stack.shift();
39743              xb = xa + stack.shift();
39744              yb = ya + stack.shift();
39745              x = xb + stack.shift();
39746              y = yb + stack.shift();
39747              bezierCurveTo(xa, ya, xb, yb, x, y);
39748            }
39749            x += stack.shift();
39750            y += stack.shift();
39751            lineTo(x, y);
39752            break;
39753          case 25:
39754            while (stack.length > 6) {
39755              x += stack.shift();
39756              y += stack.shift();
39757              lineTo(x, y);
39758            }
39759            xa = x + stack.shift();
39760            ya = y + stack.shift();
39761            xb = xa + stack.shift();
39762            yb = ya + stack.shift();
39763            x = xb + stack.shift();
39764            y = yb + stack.shift();
39765            bezierCurveTo(xa, ya, xb, yb, x, y);
39766            break;
39767          case 26:
39768            if (stack.length % 2) {
39769              x += stack.shift();
39770            }
39771            while (stack.length > 0) {
39772              xa = x;
39773              ya = y + stack.shift();
39774              xb = xa + stack.shift();
39775              yb = ya + stack.shift();
39776              x = xb;
39777              y = yb + stack.shift();
39778              bezierCurveTo(xa, ya, xb, yb, x, y);
39779            }
39780            break;
39781          case 27:
39782            if (stack.length % 2) {
39783              y += stack.shift();
39784            }
39785            while (stack.length > 0) {
39786              xa = x + stack.shift();
39787              ya = y;
39788              xb = xa + stack.shift();
39789              yb = ya + stack.shift();
39790              x = xb + stack.shift();
39791              y = yb;
39792              bezierCurveTo(xa, ya, xb, yb, x, y);
39793            }
39794            break;
39795          case 28:
39796            stack.push((code[i] << 24 | code[i + 1] << 16) >> 16);
39797            i += 2;
39798            break;
39799          case 29:
39800            n = stack.pop() + font.gsubrsBias;
39801            subrCode = font.gsubrs[n];
39802            if (subrCode) {
39803              parse(subrCode);
39804            }
39805            break;
39806          case 30:
39807            while (stack.length > 0) {
39808              xa = x;
39809              ya = y + stack.shift();
39810              xb = xa + stack.shift();
39811              yb = ya + stack.shift();
39812              x = xb + stack.shift();
39813              y = yb + (stack.length === 1 ? stack.shift() : 0);
39814              bezierCurveTo(xa, ya, xb, yb, x, y);
39815              if (stack.length === 0) {
39816                break;
39817              }
39818              xa = x + stack.shift();
39819              ya = y;
39820              xb = xa + stack.shift();
39821              yb = ya + stack.shift();
39822              y = yb + stack.shift();
39823              x = xb + (stack.length === 1 ? stack.shift() : 0);
39824              bezierCurveTo(xa, ya, xb, yb, x, y);
39825            }
39826            break;
39827          case 31:
39828            while (stack.length > 0) {
39829              xa = x + stack.shift();
39830              ya = y;
39831              xb = xa + stack.shift();
39832              yb = ya + stack.shift();
39833              y = yb + stack.shift();
39834              x = xb + (stack.length === 1 ? stack.shift() : 0);
39835              bezierCurveTo(xa, ya, xb, yb, x, y);
39836              if (stack.length === 0) {
39837                break;
39838              }
39839              xa = x;
39840              ya = y + stack.shift();
39841              xb = xa + stack.shift();
39842              yb = ya + stack.shift();
39843              x = xb + stack.shift();
39844              y = yb + (stack.length === 1 ? stack.shift() : 0);
39845              bezierCurveTo(xa, ya, xb, yb, x, y);
39846            }
39847            break;
39848          default:
39849            if (v < 32) {
39850              throw new _util.FormatError('unknown operator: ' + v);
39851            }
39852            if (v < 247) {
39853              stack.push(v - 139);
39854            } else if (v < 251) {
39855              stack.push((v - 247) * 256 + code[i++] + 108);
39856            } else if (v < 255) {
39857              stack.push(-(v - 251) * 256 - code[i++] - 108);
39858            } else {
39859              stack.push((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536);
39860              i += 4;
39861            }
39862            break;
39863        }
39864        if (stackClean) {
39865          stack.length = 0;
39866        }
39867      }
39868    }
39869    parse(code);
39870  }
39871  var NOOP = [];
39872
39873  var CompiledFont = function () {
39874    function CompiledFont(fontMatrix) {
39875      _classCallCheck(this, CompiledFont);
39876
39877      if (this.constructor === CompiledFont) {
39878        (0, _util.unreachable)('Cannot initialize CompiledFont.');
39879      }
39880      this.fontMatrix = fontMatrix;
39881      this.compiledGlyphs = Object.create(null);
39882      this.compiledCharCodeToGlyphId = Object.create(null);
39883    }
39884
39885    _createClass(CompiledFont, [{
39886      key: 'getPathJs',
39887      value: function getPathJs(unicode) {
39888        var cmap = lookupCmap(this.cmap, unicode);
39889        var fn = this.compiledGlyphs[cmap.glyphId];
39890        if (!fn) {
39891          fn = this.compileGlyph(this.glyphs[cmap.glyphId], cmap.glyphId);
39892          this.compiledGlyphs[cmap.glyphId] = fn;
39893        }
39894        if (this.compiledCharCodeToGlyphId[cmap.charCode] === undefined) {
39895          this.compiledCharCodeToGlyphId[cmap.charCode] = cmap.glyphId;
39896        }
39897        return fn;
39898      }
39899    }, {
39900      key: 'compileGlyph',
39901      value: function compileGlyph(code, glyphId) {
39902        if (!code || code.length === 0 || code[0] === 14) {
39903          return NOOP;
39904        }
39905        var fontMatrix = this.fontMatrix;
39906        if (this.isCFFCIDFont) {
39907          var fdIndex = this.fdSelect.getFDIndex(glyphId);
39908          if (fdIndex >= 0 && fdIndex < this.fdArray.length) {
39909            var fontDict = this.fdArray[fdIndex];
39910            fontMatrix = fontDict.getByName('FontMatrix') || _util.FONT_IDENTITY_MATRIX;
39911          } else {
39912            (0, _util.warn)('Invalid fd index for glyph index.');
39913          }
39914        }
39915        var cmds = [];
39916        cmds.push({ cmd: 'save' });
39917        cmds.push({
39918          cmd: 'transform',
39919          args: fontMatrix.slice()
39920        });
39921        cmds.push({
39922          cmd: 'scale',
39923          args: ['size', '-size']
39924        });
39925        this.compileGlyphImpl(code, cmds, glyphId);
39926        cmds.push({ cmd: 'restore' });
39927        return cmds;
39928      }
39929    }, {
39930      key: 'compileGlyphImpl',
39931      value: function compileGlyphImpl() {
39932        (0, _util.unreachable)('Children classes should implement this.');
39933      }
39934    }, {
39935      key: 'hasBuiltPath',
39936      value: function hasBuiltPath(unicode) {
39937        var cmap = lookupCmap(this.cmap, unicode);
39938        return this.compiledGlyphs[cmap.glyphId] !== undefined && this.compiledCharCodeToGlyphId[cmap.charCo
39938de] !== undefined;
39939      }
39940    }]);
39941
39942    return CompiledFont;
39943  }();
39944
39945  var TrueTypeCompiled = function (_CompiledFont) {
39946    _inherits(TrueTypeCompiled, _CompiledFont);
39947
39948    function TrueTypeCompiled(glyphs, cmap, fontMatrix) {
39949      _classCallCheck(this, TrueTypeCompiled);
39950
39951      var _this = _possibleConstructorReturn(this, (TrueTypeCompiled.__proto__ || Object.getPrototypeOf(TrueTypeCompiled)).call(this, fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]));
39952
39953      _this.glyphs = glyphs;
39954      _this.cmap = cmap;
39955      return _this;
39956    }
39957
39958    _createClass(TrueTypeCompiled, [{
39959      key: 'compileGlyphImpl',
39960      value: function compileGlyphImpl(code, cmds) {
39961        compileGlyf(code, cmds, this);
39962      }
39963    }]);
39964
39965    return TrueTypeCompiled;
39966  }(CompiledFont);
39967
39968  var Type2Compiled = function (_CompiledFont2) {
39969    _inherits(Type2Compiled, _CompiledFont2);
39970
39971    function Type2Compiled(cffInfo, cmap, fontMatrix, glyphNameMap) {
39972      _classCallCheck(this, Type2Compiled);
39973
39974      var _this2 = _possibleConstructorReturn(this, (Type2Compiled.__proto__ || Object.getPrototypeOf(Type2Compiled)).call(this, fontMatrix || [0.001, 0, 0, 0.001, 0, 0]));
39975
39976      _this2.glyphs = cffInfo.glyphs;
39977      _this2.gsubrs = cffInfo.gsubrs || [];
39978      _this2.subrs = cffInfo.subrs || [];
39979      _this2.cmap = cmap;
39980      _this2.glyphNameMap = glyphNameMap || (0, _glyphlist.getGlyphsUnicode)();
39981      _this2.gsubrsBias = _this2.gsubrs.length < 1240 ? 107 : _this2.gsubrs.length < 33900 ? 1131 : 32768;
39982      _this2.subrsBias = _this2.subrs.length < 1240 ? 107 : _this2.subrs.length < 33900 ? 1131 : 32768;
39983      _this2.isCFFCIDFont = cffInfo.isCFFCIDFont;
39984      _this2.fdSelect = cffInfo.fdSelect;
39985      _this2.fdArray = cffInfo.fdArray;
39986      return _this2;
39987    }
39988
39989    _createClass(Type2Compiled, [{
39990      key: 'compileGlyphImpl',
39991      value: function compileGlyphImpl(code, cmds, glyphId) {
39992        compileCharString(code, cmds, this, glyphId);
39993      }
39994    }]);
39995
39996    return Type2Compiled;
39997  }(CompiledFont);
39998
39999  return {
40000    create: function FontRendererFactory_create(font, seacAnalysisEnabled) {
40001      var data = new Uint8Array(font.data);
40002      var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;
40003      var numTables = getUshort(data, 4);
40004      for (var i = 0, p = 12; i < numTables; i++, p += 16) {
40005        var tag = (0, _util.bytesToString)(data.subarray(p, p + 4));
40006        var offset = getLong(data, p + 8);
40007        var length = getLong(data, p + 12);
40008        switch (tag) {
40009          case 'cmap':
40010            cmap = parseCmap(data, offset, offset + length);
40011            break;
40012          case 'glyf':
40013            glyf = data.subarray(offset, offset + length);
40014            break;
40015          case 'loca':
40016            loca = data.subarray(offset, offset + length);
40017            break;
40018          case 'head':
40019            unitsPerEm = getUshort(data, offset + 18);
40020            indexToLocFormat = getUshort(data, offset + 50);
40021            break;
40022          case 'CFF ':
40023            cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);
40024            break;
40025        }
40026      }
40027      if (glyf) {
40028        var fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];
40029        return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);
40030      }
40031      return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);
40032    }
40033  };
40034}();
40035exports.FontRendererFactory = FontRendererFactory;
40036
40037/***/ }),
40038/* 164 */
40039/***/ (function(module, exports, __w_pdfjs_require__) {
40040
40041"use strict";
40042
40043
40044Object.defineProperty(exports, "__esModule", {
40045  value: true
40046});
40047exports.Type1Parser = undefined;
40048
40049var _util = __w_pdfjs_require__(2);
40050
40051var _encodings = __w_pdfjs_require__(159);
40052
40053var _stream = __w_pdfjs_require__(140);
40054
40055var HINTING_ENABLED = false;
40056var Type1CharString = function Type1CharStringClosure() {
40057  var COMMAND_MAP = {
40058    'hstem': [1],
40059    'vstem': [3],
40060    'vmoveto': [4],
40061    'rlineto': [5],
40062    'hlineto': [6],
40063    'vlineto': [7],
40064    'rrcurveto': [8],
40065    'callsubr': [10],
40066    'flex': [12, 35],
40067    'drop': [12, 18],
40068    'endchar': [14],
40069    'rmoveto': [21],
40070    'hmoveto': [22],
40071    'vhcurveto': [30],
40072    'hvcurveto': [31]
40073  };
40074  function Type1CharString() {
40075    this.width = 0;
40076    this.lsb = 0;
40077    this.flexing = false;
vendor: 5,712 bytes, lines 40078-40241
40078    this.output = [];
40079    this.stack = [];
40080  }
40081  Type1CharString.prototype = {
40082    convert: function Type1CharString_convert(encoded, subrs, seacAnalysisEnabled) {
40083      var count = encoded.length;
40084      var error = false;
40085      var wx, sbx, subrNumber;
40086      for (var i = 0; i < count; i++) {
40087        var value = encoded[i];
40088        if (value < 32) {
40089          if (value === 12) {
40090            value = (value << 8) + encoded[++i];
40091          }
40092          switch (value) {
40093            case 1:
40094              if (!HINTING_ENABLED) {
40095                this.stack = [];
40096                break;
40097              }
40098              error = this.executeCommand(2, COMMAND_MAP.hstem);
40099              break;
40100            case 3:
40101              if (!HINTING_ENABLED) {
40102                this.stack = [];
40103                break;
40104              }
40105              error = this.executeCommand(2, COMMAND_MAP.vstem);
40106              break;
40107            case 4:
40108              if (this.flexing) {
40109                if (this.stack.length < 1) {
40110                  error = true;
40111                  break;
40112                }
40113                var dy = this.stack.pop();
40114                this.stack.push(0, dy);
40115                break;
40116              }
40117              error = this.executeCommand(1, COMMAND_MAP.vmoveto);
40118              break;
40119            case 5:
40120              error = this.executeCommand(2, COMMAND_MAP.rlineto);
40121              break;
40122            case 6:
40123              error = this.executeCommand(1, COMMAND_MAP.hlineto);
40124              break;
40125            case 7:
40126              error = this.executeCommand(1, COMMAND_MAP.vlineto);
40127              break;
40128            case 8:
40129              error = this.executeCommand(6, COMMAND_MAP.rrcurveto);
40130              break;
40131            case 9:
40132              this.stack = [];
40133              break;
40134            case 10:
40135              if (this.stack.length < 1) {
40136                error = true;
40137                break;
40138              }
40139              subrNumber = this.stack.pop();
40140              if (!subrs[subrNumber]) {
40141                error = true;
40142                break;
40143              }
40144              error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled);
40145              break;
40146            case 11:
40147              return error;
40148            case 13:
40149              if (this.stack.length < 2) {
40150                error = true;
40151                break;
40152              }
40153              wx = this.stack.pop();
40154              sbx = this.stack.pop();
40155              this.lsb = sbx;
40156              this.width = wx;
40157              this.stack.push(wx, sbx);
40158              error = this.executeCommand(2, COMMAND_MAP.hmoveto);
40159              break;
40160            case 14:
40161              this.output.push(COMMAND_MAP.endchar[0]);
40162              break;
40163            case 21:
40164              if (this.flexing) {
40165                break;
40166              }
40167              error = this.executeCommand(2, COMMAND_MAP.rmoveto);
40168              break;
40169            case 22:
40170              if (this.flexing) {
40171                this.stack.push(0);
40172                break;
40173              }
40174              error = this.executeCommand(1, COMMAND_MAP.hmoveto);
40175              break;
40176            case 30:
40177              error = this.executeCommand(4, COMMAND_MAP.vhcurveto);
40178              break;
40179            case 31:
40180              error = this.executeCommand(4, COMMAND_MAP.hvcurveto);
40181              break;
40182            case (12 << 8) + 0:
40183              this.stack = [];
40184              break;
40185            case (12 << 8) + 1:
40186              if (!HINTING_ENABLED) {
40187                this.stack = [];
40188                break;
40189              }
40190              error = this.executeCommand(2, COMMAND_MAP.vstem);
40191              break;
40192            case (12 << 8) + 2:
40193              if (!HINTING_ENABLED) {
40194                this.stack = [];
40195                break;
40196              }
40197              error = this.executeCommand(2, COMMAND_MAP.hstem);
40198              break;
40199            case (12 << 8) + 6:
40200              if (seacAnalysisEnabled) {
40201                this.seac = this.stack.splice(-4, 4);
40202                error = this.executeCommand(0, COMMAND_MAP.endchar);
40203              } else {
40204                error = this.executeCommand(4, COMMAND_MAP.endchar);
40205              }
40206              break;
40207            case (12 << 8) + 7:
40208              if (this.stack.length < 4) {
40209                error = true;
40210                break;
40211              }
40212              this.stack.pop();
40213              wx = this.stack.pop();
40214              var sby = this.stack.pop();
40215              sbx = this.stack.pop();
40216              this.lsb = sbx;
40217              this.width = wx;
40218              this.stack.push(wx, sbx, sby);
40219              error = this.executeCommand(3, COMMAND_MAP.rmoveto);
40220              break;
40221            case (12 << 8) + 12:
40222              if (this.stack.length < 2) {
40223                error = true;
40224                break;
40225              }
40226              var num2 = this.stack.pop();
40227              var num1 = this.stack.pop();
40228              this.stack.push(num1 / num2);
40229              break;
40230            case (12 << 8) + 16:
40231              if (this.stack.length < 2) {
40232                error = true;
40233                break;
40234              }
40235              subrNumber = this.stack.pop();
40236              var numArgs = this.stack.pop();
40237              if (subrNumber === 0 && numArgs === 3) {
40238                var flexArgs = this.stack.splice(this.stack.length - 17, 17);
40239                this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]);
40240                error = this.executeCommand(13, COMMAND_MAP.flex, true);
40241                this.flexing = false;
40242                this.stack.push(flexArgs[15], flexArgs[16]);
40243              } else if (subrNumber === 1 && numArgs === 0) {
40244                this.flexing = true;
40245              }
40246              break;
40247            case (12 << 8) + 17:
40248              break;
40249            case (12 << 8) + 33:
40250              this.stack = [];
40251              break;
40252            default:
40253              (0, _util.warn)('Unknown type 1 charstring command of "' + value + '"');
40254              break;
40255          }
40256          if (error) {
40257            break;
40258          }
40259          continue;
40260        } else if (value <= 246) {
40261          value = value - 139;
40262        } else if (value <= 250) {
40263          value = (value - 247) * 256 + encoded[++i] + 108;
40264        } else if (value <= 254) {
40265          value = -((value - 251) * 256) - encoded[++i] - 108;
40266        } else {
40267          value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0;
40268        }
40269        this.stack.push(value);
40270      }
40271      return error;
40272    },
40273    executeCommand: function executeCommand(howManyArgs, command, keepStack) {
40274      var stackLength = this.stack.length;
40275      if (howManyArgs > stackLength) {
40276        return true;
40277      }
40278      var start = stackLength - howManyArgs;
40279      for (var i = start; i < stackLength; i++) {
40280        var value = this.stack[i];
40281        if (Number.isInteger(value)) {
40282          this.output.push(28, value >> 8 & 0xff, value & 0xff);
40283        } else {
40284          value = 65536 * value | 0;
40285          this.output.push(255, value >> 24 & 0xFF, value >> 16 & 0xFF, value >> 8 & 0xFF, value & 0xFF);
40286        }
40287      }
40288      this.output.push.apply(this.output, command);
40289      if (keepStack) {
40290        this.stack.splice(start, howManyArgs);
40291      } else {
40292        this.stack.length = 0;
40293      }
40294      return false;
40295    }
40296  };
40297  return Type1CharString;
40298}();
40299var Type1Parser = function Type1ParserClosure() {
40300  var EEXEC_ENCRYPT_KEY = 55665;
40301  var CHAR_STRS_ENCRYPT_KEY = 4330;
40302  function isHexDigit(code) {
40303    return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102;
40304  }
40305  function decrypt(data, key, discardNumber) {
40306    if (discardNumber >= data.length) {
40307      return new Uint8Array(0);
40308    }
40309    var r = key | 0,
40310        c1 = 52845,
40311        c2 = 22719,
40312        i,
40313        j;
40314    for (i = 0; i < discardNumber; i++) {
40315      r = (data[i] + r) * c1 + c2 & (1 << 16) - 1;
40316    }
40317    var count = data.length - discardNumber;
40318    var decrypted = new Uint8Array(count);
40319    for (i = discardNumber, j = 0; j < count; i++, j++) {
40320      var value = data[i];
40321      decrypted[j] = value ^ r >> 8;
40322      r = (value + r) * c1 + c2 & (1 << 16) - 1;
40323    }
40324    return decrypted;
40325  }
40326  function decryptAscii(data, key, discardNumber) {
40327    var r = key | 0,
40328        c1 = 52845,
40329        c2 = 22719;
40330    var count = data.length,
40331        maybeLength = count >>> 1;
40332    var decrypted = new Uint8Array(maybeLength);
40333    var i, j;
40334    for (i = 0, j = 0; i < count; i++) {
40335      var digit1 = data[i];
40336      if (!isHexDigit(digit1)) {
40337        continue;
40338      }
40339      i++;
40340      var digit2;
40341      while (i < count && !isHexDigit(digit2 = data[i])) {
40342        i++;
40343      }
40344      if (i < count) {
40345        var value = parseInt(String.fromCharCode(digit1, digit2), 16);
40346        decrypted[j++] = value ^ r >> 8;
40347        r = (value + r) * c1 + c2 & (1 << 16) - 1;
40348      }
40349    }
40350    return Array.prototype.slice.call(decrypted, discardNumber, j);
40351  }
40352  function isSpecial(c) {
40353    return c === 0x2F || c === 0x5B || c === 0x5D || c === 0x7B || c === 0x7D || c === 0x28 || c === 0x29;
40354  }
40355  function Type1Parser(stream, encrypted, seacAnalysisEnabled) {
40356    if (encrypted) {
40357      var data = stream.getBytes();
40358      var isBinary = !(isHexDigit(data[0]) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]));
40359      stream = new _stream.Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));
40360    }
40361    this.seacAnalysisEnabled = !!seacAnalysisEnabled;
40362    this.stream = stream;
40363    this.nextChar();
40364  }
40365  Type1Parser.prototype = {
40366    readNumberArray: function Type1Parser_readNumberArray() {
40367      this.getToken();
40368      var array = [];
40369      while (true) {
40370        var token = this.getToken();
40371        if (token === null || token === ']' || token === '}') {
40372          break;
40373        }
40374        array.push(parseFloat(token || 0));
40375      }
40376      return array;
40377    },
40378    readNumber: function Type1Parser_readNumber() {
40379      var token = this.getToken();
40380      return parseFloat(token || 0);
40381    },
40382    readInt: function Type1Parser_readInt() {
40383      var token = this.getToken();
40384      return parseInt(token || 0, 10) | 0;
40385    },
40386    readBoolean: function Type1Parser_readBoolean() {
40387      var token = this.getToken();
40388      return token === 'true' ? 1 : 0;
40389    },
40390    nextChar: function Type1_nextChar() {
40391      return this.currentChar = this.stream.getByte();
40392    },
40393    getToken: function Type1Parser_getToken() {
40394      var comment = false;
40395      var ch = this.currentChar;
40396      while (true) {
40397        if (ch === -1) {
40398          return null;
40399        }
40400        if (comment) {
40401          if (ch === 0x0A || ch === 0x0D) {
40402            comment = false;
40403          }
40404        } else if (ch === 0x25) {
40405          comment = true;
40406        } else if (!(0, _util.isSpace)(ch)) {
40407          break;
40408        }
40409        ch = this.nextChar();
40410      }
40411      if (isSpecial(ch)) {
40412        this.nextChar();
40413        return String.fromCharCode(ch);
40414      }
40415      var token = '';
40416      do {
40417        token += String.fromCharCode(ch);
40418        ch = this.nextChar();
40419      } while (ch >= 0 && !(0, _util.isSpace)(ch) && !isSpecial(ch));
40420      return token;
40421    },
40422    readCharStrings: function Type1Parser_readCharStrings(bytes, lenIV) {
40423      if (lenIV === -1) {
40424        return bytes;
40425      }
40426      return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);
40427    },
40428    extractFontProgram: function Type1Parser_extractFontProgram() {
40429      var stream = this.stream;
40430      var subrs = [],
40431          charstrings = [];
40432      var privateData = Object.create(null);
40433      privateData['lenIV'] = 4;
40434      var program = {
40435        subrs: [],
40436        charstrings: [],
40437        properties: { 'privateData': privateData }
40438      };
40439      var token, length, data, lenIV, encoded;
40440      while ((token = this.getToken()) !== null) {
40441        if (token !== '/') {
40442          continue;
40443        }
40444        token = this.getToken();
40445        switch (token) {
40446          case 'CharStrings':
40447            this.getToken();
40448            this.getToken();
40449            this.getToken();
40450            this.getToken();
40451            while (true) {
40452              token = this.getToken();
40453              if (token === null || token === 'end') {
40454                break;
40455              }
40456              if (token !== '/') {
40457                continue;
40458              }
40459              var glyph = this.getToken();
40460              length = this.readInt();
40461              this.getToken();
40462              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);
40463              lenIV = program.properties.privateData['lenIV'];
40464              encoded = this.readCharStrings(data, lenIV);
40465              this.nextChar();
40466              token = this.getToken();
40467              if (token === 'noaccess') {
40468                this.getToken();
40469              }
40470              charstrings.push({
40471                glyph: glyph,
40472                encoded: encoded
40473              });
40474            }
40475            break;
40476          case 'Subrs':
40477            this.readInt();
40478            this.getToken();
40479            while (this.getToken() === 'dup') {
40480              var index = this.readInt();
40481              length = this.readInt();
40482              this.getToken();
40483              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);
40484              lenIV = program.properties.privateData['lenIV'];
40485              encoded = this.readCharStrings(data, lenIV);
40486              this.nextChar();
40487              token = this.getToken();
40488              if (token === 'noaccess') {
40489                this.getToken();
40490              }
40491              subrs[index] = encoded;
40492            }
40493            break;
40494          case 'BlueValues':
40495          case 'OtherBlues':
40496          case 'FamilyBlues':
40497          case 'FamilyOtherBlues':
40498            var blueArray = this.readNumberArray();
40499            if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) {
40500              program.properties.privateData[token] = blueArray;
40501            }
40502            break;
40503          case 'StemSnapH':
40504          case 'StemSnapV':
40505            program.properties.privateData[token] = this.readNumberArray();
40506            break;
40507          case 'StdHW':
40508          case 'StdVW':
40509            program.properties.privateData[token] = this.readNumberArray()[0];
40510            break;
40511          case 'BlueShift':
40512          case 'lenIV':
40513          case 'BlueFuzz':
40514          case 'BlueScale':
40515          case 'LanguageGroup':
40516          case 'ExpansionFactor':
40517            program.properties.privateData[token] = this.readNumber();
40518            break;
40519          case 'ForceBold':
40520            program.properties.privateData[token] = this.readBoolean();
40521            break;
40522        }
40523      }
40524      for (var i = 0; i < charstrings.length; i++) {
40525        glyph = charstrings[i].glyph;
40526        encoded = charstrings[i].encoded;
40527        var charString = new Type1CharString();
40528        var error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);
40529        var output = charString.output;
40530        if (error) {
40531          output = [14];
40532        }
40533        program.charstrings.push({
40534          glyphName: glyph,
40535          charstring: output,
40536          width: charString.width,
40537          lsb: charString.lsb,
40538          seac: charString.seac
40539        });
40540      }
40541      return program;
40542    },
40543    extractFontHeader: function Type1Parser_extractFontHeader(properties) {
40544      var token;
40545      while ((token = this.getToken()) !== null) {
40546        if (token !== '/') {
40547          continue;
40548        }
40549        token = this.getToken();
40550        switch (token) {
40551          case 'FontMatrix':
40552            var matrix = this.readNumberArray();
40553            properties.fontMatrix = matrix;
40554            break;
40555          case 'Encoding':
40556            var encodingArg = this.getToken();
40557            var encoding;
40558            if (!/^\d+$/.test(encodingArg)) {
40559              encoding = (0, _encodings.getEncoding)(encodingArg);
40560            } else {
40561              encoding = [];
40562              var size = parseInt(encodingArg, 10) | 0;
40563              this.getToken();
40564              for (var j = 0; j < size; j++) {
40565                token = this.getToken();
40566                while (token !== 'dup' && token !== 'def') {
40567                  token = this.getToken();
40568                  if (token === null) {
40569                    return;
40570                  }
40571                }
40572                if (token === 'def') {
40573                  break;
40574                }
40575                var index = this.readInt();
40576                this.getToken();
40577                var glyph = this.getToken();
40578                encoding[index] = glyph;
40579                this.getToken();
40580              }
40581            }
40582            properties.builtInEncoding = encoding;
40583            break;
40584          case 'FontBBox':
40585            var fontBBox = this.readNumberArray();
40586            properties.ascent = Math.max(fontBBox[3], fontBBox[1]);
40587            properties.descent = Math.min(fontBBox[1], fontBBox[3]);
40588            properties.ascentScaled = true;
40589            break;
40590        }
40591      }
40592    }
40593  };
40594  return Type1Parser;
40595}();
40596exports.Type1Parser = Type1Parser;
40597
40598/***/ }),
40599/* 165 */
40600/***/ (function(module, exports, __w_pdfjs_require__) {
40601
40602"use strict";
40603
40604
40605Object.defineProperty(exports, "__esModule", {
40606  value: true
40607});
40608exports.getTilingPatternIR = exports.Pattern = undefined;
40609
40610var _util = __w_pdfjs_require__(2);
40611
40612var _colorspace = __w_pdfjs_require__(151);
40613
40614var _primitives = __w_pdfjs_require__(138);
40615
40616var ShadingType = {
40617  FUNCTION_BASED: 1,
40618  AXIAL: 2,
40619  RADIAL: 3,
40620  FREE_FORM_MESH: 4,
40621  LATTICE_FORM_MESH: 5,
40622  COONS_PATCH_MESH: 6,
40623  TENSOR_PATCH_MESH: 7
40624};
40625var Pattern = function PatternClosure() {
40626  function Pattern() {
40627    (0, _util.unreachable)('should not call Pattern constructor');
40628  }
40629  Pattern.prototype = {
40630    getPattern: function Pattern_getPattern(ctx) {
40631      (0, _util.unreachable)('Should not call Pattern.getStyle: ' + ctx);
40632    }
40633  };
40634  Pattern.parseShading = function (shading, matrix, xref, res, handler, pdfFunctionFactory) {
40635    var dict = (0, _primitives.isStream)(shading) ? shading.dict : shading;
40636    var type = dict.get('ShadingType');
40637    try {
40638      switch (type) {
40639        case ShadingType.AXIAL:
40640        case ShadingType.RADIAL:
40641          return new Shadings.RadialAxial(dict, matrix, xref, res, pdfFunctionFactory);
40642        case ShadingType.FREE_FORM_MESH:
40643        case ShadingType.LATTICE_FORM_MESH:
40644        case ShadingType.COONS_PATCH_MESH:
40645        case ShadingType.TENSOR_PATCH_MESH:
40646          return new Shadings.Mesh(shading, matrix, xref, res, pdfFunctionFactory);
40647        default:
40648          throw new _util.FormatError('Unsupported ShadingType: ' + type);
40649      }
40650    } catch (ex) {
40651      if (ex instanceof _util.MissingDataException) {
40652        throw ex;
40653      }
40654      handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.shadingPattern });
40655      (0, _util.warn)(ex);
40656      return new Shadings.Dummy();
40657    }
40658  };
40659  return Pattern;
40660}();
40661var Shadings = {};
40662Shadings.SMALL_NUMBER = 1e-6;
40663Shadings.RadialAxial = function RadialAxialClosure() {
40664  function RadialAxial(dict, matrix, xref, res, pdfFunctionFactory) {
40665    this.matrix = matrix;
40666    this.coordsArr = dict.getArray('Coords');
40667    this.shadingType = dict.get('ShadingType');
40668    this.type = 'Pattern';
40669    var cs = dict.get('ColorSpace', 'CS');
40670    cs = _colorspace.ColorSpace.parse(cs, xref, res, pdfFunctionFactory);
40671    this.cs = cs;
40672    var t0 = 0.0,
40673        t1 = 1.0;
40674    if (dict.has('Domain')) {
40675      var domainArr = dict.getArray('Domain');
40676      t0 = domainArr[0];
40677      t1 = domainArr[1];
40678    }
40679    var extendStart = false,
40680        extendEnd = false;
40681    if (dict.has('Extend')) {
40682      var extendArr = dict.getArray('Extend');
40683      extendStart = extendArr[0];
40684      extendEnd = extendArr[1];
40685    }
40686    if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) {
40687      var x1 = this.coordsArr[0];
40688      var y1 = this.coordsArr[1];
40689      var r1 = this.coordsArr[2];
40690      var x2 = this.coordsArr[3];
40691      var y2 = this.coordsArr[4];
40692      var r2 = this.coordsArr[5];
40693      var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
40694      if (r1 <= r2 + distance && r2 <= r1 + distance) {
40695        (0, _util.warn)('Unsupported radial gradient.');
40696      }
40697    }
40698    this.extendStart = extendStart;
40699    this.extendEnd = extendEnd;
40700    var fnObj = dict.get('Function');
40701    var fn = pdfFunctionFactory.createFromArray(fnObj);
40702    var diff = t1 - t0;
40703    var step = diff / 10;
40704    var colorStops = this.colorStops = [];
40705    if (t0 >= t1 || step <= 0) {
40706      (0, _util.info)('Bad shading domain.');
40707      return;
40708    }
40709    var color = new Float32Array(cs.numComps),
40710        ratio = new Float32Array(1);
40711    var rgbColor;
40712    for (var i = t0; i <= t1; i += step) {
40713      ratio[0] = i;
40714      fn(ratio, 0, color, 0);
40715      rgbColor = cs.getRgb(color, 0);
40716      var cssColor = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
40717      colorStops.push([(i - t0) / diff, cssColor]);
40718    }
40719    var background = 'transparent';
40720    if (dict.has('Background')) {
40721      rgbColor = cs.getRgb(dict.get('Background'), 0);
40722      background = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
40723    }
40724    if (!extendStart) {
40725      colorStops.unshift([0, background]);
40726      colorStops[1][0] += Shadings.SMALL_NUMBER;
40727    }
40728    if (!extendEnd) {
40729      colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER;
40730      colorStops.push([1, background]);
40731    }
40732    this.colorStops = colorStops;
40733  }
40734  RadialAxial.prototype = {
40735    getIR: function RadialAxial_getIR() {
40736      var coordsArr = this.coordsArr;
40737      var shadingType = this.shadingType;
40738      var type, p0, p1, r0, r1;
40739      if (shadingType === ShadingType.AXIAL) {
40740        p0 = [coordsArr[0], coordsArr[1]];
40741        p1 = [coordsArr[2], coordsArr[3]];
40742        r0 = null;
40743        r1 = null;
40744        type = 'axial';
40745      } else if (shadingType === ShadingType.RADIAL) {
40746        p0 = [coordsArr[0], coordsArr[1]];
40747        p1 = [coordsArr[3], coordsArr[4]];
40748        r0 = coordsArr[2];
40749        r1 = coordsArr[5];
40750        type = 'radial';
40751      } else {
40752        (0, _util.unreachable)('getPattern type unknown: ' + shadingType);
40753      }
40754      var matrix = this.matrix;
40755      if (matrix) {
40756        p0 = _util.Util.applyTransform(p0, matrix);
40757        p1 = _util.Util.applyTransform(p1, matrix);
40758        if (shadingType === ShadingType.RADIAL) {
40759          var scale = _util.Util.singularValueDecompose2dScale(matrix);
40760          r0 *= scale[0];
40761          r1 *= scale[1];
40762        }
40763      }
40764      return ['RadialAxial', type, this.colorStops, p0, p1, r0, r1];
40765    }
40766  };
40767  return RadialAxial;
40768}();
40769Shadings.Mesh = function MeshClosure() {
40770  function MeshStreamReader(stream, context) {
40771    this.stream = stream;
40772    this.context = context;
40773    this.buffer = 0;
40774    this.bufferLength = 0;
40775    var numComps = context.numComps;
40776    this.tmpCompsBuf = new Float32Array(numComps);
40777    var csNumComps = context.colorSpace.numComps;
40778    this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf;
40779  }
40780  MeshStreamReader.prototype = {
40781    get hasData() {
40782      if (this.stream.end) {
40783        return this.stream.pos < this.stream.end;
40784      }
40785      if (this.bufferLength > 0) {
40786        return true;
40787      }
40788      var nextByte = this.stream.getByte();
40789      if (nextByte < 0) {
40790        return false;
40791      }
40792      this.buffer = nextByte;
40793      this.bufferLength = 8;
40794      return true;
40795    },
40796    readBits: function MeshStreamReader_readBits(n) {
40797      var buffer = this.buffer;
40798      var bufferLength = this.bufferLength;
40799      if (n === 32) {
40800        if (bufferLength === 0) {
40801          return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0;
40802        }
40803        buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte();
40804        var nextByte = this.stream.getByte();
40805        this.buffer = nextByte & (1 << bufferLength) - 1;
40806        return (buffer << 8 - bufferLength | (nextByte & 0xFF) >> bufferLength) >>> 0;
40807      }
40808      if (n === 8 && bufferLength === 0) {
40809        return this.stream.getByte();
40810      }
40811      while (bufferLength < n) {
40812        buffer = buffer << 8 | this.stream.getByte();
40813        bufferLength += 8;
40814      }
40815      bufferLength -= n;
40816      this.bufferLength = bufferLength;
40817      this.buffer = buffer & (1 << bufferLength) - 1;
40818      return buffer >> bufferLength;
40819    },
vendor: 6,691 bytes, lines 40820-40992
40820    align: function MeshStreamReader_align() {
40821      this.buffer = 0;
40822      this.bufferLength = 0;
40823    },
40824    readFlag: function MeshStreamReader_readFlag() {
40825      return this.readBits(this.context.bitsPerFlag);
40826    },
40827    readCoordinate: function MeshStreamReader_readCoordinate() {
40828      var bitsPerCoordinate = this.context.bitsPerCoordinate;
40829      var xi = this.readBits(bitsPerCoordinate);
40830      var yi = this.readBits(bitsPerCoordinate);
40831      var decode = this.context.decode;
40832      var scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10;
40833      return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]];
40834    },
40835    readComponents: function MeshStreamReader_readComponents() {
40836      var numComps = this.context.numComps;
40837      var bitsPerComponent = this.context.bitsPerComponent;
40838      var scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10;
40839      var decode = this.context.decode;
40840      var components = this.tmpCompsBuf;
40841      for (var i = 0, j = 4; i < numComps; i++, j += 2) {
40842        var ci = this.readBits(bitsPerComponent);
40843        components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];
40844      }
40845      var color = this.tmpCsCompsBuf;
40846      if (this.context.colorFn) {
40847        this.context.colorFn(components, 0, color, 0);
40848      }
40849      return this.context.colorSpace.getRgb(color, 0);
40850    }
40851  };
40852  function decodeType4Shading(mesh, reader) {
40853    var coords = mesh.coords;
40854    var colors = mesh.colors;
40855    var operators = [];
40856    var ps = [];
40857    var verticesLeft = 0;
40858    while (reader.hasData) {
40859      var f = reader.readFlag();
40860      var coord = reader.readCoordinate();
40861      var color = reader.readComponents();
40862      if (verticesLeft === 0) {
40863        if (!(0 <= f && f <= 2)) {
40864          throw new _util.FormatError('Unknown type4 flag');
40865        }
40866        switch (f) {
40867          case 0:
40868            verticesLeft = 3;
40869            break;
40870          case 1:
40871            ps.push(ps[ps.length - 2], ps[ps.length - 1]);
40872            verticesLeft = 1;
40873            break;
40874          case 2:
40875            ps.push(ps[ps.length - 3], ps[ps.length - 1]);
40876            verticesLeft = 1;
40877            break;
40878        }
40879        operators.push(f);
40880      }
40881      ps.push(coords.length);
40882      coords.push(coord);
40883      colors.push(color);
40884      verticesLeft--;
40885      reader.align();
40886    }
40887    mesh.figures.push({
40888      type: 'triangles',
40889      coords: new Int32Array(ps),
40890      colors: new Int32Array(ps)
40891    });
40892  }
40893  function decodeType5Shading(mesh, reader, verticesPerRow) {
40894    var coords = mesh.coords;
40895    var colors = mesh.colors;
40896    var ps = [];
40897    while (reader.hasData) {
40898      var coord = reader.readCoordinate();
40899      var color = reader.readComponents();
40900      ps.push(coords.length);
40901      coords.push(coord);
40902      colors.push(color);
40903    }
40904    mesh.figures.push({
40905      type: 'lattice',
40906      coords: new Int32Array(ps),
40907      colors: new Int32Array(ps),
40908      verticesPerRow: verticesPerRow
40909    });
40910  }
40911  var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;
40912  var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;
40913  var TRIANGLE_DENSITY = 20;
40914  var getB = function getBClosure() {
40915    function buildB(count) {
40916      var lut = [];
40917      for (var i = 0; i <= count; i++) {
40918        var t = i / count,
40919            t_ = 1 - t;
40920        lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, 3 * t * t * t_, t * t * t]));
40921      }
40922      return lut;
40923    }
40924    var cache = [];
40925    return function getB(count) {
40926      if (!cache[count]) {
40927        cache[count] = buildB(count);
40928      }
40929      return cache[count];
40930    };
40931  }();
40932  function buildFigureFromPatch(mesh, index) {
40933    var figure = mesh.figures[index];
40934    (0, _util.assert)(figure.type === 'patch', 'Unexpected patch mesh figure');
40935    var coords = mesh.coords,
40936        colors = mesh.colors;
40937    var pi = figure.coords;
40938    var ci = figure.colors;
40939    var figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);
40940    var figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);
40941    var figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);
40942    var figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);
40943    var splitXBy = Math.ceil((figureMaxX - figureMinX) * TRIANGLE_DENSITY / (mesh.bounds[2] - mesh.bounds[0]));
40944    splitXBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy));
40945    var splitYBy = Math.ceil((figureMaxY - figureMinY) * TRIANGLE_DENSITY / (mesh.bounds[3] - mesh.bounds[1]));
40946    splitYBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy));
40947    var verticesPerRow = splitXBy + 1;
40948    var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);
40949    var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);
40950    var k = 0;
40951    var cl = new Uint8Array(3),
40952        cr = new Uint8Array(3);
40953    var c0 = colors[ci[0]],
40954        c1 = colors[ci[1]],
40955        c2 = colors[ci[2]],
40956        c3 = colors[ci[3]];
40957    var bRow = getB(splitYBy),
40958        bCol = getB(splitXBy);
40959    for (var row = 0; row <= splitYBy; row++) {
40960      cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0;
40961      cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0;
40962      cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0;
40963      cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0;
40964      cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0;
40965      cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0;
40966      for (var col = 0; col <= splitXBy; col++, k++) {
40967        if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) {
40968          continue;
40969        }
40970        var x = 0,
40971            y = 0;
40972        var q = 0;
40973        for (var i = 0; i <= 3; i++) {
40974          for (var j = 0; j <= 3; j++, q++) {
40975            var m = bRow[row][i] * bCol[col][j];
40976            x += coords[pi[q]][0] * m;
40977            y += coords[pi[q]][1] * m;
40978          }
40979        }
40980        figureCoords[k] = coords.length;
40981        coords.push([x, y]);
40982        figureColors[k] = colors.length;
40983        var newColor = new Uint8Array(3);
40984        newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0;
40985        newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0;
40986        newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0;
40987        colors.push(newColor);
40988      }
40989    }
40990    figureCoords[0] = pi[0];
40991    figureColors[0] = ci[0];
40992    figureCoords[splitXBy] = pi[3];
vendor: 5,672 bytes, lines 40993-41146
40993    figureColors[splitXBy] = ci[1];
40994    figureCoords[verticesPerRow * splitYBy] = pi[12];
40995    figureColors[verticesPerRow * splitYBy] = ci[2];
40996    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];
40997    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];
40998    mesh.figures[index] = {
40999      type: 'lattice',
41000      coords: figureCoords,
41001      colors: figureColors,
41002      verticesPerRow: verticesPerRow
41003    };
41004  }
41005  function decodeType6Shading(mesh, reader) {
41006    var coords = mesh.coords;
41007    var colors = mesh.colors;
41008    var ps = new Int32Array(16);
41009    var cs = new Int32Array(4);
41010    while (reader.hasData) {
41011      var f = reader.readFlag();
41012      if (!(0 <= f && f <= 3)) {
41013        throw new _util.FormatError('Unknown type6 flag');
41014      }
41015      var i, ii;
41016      var pi = coords.length;
41017      for (i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {
41018        coords.push(reader.readCoordinate());
41019      }
41020      var ci = colors.length;
41021      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {
41022        colors.push(reader.readComponents());
41023      }
41024      var tmp1, tmp2, tmp3, tmp4;
41025      switch (f) {
41026        case 0:
41027          ps[12] = pi + 3;
41028          ps[13] = pi + 4;
41029          ps[14] = pi + 5;
41030          ps[15] = pi + 6;
41031          ps[8] = pi + 2;
41032          ps[11] = pi + 7;
41033          ps[4] = pi + 1;
41034          ps[7] = pi + 8;
41035          ps[0] = pi;
41036          ps[1] = pi + 11;
41037          ps[2] = pi + 10;
41038          ps[3] = pi + 9;
41039          cs[2] = ci + 1;
41040          cs[3] = ci + 2;
41041          cs[0] = ci;
41042          cs[1] = ci + 3;
41043          break;
41044        case 1:
41045          tmp1 = ps[12];
41046          tmp2 = ps[13];
41047          tmp3 = ps[14];
41048          tmp4 = ps[15];
41049          ps[12] = tmp4;
41050          ps[13] = pi + 0;
41051          ps[14] = pi + 1;
41052          ps[15] = pi + 2;
41053          ps[8] = tmp3;
41054          ps[11] = pi + 3;
41055          ps[4] = tmp2;
41056          ps[7] = pi + 4;
41057          ps[0] = tmp1;
41058          ps[1] = pi + 7;
41059          ps[2] = pi + 6;
41060          ps[3] = pi + 5;
41061          tmp1 = cs[2];
41062          tmp2 = cs[3];
41063          cs[2] = tmp2;
41064          cs[3] = ci;
41065          cs[0] = tmp1;
41066          cs[1] = ci + 1;
41067          break;
41068        case 2:
41069          tmp1 = ps[15];
41070          tmp2 = ps[11];
41071          ps[12] = ps[3];
41072          ps[13] = pi + 0;
41073          ps[14] = pi + 1;
41074          ps[15] = pi + 2;
41075          ps[8] = ps[7];
41076          ps[11] = pi + 3;
41077          ps[4] = tmp2;
41078          ps[7] = pi + 4;
41079          ps[0] = tmp1;
41080          ps[1] = pi + 7;
41081          ps[2] = pi + 6;
41082          ps[3] = pi + 5;
41083          tmp1 = cs[3];
41084          cs[2] = cs[1];
41085          cs[3] = ci;
41086          cs[0] = tmp1;
41087          cs[1] = ci + 1;
41088          break;
41089        case 3:
41090          ps[12] = ps[0];
41091          ps[13] = pi + 0;
41092          ps[14] = pi + 1;
41093          ps[15] = pi + 2;
41094          ps[8] = ps[1];
41095          ps[11] = pi + 3;
41096          ps[4] = ps[2];
41097          ps[7] = pi + 4;
41098          ps[0] = ps[3];
41099          ps[1] = pi + 7;
41100          ps[2] = pi + 6;
41101          ps[3] = pi + 5;
41102          cs[2] = cs[0];
41103          cs[3] = ci;
41104          cs[0] = cs[1];
41105          cs[1] = ci + 1;
41106          break;
41107      }
41108      ps[5] = coords.length;
41109      coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]);
41110      ps[6] = coords.length;
41111      coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]);
41112      ps[9] = coords.length;
41113      coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]);
41114      ps[10] = coords.length;
41115      coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]);
41116      mesh.figures.push({
41117        type: 'patch',
41118        coords: new Int32Array(ps),
41119        colors: new Int32Array(cs)
41120      });
41121    }
41122  }
41123  function decodeType7Shading(mesh, reader) {
41124    var coords = mesh.coords;
41125    var colors = mesh.colors;
41126    var ps = new Int32Array(16);
41127    var cs = new Int32Array(4);
41128    while (reader.hasData) {
41129      var f = reader.readFlag();
41130      if (!(0 <= f && f <= 3)) {
41131        throw new _util.FormatError('Unknown type7 flag');
41132      }
41133      var i, ii;
41134      var pi = coords.length;
41135      for (i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {
41136        coords.push(reader.readCoordinate());
41137      }
41138      var ci = colors.length;
41139      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {
41140        colors.push(reader.readComponents());
41141      }
41142      var tmp1, tmp2, tmp3, tmp4;
41143      switch (f) {
41144        case 0:
41145          ps[12] = pi + 3;
41146          ps[13] = pi + 4;
vendor: 4,358 bytes, lines 41147-41305
41147          ps[14] = pi + 5;
41148          ps[15] = pi + 6;
41149          ps[8] = pi + 2;
41150          ps[9] = pi + 13;
41151          ps[10] = pi + 14;
41152          ps[11] = pi + 7;
41153          ps[4] = pi + 1;
41154          ps[5] = pi + 12;
41155          ps[6] = pi + 15;
41156          ps[7] = pi + 8;
41157          ps[0] = pi;
41158          ps[1] = pi + 11;
41159          ps[2] = pi + 10;
41160          ps[3] = pi + 9;
41161          cs[2] = ci + 1;
41162          cs[3] = ci + 2;
41163          cs[0] = ci;
41164          cs[1] = ci + 3;
41165          break;
41166        case 1:
41167          tmp1 = ps[12];
41168          tmp2 = ps[13];
41169          tmp3 = ps[14];
41170          tmp4 = ps[15];
41171          ps[12] = tmp4;
41172          ps[13] = pi + 0;
41173          ps[14] = pi + 1;
41174          ps[15] = pi + 2;
41175          ps[8] = tmp3;
41176          ps[9] = pi + 9;
41177          ps[10] = pi + 10;
41178          ps[11] = pi + 3;
41179          ps[4] = tmp2;
41180          ps[5] = pi + 8;
41181          ps[6] = pi + 11;
41182          ps[7] = pi + 4;
41183          ps[0] = tmp1;
41184          ps[1] = pi + 7;
41185          ps[2] = pi + 6;
41186          ps[3] = pi + 5;
41187          tmp1 = cs[2];
41188          tmp2 = cs[3];
41189          cs[2] = tmp2;
41190          cs[3] = ci;
41191          cs[0] = tmp1;
41192          cs[1] = ci + 1;
41193          break;
41194        case 2:
41195          tmp1 = ps[15];
41196          tmp2 = ps[11];
41197          ps[12] = ps[3];
41198          ps[13] = pi + 0;
41199          ps[14] = pi + 1;
41200          ps[15] = pi + 2;
41201          ps[8] = ps[7];
41202          ps[9] = pi + 9;
41203          ps[10] = pi + 10;
41204          ps[11] = pi + 3;
41205          ps[4] = tmp2;
41206          ps[5] = pi + 8;
41207          ps[6] = pi + 11;
41208          ps[7] = pi + 4;
41209          ps[0] = tmp1;
41210          ps[1] = pi + 7;
41211          ps[2] = pi + 6;
41212          ps[3] = pi + 5;
41213          tmp1 = cs[3];
41214          cs[2] = cs[1];
41215          cs[3] = ci;
41216          cs[0] = tmp1;
41217          cs[1] = ci + 1;
41218          break;
41219        case 3:
41220          ps[12] = ps[0];
41221          ps[13] = pi + 0;
41222          ps[14] = pi + 1;
41223          ps[15] = pi + 2;
41224          ps[8] = ps[1];
41225          ps[9] = pi + 9;
41226          ps[10] = pi + 10;
41227          ps[11] = pi + 3;
41228          ps[4] = ps[2];
41229          ps[5] = pi + 8;
41230          ps[6] = pi + 11;
41231          ps[7] = pi + 4;
41232          ps[0] = ps[3];
41233          ps[1] = pi + 7;
41234          ps[2] = pi + 6;
41235          ps[3] = pi + 5;
41236          cs[2] = cs[0];
41237          cs[3] = ci;
41238          cs[0] = cs[1];
41239          cs[1] = ci + 1;
41240          break;
41241      }
41242      mesh.figures.push({
41243        type: 'patch',
41244        coords: new Int32Array(ps),
41245        colors: new Int32Array(cs)
41246      });
41247    }
41248  }
41249  function updateBounds(mesh) {
41250    var minX = mesh.coords[0][0],
41251        minY = mesh.coords[0][1],
41252        maxX = minX,
41253        maxY = minY;
41254    for (var i = 1, ii = mesh.coords.length; i < ii; i++) {
41255      var x = mesh.coords[i][0],
41256          y = mesh.coords[i][1];
41257      minX = minX > x ? x : minX;
41258      minY = minY > y ? y : minY;
41259      maxX = maxX < x ? x : maxX;
41260      maxY = maxY < y ? y : maxY;
41261    }
41262    mesh.bounds = [minX, minY, maxX, maxY];
41263  }
41264  function packData(mesh) {
41265    var i, ii, j, jj;
41266    var coords = mesh.coords;
41267    var coordsPacked = new Float32Array(coords.length * 2);
41268    for (i = 0, j = 0, ii = coords.length; i < ii; i++) {
41269      var xy = coords[i];
41270      coordsPacked[j++] = xy[0];
41271      coordsPacked[j++] = xy[1];
41272    }
41273    mesh.coords = coordsPacked;
41274    var colors = mesh.colors;
41275    var colorsPacked = new Uint8Array(colors.length * 3);
41276    for (i = 0, j = 0, ii = colors.length; i < ii; i++) {
41277      var c = colors[i];
41278      colorsPacked[j++] = c[0];
41279      colorsPacked[j++] = c[1];
41280      colorsPacked[j++] = c[2];
41281    }
41282    mesh.colors = colorsPacked;
41283    var figures = mesh.figures;
41284    for (i = 0, ii = figures.length; i < ii; i++) {
41285      var figure = figures[i],
41286          ps = figure.coords,
41287          cs = figure.colors;
41288      for (j = 0, jj = ps.length; j < jj; j++) {
41289        ps[j] *= 2;
41290        cs[j] *= 3;
41291      }
41292    }
41293  }
41294  function Mesh(stream, matrix, xref, res, pdfFunctionFactory) {
41295    if (!(0, _primitives.isStream)(stream)) {
41296      throw new _util.FormatError('Mesh data is not a stream');
41297    }
41298    var dict = stream.dict;
41299    this.matrix = matrix;
41300    this.shadingType = dict.get('ShadingType');
41301    this.type = 'Pattern';
41302    this.bbox = dict.getArray('BBox');
41303    var cs = dict.get('ColorSpace', 'CS');
41304    cs = _colorspace.ColorSpace.parse(cs, xref, res, pdfFunctionFactory);
41305    this.cs = cs;
41306    this.background = dict.has('Background') ? cs.getRgb(dict.get('Background'), 0) : null;
41307    var fnObj = dict.get('Function');
41308    var fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;
41309    this.coords = [];
41310    this.colors = [];
41311    this.figures = [];
41312    var decodeContext = {
41313      bitsPerCoordinate: dict.get('BitsPerCoordinate'),
41314      bitsPerComponent: dict.get('BitsPerComponent'),
41315      bitsPerFlag: dict.get('BitsPerFlag'),
41316      decode: dict.getArray('Decode'),
41317      colorFn: fn,
41318      colorSpace: cs,
41319      numComps: fn ? 1 : cs.numComps
41320    };
41321    var reader = new MeshStreamReader(stream, decodeContext);
41322    var patchMesh = false;
41323    switch (this.shadingType) {
41324      case ShadingType.FREE_FORM_MESH:
41325        decodeType4Shading(this, reader);
41326        break;
41327      case ShadingType.LATTICE_FORM_MESH:
41328        var verticesPerRow = dict.get('VerticesPerRow') | 0;
41329        if (verticesPerRow < 2) {
41330          throw new _util.FormatError('Invalid VerticesPerRow');
41331        }
41332        decodeType5Shading(this, reader, verticesPerRow);
41333        break;
41334      case ShadingType.COONS_PATCH_MESH:
41335        decodeType6Shading(this, reader);
41336        patchMesh = true;
41337        break;
41338      case ShadingType.TENSOR_PATCH_MESH:
41339        decodeType7Shading(this, reader);
41340        patchMesh = true;
41341        break;
41342      default:
41343        (0, _util.unreachable)('Unsupported mesh type.');
41344        break;
41345    }
41346    if (patchMesh) {
41347      updateBounds(this);
41348      for (var i = 0, ii = this.figures.length; i < ii; i++) {
41349        buildFigureFromPatch(this, i);
41350      }
41351    }
41352    updateBounds(this);
41353    packData(this);
41354  }
41355  Mesh.prototype = {
41356    getIR: function Mesh_getIR() {
41357      return ['Mesh', this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.matrix, this.bbox, this.background];
41358    }
41359  };
41360  return Mesh;
41361}();
41362Shadings.Dummy = function DummyClosure() {
41363  function Dummy() {
41364    this.type = 'Pattern';
41365  }
41366  Dummy.prototype = {
41367    getIR: function Dummy_getIR() {
41368      return ['Dummy'];
41369    }
41370  };
41371  return Dummy;
41372}();
41373function getTilingPatternIR(operatorList, dict, args) {
41374  var matrix = dict.getArray('Matrix');
41375  var bbox = _util.Util.normalizeRect(dict.getArray('BBox'));
41376  var xstep = dict.get('XStep');
41377  var ystep = dict.get('YStep');
41378  var paintType = dict.get('PaintType');
41379  var tilingType = dict.get('TilingType');
41380  if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {
41381    throw new _util.FormatError('Invalid getTilingPatternIR /BBox array: [' + bbox + '].');
41382  }
41383  return ['TilingPattern', args, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];
41384}
41385exports.Pattern = Pattern;
41386exports.getTilingPatternIR = getTilingPatternIR;
41387
41388/***/ }),
41389/* 166 */
41390/***/ (function(module, exports, __w_pdfjs_require__) {
41391
41392"use strict";
41393
41394
41395Object.defineProperty(exports, "__esModule", {
41396  value: true
41397});
41398exports.bidi = undefined;
41399
41400var _util = __w_pdfjs_require__(2);
41401
41402var baseTypes = ['BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'S', 'B', 'S', 'WS', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'B', 'B', 'S', 'WS', 'ON', 'ON', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'ON', 'ES', 'CS', 'ES', 'CS', 'CS', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'CS', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'CS', 'ON', 'ET', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'BN', 'ON', 'ON', 'ET', 'ET', 'EN', 'EN', 'ON', 'L', 'ON', 'ON', 'ON', 'EN', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L'];
41403var arabicTypes = ['AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ON', 'ON', 'AL', 'ET', 'ET', 'AL', 'CS', 'AL', 'ON', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', '', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ET', 'AN', 'AN', 'AL', 'AL', 'AL', 'NSM', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'NSM', 'NSM', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL'];
41404function isOdd(i) {
41405  return (i & 1) !== 0;
41406}
41407function isEven(i) {
41408  return (i & 1) === 0;
41409}
41410function findUnequal(arr, start, value) {
41411  for (var j = start, jj = arr.length; j < jj; ++j) {
41412    if (arr[j] !== value) {
41413      return j;
41414    }
41415  }
41416  return j;
41417}
41418function setValues(arr, start, end, value) {
41419  for (var j = start; j < end; ++j) {
41420    arr[j] = value;
41421  }
41422}
41423function reverseValues(arr, start, end) {
41424  for (var i = start, j = end - 1; i < j; ++i, --j) {
41425    var temp = arr[i];
41426    arr[i] = arr[j];
41427    arr[j] = temp;
41428  }
41429}
41430function createBidiText(str, isLTR, vertical) {
41431  return {
41432    str: str,
41433    dir: vertical ? 'ttb' : isLTR ? 'ltr' : 'rtl'
41434  };
41435}
41436var chars = [];
41437var types = [];
41438function bidi(str, startLevel, vertical) {
41439  var isLTR = true;
41440  var strLength = str.length;
41441  if (strLength === 0 || vertical) {
41442    return createBidiText(str, isLTR, vertical);
41443  }
41444  chars.length = strLength;
41445  types.length = strLength;
41446  var numBidi = 0;
41447  var i, ii;
41448  for (i = 0; i < strLength; ++i) {
41449    chars[i] = str.charAt(i);
vendor: 7,307 bytes, lines 41450-41765
41450    var charCode = str.charCodeAt(i);
41451    var charType = 'L';
41452    if (charCode <= 0x00ff) {
41453      charType = baseTypes[charCode];
41454    } else if (0x0590 <= charCode && charCode <= 0x05f4) {
41455      charType = 'R';
41456    } else if (0x0600 <= charCode && charCode <= 0x06ff) {
41457      charType = arabicTypes[charCode & 0xff];
41458      if (!charType) {
41459        (0, _util.warn)('Bidi: invalid Unicode character ' + charCode.toString(16));
41460      }
41461    } else if (0x0700 <= charCode && charCode <= 0x08AC) {
41462      charType = 'AL';
41463    }
41464    if (charType === 'R' || charType === 'AL' || charType === 'AN') {
41465      numBidi++;
41466    }
41467    types[i] = charType;
41468  }
41469  if (numBidi === 0) {
41470    isLTR = true;
41471    return createBidiText(str, isLTR);
41472  }
41473  if (startLevel === -1) {
41474    if (numBidi / strLength < 0.3) {
41475      isLTR = true;
41476      startLevel = 0;
41477    } else {
41478      isLTR = false;
41479      startLevel = 1;
41480    }
41481  }
41482  var levels = [];
41483  for (i = 0; i < strLength; ++i) {
41484    levels[i] = startLevel;
41485  }
41486  var e = isOdd(startLevel) ? 'R' : 'L';
41487  var sor = e;
41488  var eor = sor;
41489  var lastType = sor;
41490  for (i = 0; i < strLength; ++i) {
41491    if (types[i] === 'NSM') {
41492      types[i] = lastType;
41493    } else {
41494      lastType = types[i];
41495    }
41496  }
41497  lastType = sor;
41498  var t;
41499  for (i = 0; i < strLength; ++i) {
41500    t = types[i];
41501    if (t === 'EN') {
41502      types[i] = lastType === 'AL' ? 'AN' : 'EN';
41503    } else if (t === 'R' || t === 'L' || t === 'AL') {
41504      lastType = t;
41505    }
41506  }
41507  for (i = 0; i < strLength; ++i) {
41508    t = types[i];
41509    if (t === 'AL') {
41510      types[i] = 'R';
41511    }
41512  }
41513  for (i = 1; i < strLength - 1; ++i) {
41514    if (types[i] === 'ES' && types[i - 1] === 'EN' && types[i + 1] === 'EN') {
41515      types[i] = 'EN';
41516    }
41517    if (types[i] === 'CS' && (types[i - 1] === 'EN' || types[i - 1] === 'AN') && types[i + 1] === types[i - 1]) {
41518      types[i] = types[i - 1];
41519    }
41520  }
41521  for (i = 0; i < strLength; ++i) {
41522    if (types[i] === 'EN') {
41523      var j;
41524      for (j = i - 1; j >= 0; --j) {
41525        if (types[j] !== 'ET') {
41526          break;
41527        }
41528        types[j] = 'EN';
41529      }
41530      for (j = i + 1; j < strLength; ++j) {
41531        if (types[j] !== 'ET') {
41532          break;
41533        }
41534        types[j] = 'EN';
41535      }
41536    }
41537  }
41538  for (i = 0; i < strLength; ++i) {
41539    t = types[i];
41540    if (t === 'WS' || t === 'ES' || t === 'ET' || t === 'CS') {
41541      types[i] = 'ON';
41542    }
41543  }
41544  lastType = sor;
41545  for (i = 0; i < strLength; ++i) {
41546    t = types[i];
41547    if (t === 'EN') {
41548      types[i] = lastType === 'L' ? 'L' : 'EN';
41549    } else if (t === 'R' || t === 'L') {
41550      lastType = t;
41551    }
41552  }
41553  for (i = 0; i < strLength; ++i) {
41554    if (types[i] === 'ON') {
41555      var end = findUnequal(types, i + 1, 'ON');
41556      var before = sor;
41557      if (i > 0) {
41558        before = types[i - 1];
41559      }
41560      var after = eor;
41561      if (end + 1 < strLength) {
41562        after = types[end + 1];
41563      }
41564      if (before !== 'L') {
41565        before = 'R';
41566      }
41567      if (after !== 'L') {
41568        after = 'R';
41569      }
41570      if (before === after) {
41571        setValues(types, i, end, before);
41572      }
41573      i = end - 1;
41574    }
41575  }
41576  for (i = 0; i < strLength; ++i) {
41577    if (types[i] === 'ON') {
41578      types[i] = e;
41579    }
41580  }
41581  for (i = 0; i < strLength; ++i) {
41582    t = types[i];
41583    if (isEven(levels[i])) {
41584      if (t === 'R') {
41585        levels[i] += 1;
41586      } else if (t === 'AN' || t === 'EN') {
41587        levels[i] += 2;
41588      }
41589    } else {
41590      if (t === 'L' || t === 'AN' || t === 'EN') {
41591        levels[i] += 1;
41592      }
41593    }
41594  }
41595  var highestLevel = -1;
41596  var lowestOddLevel = 99;
41597  var level;
41598  for (i = 0, ii = levels.length; i < ii; ++i) {
41599    level = levels[i];
41600    if (highestLevel < level) {
41601      highestLevel = level;
41602    }
41603    if (lowestOddLevel > level && isOdd(level)) {
41604      lowestOddLevel = level;
41605    }
41606  }
41607  for (level = highestLevel; level >= lowestOddLevel; --level) {
41608    var start = -1;
41609    for (i = 0, ii = levels.length; i < ii; ++i) {
41610      if (levels[i] < level) {
41611        if (start >= 0) {
41612          reverseValues(chars, start, i);
41613          start = -1;
41614        }
41615      } else if (start < 0) {
41616        start = i;
41617      }
41618    }
41619    if (start >= 0) {
41620      reverseValues(chars, start, levels.length);
41621    }
41622  }
41623  for (i = 0, ii = chars.length; i < ii; ++i) {
41624    var ch = chars[i];
41625    if (ch === '<' || ch === '>') {
41626      chars[i] = '';
41627    }
41628  }
41629  return createBidiText(chars.join(''), isLTR);
41630}
41631exports.bidi = bidi;
41632
41633/***/ }),
41634/* 167 */
41635/***/ (function(module, exports, __w_pdfjs_require__) {
41636
41637"use strict";
41638
41639
41640Object.defineProperty(exports, "__esModule", {
41641  value: true
41642});
41643exports.getMetrics = undefined;
41644
41645var _util = __w_pdfjs_require__(2);
41646
41647var getMetrics = (0, _util.getLookupTableFactory)(function (t) {
41648  t['Courier'] = 600;
41649  t['Courier-Bold'] = 600;
41650  t['Courier-BoldOblique'] = 600;
41651  t['Courier-Oblique'] = 600;
41652  t['Helvetica'] = (0, _util.getLookupTableFactory)(function (t) {
41653    t['space'] = 278;
41654    t['exclam'] = 278;
41655    t['quotedbl'] = 355;
41656    t['numbersign'] = 556;
41657    t['dollar'] = 556;
41658    t['percent'] = 889;
41659    t['ampersand'] = 667;
41660    t['quoteright'] = 222;
41661    t['parenleft'] = 333;
41662    t['parenright'] = 333;
41663    t['asterisk'] = 389;
41664    t['plus'] = 584;
41665    t['comma'] = 278;
41666    t['hyphen'] = 333;
41667    t['period'] = 278;
41668    t['slash'] = 278;
41669    t['zero'] = 556;
41670    t['one'] = 556;
41671    t['two'] = 556;
41672    t['three'] = 556;
41673    t['four'] = 556;
41674    t['five'] = 556;
41675    t['six'] = 556;
41676    t['seven'] = 556;
41677    t['eight'] = 556;
41678    t['nine'] = 556;
41679    t['colon'] = 278;
41680    t['semicolon'] = 278;
41681    t['less'] = 584;
41682    t['equal'] = 584;
41683    t['greater'] = 584;
41684    t['question'] = 556;
41685    t['at'] = 1015;
41686    t['A'] = 667;
41687    t['B'] = 667;
41688    t['C'] = 722;
41689    t['D'] = 722;
41690    t['E'] = 667;
41691    t['F'] = 611;
41692    t['G'] = 778;
41693    t['H'] = 722;
41694    t['I'] = 278;
41695    t['J'] = 500;
41696    t['K'] = 667;
41697    t['L'] = 556;
41698    t['M'] = 833;
41699    t['N'] = 722;
41700    t['O'] = 778;
41701    t['P'] = 667;
41702    t['Q'] = 778;
41703    t['R'] = 722;
41704    t['S'] = 667;
41705    t['T'] = 611;
41706    t['U'] = 722;
41707    t['V'] = 667;
41708    t['W'] = 944;
41709    t['X'] = 667;
41710    t['Y'] = 667;
41711    t['Z'] = 611;
41712    t['bracketleft'] = 278;
41713    t['backslash'] = 278;
41714    t['bracketright'] = 278;
41715    t['asciicircum'] = 469;
41716    t['underscore'] = 556;
41717    t['quoteleft'] = 222;
41718    t['a'] = 556;
41719    t['b'] = 556;
41720    t['c'] = 500;
41721    t['d'] = 556;
41722    t['e'] = 556;
41723    t['f'] = 278;
41724    t['g'] = 556;
41725    t['h'] = 556;
41726    t['i'] = 222;
41727    t['j'] = 222;
41728    t['k'] = 500;
41729    t['l'] = 222;
41730    t['m'] = 833;
41731    t['n'] = 556;
41732    t['o'] = 556;
41733    t['p'] = 556;
41734    t['q'] = 556;
41735    t['r'] = 333;
41736    t['s'] = 500;
41737    t['t'] = 278;
41738    t['u'] = 556;
41739    t['v'] = 500;
41740    t['w'] = 722;
41741    t['x'] = 500;
41742    t['y'] = 500;
41743    t['z'] = 500;
41744    t['braceleft'] = 334;
41745    t['bar'] = 260;
41746    t['braceright'] = 334;
41747    t['asciitilde'] = 584;
41748    t['exclamdown'] = 333;
41749    t['cent'] = 556;
41750    t['sterling'] = 556;
41751    t['fraction'] = 167;
41752    t['yen'] = 556;
41753    t['florin'] = 556;
41754    t['section'] = 556;
41755    t['currency'] = 556;
41756    t['quotesingle'] = 191;
41757    t['quotedblleft'] = 333;
41758    t['guillemotleft'] = 556;
41759    t['guilsinglleft'] = 333;
41760    t['guilsinglright'] = 333;
41761    t['fi'] = 500;
41762    t['fl'] = 500;
41763    t['endash'] = 556;
41764    t['dagger'] = 556;
41765    t['daggerdbl'] = 556;
41766    t['periodcentered'] = 278;
41767    t['paragraph'] = 537;
41768    t['bullet'] = 350;
41769    t['quotesinglbase'] = 222;
41770    t['quotedblbase'] = 333;
41771    t['quotedblright'] = 333;
41772    t['guillemotright'] = 556;
41773    t['ellipsis'] = 1000;
41774    t['perthousand'] = 1000;
41775    t['questiondown'] = 611;
41776    t['grave'] = 333;
41777    t['acute'] = 333;
41778    t['circumflex'] = 333;
41779    t['tilde'] = 333;
41780    t['macron'] = 333;
41781    t['breve'] = 333;
41782    t['dotaccent'] = 333;
41783    t['dieresis'] = 333;
41784    t['ring'] = 333;
41785    t['cedilla'] = 333;
41786    t['hungarumlaut'] = 333;
41787    t['ogonek'] = 333;
41788    t['caron'] = 333;
41789    t['emdash'] = 1000;
41790    t['AE'] = 1000;
41791    t['ordfeminine'] = 370;
41792    t['Lslash'] = 556;
41793    t['Oslash'] = 778;
41794    t['OE'] = 1000;
41795    t['ordmasculine'] = 365;
41796    t['ae'] = 889;
41797    t['dotlessi'] = 278;
41798    t['lslash'] = 222;
41799    t['oslash'] = 611;
41800    t['oe'] = 944;
41801    t['germandbls'] = 611;
41802    t['Idieresis'] = 278;
41803    t['eacute'] = 556;
41804    t['abreve'] = 556;
41805    t['uhungarumlaut'] = 556;
41806    t['ecaron'] = 556;
41807    t['Ydieresis'] = 667;
41808    t['divide'] = 584;
41809    t['Yacute'] = 667;
41810    t['Acircumflex'] = 667;
41811    t['aacute'] = 556;
41812    t['Ucircumflex'] = 722;
41813    t['yacute'] = 500;
41814    t['scommaaccent'] = 500;
41815    t['ecircumflex'] = 556;
41816    t['Uring'] = 722;
41817    t['Udieresis'] = 722;
41818    t['aogonek'] = 556;
41819    t['Uacute'] = 722;
41820    t['uogonek'] = 556;
41821    t['Edieresis'] = 667;
41822    t['Dcroat'] = 722;
41823    t['commaaccent'] = 250;
41824    t['copyright'] = 737;
41825    t['Emacron'] = 667;
41826    t['ccaron'] = 500;
41827    t['aring'] = 556;
41828    t['Ncommaaccent'] = 722;
41829    t['lacute'] = 222;
41830    t['agrave'] = 556;
41831    t['Tcommaaccent'] = 611;
41832    t['Cacute'] = 722;
41833    t['atilde'] = 556;
41834    t['Edotaccent'] = 667;
41835    t['scaron'] = 500;
41836    t['scedilla'] = 500;
41837    t['iacute'] = 278;
41838    t['lozenge'] = 471;
41839    t['Rcaron'] = 722;
41840    t['Gcommaaccent'] = 778;
41841    t['ucircumflex'] = 556;
41842    t['acircumflex'] = 556;
41843    t['Amacron'] = 667;
41844    t['rcaron'] = 333;
41845    t['ccedilla'] = 500;
41846    t['Zdotaccent'] = 611;
41847    t['Thorn'] = 667;
41848    t['Omacron'] = 778;
41849    t['Racute'] = 722;
41850    t['Sacute'] = 667;
41851    t['dcaron'] = 643;
41852    t['Umacron'] = 722;
41853    t['uring'] = 556;
41854    t['threesuperior'] = 333;
41855    t['Ograve'] = 778;
41856    t['Agrave'] = 667;
41857    t['Abreve'] = 667;
41858    t['multiply'] = 584;
41859    t['uacute'] = 556;
41860    t['Tcaron'] = 611;
41861    t['partialdiff'] = 476;
41862    t['ydieresis'] = 500;
41863    t['Nacute'] = 722;
41864    t['icircumflex'] = 278;
41865    t['Ecircumflex'] = 667;
41866    t['adieresis'] = 556;
41867    t['edieresis'] = 556;
41868    t['cacute'] = 500;
41869    t['nacute'] = 556;
41870    t['umacron'] = 556;
41871    t['Ncaron'] = 722;
41872    t['Iacute'] = 278;
41873    t['plusminus'] = 584;
41874    t['brokenbar'] = 260;
41875    t['registered'] = 737;
41876    t['Gbreve'] = 778;
41877    t['Idotaccent'] = 278;
41878    t['summation'] = 600;
41879    t['Egrave'] = 667;
41880    t['racute'] = 333;
41881    t['omacron'] = 556;
41882    t['Zacute'] = 611;
41883    t['Zcaron'] = 611;
41884    t['greaterequal'] = 549;
41885    t['Eth'] = 722;
41886    t['Ccedilla'] = 722;
41887    t['lcommaaccent'] = 222;
41888    t['tcaron'] = 317;
41889    t['eogonek'] = 556;
41890    t['Uogonek'] = 722;
41891    t['Aacute'] = 667;
41892    t['Adieresis'] = 667;
41893    t['egrave'] = 556;
41894    t['zacute'] = 500;
41895    t['iogonek'] = 222;
41896    t['Oacute'] = 778;
41897    t['oacute'] = 556;
41898    t['amacron'] = 556;
41899    t['sacute'] = 500;
41900    t['idieresis'] = 278;
41901    t['Ocircumflex'] = 778;
41902    t['Ugrave'] = 722;
41903    t['Delta'] = 612;
41904    t['thorn'] = 556;
41905    t['twosuperior'] = 333;
41906    t['Odieresis'] = 778;
41907    t['mu'] = 556;
41908    t['igrave'] = 278;
41909    t['ohungarumlaut'] = 556;
41910    t['Eogonek'] = 667;
41911    t['dcroat'] = 556;
41912    t['threequarters'] = 834;
41913    t['Scedilla'] = 667;
41914    t['lcaron'] = 299;
41915    t['Kcommaaccent'] = 667;
41916    t['Lacute'] = 556;
41917    t['trademark'] = 1000;
41918    t['edotaccent'] = 556;
41919    t['Igrave'] = 278;
41920    t['Imacron'] = 278;
41921    t['Lcaron'] = 556;
41922    t['onehalf'] = 834;
41923    t['lessequal'] = 549;
41924    t['ocircumflex'] = 556;
41925    t['ntilde'] = 556;
41926    t['Uhungarumlaut'] = 722;
41927    t['Eacute'] = 667;
41928    t['emacron'] = 556;
41929    t['gbreve'] = 556;
41930    t['onequarter'] = 834;
41931    t['Scaron'] = 667;
41932    t['Scommaaccent'] = 667;
41933    t['Ohungarumlaut'] = 778;
41934    t['degree'] = 400;
41935    t['ograve'] = 556;
41936    t['Ccaron'] = 722;
41937    t['ugrave'] = 556;
41938    t['radical'] = 453;
41939    t['Dcaron'] = 722;
41940    t['rcommaaccent'] = 333;
41941    t['Ntilde'] = 722;
41942    t['otilde'] = 556;
41943    t['Rcommaaccent'] = 722;
41944    t['Lcommaaccent'] = 556;
41945    t['Atilde'] = 667;
41946    t['Aogonek'] = 667;
41947    t['Aring'] = 667;
41948    t['Otilde'] = 778;
41949    t['zdotaccent'] = 500;
41950    t['Ecaron'] = 667;
41951    t['Iogonek'] = 278;
41952    t['kcommaaccent'] = 500;
41953    t['minus'] = 584;
41954    t['Icircumflex'] = 278;
41955    t['ncaron'] = 556;
41956    t['tcommaaccent'] = 278;
41957    t['logicalnot'] = 584;
41958    t['odieresis'] = 556;
41959    t['udieresis'] = 556;
41960    t['notequal'] = 549;
41961    t['gcommaaccent'] = 556;
41962    t['eth'] = 556;
41963    t['zcaron'] = 500;
41964    t['ncommaaccent'] = 556;
41965    t['onesuperior'] = 333;
41966    t['imacron'] = 278;
41967    t['Euro'] = 556;
41968  });
41969  t['Helvetica-Bold'] = (0, _util.getLookupTableFactory)(function (t) {
41970    t['space'] = 278;
41971    t['exclam'] = 333;
41972    t['quotedbl'] = 474;
41973    t['numbersign'] = 556;
41974    t['dollar'] = 556;
41975    t['percent'] = 889;
41976    t['ampersand'] = 722;
41977    t['quoteright'] = 278;
41978    t['parenleft'] = 333;
41979    t['parenright'] = 333;
41980    t['asterisk'] = 389;
41981    t['plus'] = 584;
41982    t['comma'] = 278;
41983    t['hyphen'] = 333;
41984    t['period'] = 278;
41985    t['slash'] = 278;
41986    t['zero'] = 556;
41987    t['one'] = 556;
41988    t['two'] = 556;
41989    t['three'] = 556;
41990    t['four'] = 556;
41991    t['five'] = 556;
41992    t['six'] = 556;
41993    t['seven'] = 556;
41994    t['eight'] = 556;
41995    t['nine'] = 556;
41996    t['colon'] = 333;
41997    t['semicolon'] = 333;
41998    t['less'] = 584;
41999    t['equal'] = 584;
42000    t['greater'] = 584;
42001    t['question'] = 611;
42002    t['at'] = 975;
42003    t['A'] = 722;
42004    t['B'] = 722;
42005    t['C'] = 722;
42006    t['D'] = 722;
42007    t['E'] = 667;
42008    t['F'] = 611;
42009    t['G'] = 778;
42010    t['H'] = 722;
42011    t['I'] = 278;
42012    t['J'] = 556;
42013    t['K'] = 722;
42014    t['L'] = 611;
42015    t['M'] = 833;
42016    t['N'] = 722;
42017    t['O'] = 778;
42018    t['P'] = 667;
42019    t['Q'] = 778;
42020    t['R'] = 722;
42021    t['S'] = 667;
42022    t['T'] = 611;
42023    t['U'] = 722;
42024    t['V'] = 667;
42025    t['W'] = 944;
42026    t['X'] = 667;
42027    t['Y'] = 667;
42028    t['Z'] = 611;
42029    t['bracketleft'] = 333;
42030    t['backslash'] = 278;
42031    t['bracketright'] = 333;
42032    t['asciicircum'] = 584;
42033    t['underscore'] = 556;
42034    t['quoteleft'] = 278;
42035    t['a'] = 556;
42036    t['b'] = 611;
42037    t['c'] = 556;
42038    t['d'] = 611;
42039    t['e'] = 556;
42040    t['f'] = 333;
42041    t['g'] = 611;
42042    t['h'] = 611;
42043    t['i'] = 278;
42044    t['j'] = 278;
42045    t['k'] = 556;
42046    t['l'] = 278;
42047    t['m'] = 889;
42048    t['n'] = 611;
42049    t['o'] = 611;
42050    t['p'] = 611;
42051    t['q'] = 611;
42052    t['r'] = 389;
42053    t['s'] = 556;
42054    t['t'] = 333;
42055    t['u'] = 611;
42056    t['v'] = 556;
42057    t['w'] = 778;
42058    t['x'] = 556;
42059    t['y'] = 556;
42060    t['z'] = 500;
42061    t['braceleft'] = 389;
42062    t['bar'] = 280;
42063    t['braceright'] = 389;
42064    t['asciitilde'] = 584;
42065    t['exclamdown'] = 333;
42066    t['cent'] = 556;
42067    t['sterling'] = 556;
42068    t['fraction'] = 167;
42069    t['yen'] = 556;
42070    t['florin'] = 556;
42071    t['section'] = 556;
42072    t['currency'] = 556;
42073    t['quotesingle'] = 238;
42074    t['quotedblleft'] = 500;
42075    t['guillemotleft'] = 556;
42076    t['guilsinglleft'] = 333;
42077    t['guilsinglright'] = 333;
42078    t['fi'] = 611;
42079    t['fl'] = 611;
42080    t['endash'] = 556;
42081    t['dagger'] = 556;
42082    t['daggerdbl'] = 556;
42083    t['periodcentered'] = 278;
42084    t['paragraph'] = 556;
42085    t['bullet'] = 350;
42086    t['quotesinglbase'] = 278;
42087    t['quotedblbase'] = 500;
42088    t['quotedblright'] = 500;
42089    t['guillemotright'] = 556;
42090    t['ellipsis'] = 1000;
42091    t['perthousand'] = 1000;
42092    t['questiondown'] = 611;
42093    t['grave'] = 333;
42094    t['acute'] = 333;
42095    t['circumflex'] = 333;
42096    t['tilde'] = 333;
42097    t['macron'] = 333;
42098    t['breve'] = 333;
42099    t['dotaccent'] = 333;
42100    t['dieresis'] = 333;
42101    t['ring'] = 333;
42102    t['cedilla'] = 333;
42103    t['hungarumlaut'] = 333;
42104    t['ogonek'] = 333;
42105    t['caron'] = 333;
42106    t['emdash'] = 1000;
42107    t['AE'] = 1000;
42108    t['ordfeminine'] = 370;
42109    t['Lslash'] = 611;
42110    t['Oslash'] = 778;
42111    t['OE'] = 1000;
42112    t['ordmasculine'] = 365;
42113    t['ae'] = 889;
42114    t['dotlessi'] = 278;
42115    t['lslash'] = 278;
42116    t['oslash'] = 611;
42117    t['oe'] = 944;
42118    t['germandbls'] = 611;
42119    t['Idieresis'] = 278;
42120    t['eacute'] = 556;
42121    t['abreve'] = 556;
42122    t['uhungarumlaut'] = 611;
42123    t['ecaron'] = 556;
42124    t['Ydieresis'] = 667;
42125    t['divide'] = 584;
42126    t['Yacute'] = 667;
42127    t['Acircumflex'] = 722;
42128    t['aacute'] = 556;
42129    t['Ucircumflex'] = 722;
42130    t['yacute'] = 556;
42131    t['scommaaccent'] = 556;
42132    t['ecircumflex'] = 556;
42133    t['Uring'] = 722;
42134    t['Udieresis'] = 722;
42135    t['aogonek'] = 556;
42136    t['Uacute'] = 722;
42137    t['uogonek'] = 611;
42138    t['Edieresis'] = 667;
42139    t['Dcroat'] = 722;
42140    t['commaaccent'] = 250;
42141    t['copyright'] = 737;
42142    t['Emacron'] = 667;
42143    t['ccaron'] = 556;
42144    t['aring'] = 556;
42145    t['Ncommaaccent'] = 722;
42146    t['lacute'] = 278;
42147    t['agrave'] = 556;
42148    t['Tcommaaccent'] = 611;
42149    t['Cacute'] = 722;
42150    t['atilde'] = 556;
42151    t['Edotaccent'] = 667;
42152    t['scaron'] = 556;
42153    t['scedilla'] = 556;
42154    t['iacute'] = 278;
42155    t['lozenge'] = 494;
42156    t['Rcaron'] = 722;
42157    t['Gcommaaccent'] = 778;
42158    t['ucircumflex'] = 611;
42159    t['acircumflex'] = 556;
42160    t['Amacron'] = 722;
42161    t['rcaron'] = 389;
42162    t['ccedilla'] = 556;
42163    t['Zdotaccent'] = 611;
42164    t['Thorn'] = 667;
42165    t['Omacron'] = 778;
42166    t['Racute'] = 722;
42167    t['Sacute'] = 667;
42168    t['dcaron'] = 743;
42169    t['Umacron'] = 722;
42170    t['uring'] = 611;
42171    t['threesuperior'] = 333;
42172    t['Ograve'] = 778;
42173    t['Agrave'] = 722;
42174    t['Abreve'] = 722;
42175    t['multiply'] = 584;
42176    t['uacute'] = 611;
42177    t['Tcaron'] = 611;
42178    t['partialdiff'] = 494;
42179    t['ydieresis'] = 556;
42180    t['Nacute'] = 722;
42181    t['icircumflex'] = 278;
42182    t['Ecircumflex'] = 667;
42183    t['adieresis'] = 556;
42184    t['edieresis'] = 556;
42185    t['cacute'] = 556;
42186    t['nacute'] = 611;
42187    t['umacron'] = 611;
42188    t['Ncaron'] = 722;
42189    t['Iacute'] = 278;
42190    t['plusminus'] = 584;
42191    t['brokenbar'] = 280;
42192    t['registered'] = 737;
42193    t['Gbreve'] = 778;
42194    t['Idotaccent'] = 278;
42195    t['summation'] = 600;
42196    t['Egrave'] = 667;
42197    t['racute'] = 389;
42198    t['omacron'] = 611;
42199    t['Zacute'] = 611;
42200    t['Zcaron'] = 611;
42201    t['greaterequal'] = 549;
42202    t['Eth'] = 722;
42203    t['Ccedilla'] = 722;
42204    t['lcommaaccent'] = 278;
42205    t['tcaron'] = 389;
42206    t['eogonek'] = 556;
42207    t['Uogonek'] = 722;
42208    t['Aacute'] = 722;
42209    t['Adieresis'] = 722;
42210    t['egrave'] = 556;
42211    t['zacute'] = 500;
42212    t['iogonek'] = 278;
42213    t['Oacute'] = 778;
42214    t['oacute'] = 611;
42215    t['amacron'] = 556;
42216    t['sacute'] = 556;
42217    t['idieresis'] = 278;
42218    t['Ocircumflex'] = 778;
42219    t['Ugrave'] = 722;
42220    t['Delta'] = 612;
42221    t['thorn'] = 611;
42222    t['twosuperior'] = 333;
42223    t['Odieresis'] = 778;
42224    t['mu'] = 611;
42225    t['igrave'] = 278;
42226    t['ohungarumlaut'] = 611;
42227    t['Eogonek'] = 667;
42228    t['dcroat'] = 611;
42229    t['threequarters'] = 834;
42230    t['Scedilla'] = 667;
42231    t['lcaron'] = 400;
42232    t['Kcommaaccent'] = 722;
42233    t['Lacute'] = 611;
42234    t['trademark'] = 1000;
42235    t['edotaccent'] = 556;
42236    t['Igrave'] = 278;
42237    t['Imacron'] = 278;
42238    t['Lcaron'] = 611;
42239    t['onehalf'] = 834;
42240    t['lessequal'] = 549;
42241    t['ocircumflex'] = 611;
42242    t['ntilde'] = 611;
42243    t['Uhungarumlaut'] = 722;
42244    t['Eacute'] = 667;
42245    t['emacron'] = 556;
42246    t['gbreve'] = 611;
42247    t['onequarter'] = 834;
42248    t['Scaron'] = 667;
42249    t['Scommaaccent'] = 667;
42250    t['Ohungarumlaut'] = 778;
42251    t['degree'] = 400;
42252    t['ograve'] = 611;
42253    t['Ccaron'] = 722;
42254    t['ugrave'] = 611;
42255    t['radical'] = 549;
42256    t['Dcaron'] = 722;
42257    t['rcommaaccent'] = 389;
42258    t['Ntilde'] = 722;
42259    t['otilde'] = 611;
42260    t['Rcommaaccent'] = 722;
42261    t['Lcommaaccent'] = 611;
42262    t['Atilde'] = 722;
42263    t['Aogonek'] = 722;
42264    t['Aring'] = 722;
42265    t['Otilde'] = 778;
42266    t['zdotaccent'] = 500;
42267    t['Ecaron'] = 667;
42268    t['Iogonek'] = 278;
42269    t['kcommaaccent'] = 556;
42270    t['minus'] = 584;
42271    t['Icircumflex'] = 278;
42272    t['ncaron'] = 611;
42273    t['tcommaaccent'] = 333;
42274    t['logicalnot'] = 584;
42275    t['odieresis'] = 611;
42276    t['udieresis'] = 611;
42277    t['notequal'] = 549;
42278    t['gcommaaccent'] = 611;
42279    t['eth'] = 611;
42280    t['zcaron'] = 500;
42281    t['ncommaaccent'] = 611;
42282    t['onesuperior'] = 333;
42283    t['imacron'] = 278;
42284    t['Euro'] = 556;
42285  });
42286  t['Helvetica-BoldOblique'] = (0, _util.getLookupTableFactory)(function (t) {
42287    t['space'] = 278;
42288    t['exclam'] = 333;
42289    t['quotedbl'] = 474;
42290    t['numbersign'] = 556;
42291    t['dollar'] = 556;
42292    t['percent'] = 889;
42293    t['ampersand'] = 722;
42294    t['quoteright'] = 278;
42295    t['parenleft'] = 333;
42296    t['parenright'] = 333;
42297    t['asterisk'] = 389;
42298    t['plus'] = 584;
42299    t['comma'] = 278;
42300    t['hyphen'] = 333;
42301    t['period'] = 278;
42302    t['slash'] = 278;
42303    t['zero'] = 556;
42304    t['one'] = 556;
42305    t['two'] = 556;
42306    t['three'] = 556;
42307    t['four'] = 556;
42308    t['five'] = 556;
42309    t['six'] = 556;
42310    t['seven'] = 556;
42311    t['eight'] = 556;
42312    t['nine'] = 556;
42313    t['colon'] = 333;
42314    t['semicolon'] = 333;
42315    t['less'] = 584;
42316    t['equal'] = 584;
42317    t['greater'] = 584;
42318    t['question'] = 611;
42319    t['at'] = 975;
42320    t['A'] = 722;
42321    t['B'] = 722;
42322    t['C'] = 722;
42323    t['D'] = 722;
42324    t['E'] = 667;
42325    t['F'] = 611;
42326    t['G'] = 778;
42327    t['H'] = 722;
42328    t['I'] = 278;
42329    t['J'] = 556;
42330    t['K'] = 722;
42331    t['L'] = 611;
42332    t['M'] = 833;
42333    t['N'] = 722;
42334    t['O'] = 778;
42335    t['P'] = 667;
42336    t['Q'] = 778;
42337    t['R'] = 722;
42338    t['S'] = 667;
42339    t['T'] = 611;
42340    t['U'] = 722;
42341    t['V'] = 667;
42342    t['W'] = 944;
42343    t['X'] = 667;
42344    t['Y'] = 667;
42345    t['Z'] = 611;
42346    t['bracketleft'] = 333;
42347    t['backslash'] = 278;
42348    t['bracketright'] = 333;
42349    t['asciicircum'] = 584;
42350    t['underscore'] = 556;
42351    t['quoteleft'] = 278;
42352    t['a'] = 556;
42353    t['b'] = 611;
42354    t['c'] = 556;
42355    t['d'] = 611;
42356    t['e'] = 556;
42357    t['f'] = 333;
42358    t['g'] = 611;
42359    t['h'] = 611;
42360    t['i'] = 278;
42361    t['j'] = 278;
42362    t['k'] = 556;
42363    t['l'] = 278;
42364    t['m'] = 889;
42365    t['n'] = 611;
42366    t['o'] = 611;
42367    t['p'] = 611;
42368    t['q'] = 611;
42369    t['r'] = 389;
42370    t['s'] = 556;
42371    t['t'] = 333;
42372    t['u'] = 611;
42373    t['v'] = 556;
42374    t['w'] = 778;
42375    t['x'] = 556;
42376    t['y'] = 556;
42377    t['z'] = 500;
42378    t['braceleft'] = 389;
42379    t['bar'] = 280;
42380    t['braceright'] = 389;
42381    t['asciitilde'] = 584;
42382    t['exclamdown'] = 333;
42383    t['cent'] = 556;
42384    t['sterling'] = 556;
42385    t['fraction'] = 167;
42386    t['yen'] = 556;
42387    t['florin'] = 556;
42388    t['section'] = 556;
42389    t['currency'] = 556;
42390    t['quotesingle'] = 238;
42391    t['quotedblleft'] = 500;
42392    t['guillemotleft'] = 556;
42393    t['guilsinglleft'] = 333;
42394    t['guilsinglright'] = 333;
42395    t['fi'] = 611;
42396    t['fl'] = 611;
42397    t['endash'] = 556;
42398    t['dagger'] = 556;
42399    t['daggerdbl'] = 556;
42400    t['periodcentered'] = 278;
42401    t['paragraph'] = 556;
42402    t['bullet'] = 350;
42403    t['quotesinglbase'] = 278;
42404    t['quotedblbase'] = 500;
42405    t['quotedblright'] = 500;
42406    t['guillemotright'] = 556;
42407    t['ellipsis'] = 1000;
42408    t['perthousand'] = 1000;
42409    t['questiondown'] = 611;
42410    t['grave'] = 333;
42411    t['acute'] = 333;
42412    t['circumflex'] = 333;
42413    t['tilde'] = 333;
42414    t['macron'] = 333;
42415    t['breve'] = 333;
42416    t['dotaccent'] = 333;
42417    t['dieresis'] = 333;
42418    t['ring'] = 333;
42419    t['cedilla'] = 333;
42420    t['hungarumlaut'] = 333;
42421    t['ogonek'] = 333;
42422    t['caron'] = 333;
42423    t['emdash'] = 1000;
42424    t['AE'] = 1000;
42425    t['ordfeminine'] = 370;
42426    t['Lslash'] = 611;
42427    t['Oslash'] = 778;
42428    t['OE'] = 1000;
42429    t['ordmasculine'] = 365;
42430    t['ae'] = 889;
42431    t['dotlessi'] = 278;
42432    t['lslash'] = 278;
42433    t['oslash'] = 611;
42434    t['oe'] = 944;
42435    t['germandbls'] = 611;
42436    t['Idieresis'] = 278;
42437    t['eacute'] = 556;
42438    t['abreve'] = 556;
42439    t['uhungarumlaut'] = 611;
42440    t['ecaron'] = 556;
42441    t['Ydieresis'] = 667;
42442    t['divide'] = 584;
42443    t['Yacute'] = 667;
42444    t['Acircumflex'] = 722;
42445    t['aacute'] = 556;
42446    t['Ucircumflex'] = 722;
42447    t['yacute'] = 556;
42448    t['scommaaccent'] = 556;
42449    t['ecircumflex'] = 556;
42450    t['Uring'] = 722;
42451    t['Udieresis'] = 722;
42452    t['aogonek'] = 556;
42453    t['Uacute'] = 722;
42454    t['uogonek'] = 611;
42455    t['Edieresis'] = 667;
42456    t['Dcroat'] = 722;
42457    t['commaaccent'] = 250;
42458    t['copyright'] = 737;
42459    t['Emacron'] = 667;
42460    t['ccaron'] = 556;
42461    t['aring'] = 556;
42462    t['Ncommaaccent'] = 722;
42463    t['lacute'] = 278;
42464    t['agrave'] = 556;
42465    t['Tcommaaccent'] = 611;
42466    t['Cacute'] = 722;
42467    t['atilde'] = 556;
42468    t['Edotaccent'] = 667;
42469    t['scaron'] = 556;
42470    t['scedilla'] = 556;
42471    t['iacute'] = 278;
42472    t['lozenge'] = 494;
42473    t['Rcaron'] = 722;
42474    t['Gcommaaccent'] = 778;
42475    t['ucircumflex'] = 611;
42476    t['acircumflex'] = 556;
42477    t['Amacron'] = 722;
42478    t['rcaron'] = 389;
42479    t['ccedilla'] = 556;
42480    t['Zdotaccent'] = 611;
42481    t['Thorn'] = 667;
42482    t['Omacron'] = 778;
42483    t['Racute'] = 722;
42484    t['Sacute'] = 667;
42485    t['dcaron'] = 743;
42486    t['Umacron'] = 722;
42487    t['uring'] = 611;
42488    t['threesuperior'] = 333;
42489    t['Ograve'] = 778;
42490    t['Agrave'] = 722;
42491    t['Abreve'] = 722;
42492    t['multiply'] = 584;
42493    t['uacute'] = 611;
42494    t['Tcaron'] = 611;
42495    t['partialdiff'] = 494;
42496    t['ydieresis'] = 556;
42497    t['Nacute'] = 722;
42498    t['icircumflex'] = 278;
42499    t['Ecircumflex'] = 667;
42500    t['adieresis'] = 556;
42501    t['edieresis'] = 556;
42502    t['cacute'] = 556;
42503    t['nacute'] = 611;
42504    t['umacron'] = 611;
42505    t['Ncaron'] = 722;
42506    t['Iacute'] = 278;
42507    t['plusminus'] = 584;
42508    t['brokenbar'] = 280;
42509    t['registered'] = 737;
42510    t['Gbreve'] = 778;
42511    t['Idotaccent'] = 278;
42512    t['summation'] = 600;
42513    t['Egrave'] = 667;
42514    t['racute'] = 389;
42515    t['omacron'] = 611;
42516    t['Zacute'] = 611;
42517    t['Zcaron'] = 611;
42518    t['greaterequal'] = 549;
42519    t['Eth'] = 722;
42520    t['Ccedilla'] = 722;
42521    t['lcommaaccent'] = 278;
42522    t['tcaron'] = 389;
42523    t['eogonek'] = 556;
42524    t['Uogonek'] = 722;
42525    t['Aacute'] = 722;
42526    t['Adieresis'] = 722;
42527    t['egrave'] = 556;
42528    t['zacute'] = 500;
42529    t['iogonek'] = 278;
42530    t['Oacute'] = 778;
42531    t['oacute'] = 611;
42532    t['amacron'] = 556;
42533    t['sacute'] = 556;
42534    t['idieresis'] = 278;
42535    t['Ocircumflex'] = 778;
42536    t['Ugrave'] = 722;
42537    t['Delta'] = 612;
42538    t['thorn'] = 611;
42539    t['twosuperior'] = 333;
42540    t['Odieresis'] = 778;
42541    t['mu'] = 611;
42542    t['igrave'] = 278;
42543    t['ohungarumlaut'] = 611;
42544    t['Eogonek'] = 667;
42545    t['dcroat'] = 611;
42546    t['threequarters'] = 834;
42547    t['Scedilla'] = 667;
42548    t['lcaron'] = 400;
42549    t['Kcommaaccent'] = 722;
42550    t['Lacute'] = 611;
42551    t['trademark'] = 1000;
42552    t['edotaccent'] = 556;
42553    t['Igrave'] = 278;
42554    t['Imacron'] = 278;
42555    t['Lcaron'] = 611;
42556    t['onehalf'] = 834;
42557    t['lessequal'] = 549;
42558    t['ocircumflex'] = 611;
42559    t['ntilde'] = 611;
42560    t['Uhungarumlaut'] = 722;
42561    t['Eacute'] = 667;
42562    t['emacron'] = 556;
42563    t['gbreve'] = 611;
42564    t['onequarter'] = 834;
42565    t['Scaron'] = 667;
42566    t['Scommaaccent'] = 667;
42567    t['Ohungarumlaut'] = 778;
42568    t['degree'] = 400;
42569    t['ograve'] = 611;
42570    t['Ccaron'] = 722;
42571    t['ugrave'] = 611;
42572    t['radical'] = 549;
42573    t['Dcaron'] = 722;
42574    t['rcommaaccent'] = 389;
42575    t['Ntilde'] = 722;
42576    t['otilde'] = 611;
42577    t['Rcommaaccent'] = 722;
42578    t['Lcommaaccent'] = 611;
42579    t['Atilde'] = 722;
42580    t['Aogonek'] = 722;
42581    t['Aring'] = 722;
42582    t['Otilde'] = 778;
42583    t['zdotaccent'] = 500;
42584    t['Ecaron'] = 667;
42585    t['Iogonek'] = 278;
42586    t['kcommaaccent'] = 556;
42587    t['minus'] = 584;
42588    t['Icircumflex'] = 278;
42589    t['ncaron'] = 611;
42590    t['tcommaaccent'] = 333;
42591    t['logicalnot'] = 584;
42592    t['odieresis'] = 611;
42593    t['udieresis'] = 611;
42594    t['notequal'] = 549;
42595    t['gcommaaccent'] = 611;
42596    t['eth'] = 611;
42597    t['zcaron'] = 500;
42598    t['ncommaaccent'] = 611;
42599    t['onesuperior'] = 333;
42600    t['imacron'] = 278;
42601    t['Euro'] = 556;
42602  });
42603  t['Helvetica-Oblique'] = (0, _util.getLookupTableFactory)(function (t) {
42604    t['space'] = 278;
42605    t['exclam'] = 278;
42606    t['quotedbl'] = 355;
42607    t['numbersign'] = 556;
42608    t['dollar'] = 556;
42609    t['percent'] = 889;
42610    t['ampersand'] = 667;
42611    t['quoteright'] = 222;
42612    t['parenleft'] = 333;
42613    t['parenright'] = 333;
42614    t['asterisk'] = 389;
42615    t['plus'] = 584;
42616    t['comma'] = 278;
42617    t['hyphen'] = 333;
42618    t['period'] = 278;
42619    t['slash'] = 278;
42620    t['zero'] = 556;
42621    t['one'] = 556;
42622    t['two'] = 556;
42623    t['three'] = 556;
42624    t['four'] = 556;
42625    t['five'] = 556;
42626    t['six'] = 556;
42627    t['seven'] = 556;
42628    t['eight'] = 556;
42629    t['nine'] = 556;
42630    t['colon'] = 278;
42631    t['semicolon'] = 278;
42632    t['less'] = 584;
42633    t['equal'] = 584;
42634    t['greater'] = 584;
42635    t['question'] = 556;
42636    t['at'] = 1015;
42637    t['A'] = 667;
42638    t['B'] = 667;
42639    t['C'] = 722;
42640    t['D'] = 722;
42641    t['E'] = 667;
42642    t['F'] = 611;
42643    t['G'] = 778;
42644    t['H'] = 722;
42645    t['I'] = 278;
42646    t['J'] = 500;
42647    t['K'] = 667;
42648    t['L'] = 556;
42649    t['M'] = 833;
42650    t['N'] = 722;
42651    t['O'] = 778;
42652    t['P'] = 667;
42653    t['Q'] = 778;
42654    t['R'] = 722;
42655    t['S'] = 667;
42656    t['T'] = 611;
42657    t['U'] = 722;
42658    t['V'] = 667;
42659    t['W'] = 944;
42660    t['X'] = 667;
42661    t['Y'] = 667;
42662    t['Z'] = 611;
42663    t['bracketleft'] = 278;
42664    t['backslash'] = 278;
42665    t['bracketright'] = 278;
42666    t['asciicircum'] = 469;
42667    t['underscore'] = 556;
42668    t['quoteleft'] = 222;
42669    t['a'] = 556;
42670    t['b'] = 556;
42671    t['c'] = 500;
42672    t['d'] = 556;
42673    t['e'] = 556;
42674    t['f'] = 278;
42675    t['g'] = 556;
42676    t['h'] = 556;
42677    t['i'] = 222;
42678    t['j'] = 222;
42679    t['k'] = 500;
42680    t['l'] = 222;
42681    t['m'] = 833;
42682    t['n'] = 556;
42683    t['o'] = 556;
42684    t['p'] = 556;
42685    t['q'] = 556;
42686    t['r'] = 333;
42687    t['s'] = 500;
42688    t['t'] = 278;
42689    t['u'] = 556;
42690    t['v'] = 500;
42691    t['w'] = 722;
42692    t['x'] = 500;
42693    t['y'] = 500;
42694    t['z'] = 500;
42695    t['braceleft'] = 334;
42696    t['bar'] = 260;
42697    t['braceright'] = 334;
42698    t['asciitilde'] = 584;
42699    t['exclamdown'] = 333;
42700    t['cent'] = 556;
42701    t['sterling'] = 556;
42702    t['fraction'] = 167;
42703    t['yen'] = 556;
42704    t['florin'] = 556;
42705    t['section'] = 556;
42706    t['currency'] = 556;
42707    t['quotesingle'] = 191;
42708    t['quotedblleft'] = 333;
42709    t['guillemotleft'] = 556;
42710    t['guilsinglleft'] = 333;
42711    t['guilsinglright'] = 333;
42712    t['fi'] = 500;
42713    t['fl'] = 500;
42714    t['endash'] = 556;
42715    t['dagger'] = 556;
42716    t['daggerdbl'] = 556;
42717    t['periodcentered'] = 278;
42718    t['paragraph'] = 537;
42719    t['bullet'] = 350;
42720    t['quotesinglbase'] = 222;
42721    t['quotedblbase'] = 333;
42722    t['quotedblright'] = 333;
42723    t['guillemotright'] = 556;
42724    t['ellipsis'] = 1000;
42725    t['perthousand'] = 1000;
42726    t['questiondown'] = 611;
42727    t['grave'] = 333;
42728    t['acute'] = 333;
42729    t['circumflex'] = 333;
42730    t['tilde'] = 333;
42731    t['macron'] = 333;
42732    t['breve'] = 333;
42733    t['dotaccent'] = 333;
42734    t['dieresis'] = 333;
42735    t['ring'] = 333;
42736    t['cedilla'] = 333;
42737    t['hungarumlaut'] = 333;
42738    t['ogonek'] = 333;
42739    t['caron'] = 333;
42740    t['emdash'] = 1000;
42741    t['AE'] = 1000;
42742    t['ordfeminine'] = 370;
42743    t['Lslash'] = 556;
42744    t['Oslash'] = 778;
42745    t['OE'] = 1000;
42746    t['ordmasculine'] = 365;
42747    t['ae'] = 889;
42748    t['dotlessi'] = 278;
42749    t['lslash'] = 222;
42750    t['oslash'] = 611;
42751    t['oe'] = 944;
42752    t['germandbls'] = 611;
42753    t['Idieresis'] = 278;
42754    t['eacute'] = 556;
42755    t['abreve'] = 556;
42756    t['uhungarumlaut'] = 556;
42757    t['ecaron'] = 556;
42758    t['Ydieresis'] = 667;
42759    t['divide'] = 584;
42760    t['Yacute'] = 667;
42761    t['Acircumflex'] = 667;
42762    t['aacute'] = 556;
42763    t['Ucircumflex'] = 722;
42764    t['yacute'] = 500;
42765    t['scommaaccent'] = 500;
42766    t['ecircumflex'] = 556;
42767    t['Uring'] = 722;
42768    t['Udieresis'] = 722;
42769    t['aogonek'] = 556;
42770    t['Uacute'] = 722;
42771    t['uogonek'] = 556;
42772    t['Edieresis'] = 667;
42773    t['Dcroat'] = 722;
42774    t['commaaccent'] = 250;
42775    t['copyright'] = 737;
42776    t['Emacron'] = 667;
42777    t['ccaron'] = 500;
42778    t['aring'] = 556;
42779    t['Ncommaaccent'] = 722;
42780    t['lacute'] = 222;
42781    t['agrave'] = 556;
42782    t['Tcommaaccent'] = 611;
42783    t['Cacute'] = 722;
42784    t['atilde'] = 556;
42785    t['Edotaccent'] = 667;
42786    t['scaron'] = 500;
42787    t['scedilla'] = 500;
42788    t['iacute'] = 278;
42789    t['lozenge'] = 471;
42790    t['Rcaron'] = 722;
42791    t['Gcommaaccent'] = 778;
42792    t['ucircumflex'] = 556;
42793    t['acircumflex'] = 556;
42794    t['Amacron'] = 667;
42795    t['rcaron'] = 333;
42796    t['ccedilla'] = 500;
42797    t['Zdotaccent'] = 611;
42798    t['Thorn'] = 667;
42799    t['Omacron'] = 778;
42800    t['Racute'] = 722;
42801    t['Sacute'] = 667;
42802    t['dcaron'] = 643;
42803    t['Umacron'] = 722;
42804    t['uring'] = 556;
42805    t['threesuperior'] = 333;
42806    t['Ograve'] = 778;
42807    t['Agrave'] = 667;
42808    t['Abreve'] = 667;
42809    t['multiply'] = 584;
42810    t['uacute'] = 556;
42811    t['Tcaron'] = 611;
42812    t['partialdiff'] = 476;
42813    t['ydieresis'] = 500;
42814    t['Nacute'] = 722;
42815    t['icircumflex'] = 278;
42816    t['Ecircumflex'] = 667;
42817    t['adieresis'] = 556;
42818    t['edieresis'] = 556;
42819    t['cacute'] = 500;
42820    t['nacute'] = 556;
42821    t['umacron'] = 556;
42822    t['Ncaron'] = 722;
42823    t['Iacute'] = 278;
42824    t['plusminus'] = 584;
42825    t['brokenbar'] = 260;
42826    t['registered'] = 737;
42827    t['Gbreve'] = 778;
42828    t['Idotaccent'] = 278;
42829    t['summation'] = 600;
42830    t['Egrave'] = 667;
42831    t['racute'] = 333;
42832    t['omacron'] = 556;
42833    t['Zacute'] = 611;
42834    t['Zcaron'] = 611;
42835    t['greaterequal'] = 549;
42836    t['Eth'] = 722;
42837    t['Ccedilla'] = 722;
42838    t['lcommaaccent'] = 222;
42839    t['tcaron'] = 317;
42840    t['eogonek'] = 556;
42841    t['Uogonek'] = 722;
42842    t['Aacute'] = 667;
42843    t['Adieresis'] = 667;
42844    t['egrave'] = 556;
42845    t['zacute'] = 500;
42846    t['iogonek'] = 222;
42847    t['Oacute'] = 778;
42848    t['oacute'] = 556;
42849    t['amacron'] = 556;
42850    t['sacute'] = 500;
42851    t['idieresis'] = 278;
42852    t['Ocircumflex'] = 778;
42853    t['Ugrave'] = 722;
42854    t['Delta'] = 612;
42855    t['thorn'] = 556;
42856    t['twosuperior'] = 333;
42857    t['Odieresis'] = 778;
42858    t['mu'] = 556;
42859    t['igrave'] = 278;
42860    t['ohungarumlaut'] = 556;
42861    t['Eogonek'] = 667;
42862    t['dcroat'] = 556;
42863    t['threequarters'] = 834;
42864    t['Scedilla'] = 667;
42865    t['lcaron'] = 299;
42866    t['Kcommaaccent'] = 667;
42867    t['Lacute'] = 556;
42868    t['trademark'] = 1000;
42869    t['edotaccent'] = 556;
42870    t['Igrave'] = 278;
42871    t['Imacron'] = 278;
42872    t['Lcaron'] = 556;
42873    t['onehalf'] = 834;
42874    t['lessequal'] = 549;
42875    t['ocircumflex'] = 556;
42876    t['ntilde'] = 556;
42877    t['Uhungarumlaut'] = 722;
42878    t['Eacute'] = 667;
42879    t['emacron'] = 556;
42880    t['gbreve'] = 556;
42881    t['onequarter'] = 834;
42882    t['Scaron'] = 667;
42883    t['Scommaaccent'] = 667;
42884    t['Ohungarumlaut'] = 778;
42885    t['degree'] = 400;
42886    t['ograve'] = 556;
42887    t['Ccaron'] = 722;
42888    t['ugrave'] = 556;
42889    t['radical'] = 453;
42890    t['Dcaron'] = 722;
42891    t['rcommaaccent'] = 333;
42892    t['Ntilde'] = 722;
42893    t['otilde'] = 556;
42894    t['Rcommaaccent'] = 722;
42895    t['Lcommaaccent'] = 556;
42896    t['Atilde'] = 667;
42897    t['Aogonek'] = 667;
42898    t['Aring'] = 667;
42899    t['Otilde'] = 778;
42900    t['zdotaccent'] = 500;
42901    t['Ecaron'] = 667;
42902    t['Iogonek'] = 278;
42903    t['kcommaaccent'] = 500;
42904    t['minus'] = 584;
42905    t['Icircumflex'] = 278;
42906    t['ncaron'] = 556;
42907    t['tcommaaccent'] = 278;
42908    t['logicalnot'] = 584;
42909    t['odieresis'] = 556;
42910    t['udieresis'] = 556;
42911    t['notequal'] = 549;
42912    t['gcommaaccent'] = 556;
42913    t['eth'] = 556;
42914    t['zcaron'] = 500;
42915    t['ncommaaccent'] = 556;
42916    t['onesuperior'] = 333;
42917    t['imacron'] = 278;
42918    t['Euro'] = 556;
42919  });
42920  t['Symbol'] = (0, _util.getLookupTableFactory)(function (t) {
42921    t['space'] = 250;
42922    t['exclam'] = 333;
42923    t['universal'] = 713;
42924    t['numbersign'] = 500;
42925    t['existential'] = 549;
42926    t['percent'] = 833;
42927    t['ampersand'] = 778;
42928    t['suchthat'] = 439;
42929    t['parenleft'] = 333;
42930    t['parenright'] = 333;
42931    t['asteriskmath'] = 500;
42932    t['plus'] = 549;
42933    t['comma'] = 250;
42934    t['minus'] = 549;
42935    t['period'] = 250;
42936    t['slash'] = 278;
42937    t['zero'] = 500;
42938    t['one'] = 500;
42939    t['two'] = 500;
42940    t['three'] = 500;
42941    t['four'] = 500;
42942    t['five'] = 500;
42943    t['six'] = 500;
42944    t['seven'] = 500;
42945    t['eight'] = 500;
42946    t['nine'] = 500;
42947    t['colon'] = 278;
42948    t['semicolon'] = 278;
42949    t['less'] = 549;
42950    t['equal'] = 549;
42951    t['greater'] = 549;
42952    t['question'] = 444;
42953    t['congruent'] = 549;
42954    t['Alpha'] = 722;
42955    t['Beta'] = 667;
42956    t['Chi'] = 722;
42957    t['Delta'] = 612;
42958    t['Epsilon'] = 611;
42959    t['Phi'] = 763;
42960    t['Gamma'] = 603;
42961    t['Eta'] = 722;
42962    t['Iota'] = 333;
42963    t['theta1'] = 631;
42964    t['Kappa'] = 722;
42965    t['Lambda'] = 686;
42966    t['Mu'] = 889;
42967    t['Nu'] = 722;
42968    t['Omicron'] = 722;
42969    t['Pi'] = 768;
42970    t['Theta'] = 741;
42971    t['Rho'] = 556;
42972    t['Sigma'] = 592;
42973    t['Tau'] = 611;
42974    t['Upsilon'] = 690;
42975    t['sigma1'] = 439;
42976    t['Omega'] = 768;
42977    t['Xi'] = 645;
42978    t['Psi'] = 795;
42979    t['Zeta'] = 611;
42980    t['bracketleft'] = 333;
42981    t['therefore'] = 863;
42982    t['bracketright'] = 333;
42983    t['perpendicular'] = 658;
42984    t['underscore'] = 500;
42985    t['radicalex'] = 500;
42986    t['alpha'] = 631;
42987    t['beta'] = 549;
42988    t['chi'] = 549;
42989    t['delta'] = 494;
42990    t['epsilon'] = 439;
42991    t['phi'] = 521;
42992    t['gamma'] = 411;
42993    t['eta'] = 603;
42994    t['iota'] = 329;
42995    t['phi1'] = 603;
42996    t['kappa'] = 549;
42997    t['lambda'] = 549;
42998    t['mu'] = 576;
42999    t['nu'] = 521;
43000    t['omicron'] = 549;
43001    t['pi'] = 549;
43002    t['theta'] = 521;
43003    t['rho'] = 549;
43004    t['sigma'] = 603;
43005    t['tau'] = 439;
43006    t['upsilon'] = 576;
43007    t['omega1'] = 713;
43008    t['omega'] = 686;
43009    t['xi'] = 493;
43010    t['psi'] = 686;
43011    t['zeta'] = 494;
43012    t['braceleft'] = 480;
43013    t['bar'] = 200;
43014    t['braceright'] = 480;
43015    t['similar'] = 549;
43016    t['Euro'] = 750;
43017    t['Upsilon1'] = 620;
43018    t['minute'] = 247;
43019    t['lessequal'] = 549;
43020    t['fraction'] = 167;
43021    t['infinity'] = 713;
43022    t['florin'] = 500;
43023    t['club'] = 753;
43024    t['diamond'] = 753;
43025    t['heart'] = 753;
43026    t['spade'] = 753;
43027    t['arrowboth'] = 1042;
43028    t['arrowleft'] = 987;
43029    t['arrowup'] = 603;
43030    t['arrowright'] = 987;
43031    t['arrowdown'] = 603;
43032    t['degree'] = 400;
43033    t['plusminus'] = 549;
43034    t['second'] = 411;
43035    t['greaterequal'] = 549;
43036    t['multiply'] = 549;
43037    t['proportional'] = 713;
43038    t['partialdiff'] = 494;
43039    t['bullet'] = 460;
43040    t['divide'] = 549;
43041    t['notequal'] = 549;
43042    t['equivalence'] = 549;
43043    t['approxequal'] = 549;
43044    t['ellipsis'] = 1000;
43045    t['arrowvertex'] = 603;
43046    t['arrowhorizex'] = 1000;
43047    t['carriagereturn'] = 658;
43048    t['aleph'] = 823;
43049    t['Ifraktur'] = 686;
43050    t['Rfraktur'] = 795;
43051    t['weierstrass'] = 987;
43052    t['circlemultiply'] = 768;
43053    t['circleplus'] = 768;
43054    t['emptyset'] = 823;
43055    t['intersection'] = 768;
43056    t['union'] = 768;
43057    t['propersuperset'] = 713;
43058    t['reflexsuperset'] = 713;
43059    t['notsubset'] = 713;
43060    t['propersubset'] = 713;
43061    t['reflexsubset'] = 713;
43062    t['element'] = 713;
43063    t['notelement'] = 713;
43064    t['angle'] = 768;
43065    t['gradient'] = 713;
43066    t['registerserif'] = 790;
43067    t['copyrightserif'] = 790;
43068    t['trademarkserif'] = 890;
43069    t['product'] = 823;
43070    t['radical'] = 549;
43071    t['dotmath'] = 250;
43072    t['logicalnot'] = 713;
43073    t['logicaland'] = 603;
43074    t['logicalor'] = 603;
43075    t['arrowdblboth'] = 1042;
43076    t['arrowdblleft'] = 987;
43077    t['arrowdblup'] = 603;
43078    t['arrowdblright'] = 987;
43079    t['arrowdbldown'] = 603;
43080    t['lozenge'] = 494;
43081    t['angleleft'] = 329;
43082    t['registersans'] = 790;
43083    t['copyrightsans'] = 790;
43084    t['trademarksans'] = 786;
43085    t['summation'] = 713;
43086    t['parenlefttp'] = 384;
43087    t['parenleftex'] = 384;
43088    t['parenleftbt'] = 384;
43089    t['bracketlefttp'] = 384;
43090    t['bracketleftex'] = 384;
43091    t['bracketleftbt'] = 384;
43092    t['bracelefttp'] = 494;
43093    t['braceleftmid'] = 494;
43094    t['braceleftbt'] = 494;
43095    t['braceex'] = 494;
43096    t['angleright'] = 329;
43097    t['integral'] = 274;
43098    t['integraltp'] = 686;
43099    t['integralex'] = 686;
43100    t['integralbt'] = 686;
43101    t['parenrighttp'] = 384;
43102    t['parenrightex'] = 384;
43103    t['parenrightbt'] = 384;
43104    t['bracketrighttp'] = 384;
43105    t['bracketrightex'] = 384;
43106    t['bracketrightbt'] = 384;
43107    t['bracerighttp'] = 494;
43108    t['bracerightmid'] = 494;
43109    t['bracerightbt'] = 494;
43110    t['apple'] = 790;
43111  });
43112  t['Times-Roman'] = (0, _util.getLookupTableFactory)(function (t) {
43113    t['space'] = 250;
43114    t['exclam'] = 333;
43115    t['quotedbl'] = 408;
43116    t['numbersign'] = 500;
43117    t['dollar'] = 500;
43118    t['percent'] = 833;
43119    t['ampersand'] = 778;
43120    t['quoteright'] = 333;
43121    t['parenleft'] = 333;
43122    t['parenright'] = 333;
43123    t['asterisk'] = 500;
43124    t['plus'] = 564;
43125    t['comma'] = 250;
43126    t['hyphen'] = 333;
43127    t['period'] = 250;
43128    t['slash'] = 278;
43129    t['zero'] = 500;
43130    t['one'] = 500;
43131    t['two'] = 500;
43132    t['three'] = 500;
43133    t['four'] = 500;
43134    t['five'] = 500;
43135    t['six'] = 500;
43136    t['seven'] = 500;
43137    t['eight'] = 500;
43138    t['nine'] = 500;
43139    t['colon'] = 278;
43140    t['semicolon'] = 278;
43141    t['less'] = 564;
43142    t['equal'] = 564;
43143    t['greater'] = 564;
43144    t['question'] = 444;
43145    t['at'] = 921;
43146    t['A'] = 722;
43147    t['B'] = 667;
43148    t['C'] = 667;
43149    t['D'] = 722;
43150    t['E'] = 611;
43151    t['F'] = 556;
43152    t['G'] = 722;
43153    t['H'] = 722;
43154    t['I'] = 333;
43155    t['J'] = 389;
43156    t['K'] = 722;
43157    t['L'] = 611;
43158    t['M'] = 889;
43159    t['N'] = 722;
43160    t['O'] = 722;
43161    t['P'] = 556;
43162    t['Q'] = 722;
43163    t['R'] = 667;
43164    t['S'] = 556;
43165    t['T'] = 611;
43166    t['U'] = 722;
43167    t['V'] = 722;
43168    t['W'] = 944;
43169    t['X'] = 722;
43170    t['Y'] = 722;
43171    t['Z'] = 611;
43172    t['bracketleft'] = 333;
43173    t['backslash'] = 278;
43174    t['bracketright'] = 333;
43175    t['asciicircum'] = 469;
43176    t['underscore'] = 500;
43177    t['quoteleft'] = 333;
43178    t['a'] = 444;
43179    t['b'] = 500;
43180    t['c'] = 444;
43181    t['d'] = 500;
43182    t['e'] = 444;
43183    t['f'] = 333;
43184    t['g'] = 500;
43185    t['h'] = 500;
43186    t['i'] = 278;
43187    t['j'] = 278;
43188    t['k'] = 500;
43189    t['l'] = 278;
43190    t['m'] = 778;
43191    t['n'] = 500;
43192    t['o'] = 500;
43193    t['p'] = 500;
43194    t['q'] = 500;
43195    t['r'] = 333;
43196    t['s'] = 389;
43197    t['t'] = 278;
43198    t['u'] = 500;
43199    t['v'] = 500;
43200    t['w'] = 722;
43201    t['x'] = 500;
43202    t['y'] = 500;
43203    t['z'] = 444;
43204    t['braceleft'] = 480;
43205    t['bar'] = 200;
43206    t['braceright'] = 480;
43207    t['asciitilde'] = 541;
43208    t['exclamdown'] = 333;
43209    t['cent'] = 500;
43210    t['sterling'] = 500;
43211    t['fraction'] = 167;
43212    t['yen'] = 500;
43213    t['florin'] = 500;
43214    t['section'] = 500;
43215    t['currency'] = 500;
43216    t['quotesingle'] = 180;
43217    t['quotedblleft'] = 444;
43218    t['guillemotleft'] = 500;
43219    t['guilsinglleft'] = 333;
43220    t['guilsinglright'] = 333;
43221    t['fi'] = 556;
43222    t['fl'] = 556;
43223    t['endash'] = 500;
43224    t['dagger'] = 500;
43225    t['daggerdbl'] = 500;
43226    t['periodcentered'] = 250;
43227    t['paragraph'] = 453;
43228    t['bullet'] = 350;
43229    t['quotesinglbase'] = 333;
43230    t['quotedblbase'] = 444;
43231    t['quotedblright'] = 444;
43232    t['guillemotright'] = 500;
43233    t['ellipsis'] = 1000;
43234    t['perthousand'] = 1000;
43235    t['questiondown'] = 444;
43236    t['grave'] = 333;
43237    t['acute'] = 333;
43238    t['circumflex'] = 333;
43239    t['tilde'] = 333;
43240    t['macron'] = 333;
43241    t['breve'] = 333;
43242    t['dotaccent'] = 333;
43243    t['dieresis'] = 333;
43244    t['ring'] = 333;
43245    t['cedilla'] = 333;
43246    t['hungarumlaut'] = 333;
43247    t['ogonek'] = 333;
43248    t['caron'] = 333;
43249    t['emdash'] = 1000;
43250    t['AE'] = 889;
43251    t['ordfeminine'] = 276;
43252    t['Lslash'] = 611;
43253    t['Oslash'] = 722;
43254    t['OE'] = 889;
43255    t['ordmasculine'] = 310;
43256    t['ae'] = 667;
43257    t['dotlessi'] = 278;
43258    t['lslash'] = 278;
43259    t['oslash'] = 500;
43260    t['oe'] = 722;
43261    t['germandbls'] = 500;
43262    t['Idieresis'] = 333;
43263    t['eacute'] = 444;
43264    t['abreve'] = 444;
43265    t['uhungarumlaut'] = 500;
43266    t['ecaron'] = 444;
43267    t['Ydieresis'] = 722;
43268    t['divide'] = 564;
43269    t['Yacute'] = 722;
43270    t['Acircumflex'] = 722;
43271    t['aacute'] = 444;
43272    t['Ucircumflex'] = 722;
43273    t['yacute'] = 500;
43274    t['scommaaccent'] = 389;
43275    t['ecircumflex'] = 444;
43276    t['Uring'] = 722;
43277    t['Udieresis'] = 722;
43278    t['aogonek'] = 444;
43279    t['Uacute'] = 722;
43280    t['uogonek'] = 500;
43281    t['Edieresis'] = 611;
43282    t['Dcroat'] = 722;
43283    t['commaaccent'] = 250;
43284    t['copyright'] = 760;
43285    t['Emacron'] = 611;
43286    t['ccaron'] = 444;
43287    t['aring'] = 444;
43288    t['Ncommaaccent'] = 722;
43289    t['lacute'] = 278;
43290    t['agrave'] = 444;
43291    t['Tcommaaccent'] = 611;
43292    t['Cacute'] = 667;
43293    t['atilde'] = 444;
43294    t['Edotaccent'] = 611;
43295    t['scaron'] = 389;
43296    t['scedilla'] = 389;
43297    t['iacute'] = 278;
43298    t['lozenge'] = 471;
43299    t['Rcaron'] = 667;
43300    t['Gcommaaccent'] = 722;
43301    t['ucircumflex'] = 500;
43302    t['acircumflex'] = 444;
43303    t['Amacron'] = 722;
43304    t['rcaron'] = 333;
43305    t['ccedilla'] = 444;
43306    t['Zdotaccent'] = 611;
43307    t['Thorn'] = 556;
43308    t['Omacron'] = 722;
43309    t['Racute'] = 667;
43310    t['Sacute'] = 556;
43311    t['dcaron'] = 588;
43312    t['Umacron'] = 722;
43313    t['uring'] = 500;
43314    t['threesuperior'] = 300;
43315    t['Ograve'] = 722;
43316    t['Agrave'] = 722;
43317    t['Abreve'] = 722;
43318    t['multiply'] = 564;
43319    t['uacute'] = 500;
43320    t['Tcaron'] = 611;
43321    t['partialdiff'] = 476;
43322    t['ydieresis'] = 500;
43323    t['Nacute'] = 722;
43324    t['icircumflex'] = 278;
43325    t['Ecircumflex'] = 611;
43326    t['adieresis'] = 444;
43327    t['edieresis'] = 444;
43328    t['cacute'] = 444;
43329    t['nacute'] = 500;
43330    t['umacron'] = 500;
43331    t['Ncaron'] = 722;
43332    t['Iacute'] = 333;
43333    t['plusminus'] = 564;
43334    t['brokenbar'] = 200;
43335    t['registered'] = 760;
43336    t['Gbreve'] = 722;
43337    t['Idotaccent'] = 333;
43338    t['summation'] = 600;
43339    t['Egrave'] = 611;
43340    t['racute'] = 333;
43341    t['omacron'] = 500;
43342    t['Zacute'] = 611;
43343    t['Zcaron'] = 611;
43344    t['greaterequal'] = 549;
43345    t['Eth'] = 722;
43346    t['Ccedilla'] = 667;
43347    t['lcommaaccent'] = 278;
43348    t['tcaron'] = 326;
43349    t['eogonek'] = 444;
43350    t['Uogonek'] = 722;
43351    t['Aacute'] = 722;
43352    t['Adieresis'] = 722;
43353    t['egrave'] = 444;
43354    t['zacute'] = 444;
43355    t['iogonek'] = 278;
43356    t['Oacute'] = 722;
43357    t['oacute'] = 500;
43358    t['amacron'] = 444;
43359    t['sacute'] = 389;
43360    t['idieresis'] = 278;
43361    t['Ocircumflex'] = 722;
43362    t['Ugrave'] = 722;
43363    t['Delta'] = 612;
43364    t['thorn'] = 500;
43365    t['twosuperior'] = 300;
43366    t['Odieresis'] = 722;
43367    t['mu'] = 500;
43368    t['igrave'] = 278;
43369    t['ohungarumlaut'] = 500;
43370    t['Eogonek'] = 611;
43371    t['dcroat'] = 500;
43372    t['threequarters'] = 750;
43373    t['Scedilla'] = 556;
43374    t['lcaron'] = 344;
43375    t['Kcommaaccent'] = 722;
43376    t['Lacute'] = 611;
43377    t['trademark'] = 980;
43378    t['edotaccent'] = 444;
43379    t['Igrave'] = 333;
43380    t['Imacron'] = 333;
43381    t['Lcaron'] = 611;
43382    t['onehalf'] = 750;
43383    t['lessequal'] = 549;
43384    t['ocircumflex'] = 500;
43385    t['ntilde'] = 500;
43386    t['Uhungarumlaut'] = 722;
43387    t['Eacute'] = 611;
43388    t['emacron'] = 444;
43389    t['gbreve'] = 500;
43390    t['onequarter'] = 750;
43391    t['Scaron'] = 556;
43392    t['Scommaaccent'] = 556;
43393    t['Ohungarumlaut'] = 722;
43394    t['degree'] = 400;
43395    t['ograve'] = 500;
43396    t['Ccaron'] = 667;
43397    t['ugrave'] = 500;
43398    t['radical'] = 453;
43399    t['Dcaron'] = 722;
43400    t['rcommaaccent'] = 333;
43401    t['Ntilde'] = 722;
43402    t['otilde'] = 500;
43403    t['Rcommaaccent'] = 667;
43404    t['Lcommaaccent'] = 611;
43405    t['Atilde'] = 722;
43406    t['Aogonek'] = 722;
43407    t['Aring'] = 722;
43408    t['Otilde'] = 722;
43409    t['zdotaccent'] = 444;
43410    t['Ecaron'] = 611;
43411    t['Iogonek'] = 333;
43412    t['kcommaaccent'] = 500;
43413    t['minus'] = 564;
43414    t['Icircumflex'] = 333;
43415    t['ncaron'] = 500;
43416    t['tcommaaccent'] = 278;
43417    t['logicalnot'] = 564;
43418    t['odieresis'] = 500;
43419    t['udieresis'] = 500;
43420    t['notequal'] = 549;
43421    t['gcommaaccent'] = 500;
43422    t['eth'] = 500;
43423    t['zcaron'] = 444;
43424    t['ncommaaccent'] = 500;
43425    t['onesuperior'] = 300;
43426    t['imacron'] = 278;
43427    t['Euro'] = 500;
43428  });
43429  t['Times-Bold'] = (0, _util.getLookupTableFactory)(function (t) {
43430    t['space'] = 250;
43431    t['exclam'] = 333;
43432    t['quotedbl'] = 555;
43433    t['numbersign'] = 500;
43434    t['dollar'] = 500;
43435    t['percent'] = 1000;
43436    t['ampersand'] = 833;
43437    t['quoteright'] = 333;
43438    t['parenleft'] = 333;
43439    t['parenright'] = 333;
43440    t['asterisk'] = 500;
43441    t['plus'] = 570;
43442    t['comma'] = 250;
43443    t['hyphen'] = 333;
43444    t['period'] = 250;
43445    t['slash'] = 278;
43446    t['zero'] = 500;
43447    t['one'] = 500;
43448    t['two'] = 500;
43449    t['three'] = 500;
43450    t['four'] = 500;
43451    t['five'] = 500;
43452    t['six'] = 500;
43453    t['seven'] = 500;
43454    t['eight'] = 500;
43455    t['nine'] = 500;
43456    t['colon'] = 333;
43457    t['semicolon'] = 333;
43458    t['less'] = 570;
43459    t['equal'] = 570;
43460    t['greater'] = 570;
43461    t['question'] = 500;
43462    t['at'] = 930;
43463    t['A'] = 722;
43464    t['B'] = 667;
43465    t['C'] = 722;
43466    t['D'] = 722;
43467    t['E'] = 667;
43468    t['F'] = 611;
43469    t['G'] = 778;
43470    t['H'] = 778;
43471    t['I'] = 389;
43472    t['J'] = 500;
43473    t['K'] = 778;
43474    t['L'] = 667;
43475    t['M'] = 944;
43476    t['N'] = 722;
43477    t['O'] = 778;
43478    t['P'] = 611;
43479    t['Q'] = 778;
43480    t['R'] = 722;
43481    t['S'] = 556;
43482    t['T'] = 667;
43483    t['U'] = 722;
43484    t['V'] = 722;
43485    t['W'] = 1000;
43486    t['X'] = 722;
43487    t['Y'] = 722;
43488    t['Z'] = 667;
43489    t['bracketleft'] = 333;
43490    t['backslash'] = 278;
43491    t['bracketright'] = 333;
43492    t['asciicircum'] = 581;
43493    t['underscore'] = 500;
43494    t['quoteleft'] = 333;
43495    t['a'] = 500;
43496    t['b'] = 556;
43497    t['c'] = 444;
43498    t['d'] = 556;
43499    t['e'] = 444;
43500    t['f'] = 333;
43501    t['g'] = 500;
43502    t['h'] = 556;
43503    t['i'] = 278;
43504    t['j'] = 333;
43505    t['k'] = 556;
43506    t['l'] = 278;
43507    t['m'] = 833;
43508    t['n'] = 556;
43509    t['o'] = 500;
43510    t['p'] = 556;
43511    t['q'] = 556;
43512    t['r'] = 444;
43513    t['s'] = 389;
43514    t['t'] = 333;
43515    t['u'] = 556;
43516    t['v'] = 500;
43517    t['w'] = 722;
43518    t['x'] = 500;
43519    t['y'] = 500;
43520    t['z'] = 444;
43521    t['braceleft'] = 394;
43522    t['bar'] = 220;
43523    t['braceright'] = 394;
43524    t['asciitilde'] = 520;
43525    t['exclamdown'] = 333;
43526    t['cent'] = 500;
43527    t['sterling'] = 500;
43528    t['fraction'] = 167;
43529    t['yen'] = 500;
43530    t['florin'] = 500;
43531    t['section'] = 500;
43532    t['currency'] = 500;
43533    t['quotesingle'] = 278;
43534    t['quotedblleft'] = 500;
43535    t['guillemotleft'] = 500;
43536    t['guilsinglleft'] = 333;
43537    t['guilsinglright'] = 333;
43538    t['fi'] = 556;
43539    t['fl'] = 556;
43540    t['endash'] = 500;
43541    t['dagger'] = 500;
43542    t['daggerdbl'] = 500;
43543    t['periodcentered'] = 250;
43544    t['paragraph'] = 540;
43545    t['bullet'] = 350;
43546    t['quotesinglbase'] = 333;
43547    t['quotedblbase'] = 500;
43548    t['quotedblright'] = 500;
43549    t['guillemotright'] = 500;
43550    t['ellipsis'] = 1000;
43551    t['perthousand'] = 1000;
43552    t['questiondown'] = 500;
43553    t['grave'] = 333;
43554    t['acute'] = 333;
43555    t['circumflex'] = 333;
43556    t['tilde'] = 333;
43557    t['macron'] = 333;
43558    t['breve'] = 333;
43559    t['dotaccent'] = 333;
43560    t['dieresis'] = 333;
43561    t['ring'] = 333;
43562    t['cedilla'] = 333;
43563    t['hungarumlaut'] = 333;
43564    t['ogonek'] = 333;
43565    t['caron'] = 333;
43566    t['emdash'] = 1000;
43567    t['AE'] = 1000;
43568    t['ordfeminine'] = 300;
43569    t['Lslash'] = 667;
43570    t['Oslash'] = 778;
43571    t['OE'] = 1000;
43572    t['ordmasculine'] = 330;
43573    t['ae'] = 722;
43574    t['dotlessi'] = 278;
43575    t['lslash'] = 278;
43576    t['oslash'] = 500;
43577    t['oe'] = 722;
43578    t['germandbls'] = 556;
43579    t['Idieresis'] = 389;
43580    t['eacute'] = 444;
43581    t['abreve'] = 500;
43582    t['uhungarumlaut'] = 556;
43583    t['ecaron'] = 444;
43584    t['Ydieresis'] = 722;
43585    t['divide'] = 570;
43586    t['Yacute'] = 722;
43587    t['Acircumflex'] = 722;
43588    t['aacute'] = 500;
43589    t['Ucircumflex'] = 722;
43590    t['yacute'] = 500;
43591    t['scommaaccent'] = 389;
43592    t['ecircumflex'] = 444;
43593    t['Uring'] = 722;
43594    t['Udieresis'] = 722;
43595    t['aogonek'] = 500;
43596    t['Uacute'] = 722;
43597    t['uogonek'] = 556;
43598    t['Edieresis'] = 667;
43599    t['Dcroat'] = 722;
43600    t['commaaccent'] = 250;
43601    t['copyright'] = 747;
43602    t['Emacron'] = 667;
43603    t['ccaron'] = 444;
43604    t['aring'] = 500;
43605    t['Ncommaaccent'] = 722;
43606    t['lacute'] = 278;
43607    t['agrave'] = 500;
43608    t['Tcommaaccent'] = 667;
43609    t['Cacute'] = 722;
43610    t['atilde'] = 500;
43611    t['Edotaccent'] = 667;
43612    t['scaron'] = 389;
43613    t['scedilla'] = 389;
43614    t['iacute'] = 278;
43615    t['lozenge'] = 494;
43616    t['Rcaron'] = 722;
43617    t['Gcommaaccent'] = 778;
43618    t['ucircumflex'] = 556;
43619    t['acircumflex'] = 500;
43620    t['Amacron'] = 722;
43621    t['rcaron'] = 444;
43622    t['ccedilla'] = 444;
43623    t['Zdotaccent'] = 667;
43624    t['Thorn'] = 611;
43625    t['Omacron'] = 778;
43626    t['Racute'] = 722;
43627    t['Sacute'] = 556;
43628    t['dcaron'] = 672;
43629    t['Umacron'] = 722;
43630    t['uring'] = 556;
43631    t['threesuperior'] = 300;
43632    t['Ograve'] = 778;
43633    t['Agrave'] = 722;
43634    t['Abreve'] = 722;
43635    t['multiply'] = 570;
43636    t['uacute'] = 556;
43637    t['Tcaron'] = 667;
43638    t['partialdiff'] = 494;
43639    t['ydieresis'] = 500;
43640    t['Nacute'] = 722;
43641    t['icircumflex'] = 278;
43642    t['Ecircumflex'] = 667;
43643    t['adieresis'] = 500;
43644    t['edieresis'] = 444;
43645    t['cacute'] = 444;
43646    t['nacute'] = 556;
43647    t['umacron'] = 556;
43648    t['Ncaron'] = 722;
43649    t['Iacute'] = 389;
43650    t['plusminus'] = 570;
43651    t['brokenbar'] = 220;
43652    t['registered'] = 747;
43653    t['Gbreve'] = 778;
43654    t['Idotaccent'] = 389;
43655    t['summation'] = 600;
43656    t['Egrave'] = 667;
43657    t['racute'] = 444;
43658    t['omacron'] = 500;
43659    t['Zacute'] = 667;
43660    t['Zcaron'] = 667;
43661    t['greaterequal'] = 549;
43662    t['Eth'] = 722;
43663    t['Ccedilla'] = 722;
43664    t['lcommaaccent'] = 278;
43665    t['tcaron'] = 416;
43666    t['eogonek'] = 444;
43667    t['Uogonek'] = 722;
43668    t['Aacute'] = 722;
43669    t['Adieresis'] = 722;
43670    t['egrave'] = 444;
43671    t['zacute'] = 444;
43672    t['iogonek'] = 278;
43673    t['Oacute'] = 778;
43674    t['oacute'] = 500;
43675    t['amacron'] = 500;
43676    t['sacute'] = 389;
43677    t['idieresis'] = 278;
43678    t['Ocircumflex'] = 778;
43679    t['Ugrave'] = 722;
43680    t['Delta'] = 612;
43681    t['thorn'] = 556;
43682    t['twosuperior'] = 300;
43683    t['Odieresis'] = 778;
43684    t['mu'] = 556;
43685    t['igrave'] = 278;
43686    t['ohungarumlaut'] = 500;
43687    t['Eogonek'] = 667;
43688    t['dcroat'] = 556;
43689    t['threequarters'] = 750;
43690    t['Scedilla'] = 556;
43691    t['lcaron'] = 394;
43692    t['Kcommaaccent'] = 778;
43693    t['Lacute'] = 667;
43694    t['trademark'] = 1000;
43695    t['edotaccent'] = 444;
43696    t['Igrave'] = 389;
43697    t['Imacron'] = 389;
43698    t['Lcaron'] = 667;
43699    t['onehalf'] = 750;
43700    t['lessequal'] = 549;
43701    t['ocircumflex'] = 500;
43702    t['ntilde'] = 556;
43703    t['Uhungarumlaut'] = 722;
43704    t['Eacute'] = 667;
43705    t['emacron'] = 444;
43706    t['gbreve'] = 500;
43707    t['onequarter'] = 750;
43708    t['Scaron'] = 556;
43709    t['Scommaaccent'] = 556;
43710    t['Ohungarumlaut'] = 778;
43711    t['degree'] = 400;
43712    t['ograve'] = 500;
43713    t['Ccaron'] = 722;
43714    t['ugrave'] = 556;
43715    t['radical'] = 549;
43716    t['Dcaron'] = 722;
43717    t['rcommaaccent'] = 444;
43718    t['Ntilde'] = 722;
43719    t['otilde'] = 500;
43720    t['Rcommaaccent'] = 722;
43721    t['Lcommaaccent'] = 667;
43722    t['Atilde'] = 722;
43723    t['Aogonek'] = 722;
43724    t['Aring'] = 722;
43725    t['Otilde'] = 778;
43726    t['zdotaccent'] = 444;
43727    t['Ecaron'] = 667;
43728    t['Iogonek'] = 389;
43729    t['kcommaaccent'] = 556;
43730    t['minus'] = 570;
43731    t['Icircumflex'] = 389;
43732    t['ncaron'] = 556;
43733    t['tcommaaccent'] = 333;
43734    t['logicalnot'] = 570;
43735    t['odieresis'] = 500;
43736    t['udieresis'] = 556;
43737    t['notequal'] = 549;
43738    t['gcommaaccent'] = 500;
43739    t['eth'] = 500;
43740    t['zcaron'] = 444;
43741    t['ncommaaccent'] = 556;
43742    t['onesuperior'] = 300;
43743    t['imacron'] = 278;
43744    t['Euro'] = 500;
43745  });
43746  t['Times-BoldItalic'] = (0, _util.getLookupTableFactory)(function (t) {
43747    t['space'] = 250;
43748    t['exclam'] = 389;
43749    t['quotedbl'] = 555;
43750    t['numbersign'] = 500;
43751    t['dollar'] = 500;
43752    t['percent'] = 833;
43753    t['ampersand'] = 778;
43754    t['quoteright'] = 333;
43755    t['parenleft'] = 333;
43756    t['parenright'] = 333;
43757    t['asterisk'] = 500;
43758    t['plus'] = 570;
43759    t['comma'] = 250;
43760    t['hyphen'] = 333;
43761    t['period'] = 250;
43762    t['slash'] = 278;
43763    t['zero'] = 500;
43764    t['one'] = 500;
43765    t['two'] = 500;
43766    t['three'] = 500;
43767    t['four'] = 500;
43768    t['five'] = 500;
43769    t['six'] = 500;
43770    t['seven'] = 500;
43771    t['eight'] = 500;
43772    t['nine'] = 500;
43773    t['colon'] = 333;
43774    t['semicolon'] = 333;
43775    t['less'] = 570;
43776    t['equal'] = 570;
43777    t['greater'] = 570;
43778    t['question'] = 500;
43779    t['at'] = 832;
43780    t['A'] = 667;
43781    t['B'] = 667;
43782    t['C'] = 667;
43783    t['D'] = 722;
43784    t['E'] = 667;
43785    t['F'] = 667;
43786    t['G'] = 722;
43787    t['H'] = 778;
43788    t['I'] = 389;
43789    t['J'] = 500;
43790    t['K'] = 667;
43791    t['L'] = 611;
43792    t['M'] = 889;
43793    t['N'] = 722;
43794    t['O'] = 722;
43795    t['P'] = 611;
43796    t['Q'] = 722;
43797    t['R'] = 667;
43798    t['S'] = 556;
43799    t['T'] = 611;
43800    t['U'] = 722;
43801    t['V'] = 667;
43802    t['W'] = 889;
43803    t['X'] = 667;
43804    t['Y'] = 611;
43805    t['Z'] = 611;
43806    t['bracketleft'] = 333;
43807    t['backslash'] = 278;
43808    t['bracketright'] = 333;
43809    t['asciicircum'] = 570;
43810    t['underscore'] = 500;
43811    t['quoteleft'] = 333;
43812    t['a'] = 500;
43813    t['b'] = 500;
43814    t['c'] = 444;
43815    t['d'] = 500;
43816    t['e'] = 444;
43817    t['f'] = 333;
43818    t['g'] = 500;
43819    t['h'] = 556;
43820    t['i'] = 278;
43821    t['j'] = 278;
43822    t['k'] = 500;
43823    t['l'] = 278;
43824    t['m'] = 778;
43825    t['n'] = 556;
43826    t['o'] = 500;
43827    t['p'] = 500;
43828    t['q'] = 500;
43829    t['r'] = 389;
43830    t['s'] = 389;
43831    t['t'] = 278;
43832    t['u'] = 556;
43833    t['v'] = 444;
43834    t['w'] = 667;
43835    t['x'] = 500;
43836    t['y'] = 444;
43837    t['z'] = 389;
43838    t['braceleft'] = 348;
43839    t['bar'] = 220;
43840    t['braceright'] = 348;
43841    t['asciitilde'] = 570;
43842    t['exclamdown'] = 389;
43843    t['cent'] = 500;
43844    t['sterling'] = 500;
43845    t['fraction'] = 167;
43846    t['yen'] = 500;
43847    t['florin'] = 500;
43848    t['section'] = 500;
43849    t['currency'] = 500;
43850    t['quotesingle'] = 278;
43851    t['quotedblleft'] = 500;
43852    t['guillemotleft'] = 500;
43853    t['guilsinglleft'] = 333;
43854    t['guilsinglright'] = 333;
43855    t['fi'] = 556;
43856    t['fl'] = 556;
43857    t['endash'] = 500;
43858    t['dagger'] = 500;
43859    t['daggerdbl'] = 500;
43860    t['periodcentered'] = 250;
43861    t['paragraph'] = 500;
43862    t['bullet'] = 350;
43863    t['quotesinglbase'] = 333;
43864    t['quotedblbase'] = 500;
43865    t['quotedblright'] = 500;
43866    t['guillemotright'] = 500;
43867    t['ellipsis'] = 1000;
43868    t['perthousand'] = 1000;
43869    t['questiondown'] = 500;
43870    t['grave'] = 333;
43871    t['acute'] = 333;
43872    t['circumflex'] = 333;
43873    t['tilde'] = 333;
43874    t['macron'] = 333;
43875    t['breve'] = 333;
43876    t['dotaccent'] = 333;
43877    t['dieresis'] = 333;
43878    t['ring'] = 333;
43879    t['cedilla'] = 333;
43880    t['hungarumlaut'] = 333;
43881    t['ogonek'] = 333;
43882    t['caron'] = 333;
43883    t['emdash'] = 1000;
43884    t['AE'] = 944;
43885    t['ordfeminine'] = 266;
43886    t['Lslash'] = 611;
43887    t['Oslash'] = 722;
43888    t['OE'] = 944;
43889    t['ordmasculine'] = 300;
43890    t['ae'] = 722;
43891    t['dotlessi'] = 278;
43892    t['lslash'] = 278;
43893    t['oslash'] = 500;
43894    t['oe'] = 722;
43895    t['germandbls'] = 500;
43896    t['Idieresis'] = 389;
43897    t['eacute'] = 444;
43898    t['abreve'] = 500;
43899    t['uhungarumlaut'] = 556;
43900    t['ecaron'] = 444;
43901    t['Ydieresis'] = 611;
43902    t['divide'] = 570;
43903    t['Yacute'] = 611;
43904    t['Acircumflex'] = 667;
43905    t['aacute'] = 500;
43906    t['Ucircumflex'] = 722;
43907    t['yacute'] = 444;
43908    t['scommaaccent'] = 389;
43909    t['ecircumflex'] = 444;
43910    t['Uring'] = 722;
43911    t['Udieresis'] = 722;
43912    t['aogonek'] = 500;
43913    t['Uacute'] = 722;
43914    t['uogonek'] = 556;
43915    t['Edieresis'] = 667;
43916    t['Dcroat'] = 722;
43917    t['commaaccent'] = 250;
43918    t['copyright'] = 747;
43919    t['Emacron'] = 667;
43920    t['ccaron'] = 444;
43921    t['aring'] = 500;
43922    t['Ncommaaccent'] = 722;
43923    t['lacute'] = 278;
43924    t['agrave'] = 500;
43925    t['Tcommaaccent'] = 611;
43926    t['Cacute'] = 667;
43927    t['atilde'] = 500;
43928    t['Edotaccent'] = 667;
43929    t['scaron'] = 389;
43930    t['scedilla'] = 389;
43931    t['iacute'] = 278;
43932    t['lozenge'] = 494;
43933    t['Rcaron'] = 667;
43934    t['Gcommaaccent'] = 722;
43935    t['ucircumflex'] = 556;
43936    t['acircumflex'] = 500;
43937    t['Amacron'] = 667;
43938    t['rcaron'] = 389;
43939    t['ccedilla'] = 444;
43940    t['Zdotaccent'] = 611;
43941    t['Thorn'] = 611;
43942    t['Omacron'] = 722;
43943    t['Racute'] = 667;
43944    t['Sacute'] = 556;
43945    t['dcaron'] = 608;
43946    t['Umacron'] = 722;
43947    t['uring'] = 556;
43948    t['threesuperior'] = 300;
43949    t['Ograve'] = 722;
43950    t['Agrave'] = 667;
43951    t['Abreve'] = 667;
43952    t['multiply'] = 570;
43953    t['uacute'] = 556;
43954    t['Tcaron'] = 611;
43955    t['partialdiff'] = 494;
43956    t['ydieresis'] = 444;
43957    t['Nacute'] = 722;
43958    t['icircumflex'] = 278;
43959    t['Ecircumflex'] = 667;
43960    t['adieresis'] = 500;
43961    t['edieresis'] = 444;
43962    t['cacute'] = 444;
43963    t['nacute'] = 556;
43964    t['umacron'] = 556;
43965    t['Ncaron'] = 722;
43966    t['Iacute'] = 389;
43967    t['plusminus'] = 570;
43968    t['brokenbar'] = 220;
43969    t['registered'] = 747;
43970    t['Gbreve'] = 722;
43971    t['Idotaccent'] = 389;
43972    t['summation'] = 600;
43973    t['Egrave'] = 667;
43974    t['racute'] = 389;
43975    t['omacron'] = 500;
43976    t['Zacute'] = 611;
43977    t['Zcaron'] = 611;
43978    t['greaterequal'] = 549;
43979    t['Eth'] = 722;
43980    t['Ccedilla'] = 667;
43981    t['lcommaaccent'] = 278;
43982    t['tcaron'] = 366;
43983    t['eogonek'] = 444;
43984    t['Uogonek'] = 722;
43985    t['Aacute'] = 667;
43986    t['Adieresis'] = 667;
43987    t['egrave'] = 444;
43988    t['zacute'] = 389;
43989    t['iogonek'] = 278;
43990    t['Oacute'] = 722;
43991    t['oacute'] = 500;
43992    t['amacron'] = 500;
43993    t['sacute'] = 389;
43994    t['idieresis'] = 278;
43995    t['Ocircumflex'] = 722;
43996    t['Ugrave'] = 722;
43997    t['Delta'] = 612;
43998    t['thorn'] = 500;
43999    t['twosuperior'] = 300;
44000    t['Odieresis'] = 722;
44001    t['mu'] = 576;
44002    t['igrave'] = 278;
44003    t['ohungarumlaut'] = 500;
44004    t['Eogonek'] = 667;
44005    t['dcroat'] = 500;
44006    t['threequarters'] = 750;
44007    t['Scedilla'] = 556;
44008    t['lcaron'] = 382;
44009    t['Kcommaaccent'] = 667;
44010    t['Lacute'] = 611;
44011    t['trademark'] = 1000;
44012    t['edotaccent'] = 444;
44013    t['Igrave'] = 389;
44014    t['Imacron'] = 389;
44015    t['Lcaron'] = 611;
44016    t['onehalf'] = 750;
44017    t['lessequal'] = 549;
44018    t['ocircumflex'] = 500;
44019    t['ntilde'] = 556;
44020    t['Uhungarumlaut'] = 722;
44021    t['Eacute'] = 667;
44022    t['emacron'] = 444;
44023    t['gbreve'] = 500;
44024    t['onequarter'] = 750;
44025    t['Scaron'] = 556;
44026    t['Scommaaccent'] = 556;
44027    t['Ohungarumlaut'] = 722;
44028    t['degree'] = 400;
44029    t['ograve'] = 500;
44030    t['Ccaron'] = 667;
44031    t['ugrave'] = 556;
44032    t['radical'] = 549;
44033    t['Dcaron'] = 722;
44034    t['rcommaaccent'] = 389;
44035    t['Ntilde'] = 722;
44036    t['otilde'] = 500;
44037    t['Rcommaaccent'] = 667;
44038    t['Lcommaaccent'] = 611;
44039    t['Atilde'] = 667;
44040    t['Aogonek'] = 667;
44041    t['Aring'] = 667;
44042    t['Otilde'] = 722;
44043    t['zdotaccent'] = 389;
44044    t['Ecaron'] = 667;
44045    t['Iogonek'] = 389;
44046    t['kcommaaccent'] = 500;
44047    t['minus'] = 606;
44048    t['Icircumflex'] = 389;
44049    t['ncaron'] = 556;
44050    t['tcommaaccent'] = 278;
44051    t['logicalnot'] = 606;
44052    t['odieresis'] = 500;
44053    t['udieresis'] = 556;
44054    t['notequal'] = 549;
44055    t['gcommaaccent'] = 500;
44056    t['eth'] = 500;
44057    t['zcaron'] = 389;
44058    t['ncommaaccent'] = 556;
44059    t['onesuperior'] = 300;
44060    t['imacron'] = 278;
44061    t['Euro'] = 500;
44062  });
44063  t['Times-Italic'] = (0, _util.getLookupTableFactory)(function (t) {
44064    t['space'] = 250;
44065    t['exclam'] = 333;
44066    t['quotedbl'] = 420;
44067    t['numbersign'] = 500;
44068    t['dollar'] = 500;
44069    t['percent'] = 833;
44070    t['ampersand'] = 778;
44071    t['quoteright'] = 333;
44072    t['parenleft'] = 333;
44073    t['parenright'] = 333;
44074    t['asterisk'] = 500;
44075    t['plus'] = 675;
44076    t['comma'] = 250;
44077    t['hyphen'] = 333;
44078    t['period'] = 250;
44079    t['slash'] = 278;
44080    t['zero'] = 500;
44081    t['one'] = 500;
44082    t['two'] = 500;
44083    t['three'] = 500;
44084    t['four'] = 500;
44085    t['five'] = 500;
44086    t['six'] = 500;
44087    t['seven'] = 500;
44088    t['eight'] = 500;
44089    t['nine'] = 500;
44090    t['colon'] = 333;
44091    t['semicolon'] = 333;
44092    t['less'] = 675;
44093    t['equal'] = 675;
44094    t['greater'] = 675;
44095    t['question'] = 500;
44096    t['at'] = 920;
44097    t['A'] = 611;
44098    t['B'] = 611;
44099    t['C'] = 667;
44100    t['D'] = 722;
44101    t['E'] = 611;
44102    t['F'] = 611;
44103    t['G'] = 722;
44104    t['H'] = 722;
44105    t['I'] = 333;
44106    t['J'] = 444;
44107    t['K'] = 667;
44108    t['L'] = 556;
44109    t['M'] = 833;
44110    t['N'] = 667;
44111    t['O'] = 722;
44112    t['P'] = 611;
44113    t['Q'] = 722;
44114    t['R'] = 611;
44115    t['S'] = 500;
44116    t['T'] = 556;
44117    t['U'] = 722;
44118    t['V'] = 611;
44119    t['W'] = 833;
44120    t['X'] = 611;
44121    t['Y'] = 556;
44122    t['Z'] = 556;
44123    t['bracketleft'] = 389;
44124    t['backslash'] = 278;
44125    t['bracketright'] = 389;
44126    t['asciicircum'] = 422;
44127    t['underscore'] = 500;
44128    t['quoteleft'] = 333;
44129    t['a'] = 500;
44130    t['b'] = 500;
44131    t['c'] = 444;
44132    t['d'] = 500;
44133    t['e'] = 444;
44134    t['f'] = 278;
44135    t['g'] = 500;
44136    t['h'] = 500;
44137    t['i'] = 278;
44138    t['j'] = 278;
44139    t['k'] = 444;
44140    t['l'] = 278;
44141    t['m'] = 722;
44142    t['n'] = 500;
44143    t['o'] = 500;
44144    t['p'] = 500;
44145    t['q'] = 500;
44146    t['r'] = 389;
44147    t['s'] = 389;
44148    t['t'] = 278;
44149    t['u'] = 500;
44150    t['v'] = 444;
44151    t['w'] = 667;
44152    t['x'] = 444;
44153    t['y'] = 444;
44154    t['z'] = 389;
44155    t['braceleft'] = 400;
44156    t['bar'] = 275;
44157    t['braceright'] = 400;
44158    t['asciitilde'] = 541;
44159    t['exclamdown'] = 389;
44160    t['cent'] = 500;
44161    t['sterling'] = 500;
44162    t['fraction'] = 167;
44163    t['yen'] = 500;
44164    t['florin'] = 500;
44165    t['section'] = 500;
44166    t['currency'] = 500;
44167    t['quotesingle'] = 214;
44168    t['quotedblleft'] = 556;
44169    t['guillemotleft'] = 500;
44170    t['guilsinglleft'] = 333;
44171    t['guilsinglright'] = 333;
44172    t['fi'] = 500;
44173    t['fl'] = 500;
44174    t['endash'] = 500;
44175    t['dagger'] = 500;
44176    t['daggerdbl'] = 500;
44177    t['periodcentered'] = 250;
44178    t['paragraph'] = 523;
44179    t['bullet'] = 350;
44180    t['quotesinglbase'] = 333;
44181    t['quotedblbase'] = 556;
44182    t['quotedblright'] = 556;
44183    t['guillemotright'] = 500;
44184    t['ellipsis'] = 889;
44185    t['perthousand'] = 1000;
44186    t['questiondown'] = 500;
44187    t['grave'] = 333;
44188    t['acute'] = 333;
44189    t['circumflex'] = 333;
44190    t['tilde'] = 333;
44191    t['macron'] = 333;
44192    t['breve'] = 333;
44193    t['dotaccent'] = 333;
44194    t['dieresis'] = 333;
44195    t['ring'] = 333;
44196    t['cedilla'] = 333;
44197    t['hungarumlaut'] = 333;
44198    t['ogonek'] = 333;
44199    t['caron'] = 333;
44200    t['emdash'] = 889;
44201    t['AE'] = 889;
44202    t['ordfeminine'] = 276;
44203    t['Lslash'] = 556;
44204    t['Oslash'] = 722;
44205    t['OE'] = 944;
44206    t['ordmasculine'] = 310;
44207    t['ae'] = 667;
44208    t['dotlessi'] = 278;
44209    t['lslash'] = 278;
44210    t['oslash'] = 500;
44211    t['oe'] = 667;
44212    t['germandbls'] = 500;
44213    t['Idieresis'] = 333;
44214    t['eacute'] = 444;
44215    t['abreve'] = 500;
44216    t['uhungarumlaut'] = 500;
44217    t['ecaron'] = 444;
44218    t['Ydieresis'] = 556;
44219    t['divide'] = 675;
44220    t['Yacute'] = 556;
44221    t['Acircumflex'] = 611;
44222    t['aacute'] = 500;
44223    t['Ucircumflex'] = 722;
44224    t['yacute'] = 444;
44225    t['scommaaccent'] = 389;
44226    t['ecircumflex'] = 444;
44227    t['Uring'] = 722;
44228    t['Udieresis'] = 722;
44229    t['aogonek'] = 500;
44230    t['Uacute'] = 722;
44231    t['uogonek'] = 500;
44232    t['Edieresis'] = 611;
44233    t['Dcroat'] = 722;
44234    t['commaaccent'] = 250;
44235    t['copyright'] = 760;
44236    t['Emacron'] = 611;
44237    t['ccaron'] = 444;
44238    t['aring'] = 500;
44239    t['Ncommaaccent'] = 667;
44240    t['lacute'] = 278;
44241    t['agrave'] = 500;
44242    t['Tcommaaccent'] = 556;
44243    t['Cacute'] = 667;
44244    t['atilde'] = 500;
44245    t['Edotaccent'] = 611;
44246    t['scaron'] = 389;
44247    t['scedilla'] = 389;
44248    t['iacute'] = 278;
44249    t['lozenge'] = 471;
44250    t['Rcaron'] = 611;
44251    t['Gcommaaccent'] = 722;
44252    t['ucircumflex'] = 500;
44253    t['acircumflex'] = 500;
44254    t['Amacron'] = 611;
44255    t['rcaron'] = 389;
44256    t['ccedilla'] = 444;
44257    t['Zdotaccent'] = 556;
44258    t['Thorn'] = 611;
44259    t['Omacron'] = 722;
44260    t['Racute'] = 611;
44261    t['Sacute'] = 500;
44262    t['dcaron'] = 544;
44263    t['Umacron'] = 722;
44264    t['uring'] = 500;
44265    t['threesuperior'] = 300;
44266    t['Ograve'] = 722;
44267    t['Agrave'] = 611;
44268    t['Abreve'] = 611;
44269    t['multiply'] = 675;
44270    t['uacute'] = 500;
44271    t['Tcaron'] = 556;
44272    t['partialdiff'] = 476;
44273    t['ydieresis'] = 444;
44274    t['Nacute'] = 667;
44275    t['icircumflex'] = 278;
44276    t['Ecircumflex'] = 611;
44277    t['adieresis'] = 500;
44278    t['edieresis'] = 444;
44279    t['cacute'] = 444;
44280    t['nacute'] = 500;
44281    t['umacron'] = 500;
44282    t['Ncaron'] = 667;
44283    t['Iacute'] = 333;
44284    t['plusminus'] = 675;
44285    t['brokenbar'] = 275;
44286    t['registered'] = 760;
44287    t['Gbreve'] = 722;
44288    t['Idotaccent'] = 333;
44289    t['summation'] = 600;
44290    t['Egrave'] = 611;
44291    t['racute'] = 389;
44292    t['omacron'] = 500;
44293    t['Zacute'] = 556;
44294    t['Zcaron'] = 556;
44295    t['greaterequal'] = 549;
44296    t['Eth'] = 722;
44297    t['Ccedilla'] = 667;
44298    t['lcommaaccent'] = 278;
44299    t['tcaron'] = 300;
44300    t['eogonek'] = 444;
44301    t['Uogonek'] = 722;
44302    t['Aacute'] = 611;
44303    t['Adieresis'] = 611;
44304    t['egrave'] = 444;
44305    t['zacute'] = 389;
44306    t['iogonek'] = 278;
44307    t['Oacute'] = 722;
44308    t['oacute'] = 500;
44309    t['amacron'] = 500;
44310    t['sacute'] = 389;
44311    t['idieresis'] = 278;
44312    t['Ocircumflex'] = 722;
44313    t['Ugrave'] = 722;
44314    t['Delta'] = 612;
44315    t['thorn'] = 500;
44316    t['twosuperior'] = 300;
44317    t['Odieresis'] = 722;
44318    t['mu'] = 500;
44319    t['igrave'] = 278;
44320    t['ohungarumlaut'] = 500;
44321    t['Eogonek'] = 611;
44322    t['dcroat'] = 500;
44323    t['threequarters'] = 750;
44324    t['Scedilla'] = 500;
44325    t['lcaron'] = 300;
44326    t['Kcommaaccent'] = 667;
44327    t['Lacute'] = 556;
44328    t['trademark'] = 980;
44329    t['edotaccent'] = 444;
44330    t['Igrave'] = 333;
44331    t['Imacron'] = 333;
44332    t['Lcaron'] = 611;
44333    t['onehalf'] = 750;
44334    t['lessequal'] = 549;
44335    t['ocircumflex'] = 500;
44336    t['ntilde'] = 500;
44337    t['Uhungarumlaut'] = 722;
44338    t['Eacute'] = 611;
44339    t['emacron'] = 444;
44340    t['gbreve'] = 500;
44341    t['onequarter'] = 750;
44342    t['Scaron'] = 500;
44343    t['Scommaaccent'] = 500;
44344    t['Ohungarumlaut'] = 722;
44345    t['degree'] = 400;
44346    t['ograve'] = 500;
44347    t['Ccaron'] = 667;
44348    t['ugrave'] = 500;
44349    t['radical'] = 453;
44350    t['Dcaron'] = 722;
44351    t['rcommaaccent'] = 389;
44352    t['Ntilde'] = 667;
44353    t['otilde'] = 500;
44354    t['Rcommaaccent'] = 611;
44355    t['Lcommaaccent'] = 556;
44356    t['Atilde'] = 611;
44357    t['Aogonek'] = 611;
44358    t['Aring'] = 611;
44359    t['Otilde'] = 722;
44360    t['zdotaccent'] = 389;
44361    t['Ecaron'] = 611;
44362    t['Iogonek'] = 333;
44363    t['kcommaaccent'] = 444;
44364    t['minus'] = 675;
44365    t['Icircumflex'] = 333;
44366    t['ncaron'] = 500;
44367    t['tcommaaccent'] = 278;
44368    t['logicalnot'] = 675;
44369    t['odieresis'] = 500;
44370    t['udieresis'] = 500;
44371    t['notequal'] = 549;
44372    t['gcommaaccent'] = 500;
44373    t['eth'] = 500;
44374    t['zcaron'] = 389;
44375    t['ncommaaccent'] = 500;
44376    t['onesuperior'] = 300;
44377    t['imacron'] = 278;
44378    t['Euro'] = 500;
44379  });
44380  t['ZapfDingbats'] = (0, _util.getLookupTableFactory)(function (t) {
44381    t['space'] = 278;
44382    t['a1'] = 974;
44383    t['a2'] = 961;
44384    t['a202'] = 974;
44385    t['a3'] = 980;
44386    t['a4'] = 719;
44387    t['a5'] = 789;
44388    t['a119'] = 790;
44389    t['a118'] = 791;
44390    t['a117'] = 690;
44391    t['a11'] = 960;
44392    t['a12'] = 939;
44393    t['a13'] = 549;
44394    t['a14'] = 855;
44395    t['a15'] = 911;
44396    t['a16'] = 933;
44397    t['a105'] = 911;
44398    t['a17'] = 945;
44399    t['a18'] = 974;
44400    t['a19'] = 755;
44401    t['a20'] = 846;
44402    t['a21'] = 762;
44403    t['a22'] = 761;
44404    t['a23'] = 571;
44405    t['a24'] = 677;
44406    t['a25'] = 763;
44407    t['a26'] = 760;
44408    t['a27'] = 759;
44409    t['a28'] = 754;
44410    t['a6'] = 494;
44411    t['a7'] = 552;
44412    t['a8'] = 537;
44413    t['a9'] = 577;
44414    t['a10'] = 692;
44415    t['a29'] = 786;
44416    t['a30'] = 788;
44417    t['a31'] = 788;
44418    t['a32'] = 790;
44419    t['a33'] = 793;
44420    t['a34'] = 794;
44421    t['a35'] = 816;
44422    t['a36'] = 823;
44423    t['a37'] = 789;
44424    t['a38'] = 841;
44425    t['a39'] = 823;
44426    t['a40'] = 833;
44427    t['a41'] = 816;
44428    t['a42'] = 831;
44429    t['a43'] = 923;
44430    t['a44'] = 744;
44431    t['a45'] = 723;
44432    t['a46'] = 749;
44433    t['a47'] = 790;
44434    t['a48'] = 792;
44435    t['a49'] = 695;
44436    t['a50'] = 776;
44437    t['a51'] = 768;
44438    t['a52'] = 792;
44439    t['a53'] = 759;
44440    t['a54'] = 707;
44441    t['a55'] = 708;
44442    t['a56'] = 682;
44443    t['a57'] = 701;
44444    t['a58'] = 826;
44445    t['a59'] = 815;
44446    t['a60'] = 789;
44447    t['a61'] = 789;
44448    t['a62'] = 707;
44449    t['a63'] = 687;
44450    t['a64'] = 696;
44451    t['a65'] = 689;
44452    t['a66'] = 786;
44453    t['a67'] = 787;
44454    t['a68'] = 713;
44455    t['a69'] = 791;
44456    t['a70'] = 785;
44457    t['a71'] = 791;
44458    t['a72'] = 873;
44459    t['a73'] = 761;
44460    t['a74'] = 762;
44461    t['a203'] = 762;
44462    t['a75'] = 759;
44463    t['a204'] = 759;
44464    t['a76'] = 892;
44465    t['a77'] = 892;
44466    t['a78'] = 788;
44467    t['a79'] = 784;
44468    t['a81'] = 438;
44469    t['a82'] = 138;
44470    t['a83'] = 277;
44471    t['a84'] = 415;
44472    t['a97'] = 392;
44473    t['a98'] = 392;
44474    t['a99'] = 668;
44475    t['a100'] = 668;
44476    t['a89'] = 390;
44477    t['a90'] = 390;
44478    t['a93'] = 317;
44479    t['a94'] = 317;
44480    t['a91'] = 276;
44481    t['a92'] = 276;
44482    t['a205'] = 509;
44483    t['a85'] = 509;
44484    t['a206'] = 410;
44485    t['a86'] = 410;
44486    t['a87'] = 234;
44487    t['a88'] = 234;
44488    t['a95'] = 334;
44489    t['a96'] = 334;
44490    t['a101'] = 732;
44491    t['a102'] = 544;
44492    t['a103'] = 544;
44493    t['a104'] = 910;
44494    t['a106'] = 667;
44495    t['a107'] = 760;
44496    t['a108'] = 760;
44497    t['a112'] = 776;
44498    t['a111'] = 595;
44499    t['a110'] = 694;
44500    t['a109'] = 626;
44501    t['a120'] = 788;
44502    t['a121'] = 788;
44503    t['a122'] = 788;
44504    t['a123'] = 788;
44505    t['a124'] = 788;
44506    t['a125'] = 788;
44507    t['a126'] = 788;
44508    t['a127'] = 788;
44509    t['a128'] = 788;
44510    t['a129'] = 788;
44511    t['a130'] = 788;
44512    t['a131'] = 788;
44513    t['a132'] = 788;
44514    t['a133'] = 788;
44515    t['a134'] = 788;
44516    t['a135'] = 788;
44517    t['a136'] = 788;
44518    t['a137'] = 788;
44519    t['a138'] = 788;
44520    t['a139'] = 788;
44521    t['a140'] = 788;
44522    t['a141'] = 788;
44523    t['a142'] = 788;
44524    t['a143'] = 788;
44525    t['a144'] = 788;
44526    t['a145'] = 788;
44527    t['a146'] = 788;
44528    t['a147'] = 788;
44529    t['a148'] = 788;
44530    t['a149'] = 788;
44531    t['a150'] = 788;
44532    t['a151'] = 788;
44533    t['a152'] = 788;
44534    t['a153'] = 788;
44535    t['a154'] = 788;
44536    t['a155'] = 788;
44537    t['a156'] = 788;
44538    t['a157'] = 788;
44539    t['a158'] = 788;
44540    t['a159'] = 788;
44541    t['a160'] = 894;
44542    t['a161'] = 838;
44543    t['a163'] = 1016;
44544    t['a164'] = 458;
44545    t['a196'] = 748;
44546    t['a165'] = 924;
44547    t['a192'] = 748;
44548    t['a166'] = 918;
44549    t['a167'] = 927;
44550    t['a168'] = 928;
44551    t['a169'] = 928;
44552    t['a170'] = 834;
44553    t['a171'] = 873;
44554    t['a172'] = 828;
44555    t['a173'] = 924;
44556    t['a162'] = 924;
44557    t['a174'] = 917;
44558    t['a175'] = 930;
44559    t['a176'] = 931;
44560    t['a177'] = 463;
44561    t['a178'] = 883;
44562    t['a179'] = 836;
44563    t['a193'] = 836;
44564    t['a180'] = 867;
44565    t['a199'] = 867;
44566    t['a181'] = 696;
44567    t['a200'] = 696;
44568    t['a182'] = 874;
44569    t['a201'] = 874;
44570    t['a183'] = 760;
44571    t['a184'] = 946;
44572    t['a197'] = 771;
44573    t['a185'] = 865;
44574    t['a194'] = 771;
44575    t['a198'] = 888;
44576    t['a186'] = 967;
44577    t['a195'] = 888;
44578    t['a187'] = 831;
44579    t['a188'] = 873;
44580    t['a189'] = 927;
44581    t['a190'] = 970;
44582    t['a191'] = 918;
44583  });
44584});
44585exports.getMetrics = getMetrics;
44586
44587/***/ }),
44588/* 168 */
44589/***/ (function(module, exports, __w_pdfjs_require__) {
44590
44591"use strict";
44592
44593
44594Object.defineProperty(exports, "__esModule", {
44595  value: true
44596});
44597exports.PostScriptCompiler = exports.PostScriptEvaluator = exports.PDFFunctionFactory = exports.isPDFFunction = undefined;
44598
44599var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
44600
44601var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
44602
44603var _util = __w_pdfjs_require__(2);
44604
44605var _primitives = __w_pdfjs_require__(138);
44606
44607var _ps_parser = __w_pdfjs_require__(169);
44608
44609function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
44610
44611var IsEvalSupportedCached = {
44612  get value() {
44613    return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());
44614  }
44615};
44616
44617var PDFFunctionFactory = function () {
44618  function PDFFunctionFactory(_ref) {
44619    var xref = _ref.xref,
44620        _ref$isEvalSupported = _ref.isEvalSupported,
44621        isEvalSupported = _ref$isEvalSupported === undefined ? true : _ref$isEvalSupported;
44622
44623    _classCallCheck(this, PDFFunctionFactory);
44624
44625    this.xref = xref;
44626    this.isEvalSupported = isEvalSupported !== false;
44627  }
44628
44629  _createClass(PDFFunctionFactory, [{
44630    key: 'create',
44631    value: function create(fn) {
44632      return PDFFunction.parse({
44633        xref: this.xref,
44634        isEvalSupported: this.isEvalSupported,
44635        fn: fn
44636      });
44637    }
44638  }, {
44639    key: 'createFromArray',
44640    value: function createFromArray(fnObj) {
44641      return PDFFunction.parseArray({
44642        xref: this.xref,
44643        isEvalSupported: this.isEvalSupported,
44644        fnObj: fnObj
44645      });
44646    }
44647  }]);
44648
44649  return PDFFunctionFactory;
44650}();
44651
44652function toNumberArray(arr) {
44653  if (!Array.isArray(arr)) {
44654    return null;
44655  }
44656  var length = arr.length;
44657  for (var i = 0; i < length; i++) {
44658    if (typeof arr[i] !== 'number') {
44659      var result = new Array(length);
44660      for (var _i = 0; _i < length; _i++) {
44661        result[_i] = +arr[_i];
44662      }
44663      return result;
44664    }
44665  }
44666  return arr;
44667}
44668var PDFFunction = function PDFFunctionClosure() {
44669  var CONSTRUCT_SAMPLED = 0;
44670  var CONSTRUCT_INTERPOLATED = 2;
44671  var CONSTRUCT_STICHED = 3;
44672  var CONSTRUCT_POSTSCRIPT = 4;
44673  return {
44674    getSampleArray: function getSampleArray(size, outputSize, bps, stream) {
44675      var i, ii;
44676      var length = 1;
44677      for (i = 0, ii = size.length; i < ii; i++) {
44678        length *= size[i];
44679      }
44680      length *= outputSize;
44681      var array = new Array(length);
44682      var codeSize = 0;
44683      var codeBuf = 0;
44684      var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1);
44685      var strBytes = stream.getBytes((length * bps + 7) / 8);
44686      var strIdx = 0;
44687      for (i = 0; i < length; i++) {
44688        while (codeSize < bps) {
44689          codeBuf <<= 8;
44690          codeBuf |= strBytes[strIdx++];
44691          codeSize += 8;
44692        }
44693        codeSize -= bps;
44694        array[i] = (codeBuf >> codeSize) * sampleMul;
44695        codeBuf &= (1 << codeSize) - 1;
44696      }
44697      return array;
44698    },
44699    getIR: function getIR(_ref2) {
44700      var xref = _ref2.xref,
44701          isEvalSupported = _ref2.isEvalSupported,
44702          fn = _ref2.fn;
44703
44704      var dict = fn.dict;
44705      if (!dict) {
44706        dict = fn;
44707      }
44708      var types = [this.constructSampled, null, this.constructInterpolated, this.constructStiched, this.constructPostScript];
44709      var typeNum = dict.get('FunctionType');
44710      var typeFn = types[typeNum];
44711      if (!typeFn) {
44712        throw new _util.FormatError('Unknown type of function');
44713      }
44714      return typeFn.call(this, {
44715        xref: xref,
44716        isEvalSupported: isEvalSupported,
44717        fn: fn,
44718        dict: dict
44719      });
44720    },
44721    fromIR: function fromIR(_ref3) {
44722      var xref = _ref3.xref,
44723          isEvalSupported = _ref3.isEvalSupported,
44724          IR = _ref3.IR;
44725
44726      var type = IR[0];
44727      switch (type) {
44728        case CONSTRUCT_SAMPLED:
44729          return this.constructSampledFromIR({
44730            xref: xref,
44731            isEvalSupported: isEvalSupported,
44732            IR: IR
44733          });
44734        case CONSTRUCT_INTERPOLATED:
44735          return this.constructInterpolatedFromIR({
44736            xref: xref,
44737            isEvalSupported: isEvalSupported,
44738            IR: IR
44739          });
44740        case CONSTRUCT_STICHED:
44741          return this.constructStichedFromIR({
44742            xref: xref,
44743            isEvalSupported: isEvalSupported,
44744            IR: IR
44745          });
44746        default:
44747          return this.constructPostScriptFromIR({
44748            xref: xref,
44749            isEvalSupported: isEvalSupported,
44750            IR: IR
44751          });
44752      }
44753    },
44754    parse: function parse(_ref4) {
44755      var xref = _ref4.xref,
44756          isEvalSupported = _ref4.isEvalSupported,
44757          fn = _ref4.fn;
44758
44759      var IR = this.getIR({
44760        xref: xref,
44761        isEvalSupported: isEvalSupported,
44762        fn: fn
44763      });
44764      return this.fromIR({
44765        xref: xref,
44766        isEvalSupported: isEvalSupported,
44767        IR: IR
44768      });
44769    },
44770    parseArray: function parseArray(_ref5) {
44771      var xref = _ref5.xref,
44772          isEvalSupported = _ref5.isEvalSupported,
44773          fnObj = _ref5.fnObj;
44774
44775      if (!Array.isArray(fnObj)) {
44776        return this.parse({
44777          xref: xref,
44778          isEvalSupported: isEvalSupported,
44779          fn: fnObj
44780        });
44781      }
44782      var fnArray = [];
44783      for (var j = 0, jj = fnObj.length; j < jj; j++) {
44784        fnArray.push(this.parse({
44785          xref: xref,
44786          isEvalSupported: isEvalSupported,
44787          fn: xref.fetchIfRef(fnObj[j])
44788        }));
44789      }
vendor: 4,928 bytes, lines 44790-44930
44790      return function (src, srcOffset, dest, destOffset) {
44791        for (var i = 0, ii = fnArray.length; i < ii; i++) {
44792          fnArray[i](src, srcOffset, dest, destOffset + i);
44793        }
44794      };
44795    },
44796    constructSampled: function constructSampled(_ref6) {
44797      var xref = _ref6.xref,
44798          isEvalSupported = _ref6.isEvalSupported,
44799          fn = _ref6.fn,
44800          dict = _ref6.dict;
44801
44802      function toMultiArray(arr) {
44803        var inputLength = arr.length;
44804        var out = [];
44805        var index = 0;
44806        for (var i = 0; i < inputLength; i += 2) {
44807          out[index] = [arr[i], arr[i + 1]];
44808          ++index;
44809        }
44810        return out;
44811      }
44812      var domain = toNumberArray(dict.getArray('Domain'));
44813      var range = toNumberArray(dict.getArray('Range'));
44814      if (!domain || !range) {
44815        throw new _util.FormatError('No domain or range');
44816      }
44817      var inputSize = domain.length / 2;
44818      var outputSize = range.length / 2;
44819      domain = toMultiArray(domain);
44820      range = toMultiArray(range);
44821      var size = toNumberArray(dict.getArray('Size'));
44822      var bps = dict.get('BitsPerSample');
44823      var order = dict.get('Order') || 1;
44824      if (order !== 1) {
44825        (0, _util.info)('No support for cubic spline interpolation: ' + order);
44826      }
44827      var encode = toNumberArray(dict.getArray('Encode'));
44828      if (!encode) {
44829        encode = [];
44830        for (var i = 0; i < inputSize; ++i) {
44831          encode.push([0, size[i] - 1]);
44832        }
44833      } else {
44834        encode = toMultiArray(encode);
44835      }
44836      var decode = toNumberArray(dict.getArray('Decode'));
44837      if (!decode) {
44838        decode = range;
44839      } else {
44840        decode = toMultiArray(decode);
44841      }
44842      var samples = this.getSampleArray(size, outputSize, bps, fn);
44843      return [CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size, outputSize, Math.pow(2, bps) - 1, range];
44844    },
44845    constructSampledFromIR: function constructSampledFromIR(_ref7) {
44846      var xref = _ref7.xref,
44847          isEvalSupported = _ref7.isEvalSupported,
44848          IR = _ref7.IR;
44849
44850      function interpolate(x, xmin, xmax, ymin, ymax) {
44851        return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));
44852      }
44853      return function constructSampledFromIRResult(src, srcOffset, dest, destOffset) {
44854        var m = IR[1];
44855        var domain = IR[2];
44856        var encode = IR[3];
44857        var decode = IR[4];
44858        var samples = IR[5];
44859        var size = IR[6];
44860        var n = IR[7];
44861        var range = IR[9];
44862        var cubeVertices = 1 << m;
44863        var cubeN = new Float64Array(cubeVertices);
44864        var cubeVertex = new Uint32Array(cubeVertices);
44865        var i, j;
44866        for (j = 0; j < cubeVertices; j++) {
44867          cubeN[j] = 1;
44868        }
44869        var k = n,
44870            pos = 1;
44871        for (i = 0; i < m; ++i) {
44872          var domain_2i = domain[i][0];
44873          var domain_2i_1 = domain[i][1];
44874          var xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1);
44875          var e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]);
44876          var size_i = size[i];
44877          e = Math.min(Math.max(e, 0), size_i - 1);
44878          var e0 = e < size_i - 1 ? Math.floor(e) : e - 1;
44879          var n0 = e0 + 1 - e;
44880          var n1 = e - e0;
44881          var offset0 = e0 * k;
44882          var offset1 = offset0 + k;
44883          for (j = 0; j < cubeVertices; j++) {
44884            if (j & pos) {
44885              cubeN[j] *= n1;
44886              cubeVertex[j] += offset1;
44887            } else {
44888              cubeN[j] *= n0;
44889              cubeVertex[j] += offset0;
44890            }
44891          }
44892          k *= size_i;
44893          pos <<= 1;
44894        }
44895        for (j = 0; j < n; ++j) {
44896          var rj = 0;
44897          for (i = 0; i < cubeVertices; i++) {
44898            rj += samples[cubeVertex[i] + j] * cubeN[i];
44899          }
44900          rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);
44901          dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);
44902        }
44903      };
44904    },
44905    constructInterpolated: function constructInterpolated(_ref8) {
44906      var xref = _ref8.xref,
44907          isEvalSupported = _ref8.isEvalSupported,
44908          fn = _ref8.fn,
44909          dict = _ref8.dict;
44910
44911      var c0 = toNumberArray(dict.getArray('C0')) || [0];
44912      var c1 = toNumberArray(dict.getArray('C1')) || [1];
44913      var n = dict.get('N');
44914      var length = c0.length;
44915      var diff = [];
44916      for (var i = 0; i < length; ++i) {
44917        diff.push(c1[i] - c0[i]);
44918      }
44919      return [CONSTRUCT_INTERPOLATED, c0, diff, n];
44920    },
44921    constructInterpolatedFromIR: function constructInterpolatedFromIR(_ref9) {
44922      var xref = _ref9.xref,
44923          isEvalSupported = _ref9.isEvalSupported,
44924          IR = _ref9.IR;
44925
44926      var c0 = IR[1];
44927      var diff = IR[2];
44928      var n = IR[3];
44929      var length = diff.length;
44930      return function constructInterpolatedFromIRResult(src, srcOffset, dest, destOff
44930set) {
44931        var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n);
44932        for (var j = 0; j < length; ++j) {
44933          dest[destOffset + j] = c0[j] + x * diff[j];
44934        }
44935      };
44936    },
44937    constructStiched: function constructStiched(_ref10) {
44938      var xref = _ref10.xref,
44939          isEvalSupported = _ref10.isEvalSupported,
44940          fn = _ref10.fn,
44941          dict = _ref10.dict;
44942
44943      var domain = toNumberArray(dict.getArray('Domain'));
44944      if (!domain) {
44945        throw new _util.FormatError('No domain');
44946      }
44947      var inputSize = domain.length / 2;
44948      if (inputSize !== 1) {
44949        throw new _util.FormatError('Bad domain for stiched function');
44950      }
44951      var fnRefs = dict.get('Functions');
44952      var fns = [];
44953      for (var i = 0, ii = fnRefs.length; i < ii; ++i) {
44954        fns.push(this.parse({
44955          xref: xref,
44956          isEvalSupported: isEvalSupported,
44957          fn: xref.fetchIfRef(fnRefs[i])
44958        }));
44959      }
44960      var bounds = toNumberArray(dict.getArray('Bounds'));
44961      var encode = toNumberArray(dict.getArray('Encode'));
44962      return [CONSTRUCT_STICHED, domain, bounds, encode, fns];
44963    },
44964    constructStichedFromIR: function constructStichedFromIR(_ref11) {
44965      var xref = _ref11.xref,
44966          isEvalSupported = _ref11.isEvalSupported,
44967          IR = _ref11.IR;
44968
44969      var domain = IR[1];
44970      var bounds = IR[2];
44971      var encode = IR[3];
44972      var fns = IR[4];
44973      var tmpBuf = new Float32Array(1);
44974      return function constructStichedFromIRResult(src, srcOffset, dest, destOffset) {
44975        var clip = function constructStichedFromIRClip(v, min, max) {
44976          if (v > max) {
44977            v = max;
44978          } else if (v < min) {
44979            v = min;
44980          }
44981          return v;
44982        };
44983        var v = clip(src[srcOffset], domain[0], domain[1]);
44984        for (var i = 0, ii = bounds.length; i < ii; ++i) {
44985          if (v < bounds[i]) {
44986            break;
44987          }
44988        }
44989        var dmin = domain[0];
44990        if (i > 0) {
44991          dmin = bounds[i - 1];
44992        }
44993        var dmax = domain[1];
44994        if (i < bounds.length) {
44995          dmax = bounds[i];
44996        }
44997        var rmin = encode[2 * i];
44998        var rmax = encode[2 * i + 1];
44999        tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);
45000        fns[i](tmpBuf, 0, dest, destOffset);
45001      };
45002    },
45003    constructPostScript: function constructPostScript(_ref12) {
45004      var xref = _ref12.xref,
45005          isEvalSupported = _ref12.isEvalSupported,
45006          fn = _ref12.fn,
45007          dict = _ref12.dict;
45008
45009      var domain = toNumberArray(dict.getArray('Domain'));
45010      var range = toNumberArray(dict.getArray('Range'));
45011      if (!domain) {
45012        throw new _util.FormatError('No domain.');
45013      }
45014      if (!range) {
45015        throw new _util.FormatError('No range.');
45016      }
45017      var lexer = new _ps_parser.PostScriptLexer(fn);
45018      var parser = new _ps_parser.PostScriptParser(lexer);
45019      var code = parser.parse();
45020      return [CONSTRUCT_POSTSCRIPT, domain, range, code];
45021    },
45022    constructPostScriptFromIR: function constructPostScriptFromIR(_ref13) {
45023      var xref = _ref13.xref,
45024          isEvalSupported = _ref13.isEvalSupported,
45025          IR = _ref13.IR;
45026
45027      var domain = IR[1];
45028      var range = IR[2];
45029      var code = IR[3];
45030      if (isEvalSupported && IsEvalSupportedCached.value) {
45031        var compiled = new PostScriptCompiler().compile(code, domain, range);
45032        if (compiled) {
45033          return new Function('src', 'srcOffset', 'dest', 'destOffset', compiled);
45034        }
45035      }
45036      (0, _util.info)('Unable to compile PS function');
45037      var numOutputs = range.length >> 1;
45038      var numInputs = domain.length >> 1;
45039      var evaluator = new PostScriptEvaluator(code);
45040      var cache = Object.create(null);
45041      var MAX_CACHE_SIZE = 2048 * 4;
45042      var cache_available = MAX_CACHE_SIZE;
45043      var tmpBuf = new Float32Array(numInputs);
45044      return function constructPostScriptFromIRResult(src, srcOffset, dest, destOffset) {
45045        var i, value;
45046        var key = '';
45047        var input = tmpBuf;
45048        for (i = 0; i < numInputs; i++) {
45049          value = src[srcOffset + i];
45050          input[i] = value;
45051          key += value + '_';
45052        }
45053        var cachedValue = cache[key];
45054        if (cachedValue !== undefined) {
45055          dest.set(cachedValue, destOffset);
45056          return;
45057        }
45058        var output = new Float32Array(numOutputs);
45059        var stack = evaluator.execute(input);
45060        var stackIndex = stack.length - numOutputs;
45061        for (i = 0; i < numOutputs; i++) {
45062          value = stack[stackIndex + i];
45063          var bound = range[i * 2];
45064          if (value < bound) {
45065            value = bound;
45066          } else {
45067            bound = range[i * 2 + 1];
45068            if (value > bound) {
45069              value = bound;
45070            }
45071          }
45072          output[i] = value;
45073        }
45074        if (cache_available > 0) {
45075          cache_available--;
45076          cache[key] = output;
45077        }
45078        dest.set(output, destOffset);
45079      };
45080    }
45081  };
45082}();
45083function isPDFFunction(v) {
45084  var fnDict;
45085  if ((typeof v === 'undefined' ? 'undefined' : _typeof(v)) !== 'object') {
45086    return false;
45087  } else if ((0, _primitives.isDict)(v)) {
45088    fnDict = v;
45089  } else if ((0, _primitives.isStream)(v)) {
45090    fnDict = v.dict;
45091  } else {
45092    return false;
45093  }
45094  return fnDict.has('FunctionType');
45095}
45096var PostScriptStack = function PostScriptStackClosure() {
45097  var MAX_STACK_SIZE = 100;
45098  function PostScriptStack(initialStack) {
45099    this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0);
45100  }
45101  PostScriptStack.prototype = {
45102    push: function PostScriptStack_push(value) {
45103      if (this.stack.length >= MAX_STACK_SIZE) {
45104        throw new Error('PostScript function stack overflow.');
45105      }
45106      this.stack.push(value);
45107    },
45108    pop: function PostScriptStack_pop() {
45109      if (this.stack.length <= 0) {
45110        throw new Error('PostScript function stack underflow.');
45111      }
45112      return this.stack.pop();
45113    },
45114    copy: function PostScriptStack_copy(n) {
45115      if (this.stack.length + n >= MAX_STACK_SIZE) {
45116        throw new Error('PostScript function stack overflow.');
45117      }
45118      var stack = this.stack;
45119      for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) {
45120        stack.push(stack[i]);
45121      }
45122    },
45123    index: function PostScriptStack_index(n) {
45124      this.push(this.stack[this.stack.length - n - 1]);
45125    },
45126    roll: function PostScriptStack_roll(n, p) {
45127      var stack = this.stack;
45128      var l = stack.length - n;
45129      var r = stack.length - 1,
45130          c = l + (p - Math.floor(p / n) * n),
45131          i,
45132          j,
45133          t;
45134      for (i = l, j = r; i < j; i++, j--) {
45135        t = stack[i];
45136        stack[i] = stack[j];
45137        stack[j] = t;
45138      }
45139      for (i = l, j = c - 1; i < j; i++, j--) {
45140        t = stack[i];
45141        stack[i] = stack[j];
45142        stack[j] = t;
45143      }
45144      for (i = c, j = r; i < j; i++, j--) {
45145        t = stack[i];
45146        stack[i] = stack[j];
45147        stack[j] = t;
45148      }
45149    }
45150  };
45151  return PostScriptStack;
45152}();
45153var PostScriptEvaluator = function PostScriptEvaluatorClosure() {
45154  function PostScriptEvaluator(operators) {
45155    this.operators = operators;
45156  }
45157  PostScriptEvaluator.prototype = {
45158    execute: function PostScriptEvaluator_execute(initialStack) {
45159      var stack = new PostScriptStack(initialStack);
45160      var counter = 0;
45161      var operators = this.operators;
45162      var length = operators.length;
45163      var operator, a, b;
45164      while (counter < length) {
45165        operator = operators[counter++];
45166        if (typeof operator === 'number') {
45167          stack.push(operator);
45168          continue;
45169        }
45170        switch (operator) {
45171          case 'jz':
45172            b = stack.pop();
45173            a = stack.pop();
45174            if (!a) {
45175              counter = b;
45176            }
45177            break;
45178          case 'j':
45179            a = stack.pop();
45180            counter = a;
45181            break;
45182          case 'abs':
45183            a = stack.pop();
45184            stack.push(Math.abs(a));
45185            break;
45186          case 'add':
45187            b = stack.pop();
45188            a = stack.pop();
45189            stack.push(a + b);
45190            break;
45191          case 'and':
45192            b = stack.pop();
45193            a = stack.pop();
45194            if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {
45195              stack.push(a && b);
45196            } else {
45197              stack.push(a & b);
45198            }
45199            break;
45200          case 'atan':
45201            a = stack.pop();
45202            stack.push(Math.atan(a));
45203            break;
vendor: 15,754 bytes, lines 45204-45726
45204          case 'bitshift':
45205            b = stack.pop();
45206            a = stack.pop();
45207            if (a > 0) {
45208              stack.push(a << b);
45209            } else {
45210              stack.push(a >> b);
45211            }
45212            break;
45213          case 'ceiling':
45214            a = stack.pop();
45215            stack.push(Math.ceil(a));
45216            break;
45217          case 'copy':
45218            a = stack.pop();
45219            stack.copy(a);
45220            break;
45221          case 'cos':
45222            a = stack.pop();
45223            stack.push(Math.cos(a));
45224            break;
45225          case 'cvi':
45226            a = stack.pop() | 0;
45227            stack.push(a);
45228            break;
45229          case 'cvr':
45230            break;
45231          case 'div':
45232            b = stack.pop();
45233            a = stack.pop();
45234            stack.push(a / b);
45235            break;
45236          case 'dup':
45237            stack.copy(1);
45238            break;
45239          case 'eq':
45240            b = stack.pop();
45241            a = stack.pop();
45242            stack.push(a === b);
45243            break;
45244          case 'exch':
45245            stack.roll(2, 1);
45246            break;
45247          case 'exp':
45248            b = stack.pop();
45249            a = stack.pop();
45250            stack.push(Math.pow(a, b));
45251            break;
45252          case 'false':
45253            stack.push(false);
45254            break;
45255          case 'floor':
45256            a = stack.pop();
45257            stack.push(Math.floor(a));
45258            break;
45259          case 'ge':
45260            b = stack.pop();
45261            a = stack.pop();
45262            stack.push(a >= b);
45263            break;
45264          case 'gt':
45265            b = stack.pop();
45266            a = stack.pop();
45267            stack.push(a > b);
45268            break;
45269          case 'idiv':
45270            b = stack.pop();
45271            a = stack.pop();
45272            stack.push(a / b | 0);
45273            break;
45274          case 'index':
45275            a = stack.pop();
45276            stack.index(a);
45277            break;
45278          case 'le':
45279            b = stack.pop();
45280            a = stack.pop();
45281            stack.push(a <= b);
45282            break;
45283          case 'ln':
45284            a = stack.pop();
45285            stack.push(Math.log(a));
45286            break;
45287          case 'log':
45288            a = stack.pop();
45289            stack.push(Math.log(a) / Math.LN10);
45290            break;
45291          case 'lt':
45292            b = stack.pop();
45293            a = stack.pop();
45294            stack.push(a < b);
45295            break;
45296          case 'mod':
45297            b = stack.pop();
45298            a = stack.pop();
45299            stack.push(a % b);
45300            break;
45301          case 'mul':
45302            b = stack.pop();
45303            a = stack.pop();
45304            stack.push(a * b);
45305            break;
45306          case 'ne':
45307            b = stack.pop();
45308            a = stack.pop();
45309            stack.push(a !== b);
45310            break;
45311          case 'neg':
45312            a = stack.pop();
45313            stack.push(-a);
45314            break;
45315          case 'not':
45316            a = stack.pop();
45317            if ((0, _util.isBool)(a)) {
45318              stack.push(!a);
45319            } else {
45320              stack.push(~a);
45321            }
45322            break;
45323          case 'or':
45324            b = stack.pop();
45325            a = stack.pop();
45326            if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {
45327              stack.push(a || b);
45328            } else {
45329              stack.push(a | b);
45330            }
45331            break;
45332          case 'pop':
45333            stack.pop();
45334            break;
45335          case 'roll':
45336            b = stack.pop();
45337            a = stack.pop();
45338            stack.roll(a, b);
45339            break;
45340          case 'round':
45341            a = stack.pop();
45342            stack.push(Math.round(a));
45343            break;
45344          case 'sin':
45345            a = stack.pop();
45346            stack.push(Math.sin(a));
45347            break;
45348          case 'sqrt':
45349            a = stack.pop();
45350            stack.push(Math.sqrt(a));
45351            break;
45352          case 'sub':
45353            b = stack.pop();
45354            a = stack.pop();
45355            stack.push(a - b);
45356            break;
45357          case 'true':
45358            stack.push(true);
45359            break;
45360          case 'truncate':
45361            a = stack.pop();
45362            a = a < 0 ? Math.ceil(a) : Math.floor(a);
45363            stack.push(a);
45364            break;
45365          case 'xor':
45366            b = stack.pop();
45367            a = stack.pop();
45368            if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {
45369              stack.push(a !== b);
45370            } else {
45371              stack.push(a ^ b);
45372            }
45373            break;
45374          default:
45375            throw new _util.FormatError('Unknown operator ' + operator);
45376        }
45377      }
45378      return stack.stack;
45379    }
45380  };
45381  return PostScriptEvaluator;
45382}();
45383var PostScriptCompiler = function PostScriptCompilerClosure() {
45384  function AstNode(type) {
45385    this.type = type;
45386  }
45387  AstNode.prototype.visit = function (visitor) {
45388    (0, _util.unreachable)('abstract method');
45389  };
45390  function AstArgument(index, min, max) {
45391    AstNode.call(this, 'args');
45392    this.index = index;
45393    this.min = min;
45394    this.max = max;
45395  }
45396  AstArgument.prototype = Object.create(AstNode.prototype);
45397  AstArgument.prototype.visit = function (visitor) {
45398    visitor.visitArgument(this);
45399  };
45400  function AstLiteral(number) {
45401    AstNode.call(this, 'literal');
45402    this.number = number;
45403    this.min = number;
45404    this.max = number;
45405  }
45406  AstLiteral.prototype = Object.create(AstNode.prototype);
45407  AstLiteral.prototype.visit = function (visitor) {
45408    visitor.visitLiteral(this);
45409  };
45410  function AstBinaryOperation(op, arg1, arg2, min, max) {
45411    AstNode.call(this, 'binary');
45412    this.op = op;
45413    this.arg1 = arg1;
45414    this.arg2 = arg2;
45415    this.min = min;
45416    this.max = max;
45417  }
45418  AstBinaryOperation.prototype = Object.create(AstNode.prototype);
45419  AstBinaryOperation.prototype.visit = function (visitor) {
45420    visitor.visitBinaryOperation(this);
45421  };
45422  function AstMin(arg, max) {
45423    AstNode.call(this, 'max');
45424    this.arg = arg;
45425    this.min = arg.min;
45426    this.max = max;
45427  }
45428  AstMin.prototype = Object.create(AstNode.prototype);
45429  AstMin.prototype.visit = function (visitor) {
45430    visitor.visitMin(this);
45431  };
45432  function AstVariable(index, min, max) {
45433    AstNode.call(this, 'var');
45434    this.index = index;
45435    this.min = min;
45436    this.max = max;
45437  }
45438  AstVariable.prototype = Object.create(AstNode.prototype);
45439  AstVariable.prototype.visit = function (visitor) {
45440    visitor.visitVariable(this);
45441  };
45442  function AstVariableDefinition(variable, arg) {
45443    AstNode.call(this, 'definition');
45444    this.variable = variable;
45445    this.arg = arg;
45446  }
45447  AstVariableDefinition.prototype = Object.create(AstNode.prototype);
45448  AstVariableDefinition.prototype.visit = function (visitor) {
45449    visitor.visitVariableDefinition(this);
45450  };
45451  function ExpressionBuilderVisitor() {
45452    this.parts = [];
45453  }
45454  ExpressionBuilderVisitor.prototype = {
45455    visitArgument: function visitArgument(arg) {
45456      this.parts.push('Math.max(', arg.min, ', Math.min(', arg.max, ', src[srcOffset + ', arg.index, ']))');
45457    },
45458    visitVariable: function visitVariable(variable) {
45459      this.parts.push('v', variable.index);
45460    },
45461    visitLiteral: function visitLiteral(literal) {
45462      this.parts.push(literal.number);
45463    },
45464    visitBinaryOperation: function visitBinaryOperation(operation) {
45465      this.parts.push('(');
45466      operation.arg1.visit(this);
45467      this.parts.push(' ', operation.op, ' ');
45468      operation.arg2.visit(this);
45469      this.parts.push(')');
45470    },
45471    visitVariableDefinition: function visitVariableDefinition(definition) {
45472      this.parts.push('var ');
45473      definition.variable.visit(this);
45474      this.parts.push(' = ');
45475      definition.arg.visit(this);
45476      this.parts.push(';');
45477    },
45478    visitMin: function visitMin(max) {
45479      this.parts.push('Math.min(');
45480      max.arg.visit(this);
45481      this.parts.push(', ', max.max, ')');
45482    },
45483    toString: function toString() {
45484      return this.parts.join('');
45485    }
45486  };
45487  function buildAddOperation(num1, num2) {
45488    if (num2.type === 'literal' && num2.number === 0) {
45489      return num1;
45490    }
45491    if (num1.type === 'literal' && num1.number === 0) {
45492      return num2;
45493    }
45494    if (num2.type === 'literal' && num1.type === 'literal') {
45495      return new AstLiteral(num1.number + num2.number);
45496    }
45497    return new AstBinaryOperation('+', num1, num2, num1.min + num2.min, num1.max + num2.max);
45498  }
45499  function buildMulOperation(num1, num2) {
45500    if (num2.type === 'literal') {
45501      if (num2.number === 0) {
45502        return new AstLiteral(0);
45503      } else if (num2.number === 1) {
45504        return num1;
45505      } else if (num1.type === 'literal') {
45506        return new AstLiteral(num1.number * num2.number);
45507      }
45508    }
45509    if (num1.type === 'literal') {
45510      if (num1.number === 0) {
45511        return new AstLiteral(0);
45512      } else if (num1.number === 1) {
45513        return num2;
45514      }
45515    }
45516    var min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);
45517    var max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);
45518    return new AstBinaryOperation('*', num1, num2, min, max);
45519  }
45520  function buildSubOperation(num1, num2) {
45521    if (num2.type === 'literal') {
45522      if (num2.number === 0) {
45523        return num1;
45524      } else if (num1.type === 'literal') {
45525        return new AstLiteral(num1.number - num2.number);
45526      }
45527    }
45528    if (num2.type === 'binary' && num2.op === '-' && num1.type === 'literal' && num1.number === 1 && num2.arg1.type === 'literal' && num2.arg1.number === 1) {
45529      return num2.arg2;
45530    }
45531    return new AstBinaryOperation('-', num1, num2, num1.min - num2.max, num1.max - num2.min);
45532  }
45533  function buildMinOperation(num1, max) {
45534    if (num1.min >= max) {
45535      return new AstLiteral(max);
45536    } else if (num1.max <= max) {
45537      return num1;
45538    }
45539    return new AstMin(num1, max);
45540  }
45541  function PostScriptCompiler() {}
45542  PostScriptCompiler.prototype = {
45543    compile: function PostScriptCompiler_compile(code, domain, range) {
45544      var stack = [];
45545      var i, ii;
45546      var instructions = [];
45547      var inputSize = domain.length >> 1,
45548          outputSize = range.length >> 1;
45549      var lastRegister = 0;
45550      var n, j;
45551      var num1, num2, ast1, ast2, tmpVar, item;
45552      for (i = 0; i < inputSize; i++) {
45553        stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));
45554      }
45555      for (i = 0, ii = code.length; i < ii; i++) {
45556        item = code[i];
45557        if (typeof item === 'number') {
45558          stack.push(new AstLiteral(item));
45559          continue;
45560        }
45561        switch (item) {
45562          case 'add':
45563            if (stack.length < 2) {
45564              return null;
45565            }
45566            num2 = stack.pop();
45567            num1 = stack.pop();
45568            stack.push(buildAddOperation(num1, num2));
45569            break;
45570          case 'cvr':
45571            if (stack.length < 1) {
45572              return null;
45573            }
45574            break;
45575          case 'mul':
45576            if (stack.length < 2) {
45577              return null;
45578            }
45579            num2 = stack.pop();
45580            num1 = stack.pop();
45581            stack.push(buildMulOperation(num1, num2));
45582            break;
45583          case 'sub':
45584            if (stack.length < 2) {
45585              return null;
45586            }
45587            num2 = stack.pop();
45588            num1 = stack.pop();
45589            stack.push(buildSubOperation(num1, num2));
45590            break;
45591          case 'exch':
45592            if (stack.length < 2) {
45593              return null;
45594            }
45595            ast1 = stack.pop();
45596            ast2 = stack.pop();
45597            stack.push(ast1, ast2);
45598            break;
45599          case 'pop':
45600            if (stack.length < 1) {
45601              return null;
45602            }
45603            stack.pop();
45604            break;
45605          case 'index':
45606            if (stack.length < 1) {
45607              return null;
45608            }
45609            num1 = stack.pop();
45610            if (num1.type !== 'literal') {
45611              return null;
45612            }
45613            n = num1.number;
45614            if (n < 0 || !Number.isInteger(n) || stack.length < n) {
45615              return null;
45616            }
45617            ast1 = stack[stack.length - n - 1];
45618            if (ast1.type === 'literal' || ast1.type === 'var') {
45619              stack.push(ast1);
45620              break;
45621            }
45622            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);
45623            stack[stack.length - n - 1] = tmpVar;
45624            stack.push(tmpVar);
45625            instructions.push(new AstVariableDefinition(tmpVar, ast1));
45626            break;
45627          case 'dup':
45628            if (stack.length < 1) {
45629              return null;
45630            }
45631            if (typeof code[i + 1] === 'number' && code[i + 2] === 'gt' && code[i + 3] === i + 7 && code[i + 4] === 'jz' && code[i + 5] === 'pop' && code[i + 6] === code[i + 1]) {
45632              num1 = stack.pop();
45633              stack.push(buildMinOperation(num1, code[i + 1]));
45634              i += 6;
45635              break;
45636            }
45637            ast1 = stack[stack.length - 1];
45638            if (ast1.type === 'literal' || ast1.type === 'var') {
45639              stack.push(ast1);
45640              break;
45641            }
45642            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);
45643            stack[stack.length - 1] = tmpVar;
45644            stack.push(tmpVar);
45645            instructions.push(new AstVariableDefinition(tmpVar, ast1));
45646            break;
45647          case 'roll':
45648            if (stack.length < 2) {
45649              return null;
45650            }
45651            num2 = stack.pop();
45652            num1 = stack.pop();
45653            if (num2.type !== 'literal' || num1.type !== 'literal') {
45654              return null;
45655            }
45656            j = num2.number;
45657            n = num1.number;
45658            if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) {
45659              return null;
45660            }
45661            j = (j % n + n) % n;
45662            if (j === 0) {
45663              break;
45664            }
45665            Array.prototype.push.apply(stack, stack.splice(stack.length - n, n - j));
45666            break;
45667          default:
45668            return null;
45669        }
45670      }
45671      if (stack.length !== outputSize) {
45672        return null;
45673      }
45674      var result = [];
45675      instructions.forEach(function (instruction) {
45676        var statementBuilder = new ExpressionBuilderVisitor();
45677        instruction.visit(statementBuilder);
45678        result.push(statementBuilder.toString());
45679      });
45680      stack.forEach(function (expr, i) {
45681        var statementBuilder = new ExpressionBuilderVisitor();
45682        expr.visit(statementBuilder);
45683        var min = range[i * 2],
45684            max = range[i * 2 + 1];
45685        var out = [statementBuilder.toString()];
45686        if (min > expr.min) {
45687          out.unshift('Math.max(', min, ', ');
45688          out.push(')');
45689        }
45690        if (max < expr.max) {
45691          out.unshift('Math.min(', max, ', ');
45692          out.push(')');
45693        }
45694        out.unshift('dest[destOffset + ', i, '] = ');
45695        out.push(';');
45696        result.push(out.join(''));
45697      });
45698      return result.join('\n');
45699    }
45700  };
45701  return PostScriptCompiler;
45702}();
45703exports.isPDFFunction = isPDFFunction;
45704exports.PDFFunctionFactory = PDFFunctionFactory;
45705exports.PostScriptEvaluator = PostScriptEvaluator;
45706exports.PostScriptCompiler = PostScriptCompiler;
45707
45708/***/ }),
45709/* 169 */
45710/***/ (function(module, exports, __w_pdfjs_require__) {
45711
45712"use strict";
45713
45714
45715Object.defineProperty(exports, "__esModule", {
45716  value: true
45717});
45718exports.PostScriptParser = exports.PostScriptLexer = undefined;
45719
45720var _util = __w_pdfjs_require__(2);
45721
45722var _primitives = __w_pdfjs_require__(138);
45723
45724var PostScriptParser = function PostScriptParserClosure() {
45725  function PostScriptParser(lexer) {
45726    this.lexer = lexer;
45727    this.operators = [];
45728    this.token = null;
45729    this.prev = null;
45730  }
45731  PostScriptParser.prototype = {
45732    nextToken: function PostScriptParser_nextToken() {
45733      this.prev = this.token;
45734      this.token = this.lexer.getToken();
45735    },
45736    accept: function PostScriptParser_accept(type) {
45737      if (this.token.type === type) {
45738        this.nextToken();
45739        return true;
45740      }
45741      return false;
45742    },
45743    expect: function PostScriptParser_expect(type) {
45744      if (this.accept(type)) {
45745        return true;
45746      }
45747      throw new _util.FormatError('Unexpected symbol: found ' + this.token.type + ' expected ' + type + '.');
45748    },
45749    parse: function PostScriptParser_parse() {
45750      this.nextToken();
45751      this.expect(PostScriptTokenTypes.LBRACE);
45752      this.parseBlock();
45753      this.expect(PostScriptTokenTypes.RBRACE);
45754      return this.operators;
45755    },
45756    parseBlock: function PostScriptParser_parseBlock() {
45757      while (true) {
45758        if (this.accept(PostScriptTokenTypes.NUMBER)) {
45759          this.operators.push(this.prev.value);
45760        } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {
45761          this.operators.push(this.prev.value);
45762        } else if (this.accept(PostScriptTokenTypes.LBRACE)) {
45763          this.parseCondition();
45764        } else {
45765          return;
45766        }
45767      }
45768    },
45769    parseCondition: function PostScriptParser_parseCondition() {
45770      var conditionLocation = this.operators.length;
45771      this.operators.push(null, null);
45772      this.parseBlock();
45773      this.expect(PostScriptTokenTypes.RBRACE);
45774      if (this.accept(PostScriptTokenTypes.IF)) {
45775        this.operators[conditionLocation] = this.operators.length;
45776        this.operators[conditionLocation + 1] = 'jz';
45777      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {
45778        var jumpLocation = this.operators.length;
45779        this.operators.push(null, null);
45780        var endOfTrue = this.operators.length;
45781        this.parseBlock();
45782        this.expect(PostScriptTokenTypes.RBRACE);
45783        this.expect(PostScriptTokenTypes.IFELSE);
45784        this.operators[jumpLocation] = this.operators.length;
45785        this.operators[jumpLocation + 1] = 'j';
45786        this.operators[conditionLocation] = endOfTrue;
45787        this.operators[conditionLocation + 1] = 'jz';
45788      } else {
45789        throw new _util.FormatError('PS Function: error parsing conditional.');
45790      }
45791    }
45792  };
45793  return PostScriptParser;
45794}();
45795var PostScriptTokenTypes = {
45796  LBRACE: 0,
45797  RBRACE: 1,
45798  NUMBER: 2,
45799  OPERATOR: 3,
45800  IF: 4,
45801  IFELSE: 5
45802};
45803var PostScriptToken = function PostScriptTokenClosure() {
45804  function PostScriptToken(type, value) {
45805    this.type = type;
45806    this.value = value;
45807  }
45808  var opCache = Object.create(null);
45809  PostScriptToken.getOperator = function PostScriptToken_getOperator(op) {
45810    var opValue = opCache[op];
45811    if (opValue) {
45812      return opValue;
45813    }
45814    return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);
45815  };
45816  PostScriptToken.LBRACE = new PostScriptToken(PostScriptTokenTypes.LBRACE, '{');
45817  PostScriptToken.RBRACE = new PostScriptToken(PostScriptTokenTypes.RBRACE, '}');
45818  PostScriptToken.IF = new PostScriptToken(PostScriptTokenTypes.IF, 'IF');
45819  PostScriptToken.IFELSE = new PostScriptToken(PostScriptTokenTypes.IFELSE, 'IFELSE');
45820  return PostScriptToken;
45821}();
45822var PostScriptLexer = function PostScriptLexerClosure() {
45823  function PostScriptLexer(stream) {
45824    this.stream = stream;
45825    this.nextChar();
45826    this.strBuf = [];
45827  }
45828  PostScriptLexer.prototype = {
45829    nextChar: function PostScriptLexer_nextChar() {
45830      return this.currentChar = this.stream.getByte();
45831    },
45832    getToken: function PostScriptLexer_getToken() {
45833      var comment = false;
45834      var ch = this.currentChar;
45835      while (true) {
45836        if (ch < 0) {
45837          return _primitives.EOF;
45838        }
45839        if (comment) {
45840          if (ch === 0x0A || ch === 0x0D) {
45841            comment = false;
45842          }
45843        } else if (ch === 0x25) {
45844          comment = true;
45845        } else if (!(0, _util.isSpace)(ch)) {
45846          break;
45847        }
45848        ch = this.nextChar();
45849      }
45850      switch (ch | 0) {
45851        case 0x30:
45852        case 0x31:
45853        case 0x32:
45854        case 0x33:
45855        case 0x34:
45856        case 0x35:
45857        case 0x36:
45858        case 0x37:
45859        case 0x38:
45860        case 0x39:
45861        case 0x2B:
45862        case 0x2D:
45863        case 0x2E:
45864          return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber());
45865        case 0x7B:
45866          this.nextChar();
45867          return PostScriptToken.LBRACE;
45868        case 0x7D:
45869          this.nextChar();
45870          return PostScriptToken.RBRACE;
45871      }
45872      var strBuf = this.strBuf;
45873      strBuf.length = 0;
45874      strBuf[0] = String.fromCharCode(ch);
45875      while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A)) {
45876        strBuf.push(String.fromCharCode(ch));
45877      }
45878      var str = strBuf.join('');
45879      switch (str.toLowerCase()) {
45880        case 'if':
45881          return PostScriptToken.IF;
45882        case 'ifelse':
45883          return PostScriptToken.IFELSE;
45884        default:
45885          return PostScriptToken.getOperator(str);
45886      }
45887    },
45888    getNumber: function PostScriptLexer_getNumber() {
45889      var ch = this.currentChar;
45890      var strBuf = this.strBuf;
45891      strBuf.length = 0;
45892      strBuf[0] = String.fromCharCode(ch);
45893      while ((ch = this.nextChar()) >= 0) {
45894        if (ch >= 0x30 && ch <= 0x39 || ch === 0x2D || ch === 0x2E) {
45895          strBuf.push(String.fromCharCode(ch));
45896        } else {
45897          break;
45898        }
45899      }
45900      var value = parseFloat(strBuf.join(''));
45901      if (isNaN(value)) {
45902        throw new _util.FormatError('Invalid floating point number: ' + value);
45903      }
45904      return value;
45905    }
45906  };
45907  return PostScriptLexer;
45908}();
45909exports.PostScriptLexer = PostScriptLexer;
45910exports.PostScriptParser = PostScriptParser;
45911
45912/***/ }),
45913/* 170 */
45914/***/ (function(module, exports, __w_pdfjs_require__) {
45915
45916"use strict";
45917
45918
45919Object.defineProperty(exports, "__esModule", {
45920  value: true
45921});
45922exports.MurmurHash3_64 = undefined;
45923
45924var _util = __w_pdfjs_require__(2);
45925
45926var MurmurHash3_64 = function MurmurHash3_64Closure(seed) {
45927  var MASK_HIGH = 0xffff0000;
45928  var MASK_LOW = 0xffff;
45929  function MurmurHash3_64(seed) {
45930    var SEED = 0xc3d2e1f0;
45931    this.h1 = seed ? seed & 0xffffffff : SEED;
45932    this.h2 = seed ? seed & 0xffffffff : SEED;
45933  }
45934  MurmurHash3_64.prototype = {
45935    update: function MurmurHash3_64_update(input) {
45936      var data = void 0,
45937          length = void 0;
45938      if ((0, _util.isString)(input)) {
45939        data = new Uint8Array(input.length * 2);
45940        length = 0;
45941        for (var i = 0, ii = input.length; i < ii; i++) {
45942          var code = input.charCodeAt(i);
45943          if (code <= 0xff) {
45944            data[length++] = code;
45945          } else {
45946            data[length++] = code >>> 8;
45947            data[length++] = code & 0xff;
45948          }
45949        }
45950      } else if ((0, _util.isArrayBuffer)(input)) {
45951        data = input;
45952        length = data.byteLength;
45953      } else {
45954        throw new Error('Wrong data format in MurmurHash3_64_update. ' + 'Input must be a string or array.');
45955      }
45956      var blockCounts = length >> 2;
45957      var tailLength = length - blockCounts * 4;
45958      var dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);
45959      var k1 = 0;
45960      var k2 = 0;
45961      var h1 = this.h1;
45962      var h2 = this.h2;
45963      var C1 = 0xcc9e2d51;
45964      var C2 = 0x1b873593;
45965      var C1_LOW = C1 & MASK_LOW;
45966      var C2_LOW = C2 & MASK_LOW;
45967      for (var _i = 0; _i < blockCounts; _i++) {
45968        if (_i & 1) {
45969          k1 = dataUint32[_i];
45970          k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
45971          k1 = k1 << 15 | k1 >>> 17;
45972          k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
45973          h1 ^= k1;
45974          h1 = h1 << 13 | h1 >>> 19;
45975          h1 = h1 * 5 + 0xe6546b64;
45976        } else {
45977          k2 = dataUint32[_i];
45978          k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;
45979          k2 = k2 << 15 | k2 >>> 17;
45980          k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;
45981          h2 ^= k2;
45982          h2 = h2 << 13 | h2 >>> 19;
45983          h2 = h2 * 5 + 0xe6546b64;
45984        }
45985      }
45986      k1 = 0;
45987      switch (tailLength) {
45988        case 3:
45989          k1 ^= data[blockCounts * 4 + 2] << 16;
45990        case 2:
45991          k1 ^= data[blockCounts * 4 + 1] << 8;
45992        case 1:
45993          k1 ^= data[blockCounts * 4];
45994          k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
45995          k1 = k1 << 15 | k1 >>> 17;
45996          k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
45997          if (blockCounts & 1) {
45998            h1 ^= k1;
45999          } else {
46000            h2 ^= k1;
46001          }
46002      }
46003      this.h1 = h1;
46004      this.h2 = h2;
46005      return this;
46006    },
46007    hexdigest: function MurmurHash3_64_hexdigest() {
46008      var h1 = this.h1;
46009      var h2 = this.h2;
46010      h1 ^= h2 >>> 1;
46011      h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;
46012      h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;
46013      h1 ^= h2 >>> 1;
46014      h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;
46015      h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;
46016      h1 ^= h2 >>> 1;
46017      for (var i = 0, arr = [h1, h2], str = ''; i < arr.length; i++) {
46018        var hex = (arr[i] >>> 0).toString(16);
46019        while (hex.length < 8) {
46020          hex = '0' + hex;
46021        }
46022        str += hex;
46023      }
46024      return str;
46025    }
46026  };
46027  return MurmurHash3_64;
46028}();
46029exports.MurmurHash3_64 = MurmurHash3_64;
46030
46031/***/ }),
46032/* 171 */
46033/***/ (function(module, exports, __w_pdfjs_require__) {
46034
46035"use strict";
46036
46037
46038Object.defineProperty(exports, "__esModule", {
46039  value: true
46040});
46041exports.PDFImage = undefined;
46042
46043var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
46044
46045var _util = __w_pdfjs_require__(2);
46046
46047var _primitives = __w_pdfjs_require__(138);
46048
46049var _colorspace = __w_pdfjs_require__(151);
46050
46051var _stream = __w_pdfjs_require__(140);
46052
46053var _jpeg_stream = __w_pdfjs_require__(146);
46054
46055var _jpx = __w_pdfjs_require__(149);
46056
46057var PDFImage = function PDFImageClosure() {
46058  function handleImageData(image, nativeDecoder) {
46059    if (nativeDecoder && nativeDecoder.canDecode(image)) {
46060      return nativeDecoder.decode(image).catch(function (reason) {
46061        (0, _util.warn)('Native image decoding failed -- trying to recover: ' + (reason && reason.message));
46062        return image;
46063      });
46064    }
46065    return Promise.resolve(image);
46066  }
46067  function decodeAndClamp(value, addend, coefficient, max) {
46068    value = addend + value * coefficient;
46069    return value < 0 ? 0 : value > max ? max : value;
46070  }
46071  function resizeImageMask(src, bpc, w1, h1, w2, h2) {
46072    var length = w2 * h2;
46073    var dest = bpc <= 8 ? new Uint8Array(length) : bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length);
46074    var xRatio = w1 / w2;
46075    var yRatio = h1 / h2;
46076    var i,
46077        j,
46078        py,
46079        newIndex = 0,
46080        oldIndex;
46081    var xScaled = new Uint16Array(w2);
46082    var w1Scanline = w1;
46083    for (i = 0; i < w2; i++) {
46084      xScaled[i] = Math.floor(i * xRatio);
46085    }
46086    for (i = 0; i < h2; i++) {
46087      py = Math.floor(i * yRatio) * w1Scanline;
46088      for (j = 0; j < w2; j++) {
46089        oldIndex = py + xScaled[j];
46090        dest[newIndex++] = src[oldIndex];
46091      }
46092    }
46093    return dest;
46094  }
46095  function PDFImage(_ref) {
46096    var xref = _ref.xref,
46097        res = _ref.res,
46098        image = _ref.image,
46099        _ref$isInline = _ref.isInline,
46100        isInline = _ref$isInline === undefined ? false : _ref$isInline,
46101        _ref$smask = _ref.smask,
46102        smask = _ref$smask === undefined ? null : _ref$smask,
46103        _ref$mask = _ref.mask,
46104        mask = _ref$mask === undefined ? null : _ref$mask,
46105        _ref$isMask = _ref.isMask,
46106        isMask = _ref$isMask === undefined ? false : _ref$isMask,
46107        pdfFunctionFactory = _ref.pdfFunctionFactory;
46108
46109    this.image = image;
46110    var dict = image.dict;
46111    var filter = dict.get('Filter');
46112    if ((0, _primitives.isName)(filter)) {
46113      switch (filter.name) {
46114        case 'JPXDecode':
46115          var jpxImage = new _jpx.JpxImage();
46116          jpxImage.parseImageProperties(image.stream);
46117          image.stream.reset();
46118          image.width = jpxImage.width;
46119          image.height = jpxImage.height;
46120          image.bitsPerComponent = jpxImage.bitsPerComponent;
46121          image.numComps = jpxImage.componentsCount;
46122          break;
46123        case 'JBIG2Decode':
46124          image.bitsPerComponent = 1;
46125          image.numComps = 1;
46126          break;
46127      }
46128    }
46129    var width = dict.get('Width', 'W');
46130    var height = dict.get('Height', 'H');
46131    if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) {
46132      (0, _util.warn)('PDFImage - using the Width/Height of the image data, ' + 'rather than the image dictionary.');
46133      width = image.width;
46134      height = image.height;
46135    }
46136    if (width < 1 || height < 1) {
46137      throw new _util.FormatError('Invalid image width: ' + width + ' or ' + ('height: ' + height));
46138    }
46139    this.width = width;
46140    this.height = height;
46141    this.interpolate = dict.get('Interpolate', 'I') || false;
46142    this.imageMask = dict.get('ImageMask', 'IM') || false;
46143    this.matte = dict.get('Matte') || false;
46144    var bitsPerComponent = image.bitsPerComponent;
46145    if (!bitsPerComponent) {
46146      bitsPerComponent = dict.get('BitsPerComponent', 'BPC');
46147      if (!bitsPerComponent) {
46148        if (this.imageMask) {
46149          bitsPerComponent = 1;
46150        } else {
46151          throw new _util.FormatError('Bits per component missing in image: ' + this.imageMask);
46152        }
46153      }
46154    }
46155    this.bpc = bitsPerComponent;
46156    if (!this.imageMask) {
46157      var colorSpace = dict.get('ColorSpace', 'CS');
46158      if (!colorSpace) {
46159        (0, _util.info)('JPX images (which do not require color spaces)');
46160        switch (image.numComps) {
46161          case 1:
46162            colorSpace = _primitives.Name.get('DeviceGray');
46163            break;
46164          case 3:
46165            colorSpace = _primitives.Name.get('DeviceRGB');
46166            break;
46167          case 4:
46168            colorSpace = _primitives.Name.get('DeviceCMYK');
46169            break;
46170          default:
46171            throw new Error('JPX images with ' + image.numComps + ' ' + 'color components not supported.');
46172        }
46173      }
46174      var resources = isInline ? res : null;
46175      this.colorSpace = _colorspace.ColorSpace.parse(colorSpace, xref, resources, pdfFunctionFactory);
46176      this.numComps = this.colorSpace.numComps;
46177    }
46178    this.decode = dict.getArray('Decode', 'D');
46179    this.needsDecode = false;
46180    if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode) || isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) {
46181      this.needsDecode = true;
46182      var max = (1 << bitsPerComponent) - 1;
46183      this.decodeCoefficients = [];
46184      this.decodeAddends = [];
46185      for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {
46186        var dmin = this.decode[i];
46187        var dmax = this.decode[i + 1];
46188        this.decodeCoefficients[j] = dmax - dmin;
46189        this.decodeAddends[j] = max * dmin;
46190      }
46191    }
46192    if (smask) {
46193      this.smask = new PDFImage({
46194        xref: xref,
46195        res: res,
46196        image: smask,
46197        isInline: isInline,
46198        pdfFunctionFactory: pdfFunctionFactory
46199      });
46200    } else if (mask) {
46201      if ((0, _primitives.isStream)(mask)) {
46202        var maskDict = mask.dict,
46203            imageMask = maskDict.get('ImageMask', 'IM');
46204        if (!imageMask) {
46205          (0, _util.warn)('Ignoring /Mask in image without /ImageMask.');
46206        } else {
46207          this.mask = new PDFImage({
46208            xref: xref,
46209            res: res,
46210            image: mask,
46211            isInline: isInline,
46212            isMask: true,
46213            pdfFunctionFactory: pdfFunctionFactory
46214          });
46215        }
46216      } else {
46217        this.mask = mask;
46218      }
46219    }
46220  }
46221  PDFImage.buildImage = function (_ref2) {
46222    var handler = _ref2.handler,
46223        xref = _ref2.xref,
46224        res = _ref2.res,
46225        image = _ref2.image,
46226        _ref2$isInline = _ref2.isInline,
46227        isInline = _ref2$isInline === undefined ? false : _ref2$isInline,
46228        _ref2$nativeDecoder = _ref2.nativeDecoder,
46229        nativeDecoder = _ref2$nativeDecoder === undefined ? null : _ref2$nativeDecoder,
46230        pdfFunctionFactory = _ref2.pdfFunctionFactory;
46231
46232    var imagePromise = handleImageData(image, nativeDecoder);
46233    var smaskPromise;
46234    var maskPromise;
46235    var smask = image.dict.get('SMask');
46236    var mask = image.dict.get('Mask');
46237    if (smask) {
46238      smaskPromise = handleImageData(smask, nativeDecoder);
46239      maskPromise = Promise.resolve(null);
46240    } else {
46241      smaskPromise = Promise.resolve(null);
46242      if (mask) {
46243        if ((0, _primitives.isStream)(mask)) {
46244          maskPromise = handleImageData(mask, nativeDecoder);
46245        } else if (Array.isArray(mask)) {
46246          maskPromise = Promise.resolve(mask);
46247        } else {
46248          (0, _util.warn)('Unsupported mask format.');
46249          maskPromise = Promise.resolve(null);
46250        }
46251      } else {
46252        maskPromise = Promise.resolve(null);
46253      }
46254    }
46255    return Promise.all([imagePromise, smaskPromise, maskPromise]).then(function (_ref3) {
46256      var _ref4 = _slicedToArray(_ref3, 3),
46257          imageData = _ref4[0],
46258          smaskData = _ref4[1],
46259          maskData = _ref4[2];
46260
46261      return new PDFImage({
46262        xref: xref,
46263        res: res,
46264        image: imageData,
46265        isInline: isInline,
46266        smask: smaskData,
46267        mask: maskData,
46268        pdfFunctionFactory: pdfFunctionFactory
46269      });
46270    });
46271  };
46272  PDFImage.createMask = function (_ref5) {
46273    var imgArray = _ref5.imgArray,
46274        width = _ref5.width,
46275        height = _ref5.height,
46276        imageIsFromDecodeStream = _ref5.imageIsFromDecodeStream,
46277        inverseDecode = _ref5.inverseDecode;
46278
46279    var computedLength = (width + 7 >> 3) * height;
46280    var actualLength = imgArray.byteLength;
46281    var haveFullData = computedLength === actualLength;
46282    var data, i;
46283    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {
46284      data = imgArray;
46285    } else if (!inverseDecode) {
46286      data = new Uint8ClampedArray(actualLength);
46287      data.set(imgArray);
46288    } else {
46289      data = new Uint8ClampedArray(computedLength);
46290      data.set(imgArray);
46291      for (i = actualLength; i < computedLength; i++) {
46292        data[i] = 0xff;
46293      }
46294    }
46295    if (inverseDecode) {
46296      for (i = 0; i < actualLength; i++) {
46297        data[i] ^= 0xFF;
46298      }
46299    }
46300    return {
46301      data: data,
46302      width: width,
46303      height: height
46304    };
46305  };
46306  PDFImage.prototype = {
46307    get drawWidth() {
46308      return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0);
46309    },
46310    get drawHeight() {
46311      return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0);
46312    },
46313    decodeBuffer: function decodeBuffer(buffer) {
46314      var bpc = this.bpc;
46315      var numComps = this.numComps;
46316      var decodeAddends = this.decodeAddends;
46317      var decodeCoefficients = this.decodeCoefficients;
46318      var max = (1 << bpc) - 1;
46319      var i, ii;
46320      if (bpc === 1) {
46321        for (i = 0, ii = buffer.length; i < ii; i++) {
46322          buffer[i] = +!buffer[i];
46323        }
46324        return;
46325      }
46326      var index = 0;
46327      for (i = 0, ii = this.width * this.height; i < ii; i++) {
46328        for (var j = 0; j < numComps; j++) {
46329          buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max);
46330          index++;
46331        }
46332      }
46333    },
46334    getComponents: function getComponents(buffer) {
46335      var bpc = this.bpc;
46336      if (bpc === 8) {
46337        return buffer;
46338      }
46339      var width = this.width;
46340      var height = this.height;
46341      var numComps = this.numComps;
46342      var length = width * height * numComps;
46343      var bufferPos = 0;
46344      var output = bpc <= 8 ? new Uint8Array(length) : bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length);
46345      var rowComps = width * numComps;
46346      var max = (1 << bpc) - 1;
46347      var i = 0,
46348          ii,
46349          buf;
46350      if (bpc === 1) {
46351        var mask, loop1End, loop2End;
46352        for (var j = 0; j < height; j++) {
46353          loop1End = i + (rowComps & ~7);
46354          loop2End = i + rowComps;
46355          while (i < loop1End) {
46356            buf = buffer[bufferPos++];
46357            output[i] = buf >> 7 & 1;
46358            output[i + 1] = buf >> 6 & 1;
46359            output[i + 2] = buf >> 5 & 1;
46360            output[i + 3] = buf >> 4 & 1;
46361            output[i + 4] = buf >> 3 & 1;
46362            output[i + 5] = buf >> 2 & 1;
46363            output[i + 6] = buf >> 1 & 1;
46364            output[i + 7] = buf & 1;
46365            i += 8;
46366          }
46367          if (i < loop2End) {
46368            buf = buffer[bufferPos++];
46369            mask = 128;
46370            while (i < loop2End) {
46371              output[i++] = +!!(buf & mask);
46372              mask >>= 1;
46373            }
46374          }
46375        }
46376      } else {
46377        var bits = 0;
46378        buf = 0;
46379        for (i = 0, ii = length; i < ii; ++i) {
46380          if (i % rowComps === 0) {
46381            buf = 0;
46382            bits = 0;
46383          }
46384          while (bits < bpc) {
46385            buf = buf << 8 | buffer[bufferPos++];
46386            bits += 8;
46387          }
46388          var remainingBits = bits - bpc;
46389          var value = buf >> remainingBits;
46390          output[i] = value < 0 ? 0 : value > max ? max : value;
46391          buf = buf & (1 << remainingBits) - 1;
46392          bits = remainingBits;
46393        }
46394      }
46395      return output;
46396    },
46397    fillOpacity: function fillOpacity(rgbaBuf, width, height, actualHeight, image) {
46398      var smask = this.smask;
46399      var mask = this.mask;
46400      var alphaBuf, sw, sh, i, ii, j;
46401      if (smask) {
46402        sw = smask.width;
46403        sh = smask.height;
46404        alphaBuf = new Uint8ClampedArray(sw * sh);
46405        smask.fillGrayBuffer(alphaBuf);
46406        if (sw !== width || sh !== height) {
46407          alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);
46408        }
46409      } else if (mask) {
46410        if (mask instanceof PDFImage) {
46411          sw = mask.width;
46412          sh = mask.height;
46413          alphaBuf = new Uint8ClampedArray(sw * sh);
46414          mask.numComps = 1;
46415          mask.fillGrayBuffer(alphaBuf);
46416          for (i = 0, ii = sw * sh; i < ii; ++i) {
46417            alphaBuf[i] = 255 - alphaBuf[i];
46418          }
46419          if (sw !== width || sh !== height) {
46420            alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);
46421          }
46422        } else if (Array.isArray(mask)) {
46423          alphaBuf = new Uint8ClampedArray(width * height);
46424          var numComps = this.numComps;
46425          for (i = 0, ii = width * height; i < ii; ++i) {
46426            var opacity = 0;
46427            var imageOffset = i * numComps;
46428            for (j = 0; j < numComps; ++j) {
46429              var color = image[imageOffset + j];
46430              var maskOffset = j * 2;
46431              if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {
46432                opacity = 255;
46433                break;
46434              }
46435            }
46436            alphaBuf[i] = opacity;
46437          }
46438        } else {
46439          throw new _util.FormatError('Unknown mask format.');
46440        }
46441      }
46442      if (alphaBuf) {
46443        for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
46444          rgbaBuf[j] = alphaBuf[i];
46445        }
46446      } else {
46447        for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
46448          rgbaBuf[j] = 255;
46449        }
46450      }
46451    },
46452    undoPreblend: function undoPreblend(buffer, width, height) {
46453      var matte = this.smask && this.smask.matte;
46454      if (!matte) {
46455        return;
46456      }
46457      var matteRgb = this.colorSpace.getRgb(matte, 0);
46458      var matteR = matteRgb[0];
46459      var matteG = matteRgb[1];
46460      var matteB = matteRgb[2];
46461      var length = width * height * 4;
46462      for (var i = 0; i < length; i += 4) {
46463        var alpha = buffer[i + 3];
46464        if (alpha === 0) {
46465          buffer[i] = 255;
46466          buffer[i + 1] = 255;
46467          buffer[i + 2] = 255;
46468          continue;
46469        }
46470        var k = 255 / alpha;
46471        buffer[i] = (buffer[i] - matteR) * k + matteR;
46472        buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;
46473        buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;
46474      }
46475    },
46476    createImageData: function createImageData() {
46477      var forceRGBA = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
46478
46479      var drawWidth = this.drawWidth;
46480      var drawHeight = this.drawHeight;
46481      var imgData = {
46482        width: drawWidth,
46483        height: drawHeight,
46484        kind: 0,
46485        data: null
46486      };
46487      var numComps = this.numComps;
46488      var originalWidth = this.width;
46489      var originalHeight = this.height;
46490      var bpc = this.bpc;
46491      var rowBytes = originalWidth * numComps * bpc + 7 >> 3;
46492      var imgArray;
46493      if (!forceRGBA) {
46494        var kind;
46495        if (this.colorSpace.name === 'DeviceGray' && bpc === 1) {
46496          kind = _util.ImageKind.GRAYSCALE_1BPP;
46497        } else if (this.colorSpace.name === 'DeviceRGB' && bpc === 8 && !this.needsDecode) {
46498          kind = _util.ImageKind.RGB_24BPP;
46499        }
46500        if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) {
46501          imgData.kind = kind;
46502          imgArray = this.getImageBytes(originalHeight * rowBytes);
46503          if (this.image instanceof _stream.DecodeStream) {
46504            imgData.data = imgArray;
46505          } else {
46506            var newArray = new Uint8ClampedArray(imgArray.length);
46507            newArray.set(imgArray);
46508            imgData.data = newArray;
46509          }
46510          if (this.needsDecode) {
46511            (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, 'PDFImage.createImageData: The image must be grayscale.');
46512            var buffer = imgData.data;
46513            for (var i = 0, ii = buffer.length; i < ii; i++) {
46514              buffer[i] ^= 0xff;
46515            }
46516          }
46517          return imgData;
46518        }
46519        if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {
46520          var imageLength = originalHeight * rowBytes;
46521          switch (this.colorSpace.name) {
46522            case 'DeviceGray':
46523              imageLength *= 3;
46524            case 'DeviceRGB':
46525            case 'DeviceCMYK':
46526              imgData.kind = _util.ImageKind.RGB_24BPP;
46527              imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true);
46528              return imgData;
46529          }
46530        }
46531      }
46532      imgArray = this.getImageBytes(originalHeight * rowBytes);
46533      var actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;
46534      var comps = this.getComponents(imgArray);
46535      var alpha01, maybeUndoPreblend;
46536      if (!forceRGBA && !this.smask && !this.mask) {
46537        imgData.kind = _util.ImageKind.RGB_24BPP;
46538        imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);
46539        alpha01 = 0;
46540        maybeUndoPreblend = false;
46541      } else {
46542        imgData.kind = _util.ImageKind.RGBA_32BPP;
46543        imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);
46544        alpha01 = 1;
46545        maybeUndoPreblend = true;
46546        this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps);
46547      }
46548      if (this.needsDecode) {
46549        this.decodeBuffer(comps);
46550      }
46551      this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01);
46552      if (maybeUndoPreblend) {
46553        this.undoPreblend(imgData.data, drawWidth, actualHeight);
46554      }
46555      return imgData;
46556    },
46557    fillGrayBuffer: function fillGrayBuffer(buffer) {
46558      var numComps = this.numComps;
46559      if (numComps !== 1) {
46560        throw new _util.FormatError('Reading gray scale from a color image: ' + numComps);
46561      }
46562      var width = this.width;
46563      var height = this.height;
46564      var bpc = this.bpc;
46565      var rowBytes = width * numComps * bpc + 7 >> 3;
46566      var imgArray = this.getImageBytes(height * rowBytes);
46567      var comps = this.getComponents(imgArray);
46568      var i, length;
46569      if (bpc === 1) {
46570        length = width * height;
46571        if (this.needsDecode) {
46572          for (i = 0; i < length; ++i) {
46573            buffer[i] = comps[i] - 1 & 255;
46574          }
46575        } else {
46576          for (i = 0; i < length; ++i) {
46577            buffer[i] = -comps[i] & 255;
46578          }
46579        }
46580        return;
46581      }
46582      if (this.needsDecode) {
46583        this.decodeBuffer(comps);
46584      }
46585      length = width * height;
46586      var scale = 255 / ((1 << bpc) - 1);
46587      for (i = 0; i < length; ++i) {
46588        buffer[i] = scale * comps[i];
46589      }
46590    },
46591    getImageBytes: function getImageBytes(length, drawWidth, drawHeight) {
46592      var forceRGB = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
46593
46594      this.image.reset();
46595      this.image.drawWidth = drawWidth || this.width;
46596      this.image.drawHeight = drawHeight || this.height;
46597      this.image.forceRGB = !!forceRGB;
46598      return this.image.getBytes(length, true);
46599    }
46600  };
46601  return PDFImage;
46602}();
46603exports.PDFImage = PDFImage;
46604
46605/***/ }),
46606/* 172 */
46607/***/ (function(module, exports, __w_pdfjs_require__) {
46608
46609"use strict";
46610
46611
46612Object.defineProperty(exports, "__esModule", {
46613  value: true
46614});
46615exports.MessageHandler = undefined;
46616
46617var _regenerator = __w_pdfjs_require__(131);
46618
46619var _regenerator2 = _interopRequireDefault(_regenerator);
46620
46621var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
46622
46623var resolveCall = function () {
46624  var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(fn, args) {
46625    var thisArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
46626    return _regenerator2.default.wrap(function _callee$(_context) {
46627      while (1) {
46628        switch (_context.prev = _context.next) {
46629          case 0:
46630            if (fn) {
46631              _context.next = 2;
46632              break;
46633            }
46634
46635            return _context.abrupt('return');
46636
46637          case 2:
46638            return _context.abrupt('return', fn.apply(thisArg, args));
46639
46640          case 3:
46641          case 'end':
46642            return _context.stop();
46643        }
46644      }
46645    }, _callee, this);
46646  }));
46647
46648  return function resolveCall(_x2, _x3) {
46649    return _ref.apply(this, arguments);
46650  };
46651}();
46652
46653var _util = __w_pdfjs_require__(2);
46654
46655function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
46656
46657function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
46658
46659function wrapReason(reason) {
46660  if ((typeof reason === 'undefined' ? 'undefined' : _typeof(reason)) !== 'object') {
46661    return reason;
46662  }
46663  switch (reason.name) {
46664    case 'AbortException':
46665      return new _util.AbortException(reason.message);
46666    case 'MissingPDFException':
46667      return new _util.MissingPDFException(reason.message);
46668    case 'UnexpectedResponseException':
46669      return new _util.UnexpectedResponseException(reason.message, reason.status);
46670    default:
46671      return new _util.UnknownErrorException(reason.message, reason.details);
46672  }
46673}
46674function makeReasonSerializable(reason) {
46675  if (!(reason instanceof Error) || reason instanceof _util.AbortException || reason instanceof _util.MissingPDFException || reason instanceof _util.UnexpectedResponseException || reason instanceof _util.UnknownErrorException) {
46676    return reason;
46677  }
46678  return new _util.UnknownErrorException(reason.message, reason.toString());
46679}
46680function resolveOrReject(capability, success, reason) {
46681  if (success) {
46682    capability.resolve();
46683  } else {
46684    capability.reject(reason);
46685  }
46686}
46687function finalize(promise) {
46688  return Promise.resolve(promise).catch(function () {});
46689}
46690function MessageHandler(sourceName, targetName, comObj) {
46691  var _this = this;
46692
46693  this.sourceName = sourceName;
46694  this.targetName = targetName;
46695  this.comObj = comObj;
46696  this.callbackId = 1;
46697  this.streamId = 1;
46698  this.postMessageTransfers = true;
46699  this.streamSinks = Object.create(null);
46700  this.streamControllers = Object.create(null);
46701  var callbacksCapabilities = this.callbacksCapabilities = Object.create(null);
46702  var ah = this.actionHandler = Object.create(null);
46703  this._onComObjOnMessage = function (event) {
46704    var data = event.data;
46705    if (data.targetName !== _this.sourceName) {
46706      return;
46707    }
46708    if (data.stream) {
46709      _this._processStreamMessage(data);
46710    } else if (data.isReply) {
46711      var callbackId = data.callbackId;
46712      if (data.callbackId in callbacksCapabilities) {
46713        var callback = callbacksCapabilities[callbackId];
46714        delete callbacksCapabilities[callbackId];
46715        if ('error' in data) {
46716          callback.reject(wrapReason(data.error));
46717        } else {
46718          callback.resolve(data.data);
46719        }
46720      } else {
46721        throw new Error('Cannot resolve callback ' + callbackId);
46722      }
46723    } else if (data.action in ah) {
46724      var action = ah[data.action];
46725      if (data.callbackId) {
46726        var _sourceName = _this.sourceName;
46727        var _targetName = data.sourceName;
46728        Promise.resolve().then(function () {
46729          return action[0].call(action[1], data.data);
46730        }).then(function (result) {
46731          comObj.postMessage({
46732            sourceName: _sourceName,
46733            targetName: _targetName,
46734            isReply: true,
46735            callbackId: data.callbackId,
46736            data: result
46737          });
46738        }, function (reason) {
46739          comObj.postMessage({
46740            sourceName: _sourceName,
46741            targetName: _targetName,
46742            isReply: true,
46743            callbackId: data.callbackId,
46744            error: makeReasonSerializable(reason)
46745          });
46746        });
46747      } else if (data.streamId) {
46748        _this._createStreamSink(data);
46749      } else {
46750        action[0].call(action[1], data.data);
46751      }
46752    } else {
46753      throw new Error('Unknown action from worker: ' + data.action);
46754    }
46755  };
46756  comObj.addEventListener('message', this._onComObjOnMessage);
46757}
46758MessageHandler.prototype = {
46759  on: function on(actionName, handler, scope) {
46760    var ah = this.actionHandler;
46761    if (ah[actionName]) {
46762      throw new Error('There is already an actionName called "' + actionName + '"');
46763    }
46764    ah[actionName] = [handler, scope];
46765  },
46766  send: function send(actionName, data, transfers) {
46767    var message = {
46768      sourceName: this.sourceName,
46769      targetName: this.targetName,
46770      action: actionName,
46771      data: data
46772    };
46773    this.postMessage(message, transfers);
46774  },
46775  sendWithPromise: function sendWithPromise(actionName, data, transfers) {
46776    var callbackId = this.callbackId++;
46777    var message = {
46778      sourceName: this.sourceName,
46779      targetName: this.targetName,
46780      action: actionName,
46781      data: data,
46782      callbackId: callbackId
46783    };
46784    var capability = (0, _util.createPromiseCapability)();
46785    this.callbacksCapabilities[callbackId] = capability;
46786    try {
46787      this.postMessage(message, transfers);
46788    } catch (e) {
46789      capability.reject(e);
46790    }
46791    return capability.promise;
46792  },
46793  sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) {
46794    var _this2 = this;
46795
46796    var streamId = this.streamId++;
46797    var sourceName = this.sourceName;
46798    var targetName = this.targetName;
46799    return new _util.ReadableStream({
46800      start: function start(controller) {
46801        var startCapability = (0, _util.createPromiseCapability)();
46802        _this2.streamControllers[streamId] = {
46803          controller: controller,
46804          startCall: startCapability,
46805          isClosed: false
46806        };
46807        _this2.postMessage({
46808          sourceName: sourceName,
46809          targetName: targetName,
46810          action: actionName,
46811          streamId: streamId,
46812          data: data,
46813          desiredSize: controller.desiredSize
46814        });
46815        return startCapability.promise;
46816      },
46817      pull: function pull(controller) {
46818        var pullCapability = (0, _util.createPromiseCapability)();
46819        _this2.streamControllers[streamId].pullCall = pullCapability;
46820        _this2.postMessage({
46821          sourceName: sourceName,
46822          targetName: targetName,
46823          stream: 'pull',
46824          streamId: streamId,
46825          desiredSize: controller.desiredSize
46826        });
46827        return pullCapability.promise;
46828      },
46829      cancel: function cancel(reason) {
46830        var cancelCapability = (0, _util.createPromiseCapability)();
46831        _this2.streamControllers[streamId].cancelCall = cancelCapability;
46832        _this2.streamControllers[streamId].isClosed = true;
46833        _this2.postMessage({
46834          sourceName: sourceName,
46835          targetName: targetName,
46836          stream: 'cancel',
46837          reason: reason,
46838          streamId: streamId
46839        });
46840        return cancelCapability.promise;
46841      }
46842    }, queueingStrategy);
46843  },
46844  _createStreamSink: function _createStreamSink(data) {
46845    var _this3 = this;
46846
46847    var self = this;
46848    var action = this.actionHandler[data.action];
46849    var streamId = data.streamId;
46850    var desiredSize = data.desiredSize;
46851    var sourceName = this.sourceName;
46852    var targetName = data.sourceName;
46853    var capability = (0, _util.createPromiseCapability)();
46854    var sendStreamRequest = function sendStreamRequest(_ref2) {
46855      var stream = _ref2.stream,
46856          chunk = _ref2.chunk,
46857          transfers = _ref2.transfers,
46858          success = _ref2.success,
46859          reason = _ref2.reason;
46860
46861      _this3.postMessage({
46862        sourceName: sourceName,
46863        targetName: targetName,
46864        stream: stream,
46865        streamId: streamId,
46866        chunk: chunk,
46867        success: success,
46868        reason: reason
46869      }, transfers);
46870    };
46871    var streamSink = {
46872      enqueue: function enqueue(chunk) {
46873        var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
46874        var transfers = arguments[2];
46875
46876        if (this.isCancelled) {
46877          return;
46878        }
46879        var lastDesiredSize = this.desiredSize;
46880        this.desiredSize -= size;
46881        if (lastDesiredSize > 0 && this.desiredSize <= 0) {
46882          this.sinkCapability = (0, _util.createPromiseCapability)();
46883          this.ready = this.sinkCapability.promise;
46884        }
46885        sendStreamRequest({
46886          stream: 'enqueue',
46887          chunk: chunk,
46888          transfers: transfers
46889        });
46890      },
46891      close: function close() {
46892        if (this.isCancelled) {
46893          return;
46894        }
46895        this.isCancelled = true;
46896        sendStreamRequest({ stream: 'close' });
46897        delete self.streamSinks[streamId];
46898      },
46899      error: function error(reason) {
46900        if (this.isCancelled) {
46901          return;
46902        }
46903        this.isCancelled = true;
46904        sendStreamRequest({
46905          stream: 'error',
46906          reason: reason
46907        });
46908      },
46909
46910      sinkCapability: capability,
46911      onPull: null,
46912      onCancel: null,
46913      isCancelled: false,
46914      desiredSize: desiredSize,
46915      ready: null
46916    };
46917    streamSink.sinkCapability.resolve();
46918    streamSink.ready = streamSink.sinkCapability.promise;
46919    this.streamSinks[streamId] = streamSink;
46920    resolveCall(action[0], [data.data, streamSink], action[1]).then(function () {
46921      sendStreamRequest({
46922        stream: 'start_complete',
46923        success: true
46924      });
46925    }, function (reason) {
46926      sendStreamRequest({
46927        stream: 'start_complete',
46928        success: false,
46929        reason: reason
46930      });
46931    });
46932  },
46933  _processStreamMessage: function _processStreamMessage(data) {
46934    var _this4 = this;
46935
46936    var sourceName = this.sourceName;
46937    var targetName = data.sourceName;
46938    var streamId = data.streamId;
46939    var sendStreamResponse = function sendStreamResponse(_ref3) {
46940      var stream = _ref3.stream,
46941          success = _ref3.success,
46942          reason = _ref3.reason;
46943
46944      _this4.comObj.postMessage({
46945        sourceName: sourceName,
46946        targetName: targetName,
46947        stream: stream,
46948        success: success,
46949        streamId: streamId,
46950        reason: reason
46951      });
46952    };
46953    var deleteStreamController = function deleteStreamController() {
46954      Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) {
46955        return capability && finalize(capability.promise);
46956      })).then(function () {
46957        delete _this4.streamControllers[data.streamId];
46958      });
46959    };
46960    switch (data.stream) {
46961      case 'start_complete':
46962        resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason));
46963        break;
46964      case 'pull_complete':
46965        resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason));
46966        break;
46967      case 'pull':
46968        if (!this.streamSinks[data.streamId]) {
46969          sendStreamResponse({
46970            stream: 'pull_complete',
46971            success: true
46972          });
46973          break;
46974        }
46975        if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) {
46976          this.streamSinks[data.streamId].sinkCapability.resolve();
46977        }
46978        this.streamSinks[data.streamId].desiredSize = data.desiredSize;
46979        resolveCall(this.streamSinks[data.streamId].onPull).then(function () {
46980          sendStreamResponse({
46981            stream: 'pull_complete',
46982            success: true
46983          });
46984        }, function (reason) {
46985          sendStreamResponse({
46986            stream: 'pull_complete',
46987            success: false,
46988            reason: reason
46989          });
46990        });
46991        break;
46992      case 'enqueue':
46993        (0, _util.assert)(this.streamControllers[data.streamId], 'enqueue should have stream controller');
46994        if (!this.streamControllers[data.streamId].isClosed) {
46995          this.streamControllers[data.streamId].controller.enqueue(data.chunk);
46996        }
46997        break;
46998      case 'close':
46999        (0, _util.assert)(this.streamControllers[data.streamId], 'close should have stream controller');
47000        if (this.streamControllers[data.streamId].isClosed) {
47001          break;
47002        }
47003        this.streamControllers[data.streamId].isClosed = true;
47004        this.streamControllers[data.streamId].controller.close();
47005        deleteStreamController();
47006        break;
47007      case 'error':
47008        (0, _util.assert)(this.streamControllers[data.streamId], 'error should have stream controller');
47009        this.streamControllers[data.streamId].controller.error(wrapReason(data.reason));
47010        deleteStreamController();
47011        break;
47012      case 'cancel_complete':
47013        resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason));
47014        deleteStreamController();
47015        break;
47016      case 'cancel':
47017        if (!this.streamSinks[data.streamId]) {
47018          break;
47019        }
47020        resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () {
47021          sendStreamResponse({
47022            stream: 'cancel_complete',
47023            success: true
47024          });
47025        }, function (reason) {
47026          sendStreamResponse({
47027            stream: 'cancel_complete',
47028            success: false,
47029            reason: reason
47030          });
47031        });
47032        this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason));
47033        this.streamSinks[data.streamId].isCancelled = true;
47034        delete this.streamSinks[data.streamId];
47035        break;
47036      default:
47037        throw new Error('Unexpected stream case');
47038    }
47039  },
47040  postMessage: function postMessage(message, transfers) {
47041    if (transfers && this.postMessageTransfers) {
47042      this.comObj.postMessage(message, transfers);
47043    } else {
47044      this.comObj.postMessage(message);
47045    }
47046  },
47047  destroy: function destroy() {
47048    this.comObj.removeEventListener('message', this._onComObjOnMessage);
47049  }
47050};
47051exports.MessageHandler = MessageHandler;
47052
47053/***/ })
47054/******/ ])
vendor: 44 bytes, lines 47054-47056
47054;
47055});
47056//# sourceMappingURL=pdf.worker.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.