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.