georaster
Version:
Wrapper around Georeferenced Rasters like GeoTIFF, NetCDF, JPG, and PNG that provides a standard interface
96 lines (94 loc) • 320 kB
JavaScript
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./node_modules/worker-loader/dist/cjs.js?!./node_modules/geotiff/src/decoder.worker.js");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./node_modules/worker-loader/dist/cjs.js?!./node_modules/geotiff/src/decoder.worker.js":
/*!*****************************************************************************************************!*\
!*** ./node_modules/worker-loader/dist/cjs.js??ref--5!./node_modules/geotiff/src/decoder.worker.js ***!
\*****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("module.exports = function() {\n return __webpack_require__(/*! !./node_modules/worker-loader/dist/workers/InlineWorker.js */ \"./node_modules/worker-loader/dist/workers/InlineWorker.js\")(\"/******/ (function(modules) { // webpackBootstrap\\n/******/ \\t// The module cache\\n/******/ \\tvar installedModules = {};\\n/******/\\n/******/ \\t// The require function\\n/******/ \\tfunction __webpack_require__(moduleId) {\\n/******/\\n/******/ \\t\\t// Check if module is in cache\\n/******/ \\t\\tif(installedModules[moduleId]) {\\n/******/ \\t\\t\\treturn installedModules[moduleId].exports;\\n/******/ \\t\\t}\\n/******/ \\t\\t// Create a new module (and put it into the cache)\\n/******/ \\t\\tvar module = installedModules[moduleId] = {\\n/******/ \\t\\t\\ti: moduleId,\\n/******/ \\t\\t\\tl: false,\\n/******/ \\t\\t\\texports: {}\\n/******/ \\t\\t};\\n/******/\\n/******/ \\t\\t// Execute the module function\\n/******/ \\t\\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\\n/******/\\n/******/ \\t\\t// Flag the module as loaded\\n/******/ \\t\\tmodule.l = true;\\n/******/\\n/******/ \\t\\t// Return the exports of the module\\n/******/ \\t\\treturn module.exports;\\n/******/ \\t}\\n/******/\\n/******/\\n/******/ \\t// expose the modules object (__webpack_modules__)\\n/******/ \\t__webpack_require__.m = modules;\\n/******/\\n/******/ \\t// expose the module cache\\n/******/ \\t__webpack_require__.c = installedModules;\\n/******/\\n/******/ \\t// define getter function for harmony exports\\n/******/ \\t__webpack_require__.d = function(exports, name, getter) {\\n/******/ \\t\\tif(!__webpack_require__.o(exports, name)) {\\n/******/ \\t\\t\\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\\n/******/ \\t\\t}\\n/******/ \\t};\\n/******/\\n/******/ \\t// define __esModule on exports\\n/******/ \\t__webpack_require__.r = function(exports) {\\n/******/ \\t\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\n/******/ \\t\\t\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\n/******/ \\t\\t}\\n/******/ \\t\\tObject.defineProperty(exports, '__esModule', { value: true });\\n/******/ \\t};\\n/******/\\n/******/ \\t// create a fake namespace object\\n/******/ \\t// mode & 1: value is a module id, require it\\n/******/ \\t// mode & 2: merge all properties of value into the ns\\n/******/ \\t// mode & 4: return value when already ns object\\n/******/ \\t// mode & 8|1: behave like require\\n/******/ \\t__webpack_require__.t = function(value, mode) {\\n/******/ \\t\\tif(mode & 1) value = __webpack_require__(value);\\n/******/ \\t\\tif(mode & 8) return value;\\n/******/ \\t\\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\\n/******/ \\t\\tvar ns = Object.create(null);\\n/******/ \\t\\t__webpack_require__.r(ns);\\n/******/ \\t\\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\\n/******/ \\t\\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\\n/******/ \\t\\treturn ns;\\n/******/ \\t};\\n/******/\\n/******/ \\t// getDefaultExport function for compatibility with non-harmony modules\\n/******/ \\t__webpack_require__.n = function(module) {\\n/******/ \\t\\tvar getter = module && module.__esModule ?\\n/******/ \\t\\t\\tfunction getDefault() { return module['default']; } :\\n/******/ \\t\\t\\tfunction getModuleExports() { return module; };\\n/******/ \\t\\t__webpack_require__.d(getter, 'a', getter);\\n/******/ \\t\\treturn getter;\\n/******/ \\t};\\n/******/\\n/******/ \\t// Object.prototype.hasOwnProperty.call\\n/******/ \\t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\\n/******/\\n/******/ \\t// __webpack_public_path__\\n/******/ \\t__webpack_require__.p = \\\"\\\";\\n/******/\\n/******/\\n/******/ \\t// Load entry module and return exports\\n/******/ \\treturn __webpack_require__(__webpack_require__.s = \\\"./node_modules/worker-loader/dist/cjs.js?!./node_modules/geotiff/src/decoder.worker.js\\\");\\n/******/ })\\n/************************************************************************/\\n/******/ ({\\n\\n/***/ \\\"./node_modules/worker-loader/dist/cjs.js?!./node_modules/geotiff/src/decoder.worker.js\\\":\\n/*!*****************************************************************************************************!*\\\\\\n !*** ./node_modules/worker-loader/dist/cjs.js??ref--5!./node_modules/geotiff/src/decoder.worker.js ***!\\n \\\\*****************************************************************************************************/\\n/*! no static exports found */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\neval(\\\"module.exports = function() {\\\\n return __webpack_require__(/*! !./node_modules/worker-loader/dist/workers/InlineWorker.js */ \\\\\\\"./node_modules/worker-loader/dist/workers/InlineWorker.js\\\\\\\")(\\\\\\\"/******/ (function(modules) { // webpackBootstrap\\\\\\\\n/******/ \\\\\\\\t// The module cache\\\\\\\\n/******/ \\\\\\\\tvar installedModules = {};\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t// The require function\\\\\\\\n/******/ \\\\\\\\tfunction __webpack_require__(moduleId) {\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t// Check if module is in cache\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tif(installedModules[moduleId]) {\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t\\\\\\\\treturn installedModules[moduleId].exports;\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t}\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t// Create a new module (and put it into the cache)\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tvar module = installedModules[moduleId] = {\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t\\\\\\\\ti: moduleId,\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t\\\\\\\\tl: false,\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t\\\\\\\\texports: {}\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t};\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t// Execute the module function\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t// Flag the module as loaded\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tmodule.l = true;\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t// Return the exports of the module\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\treturn module.exports;\\\\\\\\n/******/ \\\\\\\\t}\\\\\\\\n/******/\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t// expose the modules object (__webpack_modules__)\\\\\\\\n/******/ \\\\\\\\t__webpack_require__.m = modules;\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t// expose the module cache\\\\\\\\n/******/ \\\\\\\\t__webpack_require__.c = installedModules;\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t// define getter function for harmony exports\\\\\\\\n/******/ \\\\\\\\t__webpack_require__.d = function(exports, name, getter) {\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tif(!__webpack_require__.o(exports, name)) {\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t\\\\\\\\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t}\\\\\\\\n/******/ \\\\\\\\t};\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t// define __esModule on exports\\\\\\\\n/******/ \\\\\\\\t__webpack_require__.r = function(exports) {\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t\\\\\\\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t}\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tObject.defineProperty(exports, '__esModule', { value: true });\\\\\\\\n/******/ \\\\\\\\t};\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t// create a fake namespace object\\\\\\\\n/******/ \\\\\\\\t// mode & 1: value is a module id, require it\\\\\\\\n/******/ \\\\\\\\t// mode & 2: merge all properties of value into the ns\\\\\\\\n/******/ \\\\\\\\t// mode & 4: return value when already ns object\\\\\\\\n/******/ \\\\\\\\t// mode & 8|1: behave like require\\\\\\\\n/******/ \\\\\\\\t__webpack_require__.t = function(value, mode) {\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tif(mode & 1) value = __webpack_require__(value);\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tif(mode & 8) return value;\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tvar ns = Object.create(null);\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t__webpack_require__.r(ns);\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\treturn ns;\\\\\\\\n/******/ \\\\\\\\t};\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t// getDefaultExport function for compatibility with non-harmony modules\\\\\\\\n/******/ \\\\\\\\t__webpack_require__.n = function(module) {\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\tvar getter = module && module.__esModule ?\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t\\\\\\\\tfunction getDefault() { return module['default']; } :\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t\\\\\\\\tfunction getModuleExports() { return module; };\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\t__webpack_require__.d(getter, 'a', getter);\\\\\\\\n/******/ \\\\\\\\t\\\\\\\\treturn getter;\\\\\\\\n/******/ \\\\\\\\t};\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t// Object.prototype.hasOwnProperty.call\\\\\\\\n/******/ \\\\\\\\t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t// __webpack_public_path__\\\\\\\\n/******/ \\\\\\\\t__webpack_require__.p = \\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\";\\\\\\\\n/******/\\\\\\\\n/******/\\\\\\\\n/******/ \\\\\\\\t// Load entry module and return exports\\\\\\\\n/******/ \\\\\\\\treturn __webpack_require__(__webpack_require__.s = \\\\\\\\\\\\\\\"./node_modules/geotiff/src/decoder.worker.js\\\\\\\\\\\\\\\");\\\\\\\\n/******/ })\\\\\\\\n/************************************************************************/\\\\\\\\n/******/ ({\\\\\\\\n\\\\\\\\n/***/ \\\\\\\\\\\\\\\"./node_modules/geotiff/src/compression/basedecoder.js\\\\\\\\\\\\\\\":\\\\\\\\n/*!*************************************************************!*\\\\\\\\\\\\\\\\\\\\\\\\n !*** ./node_modules/geotiff/src/compression/basedecoder.js ***!\\\\\\\\n \\\\\\\\\\\\\\\\*************************************************************/\\\\\\\\n/*! exports provided: default */\\\\\\\\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\\\\\\\\n\\\\\\\\n\\\\\\\\\\\\\\\"use strict\\\\\\\\\\\\\\\";\\\\\\\\neval(\\\\\\\\\\\\\\\"__webpack_require__.r(__webpack_exports__);\\\\\\\\\\\\\\\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"default\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\", function() { return BaseDecoder; });\\\\\\\\\\\\\\\\n/* harmony import */ var _predictor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../predictor */ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"./node_modules/geotiff/src/predictor.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\nclass BaseDecoder {\\\\\\\\\\\\\\\\n decode(fileDirectory, buffer) {\\\\\\\\\\\\\\\\n const decoded = this.decodeBlock(buffer);\\\\\\\\\\\\\\\\n const predictor = fileDirectory.Predictor || 1;\\\\\\\\\\\\\\\\n if (predictor !== 1) {\\\\\\\\\\\\\\\\n const isTiled = !fileDirectory.StripOffsets;\\\\\\\\\\\\\\\\n const tileWidth = isTiled ? fileDirectory.TileWidth : fileDirectory.ImageWidth;\\\\\\\\\\\\\\\\n const tileHeight = isTiled ? fileDirectory.TileLength : (\\\\\\\\\\\\\\\\n fileDirectory.RowsPerStrip || fileDirectory.ImageLength\\\\\\\\\\\\\\\\n );\\\\\\\\\\\\\\\\n return Object(_predictor__WEBPACK_IMPORTED_MODULE_0__[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"applyPredictor\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"])(\\\\\\\\\\\\\\\\n decoded, predictor, tileWidth, tileHeight, fileDirectory.BitsPerSample,\\\\\\\\\\\\\\\\n fileDirectory.PlanarConfiguration,\\\\\\\\\\\\\\\\n );\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n return decoded;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n}\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n//# sourceURL=webpack://GeoRaster/./node_modules/geotiff/src/compression/basedecoder.js?\\\\\\\\\\\\\\\");\\\\\\\\n\\\\\\\\n/***/ }),\\\\\\\\n\\\\\\\\n/***/ \\\\\\\\\\\\\\\"./node_modules/geotiff/src/compression/deflate.js\\\\\\\\\\\\\\\":\\\\\\\\n/*!*********************************************************!*\\\\\\\\\\\\\\\\\\\\\\\\n !*** ./node_modules/geotiff/src/compression/deflate.js ***!\\\\\\\\n \\\\\\\\\\\\\\\\*********************************************************/\\\\\\\\n/*! exports provided: default */\\\\\\\\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\\\\\\\\n\\\\\\\\n\\\\\\\\\\\\\\\"use strict\\\\\\\\\\\\\\\";\\\\\\\\neval(\\\\\\\\\\\\\\\"__webpack_require__.r(__webpack_exports__);\\\\\\\\\\\\\\\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"default\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\", function() { return DeflateDecoder; });\\\\\\\\\\\\\\\\n/* harmony import */ var pako_lib_inflate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pako/lib/inflate */ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"./node_modules/pako/lib/inflate.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");\\\\\\\\\\\\\\\\n/* harmony import */ var pako_lib_inflate__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(pako_lib_inflate__WEBPACK_IMPORTED_MODULE_0__);\\\\\\\\\\\\\\\\n/* harmony import */ var _basedecoder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basedecoder */ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"./node_modules/geotiff/src/compression/basedecoder.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\nclass DeflateDecoder extends _basedecoder__WEBPACK_IMPORTED_MODULE_1__[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"default\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"] {\\\\\\\\\\\\\\\\n decodeBlock(buffer) {\\\\\\\\\\\\\\\\n return Object(pako_lib_inflate__WEBPACK_IMPORTED_MODULE_0__[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"inflate\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"])(new Uint8Array(buffer)).buffer;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n}\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n//# sourceURL=webpack://GeoRaster/./node_modules/geotiff/src/compression/deflate.js?\\\\\\\\\\\\\\\");\\\\\\\\n\\\\\\\\n/***/ }),\\\\\\\\n\\\\\\\\n/***/ \\\\\\\\\\\\\\\"./node_modules/geotiff/src/compression/index.js\\\\\\\\\\\\\\\":\\\\\\\\n/*!*******************************************************!*\\\\\\\\\\\\\\\\\\\\\\\\n !*** ./node_modules/geotiff/src/compression/index.js ***!\\\\\\\\n \\\\\\\\\\\\\\\\*******************************************************/\\\\\\\\n/*! exports provided: getDecoder */\\\\\\\\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\\\\\\\\n\\\\\\\\n\\\\\\\\\\\\\\\"use strict\\\\\\\\\\\\\\\";\\\\\\\\neval(\\\\\\\\\\\\\\\"__webpack_require__.r(__webpack_exports__);\\\\\\\\\\\\\\\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"getDecoder\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\", function() { return getDecoder; });\\\\\\\\\\\\\\\\n/* harmony import */ var _raw__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./raw */ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"./node_modules/geotiff/src/compression/raw.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");\\\\\\\\\\\\\\\\n/* harmony import */ var _lzw__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lzw */ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"./node_modules/geotiff/src/compression/lzw.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");\\\\\\\\\\\\\\\\n/* harmony import */ var _jpeg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jpeg */ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"./node_modules/geotiff/src/compression/jpeg.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");\\\\\\\\\\\\\\\\n/* harmony import */ var _deflate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./deflate */ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"./node_modules/geotiff/src/compression/deflate.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");\\\\\\\\\\\\\\\\n/* harmony import */ var _packbits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./packbits */ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"./node_modules/geotiff/src/compression/packbits.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\nfunction getDecoder(fileDirectory) {\\\\\\\\\\\\\\\\n switch (fileDirectory.Compression) {\\\\\\\\\\\\\\\\n case undefined:\\\\\\\\\\\\\\\\n case 1: // no compression\\\\\\\\\\\\\\\\n return new _raw__WEBPACK_IMPORTED_MODULE_0__[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"default\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]();\\\\\\\\\\\\\\\\n case 5: // LZW\\\\\\\\\\\\\\\\n return new _lzw__WEBPACK_IMPORTED_MODULE_1__[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"default\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]();\\\\\\\\\\\\\\\\n case 6: // JPEG\\\\\\\\\\\\\\\\n throw new Error('old style JPEG compression is not supported.');\\\\\\\\\\\\\\\\n case 7: // JPEG\\\\\\\\\\\\\\\\n return new _jpeg__WEBPACK_IMPORTED_MODULE_2__[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"default\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"](fileDirectory);\\\\\\\\\\\\\\\\n case 8: // Deflate as recognized by Adobe\\\\\\\\\\\\\\\\n case 32946: // Deflate GDAL default\\\\\\\\\\\\\\\\n return new _deflate__WEBPACK_IMPORTED_MODULE_3__[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"default\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]();\\\\\\\\\\\\\\\\n case 32773: // packbits\\\\\\\\\\\\\\\\n return new _packbits__WEBPACK_IMPORTED_MODULE_4__[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"default\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]();\\\\\\\\\\\\\\\\n default:\\\\\\\\\\\\\\\\n throw new Error(`Unknown compression method identifier: ${fileDirectory.Compression}`);\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n}\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n//# sourceURL=webpack://GeoRaster/./node_modules/geotiff/src/compression/index.js?\\\\\\\\\\\\\\\");\\\\\\\\n\\\\\\\\n/***/ }),\\\\\\\\n\\\\\\\\n/***/ \\\\\\\\\\\\\\\"./node_modules/geotiff/src/compression/jpeg.js\\\\\\\\\\\\\\\":\\\\\\\\n/*!******************************************************!*\\\\\\\\\\\\\\\\\\\\\\\\n !*** ./node_modules/geotiff/src/compression/jpeg.js ***!\\\\\\\\n \\\\\\\\\\\\\\\\******************************************************/\\\\\\\\n/*! exports provided: default */\\\\\\\\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\\\\\\\\n\\\\\\\\n\\\\\\\\\\\\\\\"use strict\\\\\\\\\\\\\\\";\\\\\\\\neval(\\\\\\\\\\\\\\\"__webpack_require__.r(__webpack_exports__);\\\\\\\\\\\\\\\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"default\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\", function() { return JpegDecoder; });\\\\\\\\\\\\\\\\n/* harmony import */ var _basedecoder__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basedecoder */ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"./node_modules/geotiff/src/compression/basedecoder.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n/* -*- tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- /\\\\\\\\\\\\\\\\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\\\\\\\\\\\\\\\\n/*\\\\\\\\\\\\\\\\n Copyright 2011 notmasteryet\\\\\\\\\\\\\\\\n Licensed under the Apache License, Version 2.0 (the \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"License\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");\\\\\\\\\\\\\\\\n you may not use this file except in compliance with the License.\\\\\\\\\\\\\\\\n You may obtain a copy of the License at\\\\\\\\\\\\\\\\n http://www.apache.org/licenses/LICENSE-2.0\\\\\\\\\\\\\\\\n Unless required by applicable law or agreed to in writing, software\\\\\\\\\\\\\\\\n distributed under the License is distributed on an \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"AS IS\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" BASIS,\\\\\\\\\\\\\\\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\\\\\\\\\\\\\\\n See the License for the specific language governing permissions and\\\\\\\\\\\\\\\\n limitations under the License.\\\\\\\\\\\\\\\\n*/\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n// - The JPEG specification can be found in the ITU CCITT Recommendation T.81\\\\\\\\\\\\\\\\n// (www.w3.org/Graphics/JPEG/itu-t81.pdf)\\\\\\\\\\\\\\\\n// - The JFIF specification can be found in the JPEG File Interchange Format\\\\\\\\\\\\\\\\n// (www.w3.org/Graphics/JPEG/jfif3.pdf)\\\\\\\\\\\\\\\\n// - The Adobe Application-Specific JPEG markers in the Supporting the DCT Filters\\\\\\\\\\\\\\\\n// in PostScript Level 2, Technical Note #5116\\\\\\\\\\\\\\\\n// (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\nconst dctZigZag = new Int32Array([\\\\\\\\\\\\\\\\n 0,\\\\\\\\\\\\\\\\n 1, 8,\\\\\\\\\\\\\\\\n 16, 9, 2,\\\\\\\\\\\\\\\\n 3, 10, 17, 24,\\\\\\\\\\\\\\\\n 32, 25, 18, 11, 4,\\\\\\\\\\\\\\\\n 5, 12, 19, 26, 33, 40,\\\\\\\\\\\\\\\\n 48, 41, 34, 27, 20, 13, 6,\\\\\\\\\\\\\\\\n 7, 14, 21, 28, 35, 42, 49, 56,\\\\\\\\\\\\\\\\n 57, 50, 43, 36, 29, 22, 15,\\\\\\\\\\\\\\\\n 23, 30, 37, 44, 51, 58,\\\\\\\\\\\\\\\\n 59, 52, 45, 38, 31,\\\\\\\\\\\\\\\\n 39, 46, 53, 60,\\\\\\\\\\\\\\\\n 61, 54, 47,\\\\\\\\\\\\\\\\n 55, 62,\\\\\\\\\\\\\\\\n 63,\\\\\\\\\\\\\\\\n]);\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\nconst dctCos1 = 4017; // cos(pi/16)\\\\\\\\\\\\\\\\nconst dctSin1 = 799; // sin(pi/16)\\\\\\\\\\\\\\\\nconst dctCos3 = 3406; // cos(3*pi/16)\\\\\\\\\\\\\\\\nconst dctSin3 = 2276; // sin(3*pi/16)\\\\\\\\\\\\\\\\nconst dctCos6 = 1567; // cos(6*pi/16)\\\\\\\\\\\\\\\\nconst dctSin6 = 3784; // sin(6*pi/16)\\\\\\\\\\\\\\\\nconst dctSqrt2 = 5793; // sqrt(2)\\\\\\\\\\\\\\\\nconst dctSqrt1d2 = 2896;// sqrt(2) / 2\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\nfunction buildHuffmanTable(codeLengths, values) {\\\\\\\\\\\\\\\\n let k = 0;\\\\\\\\\\\\\\\\n const code = [];\\\\\\\\\\\\\\\\n let length = 16;\\\\\\\\\\\\\\\\n while (length > 0 && !codeLengths[length - 1]) {\\\\\\\\\\\\\\\\n --length;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n code.push({ children: [], index: 0 });\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n let p = code[0];\\\\\\\\\\\\\\\\n let q;\\\\\\\\\\\\\\\\n for (let i = 0; i < length; i++) {\\\\\\\\\\\\\\\\n for (let j = 0; j < codeLengths[i]; j++) {\\\\\\\\\\\\\\\\n p = code.pop();\\\\\\\\\\\\\\\\n p.children[p.index] = values[k];\\\\\\\\\\\\\\\\n while (p.index > 0) {\\\\\\\\\\\\\\\\n p = code.pop();\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n p.index++;\\\\\\\\\\\\\\\\n code.push(p);\\\\\\\\\\\\\\\\n while (code.length <= i) {\\\\\\\\\\\\\\\\n code.push(q = { children: [], index: 0 });\\\\\\\\\\\\\\\\n p.children[p.index] = q.children;\\\\\\\\\\\\\\\\n p = q;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n k++;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n if (i + 1 < length) {\\\\\\\\\\\\\\\\n // p here points to last code\\\\\\\\\\\\\\\\n code.push(q = { children: [], index: 0 });\\\\\\\\\\\\\\\\n p.children[p.index] = q.children;\\\\\\\\\\\\\\\\n p = q;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n return code[0].children;\\\\\\\\\\\\\\\\n}\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\nfunction decodeScan(data, initialOffset,\\\\\\\\\\\\\\\\n frame, components, resetInterval,\\\\\\\\\\\\\\\\n spectralStart, spectralEnd,\\\\\\\\\\\\\\\\n successivePrev, successive) {\\\\\\\\\\\\\\\\n const { mcusPerLine, progressive } = frame;\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n const startOffset = initialOffset;\\\\\\\\\\\\\\\\n let offset = initialOffset;\\\\\\\\\\\\\\\\n let bitsData = 0;\\\\\\\\\\\\\\\\n let bitsCount = 0;\\\\\\\\\\\\\\\\n function readBit() {\\\\\\\\\\\\\\\\n if (bitsCount > 0) {\\\\\\\\\\\\\\\\n bitsCount--;\\\\\\\\\\\\\\\\n return (bitsData >> bitsCount) & 1;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n bitsData = data[offset++];\\\\\\\\\\\\\\\\n if (bitsData === 0xFF) {\\\\\\\\\\\\\\\\n const nextByte = data[offset++];\\\\\\\\\\\\\\\\n if (nextByte) {\\\\\\\\\\\\\\\\n throw new Error(`unexpected marker: ${((bitsData << 8) | nextByte).toString(16)}`);\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n // unstuff 0\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n bitsCount = 7;\\\\\\\\\\\\\\\\n return bitsData >>> 7;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n function decodeHuffman(tree) {\\\\\\\\\\\\\\\\n let node = tree;\\\\\\\\\\\\\\\\n let bit;\\\\\\\\\\\\\\\\n while ((bit = readBit()) !== null) { // eslint-disable-line no-cond-assign\\\\\\\\\\\\\\\\n node = node[bit];\\\\\\\\\\\\\\\\n if (typeof node === 'number') {\\\\\\\\\\\\\\\\n return node;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n if (typeof node !== 'object') {\\\\\\\\\\\\\\\\n throw new Error('invalid huffman sequence');\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n return null;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n function receive(initialLength) {\\\\\\\\\\\\\\\\n let length = initialLength;\\\\\\\\\\\\\\\\n let n = 0;\\\\\\\\\\\\\\\\n while (length > 0) {\\\\\\\\\\\\\\\\n const bit = readBit();\\\\\\\\\\\\\\\\n if (bit === null) {\\\\\\\\\\\\\\\\n return undefined;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n n = (n << 1) | bit;\\\\\\\\\\\\\\\\n --length;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n return n;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n function receiveAndExtend(length) {\\\\\\\\\\\\\\\\n const n = receive(length);\\\\\\\\\\\\\\\\n if (n >= 1 << (length - 1)) {\\\\\\\\\\\\\\\\n return n;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n return n + (-1 << length) + 1;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n function decodeBaseline(component, zz) {\\\\\\\\\\\\\\\\n const t = decodeHuffman(component.huffmanTableDC);\\\\\\\\\\\\\\\\n const diff = t === 0 ? 0 : receiveAndExtend(t);\\\\\\\\\\\\\\\\n component.pred += diff;\\\\\\\\\\\\\\\\n zz[0] = component.pred;\\\\\\\\\\\\\\\\n let k = 1;\\\\\\\\\\\\\\\\n while (k < 64) {\\\\\\\\\\\\\\\\n const rs = decodeHuffman(component.huffmanTableAC);\\\\\\\\\\\\\\\\n const s = rs & 15;\\\\\\\\\\\\\\\\n const r = rs >> 4;\\\\\\\\\\\\\\\\n if (s === 0) {\\\\\\\\\\\\\\\\n if (r < 15) {\\\\\\\\\\\\\\\\n break;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n k += 16;\\\\\\\\\\\\\\\\n } else {\\\\\\\\\\\\\\\\n k += r;\\\\\\\\\\\\\\\\n const z = dctZigZag[k];\\\\\\\\\\\\\\\\n zz[z] = receiveAndExtend(s);\\\\\\\\\\\\\\\\n k++;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n function decodeDCFirst(component, zz) {\\\\\\\\\\\\\\\\n const t = decodeHuffman(component.huffmanTableDC);\\\\\\\\\\\\\\\\n const diff = t === 0 ? 0 : (receiveAndExtend(t) << successive);\\\\\\\\\\\\\\\\n component.pred += diff;\\\\\\\\\\\\\\\\n zz[0] = component.pred;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n function decodeDCSuccessive(component, zz) {\\\\\\\\\\\\\\\\n zz[0] |= readBit() << successive;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n let eobrun = 0;\\\\\\\\\\\\\\\\n function decodeACFirst(component, zz) {\\\\\\\\\\\\\\\\n if (eobrun > 0) {\\\\\\\\\\\\\\\\n eobrun--;\\\\\\\\\\\\\\\\n return;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n let k = spectralStart;\\\\\\\\\\\\\\\\n const e = spectralEnd;\\\\\\\\\\\\\\\\n while (k <= e) {\\\\\\\\\\\\\\\\n const rs = decodeHuffman(component.huffmanTableAC);\\\\\\\\\\\\\\\\n const s = rs & 15;\\\\\\\\\\\\\\\\n const r = rs >> 4;\\\\\\\\\\\\\\\\n if (s === 0) {\\\\\\\\\\\\\\\\n if (r < 15) {\\\\\\\\\\\\\\\\n eobrun = receive(r) + (1 << r) - 1;\\\\\\\\\\\\\\\\n break;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n k += 16;\\\\\\\\\\\\\\\\n } else {\\\\\\\\\\\\\\\\n k += r;\\\\\\\\\\\\\\\\n const z = dctZigZag[k];\\\\\\\\\\\\\\\\n zz[z] = receiveAndExtend(s) * (1 << successive);\\\\\\\\\\\\\\\\n k++;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n let successiveACState = 0;\\\\\\\\\\\\\\\\n let successiveACNextValue;\\\\\\\\\\\\\\\\n function decodeACSuccessive(component, zz) {\\\\\\\\\\\\\\\\n let k = spectralStart;\\\\\\\\\\\\\\\\n const e = spectralEnd;\\\\\\\\\\\\\\\\n let r = 0;\\\\\\\\\\\\\\\\n while (k <= e) {\\\\\\\\\\\\\\\\n const z = dctZigZag[k];\\\\\\\\\\\\\\\\n const direction = zz[z] < 0 ? -1 : 1;\\\\\\\\\\\\\\\\n switch (successiveACState) {\\\\\\\\\\\\\\\\n case 0: { // initial state\\\\\\\\\\\\\\\\n const rs = decodeHuffman(component.huffmanTableAC);\\\\\\\\\\\\\\\\n const s = rs & 15;\\\\\\\\\\\\\\\\n r = rs >> 4;\\\\\\\\\\\\\\\\n if (s === 0) {\\\\\\\\\\\\\\\\n if (r < 15) {\\\\\\\\\\\\\\\\n eobrun = receive(r) + (1 << r);\\\\\\\\\\\\\\\\n successiveACState = 4;\\\\\\\\\\\\\\\\n } else {\\\\\\\\\\\\\\\\n r = 16;\\\\\\\\\\\\\\\\n successiveACState = 1;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n } else {\\\\\\\\\\\\\\\\n if (s !== 1) {\\\\\\\\\\\\\\\\n throw new Error('invalid ACn encoding');\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n successiveACNextValue = receiveAndExtend(s);\\\\\\\\\\\\\\\\n successiveACState = r ? 2 : 3;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n continue; // eslint-disable-line no-continue\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n case 1: // skipping r zero items\\\\\\\\\\\\\\\\n case 2:\\\\\\\\\\\\\\\\n if (zz[z]) {\\\\\\\\\\\\\\\\n zz[z] += (readBit() << successive) * direction;\\\\\\\\\\\\\\\\n } else {\\\\\\\\\\\\\\\\n r--;\\\\\\\\\\\\\\\\n if (r === 0) {\\\\\\\\\\\\\\\\n successiveACState = successiveACState === 2 ? 3 : 0;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n break;\\\\\\\\\\\\\\\\n case 3: // set value for a zero item\\\\\\\\\\\\\\\\n if (zz[z]) {\\\\\\\\\\\\\\\\n zz[z] += (readBit() << successive) * direction;\\\\\\\\\\\\\\\\n } else {\\\\\\\\\\\\\\\\n zz[z] = successiveACNextValue << successive;\\\\\\\\\\\\\\\\n successiveACState = 0;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n break;\\\\\\\\\\\\\\\\n case 4: // eob\\\\\\\\\\\\\\\\n if (zz[z]) {\\\\\\\\\\\\\\\\n zz[z] += (readBit() << successive) * direction;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n break;\\\\\\\\\\\\\\\\n default:\\\\\\\\\\\\\\\\n break;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n k++;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n if (successiveACState === 4) {\\\\\\\\\\\\\\\\n eobrun--;\\\\\\\\\\\\\\\\n if (eobrun === 0) {\\\\\\\\\\\\\\\\n successiveACState = 0;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n function decodeMcu(component, decodeFunction, mcu, row, col) {\\\\\\\\\\\\\\\\n const mcuRow = (mcu / mcusPerLine) | 0;\\\\\\\\\\\\\\\\n const mcuCol = mcu % mcusPerLine;\\\\\\\\\\\\\\\\n const blockRow = (mcuRow * component.v) + row;\\\\\\\\\\\\\\\\n const blockCol = (mcuCol * component.h) + col;\\\\\\\\\\\\\\\\n decodeFunction(component, component.blocks[blockRow][blockCol]);\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n function decodeBlock(component, decodeFunction, mcu) {\\\\\\\\\\\\\\\\n const blockRow = (mcu / component.blocksPerLine) | 0;\\\\\\\\\\\\\\\\n const blockCol = mcu % component.blocksPerLine;\\\\\\\\\\\\\\\\n decodeFunction(component, component.blocks[blockRow][blockCol]);\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n const componentsLength = components.length;\\\\\\\\\\\\\\\\n let component;\\\\\\\\\\\\\\\\n let i;\\\\\\\\\\\\\\\\n let j;\\\\\\\\\\\\\\\\n let k;\\\\\\\\\\\\\\\\n let n;\\\\\\\\\\\\\\\\n let decodeFn;\\\\\\\\\\\\\\\\n if (progressive) {\\\\\\\\\\\\\\\\n if (spectralStart === 0) {\\\\\\\\\\\\\\\\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\\\\\\\\\\\\\\\\n } else {\\\\\\\\\\\\\\\\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n } else {\\\\\\\\\\\\\\\\n decodeFn = decodeBaseline;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n let mcu = 0;\\\\\\\\\\\\\\\\n let marker;\\\\\\\\\\\\\\\\n let mcuExpected;\\\\\\\\\\\\\\\\n if (componentsLength === 1) {\\\\\\\\\\\\\\\\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\\\\\\\\\\\\\\\\n } else {\\\\\\\\\\\\\\\\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n const usedResetInterval = resetInterval || mcuExpected;\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n while (mcu < mcuExpected) {\\\\\\\\\\\\\\\\n // reset interval stuff\\\\\\\\\\\\\\\\n for (i = 0; i < componentsLength; i++) {\\\\\\\\\\\\\\\\n components[i].pred = 0;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n eobrun = 0;\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n if (componentsLength === 1) {\\\\\\\\\\\\\\\\n component = components[0];\\\\\\\\\\\\\\\\n for (n = 0; n < usedResetInterval; n++) {\\\\\\\\\\\\\\\\n decodeBlock(component, decodeFn, mcu);\\\\\\\\\\\\\\\\n mcu++;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n } else {\\\\\\\\\\\\\\\\n for (n = 0; n < usedResetInterval; n++) {\\\\\\\\\\\\\\\\n for (i = 0; i < componentsLength; i++) {\\\\\\\\\\\\\\\\n component = components[i];\\\\\\\\\\\\\\\\n const { h, v } = component;\\\\\\\\\\\\\\\\n for (j = 0; j < v; j++) {\\\\\\\\\\\\\\\\n for (k = 0; k < h; k++) {\\\\\\\\\\\\\\\\n decodeMcu(component, decodeFn, mcu, j, k);\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n mcu++;\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // If we've reached our expected MCU's, stop decoding\\\\\\\\\\\\\\\\n if (mcu === mcuExpected) {\\\\\\\\\\\\\\\\n break;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // find marker\\\\\\\\\\\\\\\\n bitsCount = 0;\\\\\\\\\\\\\\\\n marker = (data[offset] << 8) | data[offset + 1];\\\\\\\\\\\\\\\\n if (marker < 0xFF00) {\\\\\\\\\\\\\\\\n throw new Error('marker was not found');\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n if (marker >= 0xFFD0 && marker <= 0xFFD7) { // RSTx\\\\\\\\\\\\\\\\n offset += 2;\\\\\\\\\\\\\\\\n } else {\\\\\\\\\\\\\\\\n break;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n return offset - startOffset;\\\\\\\\\\\\\\\\n}\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\nfunction buildComponentData(frame, component) {\\\\\\\\\\\\\\\\n const lines = [];\\\\\\\\\\\\\\\\n const { blocksPerLine, blocksPerColumn } = component;\\\\\\\\\\\\\\\\n const samplesPerLine = blocksPerLine << 3;\\\\\\\\\\\\\\\\n const R = new Int32Array(64);\\\\\\\\\\\\\\\\n const r = new Uint8Array(64);\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // A port of poppler's IDCT method which in turn is taken from:\\\\\\\\\\\\\\\\n // Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\\\\\\\\\\\\\\\\n // \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"Practical Fast 1-D DCT Algorithms with 11 Multiplications\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\n // IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\\\\\\\\\\\\\\\\n // 988-991.\\\\\\\\\\\\\\\\n function quantizeAndInverse(zz, dataOut, dataIn) {\\\\\\\\\\\\\\\\n const qt = component.quantizationTable;\\\\\\\\\\\\\\\\n let v0;\\\\\\\\\\\\\\\\n let v1;\\\\\\\\\\\\\\\\n let v2;\\\\\\\\\\\\\\\\n let v3;\\\\\\\\\\\\\\\\n let v4;\\\\\\\\\\\\\\\\n let v5;\\\\\\\\\\\\\\\\n let v6;\\\\\\\\\\\\\\\\n let v7;\\\\\\\\\\\\\\\\n let t;\\\\\\\\\\\\\\\\n const p = dataIn;\\\\\\\\\\\\\\\\n let i;\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // dequant\\\\\\\\\\\\\\\\n for (i = 0; i < 64; i++) {\\\\\\\\\\\\\\\\n p[i] = zz[i] * qt[i];\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // inverse DCT on rows\\\\\\\\\\\\\\\\n for (i = 0; i < 8; ++i) {\\\\\\\\\\\\\\\\n const row = 8 * i;\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // check for all-zero AC coefficients\\\\\\\\\\\\\\\\n if (p[1 + row] === 0 && p[2 + row] === 0 && p[3 + row] === 0\\\\\\\\\\\\\\\\n && p[4 + row] === 0 && p[5 + row] === 0 && p[6 + row] === 0\\\\\\\\\\\\\\\\n && p[7 + row] === 0) {\\\\\\\\\\\\\\\\n t = ((dctSqrt2 * p[0 + row]) + 512) >> 10;\\\\\\\\\\\\\\\\n p[0 + row] = t;\\\\\\\\\\\\\\\\n p[1 + row] = t;\\\\\\\\\\\\\\\\n p[2 + row] = t;\\\\\\\\\\\\\\\\n p[3 + row] = t;\\\\\\\\\\\\\\\\n p[4 + row] = t;\\\\\\\\\\\\\\\\n p[5 + row] = t;\\\\\\\\\\\\\\\\n p[6 + row] = t;\\\\\\\\\\\\\\\\n p[7 + row] = t;\\\\\\\\\\\\\\\\n continue; // eslint-disable-line no-continue\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // stage 4\\\\\\\\\\\\\\\\n v0 = ((dctSqrt2 * p[0 + row]) + 128) >> 8;\\\\\\\\\\\\\\\\n v1 = ((dctSqrt2 * p[4 + row]) + 128) >> 8;\\\\\\\\\\\\\\\\n v2 = p[2 + row];\\\\\\\\\\\\\\\\n v3 = p[6 + row];\\\\\\\\\\\\\\\\n v4 = ((dctSqrt1d2 * (p[1 + row] - p[7 + row])) + 128) >> 8;\\\\\\\\\\\\\\\\n v7 = ((dctSqrt1d2 * (p[1 + row] + p[7 + row])) + 128) >> 8;\\\\\\\\\\\\\\\\n v5 = p[3 + row] << 4;\\\\\\\\\\\\\\\\n v6 = p[5 + row] << 4;\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // stage 3\\\\\\\\\\\\\\\\n t = (v0 - v1 + 1) >> 1;\\\\\\\\\\\\\\\\n v0 = (v0 + v1 + 1) >> 1;\\\\\\\\\\\\\\\\n v1 = t;\\\\\\\\\\\\\\\\n t = ((v2 * dctSin6) + (v3 * dctCos6) + 128) >> 8;\\\\\\\\\\\\\\\\n v2 = ((v2 * dctCos6) - (v3 * dctSin6) + 128) >> 8;\\\\\\\\\\\\\\\\n v3 = t;\\\\\\\\\\\\\\\\n t = (v4 - v6 + 1) >> 1;\\\\\\\\\\\\\\\\n v4 = (v4 + v6 + 1) >> 1;\\\\\\\\\\\\\\\\n v6 = t;\\\\\\\\\\\\\\\\n t = (v7 + v5 + 1) >> 1;\\\\\\\\\\\\\\\\n v5 = (v7 - v5 + 1) >> 1;\\\\\\\\\\\\\\\\n v7 = t;\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // stage 2\\\\\\\\\\\\\\\\n t = (v0 - v3 + 1) >> 1;\\\\\\\\\\\\\\\\n v0 = (v0 + v3 + 1) >> 1;\\\\\\\\\\\\\\\\n v3 = t;\\\\\\\\\\\\\\\\n t = (v1 - v2 + 1) >> 1;\\\\\\\\\\\\\\\\n v1 = (v1 + v2 + 1) >> 1;\\\\\\\\\\\\\\\\n v2 = t;\\\\\\\\\\\\\\\\n t = ((v4 * dctSin3) + (v7 * dctCos3) + 2048) >> 12;\\\\\\\\\\\\\\\\n v4 = ((v4 * dctCos3) - (v7 * dctSin3) + 2048) >> 12;\\\\\\\\\\\\\\\\n v7 = t;\\\\\\\\\\\\\\\\n t = ((v5 * dctSin1) + (v6 * dctCos1) + 2048) >> 12;\\\\\\\\\\\\\\\\n v5 = ((v5 * dctCos1) - (v6 * dctSin1) + 2048) >> 12;\\\\\\\\\\\\\\\\n v6 = t;\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // stage 1\\\\\\\\\\\\\\\\n p[0 + row] = v0 + v7;\\\\\\\\\\\\\\\\n p[7 + row] = v0 - v7;\\\\\\\\\\\\\\\\n p[1 + row] = v1 + v6;\\\\\\\\\\\\\\\\n p[6 + row] = v1 - v6;\\\\\\\\\\\\\\\\n p[2 + row] = v2 + v5;\\\\\\\\\\\\\\\\n p[5 + row] = v2 - v5;\\\\\\\\\\\\\\\\n p[3 + row] = v3 + v4;\\\\\\\\\\\\\\\\n p[4 + row] = v3 - v4;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // inverse DCT on columns\\\\\\\\\\\\\\\\n for (i = 0; i < 8; ++i) {\\\\\\\\\\\\\\\\n const col = i;\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // check for all-zero AC coefficients\\\\\\\\\\\\\\\\n if (p[(1 * 8) + col] === 0 && p[(2 * 8) + col] === 0 && p[(3 * 8) + col] === 0\\\\\\\\\\\\\\\\n && p[(4 * 8) + col] === 0 && p[(5 * 8) + col] === 0 && p[(6 * 8) + col] === 0\\\\\\\\\\\\\\\\n && p[(7 * 8) + col] === 0) {\\\\\\\\\\\\\\\\n t = ((dctSqrt2 * dataIn[i + 0]) + 8192) >> 14;\\\\\\\\\\\\\\\\n p[(0 * 8) + col] = t;\\\\\\\\\\\\\\\\n p[(1 * 8) + col] = t;\\\\\\\\\\\\\\\\n p[(2 * 8) + col] = t;\\\\\\\\\\\\\\\\n p[(3 * 8) + col] = t;\\\\\\\\\\\\\\\\n p[(4 * 8) + col] = t;\\\\\\\\\\\\\\\\n p[(5 * 8) + col] = t;\\\\\\\\\\\\\\\\n p[(6 * 8) + col] = t;\\\\\\\\\\\\\\\\n p[(7 * 8) + col] = t;\\\\\\\\\\\\\\\\n continue; // eslint-disable-line no-continue\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // stage 4\\\\\\\\\\\\\\\\n v0 = ((dctSqrt2 * p[(0 * 8) + col]) + 2048) >> 12;\\\\\\\\\\\\\\\\n v1 = ((dctSqrt2 * p[(4 * 8) + col]) + 2048) >> 12;\\\\\\\\\\\\\\\\n v2 = p[(2 * 8) + col];\\\\\\\\\\\\\\\\n v3 = p[(6 * 8) + col];\\\\\\\\\\\\\\\\n v4 = ((dctSqrt1d2 * (p[(1 * 8) + col] - p[(7 * 8) + col])) + 2048) >> 12;\\\\\\\\\\\\\\\\n v7 = ((dctSqrt1d2 * (p[(1 * 8) + col] + p[(7 * 8) + col])) + 2048) >> 12;\\\\\\\\\\\\\\\\n v5 = p[(3 * 8) + col];\\\\\\\\\\\\\\\\n v6 = p[(5 * 8) + col];\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // stage 3\\\\\\\\\\\\\\\\n t = (v0 - v1 + 1) >> 1;\\\\\\\\\\\\\\\\n v0 = (v0 + v1 + 1) >> 1;\\\\\\\\\\\\\\\\n v1 = t;\\\\\\\\\\\\\\\\n t = ((v2 * dctSin6) + (v3 * dctCos6) + 2048) >> 12;\\\\\\\\\\\\\\\\n v2 = ((v2 * dctCos6) - (v3 * dctSin6) + 2048) >> 12;\\\\\\\\\\\\\\\\n v3 = t;\\\\\\\\\\\\\\\\n t = (v4 - v6 + 1) >> 1;\\\\\\\\\\\\\\\\n v4 = (v4 + v6 + 1) >> 1;\\\\\\\\\\\\\\\\n v6 = t;\\\\\\\\\\\\\\\\n t = (v7 + v5 + 1) >> 1;\\\\\\\\\\\\\\\\n v5 = (v7 - v5 + 1) >> 1;\\\\\\\\\\\\\\\\n v7 = t;\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // stage 2\\\\\\\\\\\\\\\\n t = (v0 - v3 + 1) >> 1;\\\\\\\\\\\\\\\\n v0 = (v0 + v3 + 1) >> 1;\\\\\\\\\\\\\\\\n v3 = t;\\\\\\\\\\\\\\\\n t = (v1 - v2 + 1) >> 1;\\\\\\\\\\\\\\\\n v1 = (v1 + v2 + 1) >> 1;\\\\\\\\\\\\\\\\n v2 = t;\\\\\\\\\\\\\\\\n t = ((v4 * dctSin3) + (v7 * dctCos3) + 2048) >> 12;\\\\\\\\\\\\\\\\n v4 = ((v4 * dctCos3) - (v7 * dctSin3) + 2048) >> 12;\\\\\\\\\\\\\\\\n v7 = t;\\\\\\\\\\\\\\\\n t = ((v5 * dctSin1) + (v6 * dctCos1) + 2048) >> 12;\\\\\\\\\\\\\\\\n v5 = ((v5 * dctCos1) - (v6 * dctSin1) + 2048) >> 12;\\\\\\\\\\\\\\\\n v6 = t;\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // stage 1\\\\\\\\\\\\\\\\n p[(0 * 8) + col] = v0 + v7;\\\\\\\\\\\\\\\\n p[(7 * 8) + col] = v0 - v7;\\\\\\\\\\\\\\\\n p[(1 * 8) + col] = v1 + v6;\\\\\\\\\\\\\\\\n p[(6 * 8) + col] = v1 - v6;\\\\\\\\\\\\\\\\n p[(2 * 8) + col] = v2 + v5;\\\\\\\\\\\\\\\\n p[(5 * 8) + col] = v2 - v5;\\\\\\\\\\\\\\\\n p[(3 * 8) + col] = v3 + v4;\\\\\\\\\\\\\\\\n p[(4 * 8) + col] = v3 - v4;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n // convert to 8-bit integers\\\\\\\\\\\\\\\\n for (i = 0; i < 64; ++i) {\\\\\\\\\\\\\\\\n const sample = 128 + ((p[i] + 8) >> 4);\\\\\\\\\\\\\\\\n if (sample < 0) {\\\\\\\\\\\\\\\\n dataOut[i] = 0;\\\\\\\\\\\\\\\\n } else if (sample > 0XFF) {\\\\\\\\\\\\\\\\n dataOut[i] = 0xFF;\\\\\\\\\\\\\\\\n } else {\\\\\\\\\\\\\\\\n dataOut[i] = sample;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\\\\\\\\\\\\\\\\n const scanLine = blockRow << 3;\\\\\\\\\\\\\\\\n for (let i = 0; i < 8; i++) {\\\\\\\\\\\\\\\\n lines.push(new Uint8Array(samplesPerLine));\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\\\\\\\\\\\\\\\\n quantizeAndInverse(component.blocks[blockRow][blockCol], r, R);\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n let offset = 0;\\\\\\\\\\\\\\\\n const sample = blockCol << 3;\\\\\\\\\\\\\\\\n for (let j = 0; j < 8; j++) {\\\\\\\\\\\\\\\\n const line = lines[scanLine + j];\\\\\\\\\\\\\\\\n for (let i = 0; i < 8; i++) {\\\\\\\\\\\\\\\\n line[sample + i] = r[offset++];\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n return lines;\\\\\\\\\\\\\\\\n}\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\nclass JpegStreamReader {\\\\\\\\\\\\\\\\n constructor() {\\\\\\\\\\\\\\\\n this.jfif = null;\\\\\\\\\\\\\\\\n this.adobe = null;\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n this.quantizationTables = [];\\\\\\\\\\\\\\\\n this.huffmanTablesAC = [];\\\\\\\\\\\\\\\\n this.huffmanTablesDC = [];\\\\\\\\\\\\\\\\n this.resetFrames();\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n resetFrames() {\\\\\\\\\\\\\\\\n this.frames = [];\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\\n parse(data) {\\\\\\\\\\\\\\\\n let offset = 0;\\\\\\\\\\\\\\\\n // const { length } = data;\\\\\\\\\\\\\\\\n function readUint16() {\\\\\\\\\\\\\\\\n const value = (data[offset] << 8) | data[offset + 1];\\\\\\\\\\\\\\\\n offset += 2;\\\\\\\\\\\\\\\\n return value;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n function readDataBlock() {\\\\\\\\\\\\\\\\n const length = readUint16();\\\\\\\\\\\\\\\\n const array = data.subarray(offset, offset + length - 2);\\\\\\\\\\\\\\\\n offset += array.length;\\\\\\\\\\\\\\\\n return array;\\\\\\\\\\\\\\\\n }\\\\\\\\\\\\\\\\n function prepareComponents(frame) {\\\\\\\\\\\\\\\\n let maxH = 0;\\\\\\\\\\\\\\\\n let maxV = 0;\\\\\\\\\\\\\\\\n let component;\\\\\\\\\\\\