js-dos 8.4.0 → 8.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/core-js/internals/a-callable.js","emulators.js","node_modules/core-js/internals/a-possible-prototype.js","node_modules/core-js/internals/an-object.js","node_modules/core-js/internals/array-buffer-basic-detection.js","node_modules/core-js/internals/array-buffer-view-core.js","node_modules/core-js/internals/classof-raw.js","node_modules/core-js/internals/classof.js","node_modules/core-js/internals/correct-prototype-getter.js","node_modules/core-js/internals/create-non-enumerable-property.js","node_modules/core-js/internals/create-property-descriptor.js","node_modules/core-js/internals/define-built-in-accessor.js","node_modules/core-js/internals/define-built-in.js","node_modules/core-js/internals/define-global-property.js","node_modules/core-js/internals/descriptors.js","node_modules/core-js/internals/document-all.js","node_modules/core-js/internals/document-create-element.js","node_modules/core-js/internals/engine-user-agent.js","node_modules/core-js/internals/engine-v8-version.js","node_modules/core-js/internals/fails.js","node_modules/core-js/internals/function-bind-native.js","node_modules/core-js/internals/function-call.js","node_modules/core-js/internals/function-name.js","node_modules/core-js/internals/function-uncurry-this-accessor.js","node_modules/core-js/internals/function-uncurry-this.js","node_modules/core-js/internals/get-built-in.js","node_modules/core-js/internals/get-method.js","node_modules/core-js/internals/global.js","node_modules/core-js/internals/has-own-property.js","node_modules/core-js/internals/hidden-keys.js","node_modules/core-js/internals/ie8-dom-define.js","node_modules/core-js/internals/inspect-source.js","node_modules/core-js/internals/internal-state.js","node_modules/core-js/internals/is-callable.js","node_modules/core-js/internals/is-null-or-undefined.js","node_modules/core-js/internals/is-object.js","node_modules/core-js/internals/is-pure.js","node_modules/core-js/internals/is-symbol.js","node_modules/core-js/internals/length-of-array-like.js","node_modules/core-js/internals/make-built-in.js","node_modules/core-js/internals/math-trunc.js","node_modules/core-js/internals/object-define-property.js","node_modules/core-js/internals/object-get-prototype-of.js","node_modules/core-js/internals/object-is-prototype-of.js","node_modules/core-js/internals/object-set-prototype-of.js","node_modules/core-js/internals/ordinary-to-primitive.js","node_modules/core-js/internals/require-object-coercible.js","node_modules/core-js/internals/shared-key.js","node_modules/core-js/internals/shared-store.js","node_modules/core-js/internals/shared.js","node_modules/core-js/internals/symbol-constructor-detection.js","node_modules/core-js/internals/to-integer-or-infinity.js","node_modules/core-js/internals/to-length.js","node_modules/core-js/internals/to-object.js","node_modules/core-js/internals/to-offset.js","node_modules/core-js/internals/to-positive-integer.js","node_modules/core-js/internals/to-primitive.js","node_modules/core-js/internals/to-property-key.js","node_modules/core-js/internals/to-string-tag-support.js","node_modules/core-js/internals/try-to-string.js","node_modules/core-js/internals/uid.js","node_modules/core-js/internals/use-symbol-as-uid.js","node_modules/core-js/internals/v8-prototype-define-bug.js","node_modules/core-js/internals/weak-map-basic-detection.js","node_modules/core-js/internals/well-known-symbol.js","node_modules/core-js/modules/es.typed-array.set.js","src/build.ts","src/dos/bundle/dos-bundle.ts","src/dos/dosbox/ts/audio-worklet.ts","src/dos/dosbox/ts/direct.ts","src/dos/dosbox/ts/worker.ts","src/emulators.ts","src/http.ts","src/impl/ci-impl.ts","src/impl/emulators-impl.ts","src/impl/modules.ts","src/libzip/libzip.ts","src/protocol/messages-queue.ts","src/protocol/protocol.ts"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","module","isCallable","tryToString","$TypeError","TypeError","argument","$String","String","isObject","ArrayBuffer","DataView","NAME","Constructor","Prototype","NATIVE_ARRAY_BUFFER","DESCRIPTORS","global","hasOwn","classof","createNonEnumerableProperty","defineBuiltIn","defineBuiltInAccessor","isPrototypeOf","getPrototypeOf","setPrototypeOf","wellKnownSymbol","uid","InternalStateModule","enforceInternalState","enforce","getInternalState","get","Int8Array","Int8ArrayPrototype","prototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","Object","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","getTypedArrayConstructor","it","proto","state","isTypedArray","klass","Function","configurable","this","undefined","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","property","forced","options","ARRAY","TypedArrayConstructor","error","error2","exportTypedArrayStaticMethod","isView","uncurryThis","toString","stringSlice","slice","TO_STRING_TAG_SUPPORT","classofRaw","$Object","CORRECT_ARGUMENTS","arguments","O","tag","result","key","tryGet","callee","fails","F","constructor","definePropertyModule","createPropertyDescriptor","object","value","bitmap","enumerable","writable","makeBuiltIn","defineProperty","target","name","descriptor","getter","set","setter","defineGlobalProperty","simple","unsafe","nonConfigurable","nonWritable","documentAll","document","all","IS_HTMLDDA","EXISTS","createElement","navigator","userAgent","match","version","process","Deno","versions","v8","split","exec","test","bind","hasOwnProperty","NATIVE_BIND","apply","FunctionPrototype","getDescriptor","getOwnPropertyDescriptor","PROPER","CONFIGURABLE","aCallable","method","uncurryThisWithBind","fn","aFunction","namespace","isNullOrUndefined","V","P","func","check","Math","globalThis","window","self","toObject","store","functionToString","inspectSource","has","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","metadata","facade","STATE","getterFor","TYPE","type","$documentAll","getBuiltIn","USE_SYMBOL_AS_UID","$Symbol","toLength","obj","CONFIGURABLE_FUNCTION_NAME","replace","join","CONFIGURABLE_LENGTH","TEMPLATE","arity","source","ceil","floor","trunc","x","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","current","CORRECT_PROTOTYPE_GETTER","IE_PROTO","uncurryThisAccessor","aPossiblePrototype","CORRECT_SETTER","Array","__proto__","input","pref","val","valueOf","keys","SHARED","IS_PURE","push","mode","copyright","license","V8_VERSION","getOwnPropertySymbols","symbol","Symbol","sham","number","toIntegerOrInfinity","min","requireObjectCoercible","toPositiveInteger","$RangeError","RangeError","BYTES","offset","isSymbol","getMethod","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","toPrimitive","id","postfix","random","NATIVE_SYMBOL","iterator","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","ArrayBufferViewCore","lengthOfArrayLike","toOffset","toIndexedObject","$set","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","array","TO_OBJECT_BUG","arrayLike","src","len","index","Build","buildSeed","size","gzSize","__importDefault","mod","__esModule","default","defaultConfig","libzip_1","http_1","build_1","dosboxConf","jsdosConf","sources","libzipWasm","autoexec","indexOf","_len","lines","_key","substring","extract","url","path","extractAll","async","overwriteConfig","instantiate","libzip","promises","resource","httpRequest","responseType","then","buffer","data","writeFile","readmeTxt","JSON","stringify","resources","Promise","zipToFs","bundle","zipFromFs","destroy","createAudioPort","blob","Blob","URL","createObjectURL","context","AudioContext","sampleRate","latencyHint","console","audioWorklet","addModule","node","AudioWorkletNode","numberOfInputs","numberOfOutputs","outputChannelCount","connect","destination","resumeWebAudio","resume","catch","addEventListener","once","capture","port","dosDirect","messages_queue_1","audio_worklet_1","wasmModule","sessionId","canvas","net","messagesQueue","MessagesQueue","handler","props","sleepHandler","postMessage","transportLayer","sendMessageToServer","messageHandler","initMessageHandler","newHandler","sendTo","exit","removeEventListener","passive","audioPort","callMain","dosWorker","workerUrl","response","fetch","status","statusText","localUrl","worker","Worker","onerror","filename","message","onmessage","transfer","revokeObjectURL","terminate","NetworkType","emulators_impl_1","emulators","resolve","reject","Xhr","success","fail","xhr","total","loaded","makeHttpRequest","progressListner","errorListener","XMLHttpRequest","open","setRequestHeader","overrideMimeType","evt","progress","onreadystatechange","onReadyStateChange","send","readyState","max","CommandInterfaceEventsImpl","onStdoutConsumers","delayedStdout","onFrameSizeConsumers","onFrameConsumers","onSoundPushConsumers","onExitConsumers","onMessageConsumers","delayedMessages","onNetworkConnectedConsumers","onNetworkDisconnectedConsumers","onUnloadConsumers","onStdout","consumer","next","fireStdout","onFrameSize","onFrame","onSoundPush","onExit","onMessage","msgType","args","onNetworkConnected","onNetworkDisconnected","onUnload","fireFrameSize","width","height","fireFrame","rgb","rgba","fireSoundPush","samples","fireExit","fireMessage","_this","fireNetworkConnected","networkType","address","fireNetworkDisconnected","fireUnload","modules_1","dos_bundle_1","direct_1","worker_1","protocol_1","pathPrefix","pathSuffix","wdosboxJs","wdosboxxJs","wdosboxxJsJspi","wasmModulesPromise","modules","wasmModules","readFile","parse","config","zipAddFile","init","dosboxDirect","dosboxWasm","dosbox","Date","now","backend","dosboxXDirect","dosboxxWasm","dosboxx","dosboxxJspi","ci","CommandInterfaceOverTransportLayer","isArray","err","setTimeout","WasmModulesImpl","make","dosboxWorker","loadWasmModule","host","wasmSupported","globals","compiled","WebAssembly","compile","wmodule","Module","of","Instance","imul","b","al","bl","fround","clz32","moduleName","onprogress","emModule","compiledModulePromise","CompiledNodeModule","loadWasmModuleNode","load","fromIndex","lastIndexOf","wIndex","isWasmUrl","indexOfJs","wasmUrl","binaryPromise","scriptPromise","binary","script","instantiateWasm","info","receiveInstance","env","instance","eval","CompiledBrowserModule","promise","loadWasmModuleBrowser","libzipPromise","dosboxPromise","dosboxxPromise","dosboxxJspiPromise","loadModule","initialModule","home","FS","ignorePermissions","chdirToHome","changedAfterMs","ptr","_zip_from_fs","HEAPU32","archive","HEAPU8","_free","zipArchive","filter","normalizeFilename","pathParts","createPath","chdir","withFilter","filterBuffer","filterLength","stringToUTF8","bytes","_malloc","retcode","_zip_to_fs","file","body","parts","trim","encoding","exists","lookupPath","_libzip_destroy","RegExp","substr","begin","end","part","archiveLength","archiveBuffer","fileLength","fileBuffer","ret","_zipfile_add","messages","ci_impl_1","maxDataChunkSize","startedAt","exited","frameWidth","frameHeight","freq","utf8Decoder","TextDecoder","transport","ready","persistPromise","persistResolve","exitPromise","exitResolve","eventsImpl","keyMatrix","configPromise","configResolve","panicMessages","connectPromise","connectResolve","connectReject","disconnectPromise","disconnectResolve","asyncifyStatsPromise","asyncifyStatsResolve","fsTreePromise","fsTreeResolve","fsGetFilePromise","fsGetFileResolve","fsGetFileParts","fsDeleteFilePromise","fsDeleteFileResolve","getRunningProgramPromise","getRunningProgramResolve","dataChunkPromise","dataChunkResolve","persistSockdrivesPromise","persistSockdrivesResolve","myPeerId","netSent","netRecv","netPollInterval","onServerMessage","peerId","setInterval","wait","recvBinary","sendClientMessage","sendBundles","encoder","TextEncoder","sendData","contents","sendDataChunk","bundleIndex","encode","fileEntry","dosConfig","token","sockdrivePreload","onErr","finally","onFrameLines","onLog","onWarn","onPersist","sockdrives","onSoundInit","onConfig","decode","onExtractProgress","extracted","count","cpuMetrics","partial","cpu","metrics","cpuMax","parseInt","emulatorSpeed","cpuUsed","frameSkip","fastForward","cpuSockdrive","cpuAuto","cpuSkip","sleepPattern","ratio","newCmax","ticksDone","ticksScheduled","fsTree","deleted","chunk","dataChunkKey","mergeChunks","log","sendBinary","retryFn","disconnect","drives","changes","writeUint32","container","urls","totalSize","persist","encodeSockdriveChanges","program","rgbaPtr","line","heapu8","start","soundFrequency","screenshot","frame","frameOffset","rgbaOffset","ImageData","simulateKeyPress","timeMs","keyCodes","forEach","keyCode","addKey","sendKeyEvent","pressed","sendMouseMotion","y","relative","sendMouseRelativeMotion","sendMouseButton","button","sendMouseSync","sendBackendEvent","payload","json","optOnlyChanges","onlyChanges","persistSockdrives","pause","mute","unmute","events","connected","clearInterval","networkConnect","networkDisconnect","asyncifyStats","reader","getReader","read","done","byteLength","sendFullDataChunk","pos","merged","getRunningProgram"],"mappings":"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","file":"emulators.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n",null,"var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.30.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.30.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw $RangeError('Wrong offset');\n return offset;\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","\n/* eslint-disable */\n// Autogenerated\n// -------------\n// gulpfile.ts/wasm.ts --> generateBuildInfo\n\nexport const Build = {\n version: \"8.4.0 (4acb79b41c497c20364b3f5efa11d44f)\",\n buildSeed: 1781869144337,\n \"wdosbox-x-jspi.wasm\": {\n \"size\": 7716284,\n \"gzSize\": 2703373\n },\n \"wdosbox-x-jspi.js\": {\n \"size\": 230214,\n \"gzSize\": 54298\n },\n \"wdosbox-x.wasm\": {\n \"size\": 7857437,\n \"gzSize\": 2753426\n },\n \"wdosbox-x.js\": {\n \"size\": 229414,\n \"gzSize\": 55196\n },\n \"wdosbox.wasm\": {\n \"size\": 1459705,\n \"gzSize\": 501642\n },\n \"wdosbox.js\": {\n \"size\": 110662,\n \"gzSize\": 29302\n },\n \"wlibzip.wasm\": {\n \"size\": 112483,\n \"gzSize\": 52219\n },\n \"wlibzip.js\": {\n \"size\": 72957,\n \"gzSize\": 19326\n }\n,\n};\n","// # DosBundle\n// Is a complete bundle that contains everything needed to start dosbox server\n\nimport LibZip from \"../../libzip/libzip\";\n\nimport { httpRequest } from \"../../http\";\n\nimport { WasmModule } from \"../../impl/modules\";\nimport { Build } from \"../../build\";\n\n// ### DosArchiveSource\nexport interface DosArchiveSource {\n // source (archive) to download and extract via `extractAll`\n\n // **url** where archive is located\n url: string;\n\n // **path**\n path: string;\n\n // **type**\n type?: \"zip\";\n // archive type, now only Zip is supported\n}\n\nexport default class DosBundle {\n public dosboxConf = defaultConfig;\n public jsdosConf = {\n version: Build.version,\n };\n public sources: DosArchiveSource[];\n\n private libzipWasm: WasmModule;\n\n constructor(libzipWasm: WasmModule) {\n this.sources = [];\n this.libzipWasm = libzipWasm;\n }\n\n autoexec(...lines: string[]): DosBundle {\n const index = this.dosboxConf.indexOf(\"[autoexec]\");\n this.dosboxConf = this.dosboxConf.substring(0, index) +\n \"[autoexec]\\nmount c .\\nc:\\n\" + lines.join(\"\\n\");\n return this;\n }\n\n extract(url: string, path = \"/\", type: \"zip\" = \"zip\"): DosBundle {\n // simplified version of extractAll, works only for one archive. It calls extractAll inside.\n return this.extractAll([{ url, path, type }]);\n }\n\n extractAll(sources: DosArchiveSource[]): DosBundle {\n // eslint-disable-next-line max-len\n // download given [`sources`](https://js-dos.com/6.22/docs/api/generate.html?page=jsdos-bundle#dosfs-dosarchivesource)\n // and extract them\n this.sources.push(...sources);\n return this;\n }\n\n async toUint8Array(overwriteConfig = false): Promise<Uint8Array> {\n const module = {};\n await this.libzipWasm.instantiate(module);\n const libzip = new LibZip(module);\n\n const promises = [];\n for (const source of this.sources) {\n if (source.type !== \"zip\") {\n throw new Error(\"Only Zip is supported\");\n }\n\n const resource = httpRequest(source.url, {\n responseType: \"arraybuffer\",\n }).then((buffer: string | ArrayBuffer) => {\n return {\n source,\n data: new Uint8Array(buffer as ArrayBuffer),\n };\n });\n\n promises.push(resource);\n }\n\n if (!overwriteConfig) {\n await libzip.writeFile(\".jsdos/dosbox.conf\", this.dosboxConf);\n await libzip.writeFile(\".jsdos/readme.txt\", readmeTxt);\n await libzip.writeFile(\".jsdos/jsdos.json\", JSON.stringify(this.jsdosConf, null, 2));\n }\n\n const resources = await Promise.all(promises);\n for (const resource of resources) {\n libzip.zipToFs(resource.data, resource.source.path);\n }\n\n if (overwriteConfig) {\n await libzip.writeFile(\".jsdos/dosbox.conf\", this.dosboxConf);\n await libzip.writeFile(\".jsdos/readme.txt\", readmeTxt);\n await libzip.writeFile(\".jsdos/jsdos.json\", JSON.stringify(this.jsdosConf, null, 2));\n }\n\n const bundle = await libzip.zipFromFs();\n libzip.destroy();\n\n return bundle;\n }\n}\n\n\nconst readmeTxt = `\nPlease visit our website:\n\n _ __\n (_)____ ____/ /___ _____ _________ ____ ___\n / / ___/_____/ __ / __ \\\\/ ___// ___/ __ \\\\/ __ \\`__ \\\\\n / (__ )_____/ /_/ / /_/ (__ )/ /__/ /_/ / / / / / /\n __/ /____/ \\\\__,_/\\\\____/____(_)___/\\\\____/_/ /_/ /_/\n /___/\n`.replace(/\\n/g, \"\\r\\n\");\n\n/* eslint-disable max-len */\nexport const defaultConfig = `[sdl]\nautolock=false\n\nfullscreen=false\nfulldouble=false\nfullresolution=original\nwindowresolution=original\noutput=surface\nsensitivity=100\nwaitonerror=true\npriority=higher,normal\nmapperfile=mapper-jsdos.map\nusescancodes=true\nvsync=false\n[dosbox]\nmachine=svga_s3\n\nlanguage=\ncaptures=capture\nmemsize=16\n[cpu]\ncore=auto\ncputype=auto\ncycles=auto\n\ncycleup=10\ncycledown=20\n[mixer]\nnosound=false\nrate=44100\n\nblocksize=1024\nprebuffer=20\n\n[render]\n# frameskip: How many frames DOSBox skips before drawing one.\n# aspect: Do aspect correction, if your output method doesn't support scaling this can slow things down!.\n# scaler: Scaler used to enlarge/enhance low resolution modes.\n# If 'forced' is appended, then the scaler will be used even if the result might not be desired.\n# Possible values: none, normal2x, normal3x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x.\n\nframeskip=0\naspect=false\nscaler=none\n\n[midi]\n# mpu401: Type of MPU-401 to emulate.\n# Possible values: intelligent, uart, none.\n# mididevice: Device that will receive the MIDI data from MPU-401.\n# Possible values: default, win32, alsa, oss, coreaudio, coremidi, none.\n# midiconfig: Special configuration options for the device driver. This is usually the id of the device you want to use.\n# See the README/Manual for more details.\n\nmpu401=intelligent\nmididevice=default\nmidiconfig=\n\n[sblaster]\n# sbtype: Type of Soundblaster to emulate. gb is Gameblaster.\n# Possible values: sb1, sb2, sbpro1, sbpro2, sb16, gb, none.\n# sbbase: The IO address of the soundblaster.\n# Possible values: 220, 240, 260, 280, 2a0, 2c0, 2e0, 300.\n# irq: The IRQ number of the soundblaster.\n# Possible values: 7, 5, 3, 9, 10, 11, 12.\n# dma: The DMA number of the soundblaster.\n# Possible values: 1, 5, 0, 3, 6, 7.\n# hdma: The High DMA number of the soundblaster.\n# Possible values: 1, 5, 0, 3, 6, 7.\n# sbmixer: Allow the soundblaster mixer to modify the DOSBox mixer.\n# oplmode: Type of OPL emulation. On 'auto' the mode is determined by sblaster type. All OPL modes are Adlib-compatible, except for 'cms'.\n# Possible values: auto, cms, opl2, dualopl2, opl3, none.\n# oplemu: Provider for the OPL emulation. compat might provide better quality (see oplrate as well).\n# Possible values: default, compat, fast.\n# oplrate: Sample rate of OPL music emulation. Use 49716 for highest quality (set the mixer rate accordingly).\n# Possible values: 44100, 49716, 48000, 32000, 22050, 16000, 11025, 8000.\n\nsbtype=sb16\nsbbase=220\nirq=7\ndma=1\nhdma=5\nsbmixer=true\noplmode=auto\noplemu=default\noplrate=44100\n\n[gus]\n# gus: Enable the Gravis Ultrasound emulation.\n# gusrate: Sample rate of Ultrasound emulation.\n# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.\n# gusbase: The IO base address of the Gravis Ultrasound.\n# Possible values: 240, 220, 260, 280, 2a0, 2c0, 2e0, 300.\n# gusirq: The IRQ number of the Gravis Ultrasound.\n# Possible values: 5, 3, 7, 9, 10, 11, 12.\n# gusdma: The DMA channel of the Gravis Ultrasound.\n# Possible values: 3, 0, 1, 5, 6, 7.\n# ultradir: Path to Ultrasound directory. In this directory\n# there should be a MIDI directory that contains\n# the patch files for GUS playback. Patch sets used\n# with Timidity should work fine.\n\ngus=false\ngusrate=44100\ngusbase=240\ngusirq=5\ngusdma=3\nultradir=C:\\\\ULTRASND\n\n[speaker]\n# pcspeaker: Enable PC-Speaker emulation.\n# pcrate: Sample rate of the PC-Speaker sound generation.\n# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.\n# tandy: Enable Tandy Sound System emulation. For 'auto', emulation is present only if machine is set to 'tandy'.\n# Possible values: auto, on, off.\n# tandyrate: Sample rate of the Tandy 3-Voice generation.\n# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.\n# disney: Enable Disney Sound Source emulation. (Covox Voice Master and Speech Thing compatible).\n\npcspeaker=true\npcrate=44100\ntandy=auto\ntandyrate=44100\ndisney=true\n\n[joystick]\n# joysticktype: Type of joystick to emulate: auto (default), none,\n# 2axis (supports two joysticks),\n# 4axis (supports one joystick, first joystick used),\n# 4axis_2 (supports one joystick, second joystick used),\n# fcs (Thrustmaster), ch (CH Flightstick).\n# none disables joystick emulation.\n# auto chooses emulation depending on real joystick(s).\n# (Remember to reset dosbox's mapperfile if you saved it earlier)\n# Possible values: auto, 2axis, 4axis, 4axis_2, fcs, ch, none.\n# timed: enable timed intervals for axis. Experiment with this option, if your joystick drifts (away).\n# autofire: continuously fires as long as you keep the button pressed.\n# swap34: swap the 3rd and the 4th axis. can be useful for certain joysticks.\n# buttonwrap: enable button wrapping at the number of emulated buttons.\n\njoysticktype=auto\ntimed=true\nautofire=false\nswap34=false\nbuttonwrap=false\n\n[serial]\n# serial1: set type of device connected to com port.\n# Can be disabled, dummy, modem, nullmodem, directserial.\n# Additional parameters must be in the same line in the form of\n# parameter:value. Parameter for all types is irq (optional).\n# for directserial: realport (required), rxdelay (optional).\n# (realport:COM1 realport:ttyS0).\n# for modem: listenport (optional).\n# for nullmodem: server, rxdelay, txdelay, telnet, usedtr,\n# transparent, port, inhsocket (all optional).\n# Example: serial1=modem listenport:5000\n# Possible values: dummy, disabled, modem, nullmodem, directserial.\n# serial2: see serial1\n# Possible values: dummy, disabled, modem, nullmodem, directserial.\n# serial3: see serial1\n# Possible values: dummy, disabled, modem, nullmodem, directserial.\n# serial4: see serial1\n# Possible values: dummy, disabled, modem, nullmodem, directserial.\n\nserial1=dummy\nserial2=dummy\nserial3=disabled\nserial4=disabled\n\n[dos]\n# xms: Enable XMS support.\n# ems: Enable EMS support.\n# umb: Enable UMB support.\n# keyboardlayout: Language code of the keyboard layout (or none).\n\nxms=true\nems=true\numb=true\nkeyboardlayout=auto\n\n[ipx]\n# ipx: Enable ipx over UDP/IP emulation.\n\nipx=true\n[autoexec]\necho off\nmount c .\nc:\n\ntype jsdos~1/readme.txt\necho on\n\n# Generated using https://js-dos.com\n# █▀▀▀▀▀█ █ ▄▄▄▀▀█ █▀▀▀▀▀█\n# █ ███ █ ██▄ █ ▀ ▄ █ ███ █\n# █ ▀▀▀ █ ▄██ ▀ ▀▀█ █ ▀▀▀ █\n# ▀▀▀▀▀▀▀ ▀ █▄▀▄▀ █ ▀▀▀▀▀▀▀\n# █▀▄▄█▀▀▄▄ ▀ ▀█▄▄▄▄ ▀▄█▀█▀\n# █▀ ▀ ▀▀▄ █▀ ▄ ▄▀▀▀▄ █▀█▄\n# ▄ ▄▄ █▀▀▄ ▄▀▄▀▀█ ▀▀▄▀▀█▀\n# ▄▀▀█▀▀ █▀█▀█▀▀▄ ▀██▀█▄\n# ▀▀▀ ▀ ▀ █▄█ ▀█▄▄█▀▀▀█▀▀\n# █▀▀▀▀▀█ ▄▄▄ ▄ ▄ █ ▀ █▄▄▄▄\n# █ ███ █ ▀█▀▀▄▀▀▄████▀▀█▄█\n# █ ▀▀▀ █ ▄▀▀█▀█▀▄ ▀▀▄▄█▄█\n# ▀▀▀▀▀▀▀ ▀ ▀▀ ▀ ▀ ▀▀▀\n`.replace(/\\n/g, \"\\r\\n\");\n\n/* eslint-enable max-len */\n","\nexport async function createAudioPort(): Promise<MessagePort | undefined> {\n try {\n const blob = new Blob([code], { type: \"application/javascript\" });\n const url = URL.createObjectURL(blob);\n const context = new AudioContext({\n sampleRate: 44100,\n latencyHint: \"interactive\",\n });\n if (context.sampleRate !== 44100) {\n console.error(\"sample rate is\", context.sampleRate, \"expected 44100, can't create worklet\");\n return undefined;\n }\n await context.audioWorklet.addModule(url);\n const node = new AudioWorkletNode(context, \"jsdos-audio\", {\n numberOfInputs: 0,\n numberOfOutputs: 1,\n outputChannelCount: [1],\n });\n node.connect(context.destination);\n\n const resumeWebAudio = () => {\n if (context !== null && context.state === \"suspended\") {\n context.resume().catch(console.error);\n }\n };\n document.addEventListener(\"pointerdown\", resumeWebAudio, { once: true, capture: true });\n document.addEventListener(\"keydown\", resumeWebAudio, { once: true, capture: true });\n\n return node.port;\n } catch (e) {\n console.error(\"error creating audio port\", e);\n return undefined;\n }\n}\n\nconst code = ` \nclass SamplesQueue {\n constructor() {\n this.samplesQueue = [];\n this.started = false;\n }\n\n push(samples) {\n if (this.started) {\n this.samplesQueue.push(samples);\n }\n if (this.length() > 8192) {\n console.error(\"samples queue is too long, dropping samples\");\n this.samplesQueue = [samples];\n }\n }\n\n length() {\n let total = 0;\n for (const next of this.samplesQueue) {\n total += next.length;\n }\n return total;\n }\n\n writeTo(dst, bufferSize) {\n this.started = true;\n let writeIt = 0;\n while (this.samplesQueue.length > 0) {\n const src = this.samplesQueue[0];\n const toRead = Math.min(bufferSize - writeIt, src.length);\n if (toRead === src.length) {\n dst.set(src, writeIt);\n this.samplesQueue.shift();\n } else {\n dst.set(src.slice(0, toRead), writeIt);\n this.samplesQueue[0] = src.slice(toRead);\n }\n\n writeIt += toRead;\n\n if (writeIt === bufferSize) {\n break;\n }\n }\n\n if (writeIt < bufferSize) {\n dst.fill(0, writeIt);\n }\n }\n}\n\nclass Processor extends AudioWorkletProcessor {\n constructor() {\n super();\n this.queue = new SamplesQueue();\n \n this.port.onmessage = (e) => {\n const chunk = e.data;\n if (chunk instanceof Float32Array) {\n this.queue.push(chunk);\n }\n };\n }\n \n process(inputs, outputs) {\n const output = outputs[0][0];\n this.queue.writeTo(output, output.length);\n return true;\n }\n}\n \nregisterProcessor('jsdos-audio', Processor);\n`;\n","import { WasmModule } from \"../../../impl/modules\";\nimport { TransportLayer, MessageHandler, ClientMessage, ServerMessage, Net } from \"../../../protocol/protocol\";\nimport { MessagesQueue } from \"../../../protocol/messages-queue\";\nimport { createAudioPort } from \"./audio-worklet\";\n\nexport async function dosDirect(wasmModule: WasmModule,\n sessionId: string,\n canvas?: OffscreenCanvas,\n audioWorklet?: boolean,\n net?: Net): Promise<TransportLayer> {\n const messagesQueue = new MessagesQueue();\n let handler: MessageHandler = messagesQueue.handler.bind(messagesQueue);\n\n const module: any = {};\n\n module.postMessage = (name: ServerMessage, props: { [key: string]: any }) => {\n handler(name, props);\n };\n\n const sleepHandler = (e: MessageEvent) => {\n const data = e.data;\n if (data?.name === \"ws-sync-sleep\" && data.props.sessionId === sessionId) {\n postMessage({ name: \"wc-sync-sleep\", props: data.props }, \"*\");\n }\n };\n\n\n const transportLayer: TransportLayer = {\n sessionId,\n sendMessageToServer: (name: ClientMessage, props?: { [key: string]: any }) => {\n module.messageHandler({ data: { name, props } });\n },\n initMessageHandler: (newHandler: MessageHandler) => {\n handler = newHandler;\n messagesQueue.sendTo(handler);\n },\n exit: () => {\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\"message\", sleepHandler);\n }\n },\n net: net ?? null,\n };\n\n (transportLayer as any).module = module;\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"message\", sleepHandler, { passive: true });\n }\n\n module.canvas = canvas;\n if (audioWorklet) {\n module.audioPort = await createAudioPort();\n }\n await wasmModule.instantiate(module);\n module.callMain([sessionId]);\n\n return transportLayer;\n}\n","import { WasmModule } from \"../../../impl/modules\";\nimport { TransportLayer, MessageHandler, ClientMessage, Net } from \"../../../protocol/protocol\";\nimport { MessagesQueue } from \"../../../protocol/messages-queue\";\nimport { createAudioPort } from \"./audio-worklet\";\n\nexport async function dosWorker(workerUrl: string,\n wasmModule: WasmModule,\n sessionId: string,\n canvas?: OffscreenCanvas,\n audioWorklet?: boolean,\n net?: Net): Promise<TransportLayer> {\n const messagesQueue = new MessagesQueue();\n let handler: MessageHandler = messagesQueue.handler.bind(messagesQueue);\n\n const response = await fetch(workerUrl);\n if (response.status !== 200) {\n throw new Error(\"Unable to download '\" + workerUrl + \"' (\" +\n response.status + \"): \" + response.statusText);\n }\n const localUrl = URL.createObjectURL(await response.blob());\n const worker = new Worker(localUrl);\n worker.onerror = (e) => {\n handler(\"ws-err\", { type: e.type, filename: e.filename, message: e.message });\n };\n worker.onmessage = (e) => {\n const data = e.data;\n if (data?.name !== undefined) {\n handler(data.name, data.props);\n }\n };\n\n const transportLayer: TransportLayer = {\n sessionId,\n sendMessageToServer: (name: ClientMessage,\n props: {[key: string]: any},\n transfer?: ArrayBuffer[]) => {\n if (transfer) {\n worker.postMessage({ name, props }, transfer);\n } else {\n worker.postMessage({ name, props });\n }\n },\n initMessageHandler: (newHandler: MessageHandler) => {\n handler = newHandler;\n messagesQueue.sendTo(handler);\n },\n exit: () => {\n URL.revokeObjectURL(localUrl);\n worker.terminate();\n },\n net: net ?? null,\n };\n\n const transfer: Transferable[] = canvas ? [canvas] : [];\n let audioPort;\n\n if (audioWorklet) {\n audioPort = await createAudioPort();\n if (audioPort) {\n transfer.push(audioPort);\n }\n }\n\n try {\n transportLayer.sendMessageToServer(\"wc-install\", {\n module: (wasmModule as any).wasmModule,\n sessionId,\n canvas,\n audioPort,\n }, transfer);\n } catch (e) {\n transportLayer.sendMessageToServer(\"wc-install\", {\n sessionId,\n canvas,\n audioPort,\n }, transfer);\n }\n\n return transportLayer;\n}\n","import DosBundle from \"./dos/bundle/dos-bundle\";\nimport emulatorsImpl from \"./impl/emulators-impl\";\n\nimport { AsyncifyStats, TransportLayer, FsNode, Net } from \"./protocol/protocol\";\n\nexport interface DosConfig {\n dosboxConf: string,\n jsdosConf: {\n version: string,\n },\n};\n\n/* eslint-disable no-unused-vars */\nexport enum NetworkType {\n NETWORK_DOSBOX_IPX = 0,\n}\n/* eslint-enable no-unused-vars */\n\nexport interface BackendOptions {\n token?: string | undefined;\n onExtractProgress?: (bundleIndex: number, file: string, extracted: number, total: number) => void;\n canvas?: OffscreenCanvas;\n audioWorklet?: boolean;\n sockdrivePreload?: \"all\" | \"default\" | \"none\";\n net?: Net;\n}\n\nexport type InitBundleEntry = Uint8Array;\nexport interface InitFileEntry {\n path: string,\n contents: Uint8Array,\n};\nexport type InitFsEntry = InitBundleEntry | InitFileEntry | DosConfig | string;\nexport type InitFs = InitFsEntry | InitFsEntry[];\n\nexport interface Emulators {\n // * pathPrefix - by default emulators will load wasm modules relatively from current path,\n // you should specify path prefix if you want to load them from different place\n pathPrefix: string;\n\n // * pathSuffix - suffix will be added to the end of each path\n pathSuffix: string;\n\n // * version - version of emulators build\n version: string;\n\n // * wdosboxJs - a file name to load\n wdosboxJs: string;\n\n // * dosBundle - create empty DosBundle\n bundle: () => Promise<DosBundle>;\n\n // * dosConfig - read bundle config\n bundleConfig: (bundle: InitBundleEntry) => Promise<DosConfig | null>;\n\n // * updateDosConfig - update bundle config\n bundleUpdateConfig: (bundle: InitBundleEntry, config: DosConfig) => Promise<Uint8Array>;\n\n // * dosboxNode - create dosbox node emulator backend\n dosboxNode: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * dosboxDirect - create dosbox direct emulator backend\n dosboxDirect: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * dosboxWorker - create dosbox worker emulator backend\n dosboxWorker: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * dosboxXNode - create dosbox-x node emulator backend\n dosboxXNode: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * dosboxDirect - create dosbox-x direct emulator backend\n dosboxXDirect: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * dosboxWorker - create dosbox-x worker emulator backend\n dosboxXWorker: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * dosboxWorker - create dosbox-x worker emulator backend (using jspi)\n dosboxXJspiWorker: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * backend - create abstract emulation backend by given TransportLayer\n backend: (init: InitFs, transportLayer: TransportLayer,\n options?: BackendOptions) => Promise<CommandInterface>;\n}\n\nexport interface CommandInterface {\n // * get bundle config\n config: () => Promise<DosConfig>;\n\n // * current render buffer width\n height: () => number;\n\n // * current render buffer height\n width: () => number;\n\n // * sound frequency\n soundFrequency: () => number;\n\n // * `screenshot()` - get screenshot of canvas as ImageData\n screenshot: () => Promise<ImageData>;\n\n // * `pause()` - pause emulation (also mute all sounds)\n pause: () => void;\n\n // * `resume()` - resume emulation (also unmute all sounds)\n resume: () => void;\n\n // * `mute()` - mute all sounds\n mute: () => void;\n\n // * `unmute()` - unmute all sounds\n unmute: () => void;\n\n // * `exit()` - exit from runtime\n exit: () => Promise<void>;\n\n // * `simulateKeyPress(...keyCodes)` - allows to simulate key press **AND** release event for key code\n // see `sendKeyPress` to find meaning of keyCode. Key combination is supported when more than 1 keyCode is set.\n simulateKeyPress: (...keyCodes: number[]) => void;\n\n // * `sendKeyEvent(keyCode, pressed)` - sends single key (press or release) event to backend\n sendKeyEvent: (keyCode: number, pressed: boolean) => void;\n\n // * `sendMouseMotion` - sends mouse motion event to backend, position is in range [0, 1]\n sendMouseMotion: (x: number, y: number) => void;\n\n // * `sendRelativeMotion` - sends mouse motion event to backend, position is absolute diff of position\n sendMouseRelativeMotion: (x: number, y: number) => void;\n\n // * `simulateMouseButton` - sends mouse button event (press or release) to backend\n sendMouseButton: (button: number, pressed: boolean) => void;\n\n // * `sendMouseSync` - sends mouse sync event\n sendMouseSync: () => void;\n\n // * `sendBackendEvent` - send event for current backend, event will be stringified to json\n // dosbox-x:\n // - 'hand_savestate' - save state of emulators\n // - 'hand_loadstate' - restore state of emulators\n // dosbox/dosbox-x:\n // - 'hand_ipx_startserver' - start IPX server\n sendBackendEvent: (event: any) => void;\n\n // dump FS as Uint8Array <zip archive> or sockdrive changes <not a zip archive>\n persist(onlyChanges?: boolean): Promise<Uint8Array | null>;\n\n // events\n events(): CommandInterfaceEvents;\n\n // network\n net(): Net | null;\n\n networkConnect(networkType: NetworkType, address: string): Promise<void>;\n\n networkDisconnect(networkType: NetworkType): Promise<void>;\n\n asyncifyStats(): Promise<AsyncifyStats>;\n\n fsTree(): Promise<FsNode>;\n\n fsReadFile(file: string): Promise<Uint8Array>;\n\n fsWriteFile(file: string, contents: ReadableStream<Uint8Array> | Uint8Array): Promise<void>;\n\n fsDeleteFile(file: string): Promise<boolean>;\n\n getRunningProgram(): Promise<string>;\n}\n\nexport type MessageType = \"log\" | \"warn\" | \"error\" | string;\n\nexport interface CommandInterfaceEvents {\n onStdout: (consumer: (message: string) => void) => void;\n onFrameSize: (consumer: (width: number, height: number) => void) => void;\n onFrame: (consumer: (rgb: Uint8Array | null, rgba: Uint8Array | null) => void) => void;\n onSoundPush: (consumer: (samples: Float32Array) => void) => void;\n onExit: (consumer: () => void) => void;\n\n onMessage: (consumer: (msgType: MessageType, ...args: any[]) => void) => void;\n\n onNetworkConnected: (consumer: (networkType: NetworkType, address: string) => void) => void;\n onNetworkDisconnected: (consumer: (networkType: NetworkType) => void) => void;\n\n onUnload: (consumer: () => Promise<void>) => void;\n}\n\nif (typeof window !== \"undefined\") {\n (window as any).emulators = emulatorsImpl;\n}\nif (typeof global !== \"undefined\") {\n (global as any).emulators = emulatorsImpl;\n}\n","export interface XhrOptions {\n method?: string;\n progress?: (total: number, loaded: number) => void;\n data?: string;\n responseType?: XMLHttpRequestResponseType;\n}\n\nexport const httpRequest = XhrRequest;\n\n// # XhrRequest\n// `XhrRequest` is small wrapper over XMLHttpRequest, that provides some\n// handy methods\nfunction XhrRequest(url: string, options: XhrOptions): Promise<string | ArrayBuffer> {\n return new Promise<string | ArrayBuffer>((resolve, reject) => {\n new Xhr(url, {\n ...options,\n success: resolve,\n fail: (message: string) => {\n reject(new Error(message));\n },\n });\n });\n}\n\n// private implementation\ninterface XhrOptionsInternal extends XhrOptions {\n success?: (response: any) => void;\n fail?: (message: string) => void;\n}\n// * `success` - callback when resource is downloaded\n// * `fail` - fail callback\n\n\n// Class Xhr does not have any public methods\nclass Xhr {\n private resource: string;\n private options: XhrOptionsInternal;\n private xhr: XMLHttpRequest | null = null;\n private total = 0;\n private loaded = 0;\n\n constructor(url: string, options: XhrOptionsInternal) {\n this.resource = url;\n this.options = options;\n this.options.method = options.method || \"GET\";\n\n if (this.options.method !== \"GET\") {\n throw new Error(\"Method \" + this.options.method + \" is not supported\");\n }\n\n this.makeHttpRequest();\n }\n\n private makeHttpRequest() {\n this.xhr = new XMLHttpRequest();\n this.xhr.open(this.options.method || \"GET\", this.resource, true);\n if (this.options.method === \"POST\") {\n this.xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n }\n this.xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n\n let progressListner;\n if (typeof (progressListner = this.xhr).addEventListener === \"function\") {\n progressListner.addEventListener(\"progress\", (evt) => {\n this.total = evt.total;\n this.loaded = evt.loaded;\n if (this.options.progress) {\n return this.options.progress(evt.total, evt.loaded);\n }\n });\n }\n\n let errorListener;\n if (typeof (errorListener = this.xhr).addEventListener === \"function\") {\n errorListener.addEventListener(\"error\", () => {\n if (this.options.fail) {\n this.options.fail(\"Unalbe to download '\" + this.resource +\n \"', code: \" + (this.xhr as XMLHttpRequest).status);\n return delete this.options.fail;\n }\n });\n }\n this.xhr.onreadystatechange = () => {\n return this.onReadyStateChange();\n };\n if (this.options.responseType) {\n this.xhr.responseType = this.options.responseType;\n }\n this.xhr.send(this.options.data);\n }\n\n private onReadyStateChange() {\n const xhr = (this.xhr as XMLHttpRequest);\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n if (this.options.success) {\n const total = Math.max(this.total, this.loaded);\n if (this.options.progress !== undefined) {\n this.options.progress(total, total);\n }\n\n return this.options.success(xhr.response);\n }\n } else if (this.options.fail) {\n this.options.fail(\"Unable to download '\" + this.resource + \"', code: \" + xhr.status);\n return delete this.options.fail;\n }\n }\n }\n}\n\n","/* eslint-disable no-invalid-this */\n\nimport { CommandInterfaceEvents, MessageType, NetworkType } from \"../emulators\";\n\nexport class CommandInterfaceEventsImpl implements CommandInterfaceEvents {\n private onStdoutConsumers: ((message: string) => void)[] = [];\n private delayedStdout: string[] = [];\n\n private onFrameSizeConsumers: ((width: number, height: number) => void)[] = [];\n private onFrameConsumers: ((rgb: Uint8Array | null, rgba: Uint8Array | null) => void)[] = [];\n private onSoundPushConsumers: ((samples: Float32Array) => void)[] = [];\n private onExitConsumers: (() => void)[] = [];\n\n private onMessageConsumers: ((msgType: MessageType, ...args: any[]) => void)[] = [];\n private delayedMessages: {msgType: MessageType, args: any[]}[] = [];\n\n private onNetworkConnectedConsumers: ((networkType: NetworkType, address: string) => void)[] = [];\n private onNetworkDisconnectedConsumers: ((networkType: NetworkType) => void)[] = [];\n\n private onUnloadConsumers: (() => Promise<void>)[] = [];\n\n onStdout = (consumer: (message: string) => void) => {\n this.onStdoutConsumers.push(consumer);\n\n if (this.onStdoutConsumers.length === 1) {\n for (const next of this.delayedStdout) {\n this.fireStdout(next);\n }\n this.delayedStdout = [];\n }\n };\n\n onFrameSize = (consumer: (width: number, height: number) => void) => {\n this.onFrameSizeConsumers.push(consumer);\n };\n\n onFrame = (consumer: (rgb: Uint8Array | null, rgba: Uint8Array | null) => void) => {\n this.onFrameConsumers.push(consumer);\n };\n\n onSoundPush = (consumer: (samples: Float32Array) => void) => {\n this.onSoundPushConsumers.push(consumer);\n };\n\n onExit = (consumer: () => void) => {\n this.onExitConsumers.push(consumer);\n };\n\n onMessage = (consumer: (msgType: MessageType, ...args: any[]) => void) => {\n this.onMessageConsumers.push(consumer);\n\n if (this.onMessageConsumers.length === 1) {\n for (const next of this.delayedMessages) {\n consumer(next.msgType, ...next.args);\n }\n this.delayedMessages = [];\n }\n };\n\n onNetworkConnected(consumer: (networkType: NetworkType, address: string) => void) {\n this.onNetworkConnectedConsumers.push(consumer);\n }\n\n onNetworkDisconnected(consumer: (networkType: NetworkType) => void) {\n this.onNetworkDisconnectedConsumers.push(consumer);\n }\n\n onUnload = (consumer: () => Promise<void>) => {\n this.onUnloadConsumers.push(consumer);\n };\n\n fireStdout = (message: string) => {\n if (this.onStdoutConsumers.length === 0) {\n this.delayedStdout.push(message);\n return;\n }\n\n for (const next of this.onStdoutConsumers) {\n next(message);\n }\n };\n\n fireFrameSize = (width: number, height: number) => {\n for (const next of this.onFrameSizeConsumers) {\n next(width, height);\n }\n };\n\n fireFrame = (rgb: Uint8Array | null, rgba: Uint8Array | null) => {\n for (const next of this.onFrameConsumers) {\n next(rgb, rgba);\n }\n };\n\n fireSoundPush = (samples: Float32Array) => {\n for (const next of this.onSoundPushConsumers) {\n next(samples);\n }\n };\n\n fireExit = () => {\n for (const next of this.onExitConsumers) {\n next();\n }\n\n this.onStdoutConsumers = [];\n this.onFrameSizeConsumers = [];\n this.onFrameConsumers = [];\n this.onSoundPushConsumers = [];\n this.onExitConsumers = [];\n this.onMessageConsumers = [];\n };\n\n fireMessage = (msgType: MessageType, ...args: any[]) => {\n if (this.onMessageConsumers.length === 0) {\n this.delayedMessages.push({ msgType, args });\n return;\n }\n\n for (const next of this.onMessageConsumers) {\n next(msgType, ...args);\n }\n };\n\n fireNetworkConnected = (networkType: NetworkType, address: string) => {\n for (const next of this.onNetworkConnectedConsumers) {\n next(networkType, address);\n }\n };\n\n fireNetworkDisconnected = (networkType: NetworkType) => {\n for (const next of this.onNetworkDisconnectedConsumers) {\n next(networkType);\n }\n };\n\n fireUnload = async () => {\n const promises = [];\n for (const next of this.onUnloadConsumers) {\n promises.push(next());\n }\n await Promise.all(promises);\n };\n}\n","import { Build } from \"../build\";\nimport { Emulators, CommandInterface, BackendOptions, DosConfig, InitFs, InitBundleEntry } from \"../emulators\";\n\nimport { IWasmModules, WasmModulesImpl } from \"./modules\";\n\nimport DosBundle from \"../dos/bundle/dos-bundle\";\nimport { dosDirect } from \"../dos/dosbox/ts/direct\";\nimport { dosWorker } from \"../dos/dosbox/ts/worker\";\n\nimport { TransportLayer, CommandInterfaceOverTransportLayer } from \"../protocol/protocol\";\nimport LibZip from \"../libzip/libzip\";\n\nclass EmulatorsImpl implements Emulators {\n pathPrefix = \"\";\n pathSuffix = \"\";\n version = Build.version;\n wdosboxJs = \"wdosbox.js\";\n wdosboxxJs = \"wdosbox-x.js\";\n wdosboxxJsJspi = \"wdosbox-x-jspi.js\";\n\n private wasmModulesPromise?: Promise<IWasmModules>;\n\n async bundle(): Promise<DosBundle> {\n const modules = await this.wasmModules();\n const libzipWasm = await modules.libzip();\n return new DosBundle(libzipWasm);\n }\n\n async bundleConfig(bundle: InitBundleEntry): Promise<DosConfig | null> {\n const modules = await this.wasmModules();\n const libzipWasm = await modules.libzip();\n\n const module = {};\n await libzipWasm.instantiate(module);\n const libzip = new LibZip(module);\n\n try {\n libzip.zipToFs(bundle, \"/\", \".jsdos/\");\n try {\n const dosboxConf = (await libzip.readFile(\".jsdos/dosbox.conf\")) as string;\n try {\n const jsdosConf = (await libzip.readFile(\".jsdos/jsdos.json\")) as string;\n return {\n dosboxConf,\n jsdosConf: JSON.parse(jsdosConf),\n };\n } catch (e) {\n // ignore\n }\n return {\n dosboxConf,\n jsdosConf: {\n version: Build.version,\n },\n };\n } catch (e) {\n // ignore\n }\n return null;\n } finally {\n libzip.destroy();\n }\n }\n\n async bundleUpdateConfig(bundle: InitBundleEntry, config: DosConfig): Promise<Uint8Array> {\n const modules = await this.wasmModules();\n const libzipWasm = await modules.libzip();\n\n const module = {};\n await libzipWasm.instantiate(module);\n const libzip = new LibZip(module);\n\n try {\n await libzip.writeFile(\"bundle.zip\", bundle);\n await libzip.writeFile(\".jsdos/dosbox.conf\", config.dosboxConf);\n await libzip.writeFile(\".jsdos/jsdos.json\", JSON.stringify(config.jsdosConf));\n await libzip.zipAddFile(\"bundle.zip\", \".jsdos/jsdos.json\");\n await libzip.zipAddFile(\"bundle.zip\", \".jsdos/dosbox.conf\");\n return (await libzip.readFile(\"bundle.zip\", \"binary\")) as Uint8Array;\n } finally {\n libzip.destroy();\n }\n }\n\n async dosboxNode(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n return this.dosboxDirect(init, options);\n }\n\n async dosboxDirect(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n const modules = await this.wasmModules();\n const dosboxWasm = await modules.dosbox();\n const transportLayer = await dosDirect(dosboxWasm, \"session-\" + Date.now(),\n options?.canvas, options?.audioWorklet, options?.net);\n return this.backend(init, transportLayer, options);\n }\n\n async dosboxWorker(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n const modules = await this.wasmModules();\n const dosboxWasm = await modules.dosbox();\n const transportLayer = await dosWorker(this.pathPrefix + this.wdosboxJs + this.pathSuffix,\n dosboxWasm, \"session-\" + Date.now(), options?.canvas, options?.audioWorklet, options?.net);\n return this.backend(init, transportLayer, options);\n }\n\n async dosboxXNode(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n return this.dosboxXDirect(init, options);\n }\n\n async dosboxXDirect(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n const modules = await this.wasmModules();\n const dosboxxWasm = await modules.dosboxx();\n const transportLayer = await dosDirect(dosboxxWasm, \"session-\" + Date.now(),\n options?.canvas, options?.audioWorklet, options?.net);\n return this.backend(init, transportLayer, options);\n }\n\n async dosboxXWorker(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n const modules = await this.wasmModules();\n const dosboxxWasm = await modules.dosboxx();\n const transportLayer = await dosWorker(this.pathPrefix + this.wdosboxxJs + this.pathSuffix,\n dosboxxWasm, \"session-\" + Date.now(), options?.canvas, options?.audioWorklet, options?.net);\n return this.backend(init, transportLayer, options);\n }\n\n async dosboxXJspiWorker(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n const modules = await this.wasmModules();\n const dosboxxWasm = await modules.dosboxxJspi();\n const transportLayer = await dosWorker(this.pathPrefix + this.wdosboxxJsJspi + this.pathSuffix,\n dosboxxWasm, \"session-\" + Date.now(), options?.canvas, options?.audioWorklet, options?.net);\n return this.backend(init, transportLayer, options);\n }\n\n async backend(init: InitFs, transportLayer: TransportLayer,\n options?: BackendOptions): Promise<CommandInterface> {\n return new Promise<CommandInterface>((resolve, reject) => {\n const ci = new CommandInterfaceOverTransportLayer(\n Array.isArray(init) ? init : [init],\n transportLayer,\n (err) => {\n if (err !== null) {\n reject(err);\n } else {\n // can be called from ctor, without timeout can be undefined\n setTimeout(() => resolve(ci), 4);\n }\n },\n options || {},\n );\n });\n }\n\n wasmModules(): Promise<IWasmModules> {\n if (this.wasmModulesPromise !== undefined) {\n return this.wasmModulesPromise;\n }\n\n const make = async () => {\n return new WasmModulesImpl(this.pathPrefix, this.pathSuffix, this.wdosboxJs,\n this.wdosboxxJs, this.wdosboxxJsJspi);\n };\n\n this.wasmModulesPromise = make();\n return this.wasmModulesPromise;\n }\n\n async dosDirect(init: InitFs): Promise<CommandInterface> {\n return this.dosboxDirect(init);\n }\n\n async dosWorker(init: InitFs): Promise<CommandInterface> {\n return this.dosboxWorker(init);\n }\n}\n\nconst emulators = new EmulatorsImpl();\n\nexport default emulators;\n","import { httpRequest } from \"../http\";\n\nexport interface WasmModule {\n instantiate: (module?: any) => Promise<any>;\n}\n\nexport interface IWasmModules {\n libzip: () => Promise<WasmModule>;\n dosbox: () => Promise<WasmModule>;\n dosboxx: () => Promise<WasmModule>;\n dosboxxJspi: () => Promise<WasmModule>;\n}\n\ninterface Globals {\n exports: {[moduleName: string]: any},\n module: {\n exports?: () => void,\n },\n compiled: {[moduleName: string]: Promise<WasmModule>},\n}\n\nclass Host {\n public wasmSupported = false;\n public globals: Globals;\n constructor() {\n this.globals = typeof window === \"undefined\" ? {} : window as any;\n if (!this.globals.module) {\n this.globals.module = {};\n }\n if (!this.globals.exports) {\n this.globals.exports = {};\n }\n if (!this.globals.compiled) {\n this.globals.compiled = {};\n }\n\n // ### WebAssembly\n // Host able to detect is WebAssembly supported or not,\n // this information is stored in `Host.wasmSupported` variable\n if (typeof WebAssembly === \"object\" &&\n typeof WebAssembly.instantiate === \"function\" &&\n typeof WebAssembly.compile === \"function\") {\n const wmodule = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n if (wmodule instanceof WebAssembly.Module) {\n this.wasmSupported = new WebAssembly.Instance(wmodule) instanceof WebAssembly.Instance;\n }\n }\n\n // Polyfill for old contains implementations for:\n // `Math.imul`, `Math.fround`, `Math.clz32`, `Math.trunc`\n (function polyfill() {\n if (!Math.imul || Math.imul(0xffffffff, 5) !== -5) {\n Math.imul = function imul(a: any, b: any) {\n const ah = a >>> 16;\n const al = a & 0xffff;\n const bh = b >>> 16;\n const bl = b & 0xffff;\n return (al * bl + ((ah * bl + al * bh) << 16)) | 0;\n };\n }\n Math.imul = Math.imul;\n\n if (!Math.fround) {\n Math.fround = function(x) {\n return x;\n };\n }\n Math.fround = Math.fround;\n\n if (!Math.clz32) {\n Math.clz32 = function(x) {\n x = x >>> 0;\n for (let i = 0; i < 32; i++) {\n if (x & (1 << (31 - i))) {\n return i;\n }\n }\n return 32;\n };\n }\n Math.clz32 = Math.clz32;\n\n if (!Math.trunc) {\n Math.trunc = function(x) {\n return x < 0 ? Math.ceil(x) : Math.floor(x);\n };\n }\n Math.trunc = Math.trunc;\n })();\n }\n}\n\nexport const host = new Host();\n\nexport class WasmModulesImpl implements IWasmModules {\n private pathPrefix: string;\n private pathSuffix: string;\n private wdosboxJs: string;\n private wdosboxxJs: string;\n private wdosboxxJsJspi: string;\n\n private libzipPromise?: Promise<WasmModule>;\n private dosboxPromise?: Promise<WasmModule>;\n private dosboxxPromise?: Promise<WasmModule>;\n private dosboxxJspiPromise?: Promise<WasmModule>;\n\n public wasmSupported = false;\n\n constructor(pathPrefix: string,\n pathSuffix: string,\n wdosboxJs: string,\n wdosboxxJs: string,\n wdosboxxJsJspi: string) {\n if (pathPrefix.length > 0 && pathPrefix[pathPrefix.length - 1] !== \"/\") {\n pathPrefix += \"/\";\n }\n\n this.pathPrefix = pathPrefix;\n this.pathSuffix = pathSuffix;\n this.wdosboxJs = wdosboxJs;\n this.wdosboxxJs = wdosboxxJs;\n this.wdosboxxJsJspi = wdosboxxJsJspi;\n }\n\n libzip() {\n if (this.libzipPromise !== undefined) {\n return this.libzipPromise;\n }\n\n this.libzipPromise = this.loadModule(this.pathPrefix + \"wlibzip.js\" + this.pathSuffix, \"WLIBZIP\");\n return this.libzipPromise;\n }\n\n dosbox() {\n if (this.dosboxPromise !== undefined) {\n return this.dosboxPromise;\n }\n\n this.dosboxPromise = this.loadModule(this.pathPrefix + this.wdosboxJs + this.pathSuffix, \"WDOSBOX\");\n\n return this.dosboxPromise;\n }\n\n dosboxx() {\n if (this.dosboxxPromise !== undefined) {\n return this.dosboxxPromise;\n }\n\n this.dosboxxPromise = this.loadModule(this.pathPrefix + this.wdosboxxJs + this.pathSuffix, \"WDOSBOXX\");\n\n return this.dosboxxPromise;\n }\n\n dosboxxJspi() {\n if (this.dosboxxJspiPromise !== undefined) {\n return this.dosboxxJspiPromise;\n }\n\n this.dosboxxJspiPromise = this\n .loadModule(this.pathPrefix + this.wdosboxxJsJspi + this.pathSuffix, \"WDOSBOXXJSPI\");\n return this.dosboxxJspiPromise;\n }\n\n private loadModule(url: string,\n moduleName: string) {\n // eslint-disable-next-line\n return loadWasmModule(url, moduleName, () => {});\n }\n}\n\nexport function loadWasmModule(url: string,\n moduleName: string,\n onprogress: (stage: string, total: number, loaded: number) => void,\n): Promise<WasmModule> {\n if (typeof XMLHttpRequest === \"undefined\") {\n return loadWasmModuleNode(url, moduleName, onprogress);\n } else {\n return loadWasmModuleBrowser(url, moduleName, onprogress);\n }\n}\n\nfunction loadWasmModuleNode(url: string,\n moduleName: string,\n // eslint-disable-next-line\n onprogress: (stage: string, total: number, loaded: number) => void) {\n if (host.globals.compiled[moduleName] !== undefined) {\n return host.globals.compiled[moduleName];\n }\n\n const emModule = require(url);\n const compiledModulePromise = Promise.resolve(new CompiledNodeModule(emModule));\n if (moduleName) {\n host.globals.compiled[moduleName] = compiledModulePromise;\n }\n\n return compiledModulePromise;\n}\n\nfunction loadWasmModuleBrowser(url: string,\n moduleName: string,\n onprogress: (stage: string, total: number, loaded: number) => void) {\n if (host.globals.compiled[moduleName] !== undefined) {\n return host.globals.compiled[moduleName];\n }\n\n async function load() {\n const fromIndex = url.lastIndexOf(\"/\");\n const wIndex = url.indexOf(\"w\", fromIndex);\n const isWasmUrl = wIndex === fromIndex + 1 && wIndex >= 0;\n\n if (!host.wasmSupported || !isWasmUrl) {\n throw new Error(\"Starting from js-dos 6.22.60 js environment is not supported\");\n }\n\n const indexOfJs = url.lastIndexOf(\".js\");\n const wasmUrl = url.substring(0, indexOfJs) + \".wasm\" + url.substring(indexOfJs + 3);\n const binaryPromise = httpRequest(wasmUrl, {\n responseType: \"arraybuffer\",\n progress: (total, loaded) => {\n onprogress(\"Resolving DosBox (\" + url + \")\", total, loaded);\n },\n });\n const scriptPromise = httpRequest(url, {\n progress: (total, loaded) => {\n onprogress(\"Resolving DosBox\", total, loaded);\n },\n });\n\n const [binary, script] = await Promise.all([binaryPromise, scriptPromise]);\n const wasmModule = await WebAssembly.compile(binary as ArrayBuffer);\n const instantiateWasm = (info: any, receiveInstance: any) => {\n info.env = info.env || {};\n return WebAssembly.instantiate(wasmModule, info)\n .then((instance) => receiveInstance(instance, wasmModule));\n };\n\n eval.call(window, script as string);\n host.globals.exports[moduleName] = host.globals.module.exports;\n\n return new CompiledBrowserModule(wasmModule,\n host.globals.exports[moduleName],\n instantiateWasm);\n }\n\n const promise = load();\n\n if (moduleName) {\n host.globals.compiled[moduleName] = promise;\n }\n\n return promise;\n}\n\nclass CompiledNodeModule implements WasmModule {\n private emModule: any;\n constructor(emModule: any) {\n this.emModule = emModule;\n }\n\n async instantiate(initialModule: any): Promise<void> {\n await this.emModule(initialModule);\n }\n}\n\nclass CompiledBrowserModule implements WasmModule {\n public wasmModule: WebAssembly.Module;\n private module: any;\n private instantiateWasm: any;\n\n constructor(wasmModule: WebAssembly.Module, module: any, instantiateWasm: any) {\n this.wasmModule = wasmModule;\n this.module = module;\n this.instantiateWasm = instantiateWasm;\n }\n\n async instantiate(initialModule: any): Promise<void> {\n initialModule.instantiateWasm = this.instantiateWasm;\n await this.module(initialModule);\n }\n}\n","export default class LibZip {\n public module: any;\n private home: string;\n\n constructor(module: any, home: string = \"/home/web_user\") {\n this.module = module;\n this.home = home;\n this.module.callMain([]);\n this.module.FS.ignorePermissions = true;\n this.chdirToHome();\n }\n\n zipFromFs(changedAfterMs = -1): Promise<Uint8Array> {\n this.chdirToHome();\n\n const ptr = this.module._zip_from_fs(changedAfterMs);\n if (ptr === 0) {\n return Promise.reject(new Error(\"Can't create zip, see more info in logs\"));\n }\n\n const length = this.module.HEAPU32[ptr / 4];\n const memory: Uint8Array = this.module.HEAPU8;\n const archive = memory.slice(ptr + 4, ptr + 4 + length);\n this.module._free(ptr);\n return Promise.resolve(archive);\n }\n\n zipToFs(zipArchive: Uint8Array, path = \"/\", filter?: string): Promise<void> {\n const Module = this.module;\n\n path = this.normalizeFilename(path);\n const pathParts = this.normalizeFilename(path).split(\"/\");\n this.createPath(pathParts, 0, pathParts.length);\n this.chdir(path);\n\n const withFilter = filter !== undefined && filter.length > 0;\n let filterBuffer = 0;\n if (withFilter) {\n const filterLength = Module[\"lengthBytesUTF8\"](filter) + 1;\n filterBuffer = Module[\"_malloc\"](filterLength);\n Module.stringToUTF8(filter, filterBuffer, filterLength);\n }\n\n const bytes = new Uint8Array(zipArchive);\n const buffer = Module._malloc(bytes.length);\n Module.HEAPU8.set(bytes, buffer);\n const retcode = Module._zip_to_fs(buffer, bytes.length, filterBuffer);\n Module._free(buffer);\n\n this.chdirToHome();\n\n if (withFilter) {\n Module._free(filterBuffer);\n }\n\n if (retcode === 0) {\n return Promise.resolve();\n } else {\n return Promise.reject(new Error(\"Can't extract zip, retcode \" +\n retcode + \", see more info in logs\"));\n }\n }\n\n // ### writeFile\n writeFile(file: string, body: ArrayBuffer | Uint8Array | string) {\n // Allow to create file in FS, it will be created relatively cwd\n // All directories will be created\n //\n // windows style path are also valid, but **drive letter is ignored**\n // if you pass only filename, then file will be writed in cwd\n //\n // body can be string or ArrayBuffer or Uint8Array\n file = this.normalizeFilename(file);\n\n if (body instanceof ArrayBuffer) {\n body = new Uint8Array(body);\n }\n\n const parts = file.split(\"/\");\n\n if (parts.length === 0) {\n throw new Error(\"Can't create file '\" + file + \"', because it's not valid file path\");\n }\n\n const filename = parts[parts.length - 1].trim();\n\n if (filename.length === 0) {\n throw new Error(\"Can't create file '\" + file + \"', because file name is empty\");\n }\n\n /* i < parts.length - 1, because last part is file name */\n const path = this.createPath(parts, 0, parts.length - 1);\n this.module.FS.writeFile(path + \"/\" + filename, body);\n }\n\n async readFile(file: string, encoding: \"binary\" | \"utf8\" = \"utf8\"): Promise<string | Uint8Array> {\n file = this.normalizeFilename(file);\n return this.module.FS.readFile(file, { encoding });\n }\n\n exists(file: string): boolean {\n file = this.normalizeFilename(file);\n try {\n this.module.FS.lookupPath(file);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n destroy(): any {\n try {\n this.module._libzip_destroy();\n } catch (e) {\n return e;\n }\n }\n\n private normalizeFilename(file: string): string {\n file = file.replace(new RegExp(\"^[a-zA-z]+:\"), \"\").replace(new RegExp(\"\\\\\\\\\", \"g\"), \"/\");\n while (file[0] === \"/\") {\n file = file.substr(1);\n }\n return file;\n }\n\n private createPath(parts: string[], begin: number, end: number) {\n let path = \".\";\n for (let i = begin; i < end; ++i) {\n const part = parts[i].trim();\n if (part.length === 0) {\n continue;\n }\n\n this.module.FS.createPath(path, part, true, true);\n path = path + \"/\" + part;\n }\n\n return path;\n }\n\n private chdirToHome() {\n this.module.FS.chdir(this.home);\n }\n\n private chdir(path: string) {\n this.module.FS.chdir(this.home + \"/\" + path);\n }\n\n public async zipAddFile(archive: string, file: string) {\n const Module = this.module;\n const archiveLength = Module[\"lengthBytesUTF8\"](archive) + 1;\n const archiveBuffer = Module[\"_malloc\"](archiveLength);\n Module.stringToUTF8(archive, archiveBuffer, archiveLength);\n\n const fileLength = Module[\"lengthBytesUTF8\"](file) + 1;\n const fileBuffer = Module[\"_malloc\"](fileLength);\n Module.stringToUTF8(file, fileBuffer, fileLength);\n\n const ret = this.module._zipfile_add(archiveBuffer, fileBuffer, fileBuffer);\n\n Module[\"_free\"](archiveBuffer);\n Module[\"_free\"](fileBuffer);\n\n if (ret !== 0) {\n throw new Error(\"Unable to add \" + file + \" into \" + archive);\n }\n }\n}\n","import { ServerMessage, MessageHandler } from \"./protocol\";\n\ninterface DelayedMessage {\n name: ServerMessage,\n props: {[key: string]: any},\n}\n\nexport class MessagesQueue {\n private messages: DelayedMessage[] = [];\n public handler(name: ServerMessage, props: {[key: string]: any}) {\n this.messages.push({ name, props });\n }\n public sendTo(handler: MessageHandler) {\n for (const next of this.messages) {\n handler(next.name, next.props);\n }\n\n this.messages = [];\n }\n}\n","import {\n CommandInterface, NetworkType, BackendOptions, DosConfig,\n InitFsEntry, InitFileEntry,\n} from \"../emulators\";\nimport { CommandInterfaceEventsImpl } from \"../impl/ci-impl\";\n\nconst maxDataChunkSize = 4 * 1024 * 1024;\n\ntype Peer = {\n peerId: number;\n}\n\nexport type Net = {\n peerId: number;\n connected: Set<number>;\n wait: (ms: number) => void;\n registerAlias: (alias: string) => Promise<void>;\n unregisterAlias: (alias: string) => void;\n queryAliases: (query: string) => Promise<Peer[]>;\n sendBinary: (data: Uint8Array, peerId: number) => number;\n recvBinary: () => { data: Uint8Array, peerId: number } | null;\n disconnect: (peerId: number) => void;\n}\n\nexport type ClientMessage =\n \"wc-install\" |\n \"wc-run\" |\n \"wc-pack-fs-to-bundle\" |\n \"wc-add-key\" |\n \"wc-mouse-move\" |\n \"wc-mouse-button\" |\n \"wc-mouse-sync\" |\n \"wc-exit\" |\n \"wc-sync-sleep\" |\n \"wc-pause\" |\n \"wc-resume\" |\n \"wc-mute\" |\n \"wc-unmute\" |\n \"wc-connect\" |\n \"wc-disconnect\" |\n \"wc-backend-event\" |\n \"wc-asyncify-stats\" |\n \"wc-fs-tree\" |\n \"wc-fs-get-file\" |\n \"wc-send-data-chunk\" |\n \"wc-net-connected\" |\n \"wc-net-received\" |\n \"wc-unload\" |\n \"wc-fs-delete-file\" |\n \"wc-persist-sockdrives\" |\n \"wc-get-running-program\";\n\nexport type ServerMessage =\n \"ws-extract-progress\" |\n \"ws-ready\" |\n \"ws-server-ready\" |\n \"ws-frame-set-size\" |\n \"ws-update-lines\" |\n \"ws-log\" |\n \"ws-warn\" |\n \"ws-err\" |\n \"ws-stdout\" |\n \"ws-exit\" |\n \"ws-persist\" |\n \"ws-sound-init\" |\n \"ws-sound-push\" |\n \"ws-config\" |\n \"ws-sync-sleep\" |\n \"ws-connected\" |\n \"ws-disconnected\" |\n \"ws-asyncify-stats\" |\n \"ws-fs-tree\" |\n \"ws-send-data-chunk\" |\n \"ws-net-disconnect\" |\n \"ws-net-send\" |\n \"ws-unload\" |\n \"ws-fs-delete-file\" |\n \"ws-persist-sockdrives\" |\n \"ws-get-running-program\";\n\nexport type MessageHandler = (name: ServerMessage, props: { [key: string]: any }) => void;\n\nexport interface TransportLayer {\n sessionId: string;\n sendMessageToServer(name: ClientMessage,\n props: { [key: string]: any },\n transfer?: Transferable[]): void;\n initMessageHandler(handler: MessageHandler): void;\n exit?: () => void;\n net: Net | null;\n}\n\nexport interface FrameLine {\n start: number;\n heapu8: Uint8Array;\n}\n\nexport interface DataChunk {\n type: \"ok\" | \"file\" | \"bundle\";\n name: string;\n data: ArrayBuffer | null;\n}\n\nexport interface CPUMetrics {\n cpuMax: number;\n emulatorSpeed: number;\n cpuUsed: number;\n frameSkip: number;\n fastForward: boolean;\n cpuSockdrive: boolean;\n cpuAuto: boolean;\n cpuSkip: boolean;\n sleepPattern: string;\n ratio: number[];\n newCmax: number[];\n ticksDone: number[];\n ticksScheduled: number[];\n}\n\nexport interface AsyncifyStats {\n glfx?: boolean,\n offscreenCanvas?: boolean,\n messageSent: number,\n messageReceived: number,\n messageFrame: number,\n messageSound: number,\n nonSkippableSleepCount: number,\n sleepCount: number,\n sleepTime: number,\n cpuMetrics: CPUMetrics | null,\n netSent: number,\n netRecv: number,\n driveIo: {\n url: string,\n preload: number,\n total: number,\n read: number,\n write: number,\n }[];\n}\n\nexport interface FsNode {\n name: string,\n size: number | null,\n nodes: FsNode[] | null,\n}\n\nexport class CommandInterfaceOverTransportLayer implements CommandInterface {\n private startedAt = Date.now();\n private exited = false;\n private frameWidth = 0;\n private frameHeight = 0;\n private rgb: Uint8Array | null = null;\n private rgba: Uint8Array | null = null;\n private freq = 0;\n private utf8Decoder = new TextDecoder();\n\n private init?: InitFsEntry[];\n private transport: TransportLayer;\n private ready: (err: Error | null) => void;\n\n private persistPromise?: Promise<Uint8Array | null>;\n private persistResolve?: (bundle: Uint8Array | null) => void;\n\n private exitPromise?: Promise<void>;\n private exitResolve?: () => void;\n\n private eventsImpl = new CommandInterfaceEventsImpl();\n\n private keyMatrix: { [keyCode: number]: boolean } = {};\n\n private configPromise: Promise<DosConfig>;\n private configResolve: (config: DosConfig) => void = () => {/**/};\n private panicMessages: string[] = [];\n\n private connectPromise: Promise<void> | null = null;\n private connectResolve: () => void = () => {/**/};\n private connectReject: () => void = () => {/**/};\n\n private disconnectPromise: Promise<void> | null = null;\n private disconnectResolve: () => void = () => {/**/};\n\n private asyncifyStatsPromise: Promise<AsyncifyStats> | null = null;\n private asyncifyStatsResolve: (stats: AsyncifyStats) => void = () => {/**/};\n\n private fsTreePromise: Promise<FsNode> | null = null;\n private fsTreeResolve: (fsRoot: FsNode) => void = () => {/**/};\n\n private fsGetFilePromise: { [name: string]: Promise<Uint8Array> } = {};\n private fsGetFileResolve: { [name: string]: (file: Uint8Array) => void } = {};\n private fsGetFileParts: { [name: string]: Uint8Array[] } = {};\n\n private fsDeleteFilePromise: Promise<boolean> | null = null;\n private fsDeleteFileResolve: (deleted: boolean) => void = () => {/**/};\n\n private getRunningProgramPromise: Promise<string> | null = null;\n private getRunningProgramResolve: (program: string) => void = () => {/**/};\n\n private dataChunkPromise: { [name: string]: Promise<void> } = {};\n private dataChunkResolve: { [name: string]: () => void } = {};\n\n private persistSockdrivesPromise: Promise<Uint8Array | null> | null = null;\n private persistSockdrivesResolve: (changes: Uint8Array | null) => void = () => {/**/};\n\n private myPeerId: number = 0;\n private netSent = 0;\n private netRecv = 0;\n private netPollInterval: ReturnType<typeof setInterval> | null = null;\n\n public options: BackendOptions;\n\n constructor(init: InitFsEntry[],\n transport: TransportLayer,\n ready: (err: Error | null) => void,\n options: BackendOptions) {\n this.options = options;\n this.init = init;\n this.transport = transport;\n this.ready = ready;\n this.configPromise = new Promise<DosConfig>((resolve) => this.configResolve = resolve);\n this.transport.initMessageHandler(this.onServerMessage.bind(this));\n this.transport.net = this.transport.net ?? null;\n if (this.transport.net) {\n this.myPeerId = this.transport.net.peerId;\n this.netPollInterval = setInterval(() => {\n this.transport.net!.wait(0);\n\n let data = this.transport.net!.recvBinary();\n while (data != null) {\n this.netRecv += data.data.length;\n this.sendClientMessage(\"wc-net-received\", {\n peerId: data.peerId,\n data: data.data.buffer,\n }, [data.data.buffer]);\n data = this.transport.net!.recvBinary();\n }\n }, 16);\n }\n }\n\n private sendClientMessage(name: ClientMessage, props?: { [key: string]: any }, transfer?: [ArrayBuffer]) {\n props = props || {};\n props.sessionId = props.sessionId || this.transport.sessionId;\n this.transport.sendMessageToServer(name, props, transfer);\n }\n\n\n private onServerMessage(name: ServerMessage, props: { [key: string]: any }) {\n if (name === undefined || name.length < 3 ||\n name[0] !== \"w\" || name[1] !== \"s\" || name[2] !== \"-\") {\n return;\n }\n\n if (props === undefined || props.sessionId !== this.transport.sessionId) {\n return;\n }\n\n switch (name) {\n case \"ws-ready\": {\n const sendBundles = async () => {\n if (!this.init || this.init.length === 0) {\n return;\n }\n\n const encoder = new TextEncoder();\n const sendData = async (type: \"file\" | \"bundle\", name: string, contents: Uint8Array) => {\n await this.sendDataChunk({\n type,\n name,\n data: contents.buffer,\n });\n\n await this.sendDataChunk({\n type,\n name,\n data: null,\n });\n };\n\n let bundleIndex = 0;\n for (const next of this.init) {\n if (ArrayBuffer.isView(next)) {\n await sendData(\"bundle\", bundleIndex + \"\", next);\n bundleIndex++;\n } else if (typeof next === \"string\") {\n await sendData(\"file\", \".jsdos/dosbox.conf\", encoder.encode(next));\n } else {\n const fileEntry = next as InitFileEntry;\n const dosConfig = next as DosConfig;\n\n if (dosConfig.jsdosConf?.version !== undefined) {\n await sendData(\"file\", \".jsdos/dosbox.conf\",\n encoder.encode(dosConfig.dosboxConf));\n await sendData(\"file\", \".jsdos/jsdos.json\",\n encoder.encode(JSON.stringify(dosConfig.jsdosConf, null, 2)));\n } else if (fileEntry.path !== undefined) {\n await sendData(\"file\", fileEntry.path, fileEntry.contents);\n } else {\n console.error(\"Unknown init part\", next);\n }\n }\n }\n };\n\n sendBundles()\n .then(() => {\n this.sendClientMessage(\"wc-run\", {\n token: this.options.token,\n myPeerId: this.myPeerId,\n sockdrivePreload: this.options.sockdrivePreload,\n });\n })\n .catch((e) => {\n this.onErr(\"panic\", \"Can't send bundles to backend: \" + e.message);\n console.error(e);\n })\n .finally(() => {\n delete this.init;\n });\n } break;\n case \"ws-server-ready\": {\n if (this.panicMessages.length > 0) {\n if (this.transport.exit !== undefined) {\n this.transport.exit();\n }\n this.ready(new Error(JSON.stringify(this.panicMessages)));\n } else {\n this.ready(null);\n }\n delete (this as any).ready;\n } break;\n case \"ws-frame-set-size\": {\n this.onFrameSize(props.width, props.height);\n } break;\n case \"ws-update-lines\": {\n this.onFrameLines(props.lines, props.rgba);\n } break;\n case \"ws-exit\": {\n this.onExit();\n } break;\n case \"ws-log\": {\n // eslint-disable-next-line\n this.onLog(props.tag, props.message);\n } break;\n case \"ws-warn\": {\n // eslint-disable-next-line\n this.onWarn(props.tag, props.message);\n } break;\n case \"ws-err\": {\n // eslint-disable-next-line\n this.onErr(props.tag, props.message);\n } break;\n case \"ws-stdout\": {\n this.onStdout(props.message);\n } break;\n case \"ws-persist\": {\n this.onPersist(props.bundle ?? props.sockdrives ?? null);\n } break;\n case \"ws-sound-init\": {\n this.onSoundInit(props.freq);\n } break;\n case \"ws-sound-push\": {\n this.onSoundPush(props.samples);\n } break;\n case \"ws-config\": {\n this.onConfig({\n dosboxConf: this.utf8Decoder.decode(props.dosboxConf),\n jsdosConf: JSON.parse(props.jsdosConf),\n });\n } break;\n case \"ws-sync-sleep\": {\n this.sendClientMessage(\"wc-sync-sleep\", props);\n } break;\n case \"ws-connected\": {\n this.connectResolve();\n this.connectPromise = null;\n this.connectResolve = () => {/**/};\n this.connectReject = () => {/**/};\n this.eventsImpl.fireNetworkConnected(props.networkType, props.address);\n } break;\n case \"ws-disconnected\": {\n if (this.connectPromise !== null) {\n this.connectReject();\n this.connectPromise = null;\n this.connectResolve = () => {/**/};\n this.connectReject = () => {/**/};\n } else {\n this.disconnectResolve();\n this.disconnectPromise = null;\n this.disconnectResolve = () => {/**/};\n }\n this.eventsImpl.fireNetworkDisconnected(props.networkType);\n } break;\n case \"ws-extract-progress\": {\n if (this.options.onExtractProgress) {\n this.options.onExtractProgress(props.index, props.file, props.extracted, props.count);\n }\n } break;\n case \"ws-asyncify-stats\": {\n props.netSent = this.netSent;\n props.netRecv = this.netRecv;\n if (props.cpuMetrics && props.cpuMetrics.length > 0) {\n const partial = props.cpuMetrics.split(\" \");\n const cpu = partial[0].split(\"|\");\n const metrics: CPUMetrics = {\n cpuMax: parseInt(cpu[0]),\n emulatorSpeed: parseInt(cpu[1]) / 100,\n cpuUsed: parseInt(cpu[2]) / 100,\n frameSkip: parseInt(cpu[3]),\n fastForward: cpu[4][0] === \"1\",\n cpuSockdrive: cpu[4][1] === \"1\",\n cpuAuto: cpu[4][2] === \"1\",\n cpuSkip: cpu[4][3] === \"1\",\n sleepPattern: \"\",\n ratio: [],\n newCmax: [],\n ticksDone: [],\n ticksScheduled: [],\n };\n\n for (let i = 1; i < partial.length; i++) {\n if (partial[i][0] === \"r\") {\n const parts = partial[i].split(\"|\");\n metrics.ratio.push(parseInt(parts[0].substring(1)) / 1024);\n metrics.newCmax.push(parseInt(parts[1]));\n metrics.ticksDone.push(parseInt(parts[2]));\n metrics.ticksScheduled.push(parseInt(parts[3]));\n } else {\n metrics.sleepPattern += partial[i] + \" \";\n }\n }\n props.cpuMetrics = metrics;\n } else {\n props.cpuMetrics = null;\n }\n this.asyncifyStatsResolve(props as AsyncifyStats);\n this.asyncifyStatsResolve = () => {/**/};\n this.asyncifyStatsPromise = null;\n } break;\n case \"ws-fs-tree\": {\n this.fsTreeResolve(props.fsTree as FsNode);\n this.fsTreeResolve = () => {/**/};\n this.fsTreePromise = null;\n } break;\n case \"ws-fs-delete-file\": {\n this.fsDeleteFileResolve(props.deleted);\n this.fsDeleteFileResolve = () => {/**/};\n this.fsDeleteFilePromise = null;\n } break;\n case \"ws-send-data-chunk\": {\n const chunk: DataChunk = props.chunk;\n const key = this.dataChunkKey(chunk);\n if (chunk.type === \"ok\") {\n if (this.dataChunkPromise[key] !== undefined) {\n this.dataChunkResolve[key]();\n delete this.dataChunkPromise[key];\n delete this.dataChunkResolve[key];\n }\n } else if (chunk.type === \"file\") {\n if (chunk.data === null) {\n const file = this.mergeChunks(this.fsGetFileParts[chunk.name]);\n this.fsGetFileResolve[chunk.name](file);\n delete this.fsGetFilePromise[chunk.name];\n delete this.fsGetFileResolve[chunk.name];\n } else {\n this.fsGetFileParts[chunk.name].push(new Uint8Array(chunk.data));\n }\n } else {\n console.log(\"Unknown chunk type:\", chunk.type);\n }\n } break;\n case \"ws-net-send\": {\n this.netSent += props.data.length;\n const response = this.transport.net?.sendBinary(new Uint8Array(props.data), props.peerId);\n if (response === 0) {\n const retryFn = () => {\n if (this.transport.net?.sendBinary(new Uint8Array(props.data), props.peerId) === 0) {\n setTimeout(retryFn, 100);\n }\n };\n setTimeout(retryFn, 100);\n }\n } break;\n case \"ws-net-disconnect\": {\n this.transport.net?.disconnect(props.peerId);\n } break;\n case \"ws-unload\": {\n this.eventsImpl.fireUnload().finally(() => {\n this.sendClientMessage(\"wc-unload\");\n });\n } break;\n case \"ws-persist-sockdrives\": {\n if (props.drives === null) {\n this.persistSockdrivesResolve(null);\n } else {\n this.persistSockdrivesResolve(encodeSockdriveChanges(props.drives));\n }\n this.persistSockdrivesResolve = () => {/**/};\n this.persistSockdrivesPromise = null;\n } break;\n case \"ws-get-running-program\": {\n if (this.getRunningProgramPromise !== null) {\n this.getRunningProgramResolve(props.program);\n this.getRunningProgramResolve = () => {/**/};\n this.getRunningProgramPromise = null;\n }\n } break;\n default: {\n // eslint-disable-next-line\n console.log(\"Unknown server message (ws):\", name);\n } break;\n }\n }\n\n private onConfig(config: DosConfig) {\n this.configResolve(config);\n }\n\n private onFrameSize(width: number, height: number) {\n if (this.frameWidth === width && this.frameHeight === height) {\n return;\n }\n\n this.frameWidth = width;\n this.frameHeight = height;\n this.rgb = new Uint8Array(width * height * 3);\n this.eventsImpl.fireFrameSize(width, height);\n }\n\n private onFrameLines(lines: FrameLine[], rgbaPtr: number) {\n for (const line of (lines as FrameLine[])) {\n this.rgb!.set(line.heapu8, line.start * this.frameWidth * 3);\n }\n\n this.eventsImpl.fireFrame(this.rgb, this.rgba);\n }\n\n private onSoundInit(freq: number) {\n this.freq = freq;\n }\n\n private onSoundPush(samples: Float32Array) {\n this.eventsImpl.fireSoundPush(samples);\n }\n\n private onLog(tag: string, message: string) {\n this.eventsImpl.fireMessage(\"log\", \"[\" + tag + \"]\" + message);\n }\n\n private onWarn(tag: string, message: string) {\n this.eventsImpl.fireMessage(\"warn\", \"[\" + tag + \"]\" + message);\n }\n\n private onErr(tag: string, message: string) {\n if (tag === \"panic\") {\n this.panicMessages.push(message);\n console.error(\"[\" + tag + \"]\" + message);\n }\n this.eventsImpl.fireMessage(\"error\", \"[\" + tag + \"]\" + message);\n }\n\n private onStdout(message: string) {\n this.eventsImpl.fireStdout(message);\n }\n\n public config() {\n return this.configPromise;\n }\n\n public width() {\n return this.frameWidth;\n }\n\n public height() {\n return this.frameHeight;\n }\n\n public soundFrequency() {\n return this.freq;\n }\n\n public screenshot(): Promise<ImageData> {\n if (this.rgb !== null || this.rgba !== null) {\n const rgba = new Uint8ClampedArray(this.frameWidth * this.frameHeight * 4);\n const frame = (this.rgb !== null ? this.rgb : this.rgba) as Uint8Array;\n\n let frameOffset = 0;\n let rgbaOffset = 0;\n\n while (rgbaOffset < rgba.length) {\n rgba[rgbaOffset++] = frame[frameOffset++];\n rgba[rgbaOffset++] = frame[frameOffset++];\n rgba[rgbaOffset++] = frame[frameOffset++];\n rgba[rgbaOffset++] = 255;\n\n if (frame.length === rgba.length) {\n frameOffset++;\n }\n }\n\n return Promise.resolve(new ImageData(rgba, this.frameWidth, this.frameHeight));\n } else {\n return Promise.reject(new Error(\"No frame received\"));\n }\n }\n\n public simulateKeyPress(...keyCodes: number[]) {\n const timeMs = Date.now() - this.startedAt;\n keyCodes.forEach((keyCode) => this.addKey(keyCode, true, timeMs));\n keyCodes.forEach((keyCode) => this.addKey(keyCode, false, timeMs + 16));\n }\n\n public sendKeyEvent(keyCode: number, pressed: boolean) {\n this.addKey(keyCode, pressed, Date.now() - this.startedAt);\n }\n\n // public for test\n public addKey(keyCode: number, pressed: boolean, timeMs: number) {\n const keyPressed = this.keyMatrix[keyCode] === true;\n if (keyPressed === pressed) {\n return;\n }\n this.keyMatrix[keyCode] = pressed;\n this.sendClientMessage(\"wc-add-key\", { key: keyCode, pressed, timeMs });\n }\n\n public sendMouseMotion(x: number, y: number) {\n this.sendClientMessage(\"wc-mouse-move\", { x, y, relative: false, timeMs: Date.now() - this.startedAt });\n }\n\n public sendMouseRelativeMotion(x: number, y: number) {\n this.sendClientMessage(\"wc-mouse-move\", { x, y, relative: true, timeMs: Date.now() - this.startedAt });\n }\n\n public sendMouseButton(button: number, pressed: boolean) {\n this.sendClientMessage(\"wc-mouse-button\", { button, pressed, timeMs: Date.now() - this.startedAt });\n }\n\n public sendMouseSync() {\n this.sendClientMessage(\"wc-mouse-sync\", { timeMs: Date.now() - this.startedAt });\n }\n\n public sendBackendEvent(payload: any) {\n this.sendClientMessage(\"wc-backend-event\", { json: JSON.stringify(payload) });\n }\n\n\n public async persist(optOnlyChanges?: boolean): Promise<Uint8Array | null> {\n const onlyChanges = optOnlyChanges ?? true;\n if (this.persistPromise !== undefined) {\n return this.persistPromise;\n }\n\n const sockdrives = await this.persistSockdrives();\n if (sockdrives !== null && onlyChanges) {\n return Promise.resolve(sockdrives);\n }\n\n const persistPromise = new Promise<Uint8Array | null>((resolve) => {\n this.persistResolve = resolve;\n });\n this.persistPromise = persistPromise;\n this.sendClientMessage(\"wc-pack-fs-to-bundle\", {\n onlyChanges,\n });\n\n return persistPromise;\n }\n\n private onPersist(bundle: Uint8Array | null) {\n if (this.persistResolve) {\n this.persistResolve(bundle);\n delete this.persistPromise;\n delete this.persistResolve;\n }\n }\n\n public pause() {\n this.sendClientMessage(\"wc-pause\");\n }\n\n public resume() {\n this.sendClientMessage(\"wc-resume\");\n }\n\n public mute() {\n this.sendClientMessage(\"wc-mute\");\n }\n\n public unmute() {\n this.sendClientMessage(\"wc-unmute\");\n }\n\n public exit(): Promise<void> {\n if (this.exited) {\n return Promise.resolve();\n }\n if (this.exitPromise !== undefined) {\n return this.exitPromise;\n }\n this.exitPromise = new Promise<void>((resolve) => this.exitResolve = resolve);\n this.exitPromise.then(() => {\n this.events().fireExit();\n });\n\n this.resume();\n for (const next of this.transport.net?.connected ?? []) {\n this.transport.net?.disconnect(next);\n }\n this.sendClientMessage(\"wc-exit\");\n\n return this.exitPromise;\n }\n\n private onExit() {\n if (!this.exited) {\n this.exited = true;\n if (this.netPollInterval !== null) {\n clearInterval(this.netPollInterval);\n this.netPollInterval = null;\n }\n if (this.transport.exit !== undefined) {\n this.transport.exit();\n }\n if (this.exitResolve) {\n this.exitResolve();\n delete this.exitPromise;\n delete this.exitResolve;\n }\n }\n }\n\n public events() {\n return this.eventsImpl;\n }\n\n public networkConnect(networkType: NetworkType, address: string): Promise<void> {\n if (this.connectPromise !== null || this.disconnectPromise !== null) {\n return Promise.reject(new Error(\"Already prefoming connection or disconnection...\"));\n }\n\n this.connectPromise = new Promise<void>((resolve, reject) => {\n this.connectResolve = resolve;\n this.connectReject = reject;\n this.sendClientMessage(\"wc-connect\", {\n networkType,\n address,\n });\n });\n return this.connectPromise;\n }\n\n public networkDisconnect(networkType: NetworkType): Promise<void> {\n if (this.connectPromise !== null || this.disconnectPromise !== null) {\n return Promise.reject(new Error(\"Already prefoming connection or disconnection...\"));\n }\n\n this.disconnectPromise = new Promise<void>((resolve) => {\n this.disconnectResolve = resolve;\n\n this.sendClientMessage(\"wc-disconnect\", {\n networkType,\n });\n });\n return this.disconnectPromise;\n }\n\n public asyncifyStats(): Promise<AsyncifyStats> {\n if (this.asyncifyStatsPromise !== null) {\n return this.asyncifyStatsPromise;\n }\n\n const promise = new Promise<AsyncifyStats>((resolve) => {\n this.asyncifyStatsResolve = resolve;\n });\n\n this.asyncifyStatsPromise = promise;\n this.sendClientMessage(\"wc-asyncify-stats\", {});\n\n return promise;\n }\n\n public fsTree(): Promise<FsNode> {\n if (this.fsTreePromise !== null) {\n return this.fsTreePromise;\n }\n\n const promise = new Promise<FsNode>((resolve) => {\n this.fsTreeResolve = resolve;\n });\n this.fsTreePromise = promise;\n this.sendClientMessage(\"wc-fs-tree\");\n\n return promise;\n }\n\n async fsReadFile(file: string): Promise<Uint8Array> {\n if (this.fsGetFilePromise[file] !== undefined) {\n throw new Error(\"fsGetFile should not be called twice for same file\");\n }\n\n const promise = new Promise<Uint8Array>((resolve) => {\n this.fsGetFileResolve[file] = resolve;\n });\n this.fsGetFilePromise[file] = promise;\n this.fsGetFileParts[file] = [];\n this.sendClientMessage(\"wc-fs-get-file\", {\n file,\n });\n\n return promise;\n }\n\n async fsWriteFile(file: string, contents: ReadableStream<Uint8Array> | Uint8Array): Promise<void> {\n if (ArrayBuffer.isView(contents)) {\n await this.sendDataChunk({\n type: \"file\",\n name: file,\n data: contents.buffer,\n });\n } else {\n const reader = contents.getReader();\n while (true) {\n const result = await reader.read();\n if (result.value !== undefined) {\n await this.sendDataChunk({\n type: \"file\",\n name: file,\n data: result.value.buffer,\n });\n }\n if (result.done) {\n break;\n }\n }\n }\n\n await this.sendDataChunk({\n type: \"file\",\n name: file,\n data: null,\n });\n }\n\n async fsDeleteFile(file: string): Promise<boolean> {\n if (this.fsDeleteFilePromise !== null) {\n throw new Error(\"fsDeleteFile should not be called while previous one is not resolved\");\n }\n\n const promise = new Promise<boolean>((resolve) => {\n this.fsDeleteFileResolve = resolve;\n });\n this.fsDeleteFilePromise = promise;\n this.sendClientMessage(\"wc-fs-delete-file\", { file });\n return promise;\n }\n\n async persistSockdrives(): Promise<Uint8Array | null> {\n if (this.persistSockdrivesPromise === null) {\n this.persistSockdrivesPromise = new Promise<Uint8Array | null>((resolve) => {\n this.persistSockdrivesResolve = resolve;\n });\n this.sendClientMessage(\"wc-persist-sockdrives\");\n }\n return this.persistSockdrivesPromise;\n }\n\n private async sendDataChunk(chunk: DataChunk): Promise<void> {\n if (chunk.data === null || chunk.data.byteLength <= maxDataChunkSize) {\n return this.sendFullDataChunk(chunk);\n } else {\n let pos = 0;\n while (pos < chunk.data.byteLength) {\n await this.sendFullDataChunk({\n type: chunk.type,\n name: chunk.name,\n data: chunk.data.slice(pos, Math.min(chunk.data.byteLength, pos + maxDataChunkSize)),\n });\n pos += maxDataChunkSize;\n }\n }\n }\n\n private async sendFullDataChunk(chunk: DataChunk): Promise<void> {\n const key = this.dataChunkKey(chunk);\n if (this.dataChunkPromise[key] !== undefined) {\n throw new Error(\"sendDataChunk should be accepted before sending new one\");\n }\n const promise = new Promise<void>((resolve) => {\n this.dataChunkResolve[key] = resolve;\n });\n this.dataChunkPromise[key] = promise;\n this.sendClientMessage(\"wc-send-data-chunk\", {\n chunk,\n }, chunk.data === null ? undefined : [chunk.data]);\n return promise;\n }\n\n private dataChunkKey(chunk: DataChunk) {\n return chunk.name;\n }\n\n private mergeChunks(parts: Uint8Array[]): Uint8Array {\n if (parts.length === 1) {\n return parts[0];\n }\n\n let length = 0;\n for (const next of parts) {\n length += next.byteLength;\n }\n const merged = new Uint8Array(length);\n length = 0;\n for (const next of parts) {\n merged.set(next, length);\n length += next.byteLength;\n }\n return merged;\n }\n\n public net(): Net | null {\n return this.transport.net ?? null;\n }\n\n public getRunningProgram(): Promise<string> {\n if (this.getRunningProgramPromise !== null) {\n return this.getRunningProgramPromise;\n }\n this.getRunningProgramPromise = new Promise<string>((resolve) => {\n this.getRunningProgramResolve = resolve;\n });\n this.sendClientMessage(\"wc-get-running-program\");\n return this.getRunningProgramPromise;\n }\n}\n\nfunction encodeSockdriveChanges(changes: {\n url: string,\n persist: Uint8Array,\n}[]) {\n function writeUint32(container: Uint8Array, value: number, offset: number) {\n container[offset] = value & 0xFF;\n container[offset + 1] = (value & 0x0000FF00) >> 8;\n container[offset + 2] = (value & 0x00FF0000) >> 16;\n container[offset + 3] = (value & 0xFF000000) >> 24;\n return offset + 4;\n }\n\n const encoder = new TextEncoder();\n\n const urls = [];\n let totalSize = 0;\n for (const { url, persist } of changes) {\n urls.push(encoder.encode(url));\n totalSize += persist.length + urls[urls.length - 1].length + 8;\n }\n\n const result = new Uint8Array(totalSize);\n let offset = 0;\n for (let i = 0; i < changes.length; i++) {\n const url = urls[i];\n const persist = changes[i].persist;\n\n offset = writeUint32(result, url.length, offset);\n result.set(url, offset);\n offset += url.length;\n\n offset = writeUint32(result, persist.length, offset);\n result.set(persist, offset);\n offset += persist.length;\n }\n\n return result;\n}\n"]}
1
+ {"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/core-js/internals/a-callable.js","emulators.js","node_modules/core-js/internals/a-possible-prototype.js","node_modules/core-js/internals/an-object.js","node_modules/core-js/internals/array-buffer-basic-detection.js","node_modules/core-js/internals/array-buffer-view-core.js","node_modules/core-js/internals/classof-raw.js","node_modules/core-js/internals/classof.js","node_modules/core-js/internals/correct-prototype-getter.js","node_modules/core-js/internals/create-non-enumerable-property.js","node_modules/core-js/internals/create-property-descriptor.js","node_modules/core-js/internals/define-built-in-accessor.js","node_modules/core-js/internals/define-built-in.js","node_modules/core-js/internals/define-global-property.js","node_modules/core-js/internals/descriptors.js","node_modules/core-js/internals/document-all.js","node_modules/core-js/internals/document-create-element.js","node_modules/core-js/internals/engine-user-agent.js","node_modules/core-js/internals/engine-v8-version.js","node_modules/core-js/internals/fails.js","node_modules/core-js/internals/function-bind-native.js","node_modules/core-js/internals/function-call.js","node_modules/core-js/internals/function-name.js","node_modules/core-js/internals/function-uncurry-this-accessor.js","node_modules/core-js/internals/function-uncurry-this.js","node_modules/core-js/internals/get-built-in.js","node_modules/core-js/internals/get-method.js","node_modules/core-js/internals/global.js","node_modules/core-js/internals/has-own-property.js","node_modules/core-js/internals/hidden-keys.js","node_modules/core-js/internals/ie8-dom-define.js","node_modules/core-js/internals/inspect-source.js","node_modules/core-js/internals/internal-state.js","node_modules/core-js/internals/is-callable.js","node_modules/core-js/internals/is-null-or-undefined.js","node_modules/core-js/internals/is-object.js","node_modules/core-js/internals/is-pure.js","node_modules/core-js/internals/is-symbol.js","node_modules/core-js/internals/length-of-array-like.js","node_modules/core-js/internals/make-built-in.js","node_modules/core-js/internals/math-trunc.js","node_modules/core-js/internals/object-define-property.js","node_modules/core-js/internals/object-get-prototype-of.js","node_modules/core-js/internals/object-is-prototype-of.js","node_modules/core-js/internals/object-set-prototype-of.js","node_modules/core-js/internals/ordinary-to-primitive.js","node_modules/core-js/internals/require-object-coercible.js","node_modules/core-js/internals/shared-key.js","node_modules/core-js/internals/shared-store.js","node_modules/core-js/internals/shared.js","node_modules/core-js/internals/symbol-constructor-detection.js","node_modules/core-js/internals/to-integer-or-infinity.js","node_modules/core-js/internals/to-length.js","node_modules/core-js/internals/to-object.js","node_modules/core-js/internals/to-offset.js","node_modules/core-js/internals/to-positive-integer.js","node_modules/core-js/internals/to-primitive.js","node_modules/core-js/internals/to-property-key.js","node_modules/core-js/internals/to-string-tag-support.js","node_modules/core-js/internals/try-to-string.js","node_modules/core-js/internals/uid.js","node_modules/core-js/internals/use-symbol-as-uid.js","node_modules/core-js/internals/v8-prototype-define-bug.js","node_modules/core-js/internals/weak-map-basic-detection.js","node_modules/core-js/internals/well-known-symbol.js","node_modules/core-js/modules/es.typed-array.set.js","node_modules/process/browser.js","src/build.ts","src/dos/bundle/dos-bundle.ts","src/dos/dosbox/ts/audio-worklet.ts","src/dos/dosbox/ts/direct.ts","src/dos/dosbox/ts/worker.ts","src/emulators.ts","src/http.ts","src/impl/ci-impl.ts","src/impl/emulators-impl.ts","src/impl/modules.ts","src/libzip/libzip.ts","src/protocol/messages-queue.ts","src/protocol/mini-lz4.ts","src/protocol/protocol.ts","src/sockdrive/sockdrive-store.ts","src/sockdrive/sockdrive.ts"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","module","isCallable","tryToString","$TypeError","TypeError","argument","$String","String","isObject","ArrayBuffer","DataView","NAME","Constructor","Prototype","NATIVE_ARRAY_BUFFER","DESCRIPTORS","global","hasOwn","classof","createNonEnumerableProperty","defineBuiltIn","defineBuiltInAccessor","isPrototypeOf","getPrototypeOf","setPrototypeOf","wellKnownSymbol","uid","InternalStateModule","enforceInternalState","enforce","getInternalState","get","Int8Array","Int8ArrayPrototype","prototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","Object","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","getTypedArrayConstructor","it","proto","state","isTypedArray","klass","Function","configurable","this","undefined","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","property","forced","options","ARRAY","TypedArrayConstructor","error","error2","exportTypedArrayStaticMethod","isView","uncurryThis","toString","stringSlice","slice","TO_STRING_TAG_SUPPORT","classofRaw","$Object","CORRECT_ARGUMENTS","arguments","O","tag","result","key","tryGet","callee","fails","F","constructor","definePropertyModule","createPropertyDescriptor","object","value","bitmap","enumerable","writable","makeBuiltIn","defineProperty","target","name","descriptor","getter","set","setter","defineGlobalProperty","simple","unsafe","nonConfigurable","nonWritable","documentAll","document","all","IS_HTMLDDA","EXISTS","createElement","navigator","userAgent","match","version","process","Deno","versions","v8","split","exec","test","bind","hasOwnProperty","NATIVE_BIND","apply","FunctionPrototype","getDescriptor","getOwnPropertyDescriptor","PROPER","CONFIGURABLE","aCallable","method","uncurryThisWithBind","fn","aFunction","namespace","isNullOrUndefined","V","P","func","check","Math","globalThis","window","self","toObject","store","functionToString","inspectSource","has","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","metadata","facade","STATE","getterFor","TYPE","type","$documentAll","getBuiltIn","USE_SYMBOL_AS_UID","$Symbol","toLength","obj","CONFIGURABLE_FUNCTION_NAME","replace","join","CONFIGURABLE_LENGTH","TEMPLATE","arity","source","ceil","floor","trunc","x","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","current","CORRECT_PROTOTYPE_GETTER","IE_PROTO","uncurryThisAccessor","aPossiblePrototype","CORRECT_SETTER","Array","__proto__","input","pref","val","valueOf","keys","SHARED","IS_PURE","push","mode","copyright","license","V8_VERSION","getOwnPropertySymbols","symbol","Symbol","sham","number","toIntegerOrInfinity","min","requireObjectCoercible","toPositiveInteger","$RangeError","RangeError","BYTES","offset","isSymbol","getMethod","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","toPrimitive","id","postfix","random","NATIVE_SYMBOL","iterator","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","ArrayBufferViewCore","lengthOfArrayLike","toOffset","toIndexedObject","$set","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","array","TO_OBJECT_BUG","arrayLike","src","len","index","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","args","title","browser","env","argv","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","Build","buildSeed","size","gzSize","__importDefault","mod","__esModule","default","defaultConfig","libzip_1","http_1","build_1","dosboxConf","jsdosConf","sources","libzipWasm","autoexec","indexOf","_len","lines","_key","substring","extract","url","path","extractAll","async","overwriteConfig","instantiate","libzip","promises","resource","httpRequest","responseType","then","buffer","data","writeFile","readmeTxt","JSON","stringify","resources","Promise","zipToFs","bundle","zipFromFs","destroy","createAudioPort","blob","Blob","URL","createObjectURL","context","AudioContext","sampleRate","latencyHint","console","audioWorklet","addModule","node","AudioWorkletNode","numberOfInputs","numberOfOutputs","outputChannelCount","connect","destination","resumeWebAudio","resume","catch","addEventListener","capture","port","dosDirect","messages_queue_1","audio_worklet_1","wasmModule","sessionId","canvas","net","messagesQueue","MessagesQueue","handler","props","sleepHandler","postMessage","transportLayer","sendMessageToServer","messageHandler","initMessageHandler","newHandler","sendTo","exit","removeEventListener","passive","audioPort","callMain","dosWorker","workerUrl","response","fetch","status","statusText","localUrl","worker","Worker","onerror","filename","message","onmessage","transfer","revokeObjectURL","terminate","NetworkType","emulators_impl_1","emulators","resolve","reject","Xhr","success","fail","xhr","total","loaded","XMLHttpRequest","makeNodeRequest","makeHttpRequest","load","fs","resourcePath","startsWith","makeNodeHttpRequest","fileURLToPath","absolutePath","cwdPath","existsSync","readFile","err","progress","byteLength","arrayBuffer","byteOffset","redirects","parsedUrl","protocol","statusCode","location","headers","chunks","Number","parseInt","chunk","Buffer","progressListner","errorListener","open","setRequestHeader","overrideMimeType","evt","onreadystatechange","onReadyStateChange","send","readyState","max","_process","CommandInterfaceEventsImpl","onStdoutConsumers","delayedStdout","onFrameSizeConsumers","onFrameConsumers","onSoundPushConsumers","onExitConsumers","onMessageConsumers","delayedMessages","onNetworkConnectedConsumers","onNetworkDisconnectedConsumers","onUnloadConsumers","onStdout","consumer","next","fireStdout","onFrameSize","onFrame","onSoundPush","onExit","onMessage","msgType","onNetworkConnected","onNetworkDisconnected","onUnload","fireFrameSize","width","height","fireFrame","rgb","rgba","fireSoundPush","samples","fireExit","fireMessage","_this","fireNetworkConnected","networkType","address","fireNetworkDisconnected","fireUnload","modules_1","dos_bundle_1","direct_1","worker_1","protocol_1","pathPrefix","pathSuffix","wdosboxJs","wdosboxxJs","wdosboxxJsJspi","wasmModulesPromise","modules","wasmModules","parse","config","zipAddFile","init","dosboxDirect","dosboxWasm","dosbox","Date","now","backend","dosboxXDirect","dosboxxWasm","dosboxx","dosboxxJspi","ci","CommandInterfaceOverTransportLayer","isArray","WasmModulesImpl","make","dosboxWorker","loadWasmModule","host","wasmSupported","globals","compiled","WebAssembly","compile","wmodule","Module","of","Instance","imul","b","al","bl","fround","clz32","moduleName","onprogress","emModule","compiledModulePromise","CompiledNodeModule","loadWasmModuleNode","fromIndex","lastIndexOf","wIndex","isWasmUrl","indexOfJs","wasmUrl","binaryPromise","scriptPromise","binary","script","instantiateWasm","info","receiveInstance","instance","eval","CompiledBrowserModule","promise","loadWasmModuleBrowser","libzipPromise","dosboxPromise","dosboxxPromise","dosboxxJspiPromise","loadModule","initialModule","home","FS","ignorePermissions","chdirToHome","changedAfterMs","ptr","_zip_from_fs","HEAPU32","archive","HEAPU8","_free","zipArchive","filter","normalizeFilename","pathParts","createPath","withFilter","filterBuffer","filterLength","stringToUTF8","bytes","_malloc","retcode","_zip_to_fs","file","body","parts","trim","encoding","exists","lookupPath","_libzip_destroy","RegExp","substr","begin","end","part","archiveLength","archiveBuffer","fileLength","fileBuffer","ret","_zipfile_add","messages","uncompress","compress","compressBound","lz4","output","sIdx","eIdx","j","token","literals_length","l","match_length","pos","maxInputSize","mlMask","runMask","hasher","condition","assert","hashShift","hashTable","empty","isize","dst","dpos","dlen","anchor","copyLength","findMatchAttempts","srcLength","sequenceLowBits","sequenceHighBits","hash","minMatch","ref","ln","compressBlock","CHUNK_SIZE","ci_impl_1","maxDataChunkSize","startedAt","exited","frameWidth","frameHeight","freq","utf8Decoder","TextDecoder","transport","ready","persistPromise","persistResolve","exitPromise","exitResolve","eventsImpl","keyMatrix","configPromise","configResolve","panicMessages","connectPromise","connectResolve","connectReject","disconnectPromise","disconnectResolve","asyncifyStatsPromise","asyncifyStatsResolve","fsTreePromise","fsTreeResolve","fsGetFilePromise","fsGetFileResolve","fsGetFileParts","fsDeleteFilePromise","fsDeleteFileResolve","getRunningProgramPromise","getRunningProgramResolve","dataChunkPromise","dataChunkResolve","persistSockdrivesPromise","persistSockdrivesResolve","myPeerId","netSent","netRecv","netPollInterval","onServerMessage","peerId","setInterval","wait","recvBinary","sendClientMessage","sendBundles","encoder","TextEncoder","sendData","contents","sendDataChunk","bundleIndex","encode","fileEntry","dosConfig","sockdrivePreload","onErr","finally","onFrameLines","onLog","onWarn","onPersist","sockdrives","onSoundInit","onConfig","decode","onExtractProgress","extracted","count","cpuMetrics","partial","cpu","metrics","cpuMax","emulatorSpeed","cpuUsed","frameSkip","fastForward","cpuSockdrive","cpuAuto","cpuSkip","sleepPattern","ratio","newCmax","ticksDone","ticksScheduled","fsTree","deleted","dataChunkKey","mergeChunks","log","sendBinary","retryFn","disconnect","drives","changes","writeUint32","container","urls","totalSize","persist","encodeSockdriveChanges","program","rgbaPtr","line","heapu8","start","soundFrequency","screenshot","frame","frameOffset","rgbaOffset","ImageData","simulateKeyPress","timeMs","keyCodes","forEach","keyCode","addKey","sendKeyEvent","pressed","sendMouseMotion","y","relative","sendMouseRelativeMotion","sendMouseButton","button","sendMouseSync","sendBackendEvent","payload","json","optOnlyChanges","onlyChanges","persistSockdrives","pause","mute","unmute","events","connected","clearInterval","networkConnect","networkDisconnect","asyncifyStats","reader","getReader","read","done","sendFullDataChunk","merged","getRunningProgram","readUint32","getStore","OpfsStore","NoStore","Map","put","getSync","getAsync","_","from","syncMode","blockHandle","metaHandle","blockSize","metaSize","blockLength","metaEntry","asyncOpPromise","static","root","storage","getDirectory","jsdosRoot","getDirectoryHandle","create","cachesRoot","sockdriveRoot","owner","blockFH","getFileHandle","metaFH","blockSH","createSyncAccessHandle","metaSH","getSize","close","warn","getFile","metaData","loadIndex","clear","truncate","bw","createWritable","mw","expectedBlockSize","metaPos","blockPos","block","meta","write","at","flush","writeOp","handle","keepExistingData","seek","blockWrite","metaWrite","traverseSockdriveChanges","sockdrive","sockdrive_store_1","mini_lz4_1","persistedSectors","preloadMode","_onNewRange","ahead_read","preload_ranges","readInBytes","writeInBytes","loadedRanges","Set","small_ranges","storedSectors","deserializeSectors","storeKeys","add","find","range","preload","droppedRanges","dropped_ranges","emptyRanges","loadQueue","preloaded","range_count","invalidRanges","splice","reverse","rangesToLoad","sector","sector_size","onNewRange","sectorData","entries","mergeSectorsData","loadRange","retries","ok","loadFromQueue","bach","pop","serializeSectors","sectors","sectorsData","rangeSectors","chunksSize","boundSize","uncompressedChunk","u32uncompressedChunk","compressedChunk","compressedSize","chunkSize","uncompressedSize","rangeOfSector","preloadSizeInBytes","sizeInBytes","sort","brotliRanges","verifySectors","serialized","deserialized","rangeMap","rangeKey","deserializedRange","sectorKey","deserializedSector","every","readRangeAsync","encoded","callback","decoder","urlLength","persistLength"],"mappings":"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","file":"emulators.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n",null,"var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.30.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.30.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw $RangeError('Wrong offset');\n return offset;\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\n/* eslint-disable */\n// Autogenerated\n// -------------\n// gulpfile.ts/wasm.ts --> generateBuildInfo\n\nexport const Build = {\n version: \"8.4.1 (12e8fc1502fd2b3958da176868f9f846)\",\n buildSeed: 1783969597168,\n \"wdosbox-x-jspi.wasm\": {\n \"size\": 7716226,\n \"gzSize\": 2703372\n },\n \"wdosbox-x-jspi.js\": {\n \"size\": 230216,\n \"gzSize\": 54296\n },\n \"wdosbox-x.wasm\": {\n \"size\": 7859183,\n \"gzSize\": 2753872\n },\n \"wdosbox-x.js\": {\n \"size\": 229416,\n \"gzSize\": 55194\n },\n \"wdosbox.wasm\": {\n \"size\": 1459705,\n \"gzSize\": 501642\n },\n \"wdosbox.js\": {\n \"size\": 110662,\n \"gzSize\": 29302\n },\n \"wlibzip.wasm\": {\n \"size\": 112483,\n \"gzSize\": 52219\n },\n \"wlibzip.js\": {\n \"size\": 72957,\n \"gzSize\": 19326\n }\n,\n};\n","// # DosBundle\n// Is a complete bundle that contains everything needed to start dosbox server\n\nimport LibZip from \"../../libzip/libzip\";\n\nimport { httpRequest } from \"../../http\";\n\nimport { WasmModule } from \"../../impl/modules\";\nimport { Build } from \"../../build\";\n\n// ### DosArchiveSource\nexport interface DosArchiveSource {\n // source (archive) to download and extract via `extractAll`\n\n // **url** where archive is located\n url: string;\n\n // **path**\n path: string;\n\n // **type**\n type?: \"zip\";\n // archive type, now only Zip is supported\n}\n\nexport default class DosBundle {\n public dosboxConf = defaultConfig;\n public jsdosConf = {\n version: Build.version,\n };\n public sources: DosArchiveSource[];\n\n private libzipWasm: WasmModule;\n\n constructor(libzipWasm: WasmModule) {\n this.sources = [];\n this.libzipWasm = libzipWasm;\n }\n\n autoexec(...lines: string[]): DosBundle {\n const index = this.dosboxConf.indexOf(\"[autoexec]\");\n this.dosboxConf = this.dosboxConf.substring(0, index) +\n \"[autoexec]\\nmount c .\\nc:\\n\" + lines.join(\"\\n\");\n return this;\n }\n\n extract(url: string, path = \"/\", type: \"zip\" = \"zip\"): DosBundle {\n // simplified version of extractAll, works only for one archive. It calls extractAll inside.\n return this.extractAll([{ url, path, type }]);\n }\n\n extractAll(sources: DosArchiveSource[]): DosBundle {\n // eslint-disable-next-line max-len\n // download given [`sources`](https://js-dos.com/6.22/docs/api/generate.html?page=jsdos-bundle#dosfs-dosarchivesource)\n // and extract them\n this.sources.push(...sources);\n return this;\n }\n\n async toUint8Array(overwriteConfig = false): Promise<Uint8Array> {\n const module = {};\n await this.libzipWasm.instantiate(module);\n const libzip = new LibZip(module);\n\n const promises = [];\n for (const source of this.sources) {\n if (source.type !== \"zip\") {\n throw new Error(\"Only Zip is supported\");\n }\n\n const resource = httpRequest(source.url, {\n responseType: \"arraybuffer\",\n }).then((buffer: string | ArrayBuffer) => {\n return {\n source,\n data: new Uint8Array(buffer as ArrayBuffer),\n };\n });\n\n promises.push(resource);\n }\n\n if (!overwriteConfig) {\n await libzip.writeFile(\".jsdos/dosbox.conf\", this.dosboxConf);\n await libzip.writeFile(\".jsdos/readme.txt\", readmeTxt);\n await libzip.writeFile(\".jsdos/jsdos.json\", JSON.stringify(this.jsdosConf, null, 2));\n }\n\n const resources = await Promise.all(promises);\n for (const resource of resources) {\n libzip.zipToFs(resource.data, resource.source.path);\n }\n\n if (overwriteConfig) {\n await libzip.writeFile(\".jsdos/dosbox.conf\", this.dosboxConf);\n await libzip.writeFile(\".jsdos/readme.txt\", readmeTxt);\n await libzip.writeFile(\".jsdos/jsdos.json\", JSON.stringify(this.jsdosConf, null, 2));\n }\n\n const bundle = await libzip.zipFromFs();\n libzip.destroy();\n\n return bundle;\n }\n}\n\n\nconst readmeTxt = `\nPlease visit our website:\n\n _ __\n (_)____ ____/ /___ _____ _________ ____ ___\n / / ___/_____/ __ / __ \\\\/ ___// ___/ __ \\\\/ __ \\`__ \\\\\n / (__ )_____/ /_/ / /_/ (__ )/ /__/ /_/ / / / / / /\n __/ /____/ \\\\__,_/\\\\____/____(_)___/\\\\____/_/ /_/ /_/\n /___/\n`.replace(/\\n/g, \"\\r\\n\");\n\n/* eslint-disable max-len */\nexport const defaultConfig = `[sdl]\nautolock=false\n\nfullscreen=false\nfulldouble=false\nfullresolution=original\nwindowresolution=original\noutput=surface\nsensitivity=100\nwaitonerror=true\npriority=higher,normal\nmapperfile=mapper-jsdos.map\nusescancodes=true\nvsync=false\n[dosbox]\nmachine=svga_s3\n\nlanguage=\ncaptures=capture\nmemsize=16\n[cpu]\ncore=auto\ncputype=auto\ncycles=auto\n\ncycleup=10\ncycledown=20\n[mixer]\nnosound=false\nrate=44100\n\nblocksize=1024\nprebuffer=20\n\n[render]\n# frameskip: How many frames DOSBox skips before drawing one.\n# aspect: Do aspect correction, if your output method doesn't support scaling this can slow things down!.\n# scaler: Scaler used to enlarge/enhance low resolution modes.\n# If 'forced' is appended, then the scaler will be used even if the result might not be desired.\n# Possible values: none, normal2x, normal3x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x.\n\nframeskip=0\naspect=false\nscaler=none\n\n[midi]\n# mpu401: Type of MPU-401 to emulate.\n# Possible values: intelligent, uart, none.\n# mididevice: Device that will receive the MIDI data from MPU-401.\n# Possible values: default, win32, alsa, oss, coreaudio, coremidi, none.\n# midiconfig: Special configuration options for the device driver. This is usually the id of the device you want to use.\n# See the README/Manual for more details.\n\nmpu401=intelligent\nmididevice=default\nmidiconfig=\n\n[sblaster]\n# sbtype: Type of Soundblaster to emulate. gb is Gameblaster.\n# Possible values: sb1, sb2, sbpro1, sbpro2, sb16, gb, none.\n# sbbase: The IO address of the soundblaster.\n# Possible values: 220, 240, 260, 280, 2a0, 2c0, 2e0, 300.\n# irq: The IRQ number of the soundblaster.\n# Possible values: 7, 5, 3, 9, 10, 11, 12.\n# dma: The DMA number of the soundblaster.\n# Possible values: 1, 5, 0, 3, 6, 7.\n# hdma: The High DMA number of the soundblaster.\n# Possible values: 1, 5, 0, 3, 6, 7.\n# sbmixer: Allow the soundblaster mixer to modify the DOSBox mixer.\n# oplmode: Type of OPL emulation. On 'auto' the mode is determined by sblaster type. All OPL modes are Adlib-compatible, except for 'cms'.\n# Possible values: auto, cms, opl2, dualopl2, opl3, none.\n# oplemu: Provider for the OPL emulation. compat might provide better quality (see oplrate as well).\n# Possible values: default, compat, fast.\n# oplrate: Sample rate of OPL music emulation. Use 49716 for highest quality (set the mixer rate accordingly).\n# Possible values: 44100, 49716, 48000, 32000, 22050, 16000, 11025, 8000.\n\nsbtype=sb16\nsbbase=220\nirq=7\ndma=1\nhdma=5\nsbmixer=true\noplmode=auto\noplemu=default\noplrate=44100\n\n[gus]\n# gus: Enable the Gravis Ultrasound emulation.\n# gusrate: Sample rate of Ultrasound emulation.\n# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.\n# gusbase: The IO base address of the Gravis Ultrasound.\n# Possible values: 240, 220, 260, 280, 2a0, 2c0, 2e0, 300.\n# gusirq: The IRQ number of the Gravis Ultrasound.\n# Possible values: 5, 3, 7, 9, 10, 11, 12.\n# gusdma: The DMA channel of the Gravis Ultrasound.\n# Possible values: 3, 0, 1, 5, 6, 7.\n# ultradir: Path to Ultrasound directory. In this directory\n# there should be a MIDI directory that contains\n# the patch files for GUS playback. Patch sets used\n# with Timidity should work fine.\n\ngus=false\ngusrate=44100\ngusbase=240\ngusirq=5\ngusdma=3\nultradir=C:\\\\ULTRASND\n\n[speaker]\n# pcspeaker: Enable PC-Speaker emulation.\n# pcrate: Sample rate of the PC-Speaker sound generation.\n# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.\n# tandy: Enable Tandy Sound System emulation. For 'auto', emulation is present only if machine is set to 'tandy'.\n# Possible values: auto, on, off.\n# tandyrate: Sample rate of the Tandy 3-Voice generation.\n# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.\n# disney: Enable Disney Sound Source emulation. (Covox Voice Master and Speech Thing compatible).\n\npcspeaker=true\npcrate=44100\ntandy=auto\ntandyrate=44100\ndisney=true\n\n[joystick]\n# joysticktype: Type of joystick to emulate: auto (default), none,\n# 2axis (supports two joysticks),\n# 4axis (supports one joystick, first joystick used),\n# 4axis_2 (supports one joystick, second joystick used),\n# fcs (Thrustmaster), ch (CH Flightstick).\n# none disables joystick emulation.\n# auto chooses emulation depending on real joystick(s).\n# (Remember to reset dosbox's mapperfile if you saved it earlier)\n# Possible values: auto, 2axis, 4axis, 4axis_2, fcs, ch, none.\n# timed: enable timed intervals for axis. Experiment with this option, if your joystick drifts (away).\n# autofire: continuously fires as long as you keep the button pressed.\n# swap34: swap the 3rd and the 4th axis. can be useful for certain joysticks.\n# buttonwrap: enable button wrapping at the number of emulated buttons.\n\njoysticktype=auto\ntimed=true\nautofire=false\nswap34=false\nbuttonwrap=false\n\n[serial]\n# serial1: set type of device connected to com port.\n# Can be disabled, dummy, modem, nullmodem, directserial.\n# Additional parameters must be in the same line in the form of\n# parameter:value. Parameter for all types is irq (optional).\n# for directserial: realport (required), rxdelay (optional).\n# (realport:COM1 realport:ttyS0).\n# for modem: listenport (optional).\n# for nullmodem: server, rxdelay, txdelay, telnet, usedtr,\n# transparent, port, inhsocket (all optional).\n# Example: serial1=modem listenport:5000\n# Possible values: dummy, disabled, modem, nullmodem, directserial.\n# serial2: see serial1\n# Possible values: dummy, disabled, modem, nullmodem, directserial.\n# serial3: see serial1\n# Possible values: dummy, disabled, modem, nullmodem, directserial.\n# serial4: see serial1\n# Possible values: dummy, disabled, modem, nullmodem, directserial.\n\nserial1=dummy\nserial2=dummy\nserial3=disabled\nserial4=disabled\n\n[dos]\n# xms: Enable XMS support.\n# ems: Enable EMS support.\n# umb: Enable UMB support.\n# keyboardlayout: Language code of the keyboard layout (or none).\n\nxms=true\nems=true\numb=true\nkeyboardlayout=auto\n\n[ipx]\n# ipx: Enable ipx over UDP/IP emulation.\n\nipx=true\n[autoexec]\necho off\nmount c .\nc:\n\ntype jsdos~1/readme.txt\necho on\n\n# Generated using https://js-dos.com\n# █▀▀▀▀▀█ █ ▄▄▄▀▀█ █▀▀▀▀▀█\n# █ ███ █ ██▄ █ ▀ ▄ █ ███ █\n# █ ▀▀▀ █ ▄██ ▀ ▀▀█ █ ▀▀▀ █\n# ▀▀▀▀▀▀▀ ▀ █▄▀▄▀ █ ▀▀▀▀▀▀▀\n# █▀▄▄█▀▀▄▄ ▀ ▀█▄▄▄▄ ▀▄█▀█▀\n# █▀ ▀ ▀▀▄ █▀ ▄ ▄▀▀▀▄ █▀█▄\n# ▄ ▄▄ █▀▀▄ ▄▀▄▀▀█ ▀▀▄▀▀█▀\n# ▄▀▀█▀▀ █▀█▀█▀▀▄ ▀██▀█▄\n# ▀▀▀ ▀ ▀ █▄█ ▀█▄▄█▀▀▀█▀▀\n# █▀▀▀▀▀█ ▄▄▄ ▄ ▄ █ ▀ █▄▄▄▄\n# █ ███ █ ▀█▀▀▄▀▀▄████▀▀█▄█\n# █ ▀▀▀ █ ▄▀▀█▀█▀▄ ▀▀▄▄█▄█\n# ▀▀▀▀▀▀▀ ▀ ▀▀ ▀ ▀ ▀▀▀\n`.replace(/\\n/g, \"\\r\\n\");\n\n/* eslint-enable max-len */\n","\nexport async function createAudioPort(): Promise<MessagePort | undefined> {\n try {\n const blob = new Blob([code], { type: \"application/javascript\" });\n const url = URL.createObjectURL(blob);\n const context = new AudioContext({\n sampleRate: 44100,\n latencyHint: \"interactive\",\n });\n if (context.sampleRate !== 44100) {\n console.error(\"sample rate is\", context.sampleRate, \"expected 44100, can't create worklet\");\n return undefined;\n }\n await context.audioWorklet.addModule(url);\n const node = new AudioWorkletNode(context, \"jsdos-audio\", {\n numberOfInputs: 0,\n numberOfOutputs: 1,\n outputChannelCount: [1],\n });\n node.connect(context.destination);\n\n const resumeWebAudio = () => {\n if (context !== null && context.state === \"suspended\") {\n context.resume().catch(console.error);\n }\n };\n document.addEventListener(\"pointerdown\", resumeWebAudio, { once: true, capture: true });\n document.addEventListener(\"keydown\", resumeWebAudio, { once: true, capture: true });\n\n return node.port;\n } catch (e) {\n console.error(\"error creating audio port\", e);\n return undefined;\n }\n}\n\nconst code = ` \nclass SamplesQueue {\n constructor() {\n this.samplesQueue = [];\n this.started = false;\n }\n\n push(samples) {\n if (this.started) {\n this.samplesQueue.push(samples);\n }\n if (this.length() > 8192) {\n console.error(\"samples queue is too long, dropping samples\");\n this.samplesQueue = [samples];\n }\n }\n\n length() {\n let total = 0;\n for (const next of this.samplesQueue) {\n total += next.length;\n }\n return total;\n }\n\n writeTo(dst, bufferSize) {\n this.started = true;\n let writeIt = 0;\n while (this.samplesQueue.length > 0) {\n const src = this.samplesQueue[0];\n const toRead = Math.min(bufferSize - writeIt, src.length);\n if (toRead === src.length) {\n dst.set(src, writeIt);\n this.samplesQueue.shift();\n } else {\n dst.set(src.slice(0, toRead), writeIt);\n this.samplesQueue[0] = src.slice(toRead);\n }\n\n writeIt += toRead;\n\n if (writeIt === bufferSize) {\n break;\n }\n }\n\n if (writeIt < bufferSize) {\n dst.fill(0, writeIt);\n }\n }\n}\n\nclass Processor extends AudioWorkletProcessor {\n constructor() {\n super();\n this.queue = new SamplesQueue();\n \n this.port.onmessage = (e) => {\n const chunk = e.data;\n if (chunk instanceof Float32Array) {\n this.queue.push(chunk);\n }\n };\n }\n \n process(inputs, outputs) {\n const output = outputs[0][0];\n this.queue.writeTo(output, output.length);\n return true;\n }\n}\n \nregisterProcessor('jsdos-audio', Processor);\n`;\n","import { WasmModule } from \"../../../impl/modules\";\nimport { TransportLayer, MessageHandler, ClientMessage, ServerMessage, Net } from \"../../../protocol/protocol\";\nimport { MessagesQueue } from \"../../../protocol/messages-queue\";\nimport { createAudioPort } from \"./audio-worklet\";\n// Raw Node wasm wrappers expect sockdrive helpers to exist on the global object.\nimport \"../../../sockdrive/sockdrive\";\n\nexport async function dosDirect(wasmModule: WasmModule,\n sessionId: string,\n canvas?: OffscreenCanvas,\n audioWorklet?: boolean,\n net?: Net): Promise<TransportLayer> {\n const messagesQueue = new MessagesQueue();\n let handler: MessageHandler = messagesQueue.handler.bind(messagesQueue);\n\n const module: any = {};\n\n module.postMessage = (name: ServerMessage, props: { [key: string]: any }) => {\n handler(name, props);\n };\n\n const sleepHandler = (e: MessageEvent) => {\n const data = e.data;\n if (data?.name === \"ws-sync-sleep\" && data.props.sessionId === sessionId) {\n postMessage({ name: \"wc-sync-sleep\", props: data.props }, \"*\");\n }\n };\n\n\n const transportLayer: TransportLayer = {\n sessionId,\n sendMessageToServer: (name: ClientMessage, props?: { [key: string]: any }) => {\n module.messageHandler({ data: { name, props } });\n },\n initMessageHandler: (newHandler: MessageHandler) => {\n handler = newHandler;\n messagesQueue.sendTo(handler);\n },\n exit: () => {\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\"message\", sleepHandler);\n }\n },\n net: net ?? null,\n };\n\n (transportLayer as any).module = module;\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"message\", sleepHandler, { passive: true });\n }\n\n module.canvas = canvas;\n if (audioWorklet) {\n module.audioPort = await createAudioPort();\n }\n await wasmModule.instantiate(module);\n module.callMain([sessionId]);\n\n return transportLayer;\n}\n","import { WasmModule } from \"../../../impl/modules\";\nimport { TransportLayer, MessageHandler, ClientMessage, Net } from \"../../../protocol/protocol\";\nimport { MessagesQueue } from \"../../../protocol/messages-queue\";\nimport { createAudioPort } from \"./audio-worklet\";\n\nexport async function dosWorker(workerUrl: string,\n wasmModule: WasmModule,\n sessionId: string,\n canvas?: OffscreenCanvas,\n audioWorklet?: boolean,\n net?: Net): Promise<TransportLayer> {\n const messagesQueue = new MessagesQueue();\n let handler: MessageHandler = messagesQueue.handler.bind(messagesQueue);\n\n const response = await fetch(workerUrl);\n if (response.status !== 200) {\n throw new Error(\"Unable to download '\" + workerUrl + \"' (\" +\n response.status + \"): \" + response.statusText);\n }\n const localUrl = URL.createObjectURL(await response.blob());\n const worker = new Worker(localUrl);\n worker.onerror = (e) => {\n handler(\"ws-err\", { type: e.type, filename: e.filename, message: e.message });\n };\n worker.onmessage = (e) => {\n const data = e.data;\n if (data?.name !== undefined) {\n handler(data.name, data.props);\n }\n };\n\n const transportLayer: TransportLayer = {\n sessionId,\n sendMessageToServer: (name: ClientMessage,\n props: {[key: string]: any},\n transfer?: ArrayBuffer[]) => {\n if (transfer) {\n worker.postMessage({ name, props }, transfer);\n } else {\n worker.postMessage({ name, props });\n }\n },\n initMessageHandler: (newHandler: MessageHandler) => {\n handler = newHandler;\n messagesQueue.sendTo(handler);\n },\n exit: () => {\n URL.revokeObjectURL(localUrl);\n worker.terminate();\n },\n net: net ?? null,\n };\n\n const transfer: Transferable[] = canvas ? [canvas] : [];\n let audioPort;\n\n if (audioWorklet) {\n audioPort = await createAudioPort();\n if (audioPort) {\n transfer.push(audioPort);\n }\n }\n\n try {\n transportLayer.sendMessageToServer(\"wc-install\", {\n module: (wasmModule as any).wasmModule,\n sessionId,\n canvas,\n audioPort,\n }, transfer);\n } catch (e) {\n transportLayer.sendMessageToServer(\"wc-install\", {\n sessionId,\n canvas,\n audioPort,\n }, transfer);\n }\n\n return transportLayer;\n}\n","import DosBundle from \"./dos/bundle/dos-bundle\";\nimport emulatorsImpl from \"./impl/emulators-impl\";\n\nimport { AsyncifyStats, TransportLayer, FsNode, Net } from \"./protocol/protocol\";\n\nexport interface DosConfig {\n dosboxConf: string,\n jsdosConf: {\n version: string,\n },\n};\n\n/* eslint-disable no-unused-vars */\nexport enum NetworkType {\n NETWORK_DOSBOX_IPX = 0,\n}\n/* eslint-enable no-unused-vars */\n\nexport interface BackendOptions {\n token?: string | undefined;\n onExtractProgress?: (bundleIndex: number, file: string, extracted: number, total: number) => void;\n canvas?: OffscreenCanvas;\n audioWorklet?: boolean;\n sockdrivePreload?: \"all\" | \"default\" | \"none\";\n net?: Net;\n}\n\nexport type InitBundleEntry = Uint8Array;\nexport interface InitFileEntry {\n path: string,\n contents: Uint8Array,\n};\nexport type InitFsEntry = InitBundleEntry | InitFileEntry | DosConfig | string;\nexport type InitFs = InitFsEntry | InitFsEntry[];\n\nexport interface Emulators {\n // * pathPrefix - by default emulators will load wasm modules relatively from current path,\n // you should specify path prefix if you want to load them from different place\n pathPrefix: string;\n\n // * pathSuffix - suffix will be added to the end of each path\n pathSuffix: string;\n\n // * version - version of emulators build\n version: string;\n\n // * wdosboxJs - a file name to load\n wdosboxJs: string;\n\n // * dosBundle - create empty DosBundle\n bundle: () => Promise<DosBundle>;\n\n // * dosConfig - read bundle config\n bundleConfig: (bundle: InitBundleEntry) => Promise<DosConfig | null>;\n\n // * updateDosConfig - update bundle config\n bundleUpdateConfig: (bundle: InitBundleEntry, config: DosConfig) => Promise<Uint8Array>;\n\n // * dosboxNode - create dosbox node emulator backend\n dosboxNode: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * dosboxDirect - create dosbox direct emulator backend\n dosboxDirect: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * dosboxWorker - create dosbox worker emulator backend\n dosboxWorker: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * dosboxXNode - create dosbox-x node emulator backend\n dosboxXNode: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * dosboxDirect - create dosbox-x direct emulator backend\n dosboxXDirect: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * dosboxJspiDirect - create dosbox-x direct emulator backend (using jspi)\n dosboxXJspiDirect: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * dosboxWorker - create dosbox-x worker emulator backend\n dosboxXWorker: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * dosboxJspiWorker - create dosbox-x worker emulator backend (using jspi)\n dosboxXJspiWorker: (init: InitFs, options?: BackendOptions) => Promise<CommandInterface>;\n\n // * backend - create abstract emulation backend by given TransportLayer\n backend: (init: InitFs, transportLayer: TransportLayer,\n options?: BackendOptions) => Promise<CommandInterface>;\n}\n\nexport interface CommandInterface {\n // * get bundle config\n config: () => Promise<DosConfig>;\n\n // * current render buffer width\n height: () => number;\n\n // * current render buffer height\n width: () => number;\n\n // * sound frequency\n soundFrequency: () => number;\n\n // * `screenshot()` - get screenshot of canvas as ImageData\n screenshot: () => Promise<ImageData>;\n\n // * `pause()` - pause emulation (also mute all sounds)\n pause: () => void;\n\n // * `resume()` - resume emulation (also unmute all sounds)\n resume: () => void;\n\n // * `mute()` - mute all sounds\n mute: () => void;\n\n // * `unmute()` - unmute all sounds\n unmute: () => void;\n\n // * `exit()` - exit from runtime\n exit: () => Promise<void>;\n\n // * `simulateKeyPress(...keyCodes)` - allows to simulate key press **AND** release event for key code\n // see `sendKeyPress` to find meaning of keyCode. Key combination is supported when more than 1 keyCode is set.\n simulateKeyPress: (...keyCodes: number[]) => void;\n\n // * `sendKeyEvent(keyCode, pressed)` - sends single key (press or release) event to backend\n sendKeyEvent: (keyCode: number, pressed: boolean) => void;\n\n // * `sendMouseMotion` - sends mouse motion event to backend, position is in range [0, 1]\n sendMouseMotion: (x: number, y: number) => void;\n\n // * `sendRelativeMotion` - sends mouse motion event to backend, position is absolute diff of position\n sendMouseRelativeMotion: (x: number, y: number) => void;\n\n // * `simulateMouseButton` - sends mouse button event (press or release) to backend\n sendMouseButton: (button: number, pressed: boolean) => void;\n\n // * `sendMouseSync` - sends mouse sync event\n sendMouseSync: () => void;\n\n // * `sendBackendEvent` - send event for current backend, event will be stringified to json\n // dosbox-x:\n // - 'hand_savestate' - save state of emulators\n // - 'hand_loadstate' - restore state of emulators\n // dosbox/dosbox-x:\n // - 'hand_ipx_startserver' - start IPX server\n sendBackendEvent: (event: any) => void;\n\n // dump FS as Uint8Array <zip archive> or sockdrive changes <not a zip archive>\n persist(onlyChanges?: boolean): Promise<Uint8Array | null>;\n\n // events\n events(): CommandInterfaceEvents;\n\n // network\n net(): Net | null;\n\n networkConnect(networkType: NetworkType, address: string): Promise<void>;\n\n networkDisconnect(networkType: NetworkType): Promise<void>;\n\n asyncifyStats(): Promise<AsyncifyStats>;\n\n fsTree(): Promise<FsNode>;\n\n fsReadFile(file: string): Promise<Uint8Array>;\n\n fsWriteFile(file: string, contents: ReadableStream<Uint8Array> | Uint8Array): Promise<void>;\n\n fsDeleteFile(file: string): Promise<boolean>;\n\n getRunningProgram(): Promise<string>;\n}\n\nexport type MessageType = \"log\" | \"warn\" | \"error\" | string;\n\nexport interface CommandInterfaceEvents {\n onStdout: (consumer: (message: string) => void) => void;\n onFrameSize: (consumer: (width: number, height: number) => void) => void;\n onFrame: (consumer: (rgb: Uint8Array | null, rgba: Uint8Array | null) => void) => void;\n onSoundPush: (consumer: (samples: Float32Array) => void) => void;\n onExit: (consumer: () => void) => void;\n\n onMessage: (consumer: (msgType: MessageType, ...args: any[]) => void) => void;\n\n onNetworkConnected: (consumer: (networkType: NetworkType, address: string) => void) => void;\n onNetworkDisconnected: (consumer: (networkType: NetworkType) => void) => void;\n\n onUnload: (consumer: () => Promise<void>) => void;\n}\n\nif (typeof window !== \"undefined\") {\n (window as any).emulators = emulatorsImpl;\n}\nif (typeof global !== \"undefined\") {\n (global as any).emulators = emulatorsImpl;\n}\n","export interface XhrOptions {\n method?: string;\n progress?: (total: number, loaded: number) => void;\n data?: string;\n responseType?: XMLHttpRequestResponseType;\n}\n\nexport const httpRequest = XhrRequest;\n\n// # XhrRequest\n// `XhrRequest` is small wrapper over XMLHttpRequest, that provides some\n// handy methods\nfunction XhrRequest(url: string, options: XhrOptions): Promise<string | ArrayBuffer> {\n return new Promise<string | ArrayBuffer>((resolve, reject) => {\n new Xhr(url, {\n ...options,\n success: resolve,\n fail: (message: string) => {\n reject(new Error(message));\n },\n });\n });\n}\n\n// private implementation\ninterface XhrOptionsInternal extends XhrOptions {\n success?: (response: any) => void;\n fail?: (message: string) => void;\n}\n// * `success` - callback when resource is downloaded\n// * `fail` - fail callback\n\n\n// Class Xhr does not have any public methods\nclass Xhr {\n private resource: string;\n private options: XhrOptionsInternal;\n private xhr: XMLHttpRequest | null = null;\n private total = 0;\n private loaded = 0;\n\n constructor(url: string, options: XhrOptionsInternal) {\n this.resource = url;\n this.options = options;\n this.options.method = options.method || \"GET\";\n\n if (this.options.method !== \"GET\") {\n throw new Error(\"Method \" + this.options.method + \" is not supported\");\n }\n\n if (typeof XMLHttpRequest === \"undefined\") {\n this.makeNodeRequest();\n } else {\n this.makeHttpRequest();\n }\n }\n\n private makeNodeRequest() {\n const load = (module as any)[\"req\" + \"uire\"].bind(module);\n const fs = load(\"fs\");\n const path = load(\"path\");\n const url = load(\"url\");\n\n let resourcePath = this.resource;\n if (resourcePath.startsWith(\"http://\") || resourcePath.startsWith(\"https://\")) {\n this.makeNodeHttpRequest(resourcePath, load);\n return;\n }\n\n if (resourcePath.startsWith(\"file://\")) {\n resourcePath = url.fileURLToPath(resourcePath);\n } else if (resourcePath.startsWith(\"/\")) {\n const absolutePath = resourcePath;\n const cwdPath = path.resolve(process.cwd(), \".\" + resourcePath);\n resourcePath = fs.existsSync(absolutePath) ? absolutePath : cwdPath;\n } else {\n resourcePath = path.resolve(process.cwd(), resourcePath);\n }\n\n fs.readFile(resourcePath, (err: any, buffer: any) => {\n if (err !== null) {\n if (this.options.fail) {\n this.options.fail(\"Unable to download '\" + this.resource + \"', code: 404\");\n delete this.options.fail;\n }\n return;\n }\n\n if (this.options.progress) {\n this.options.progress(buffer.byteLength, buffer.byteLength);\n }\n\n if (this.options.success) {\n if (this.options.responseType === \"arraybuffer\") {\n const arrayBuffer = buffer.buffer\n .slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);\n this.options.success(arrayBuffer);\n } else {\n this.options.success(buffer.toString(\"utf8\"));\n }\n }\n });\n }\n\n private makeNodeHttpRequest(resource: string, load: (name: string) => any, redirects = 0) {\n const url = load(\"url\");\n const parsedUrl = new url.URL(resource);\n const requestModule = load(parsedUrl.protocol === \"https:\" ? \"https\" : \"http\");\n\n const request = requestModule.get(parsedUrl, (response: any) => {\n const statusCode = response.statusCode || 0;\n const location = response.headers.location;\n if (statusCode >= 300 && statusCode < 400 && location !== undefined) {\n response.resume();\n if (redirects >= 5) {\n if (this.options.fail) {\n this.options.fail(\"Unable to download '\" + this.resource + \"', code: \" + statusCode);\n delete this.options.fail;\n }\n return;\n }\n\n this.makeNodeHttpRequest(new url.URL(location, parsedUrl).toString(), load, redirects + 1);\n return;\n }\n\n if (statusCode < 200 || statusCode >= 300) {\n response.resume();\n if (this.options.fail) {\n this.options.fail(\"Unable to download '\" + this.resource + \"', code: \" + statusCode);\n delete this.options.fail;\n }\n return;\n }\n\n const chunks: any[] = [];\n const total = Number.parseInt(response.headers[\"content-length\"] || \"0\", 10);\n let loaded = 0;\n\n response.on(\"data\", (chunk: any) => {\n chunks.push(chunk);\n loaded += chunk.byteLength;\n if (this.options.progress) {\n this.options.progress(total, loaded);\n }\n });\n\n response.on(\"end\", () => {\n const buffer = load(\"buffer\").Buffer.concat(chunks);\n if (this.options.progress) {\n this.options.progress(total || buffer.byteLength, buffer.byteLength);\n }\n\n if (this.options.success) {\n if (this.options.responseType === \"arraybuffer\") {\n const arrayBuffer = buffer.buffer\n .slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);\n this.options.success(arrayBuffer);\n } else {\n this.options.success(buffer.toString(\"utf8\"));\n }\n }\n });\n });\n\n request.on(\"error\", (err: Error) => {\n if (this.options.fail) {\n this.options.fail(\"Unable to download '\" + this.resource + \"', code: \" + err.message);\n delete this.options.fail;\n }\n });\n }\n\n private makeHttpRequest() {\n this.xhr = new XMLHttpRequest();\n this.xhr.open(this.options.method || \"GET\", this.resource, true);\n if (this.options.method === \"POST\") {\n this.xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n }\n this.xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n\n let progressListner;\n if (typeof (progressListner = this.xhr).addEventListener === \"function\") {\n progressListner.addEventListener(\"progress\", (evt) => {\n this.total = evt.total;\n this.loaded = evt.loaded;\n if (this.options.progress) {\n return this.options.progress(evt.total, evt.loaded);\n }\n });\n }\n\n let errorListener;\n if (typeof (errorListener = this.xhr).addEventListener === \"function\") {\n errorListener.addEventListener(\"error\", () => {\n if (this.options.fail) {\n this.options.fail(\"Unalbe to download '\" + this.resource +\n \"', code: \" + (this.xhr as XMLHttpRequest).status);\n return delete this.options.fail;\n }\n });\n }\n this.xhr.onreadystatechange = () => {\n return this.onReadyStateChange();\n };\n if (this.options.responseType) {\n this.xhr.responseType = this.options.responseType;\n }\n this.xhr.send(this.options.data);\n }\n\n private onReadyStateChange() {\n const xhr = (this.xhr as XMLHttpRequest);\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n if (this.options.success) {\n const total = Math.max(this.total, this.loaded);\n if (this.options.progress !== undefined) {\n this.options.progress(total, total);\n }\n\n return this.options.success(xhr.response);\n }\n } else if (this.options.fail) {\n this.options.fail(\"Unable to download '\" + this.resource + \"', code: \" + xhr.status);\n return delete this.options.fail;\n }\n }\n }\n}\n","/* eslint-disable no-invalid-this */\n\nimport { CommandInterfaceEvents, MessageType, NetworkType } from \"../emulators\";\n\nexport class CommandInterfaceEventsImpl implements CommandInterfaceEvents {\n private onStdoutConsumers: ((message: string) => void)[] = [];\n private delayedStdout: string[] = [];\n\n private onFrameSizeConsumers: ((width: number, height: number) => void)[] = [];\n private onFrameConsumers: ((rgb: Uint8Array | null, rgba: Uint8Array | null) => void)[] = [];\n private onSoundPushConsumers: ((samples: Float32Array) => void)[] = [];\n private onExitConsumers: (() => void)[] = [];\n\n private onMessageConsumers: ((msgType: MessageType, ...args: any[]) => void)[] = [];\n private delayedMessages: {msgType: MessageType, args: any[]}[] = [];\n\n private onNetworkConnectedConsumers: ((networkType: NetworkType, address: string) => void)[] = [];\n private onNetworkDisconnectedConsumers: ((networkType: NetworkType) => void)[] = [];\n\n private onUnloadConsumers: (() => Promise<void>)[] = [];\n\n onStdout = (consumer: (message: string) => void) => {\n this.onStdoutConsumers.push(consumer);\n\n if (this.onStdoutConsumers.length === 1) {\n for (const next of this.delayedStdout) {\n this.fireStdout(next);\n }\n this.delayedStdout = [];\n }\n };\n\n onFrameSize = (consumer: (width: number, height: number) => void) => {\n this.onFrameSizeConsumers.push(consumer);\n };\n\n onFrame = (consumer: (rgb: Uint8Array | null, rgba: Uint8Array | null) => void) => {\n this.onFrameConsumers.push(consumer);\n };\n\n onSoundPush = (consumer: (samples: Float32Array) => void) => {\n this.onSoundPushConsumers.push(consumer);\n };\n\n onExit = (consumer: () => void) => {\n this.onExitConsumers.push(consumer);\n };\n\n onMessage = (consumer: (msgType: MessageType, ...args: any[]) => void) => {\n this.onMessageConsumers.push(consumer);\n\n if (this.onMessageConsumers.length === 1) {\n for (const next of this.delayedMessages) {\n consumer(next.msgType, ...next.args);\n }\n this.delayedMessages = [];\n }\n };\n\n onNetworkConnected(consumer: (networkType: NetworkType, address: string) => void) {\n this.onNetworkConnectedConsumers.push(consumer);\n }\n\n onNetworkDisconnected(consumer: (networkType: NetworkType) => void) {\n this.onNetworkDisconnectedConsumers.push(consumer);\n }\n\n onUnload = (consumer: () => Promise<void>) => {\n this.onUnloadConsumers.push(consumer);\n };\n\n fireStdout = (message: string) => {\n if (this.onStdoutConsumers.length === 0) {\n this.delayedStdout.push(message);\n return;\n }\n\n for (const next of this.onStdoutConsumers) {\n next(message);\n }\n };\n\n fireFrameSize = (width: number, height: number) => {\n for (const next of this.onFrameSizeConsumers) {\n next(width, height);\n }\n };\n\n fireFrame = (rgb: Uint8Array | null, rgba: Uint8Array | null) => {\n for (const next of this.onFrameConsumers) {\n next(rgb, rgba);\n }\n };\n\n fireSoundPush = (samples: Float32Array) => {\n for (const next of this.onSoundPushConsumers) {\n next(samples);\n }\n };\n\n fireExit = () => {\n for (const next of this.onExitConsumers) {\n next();\n }\n\n this.onStdoutConsumers = [];\n this.onFrameSizeConsumers = [];\n this.onFrameConsumers = [];\n this.onSoundPushConsumers = [];\n this.onExitConsumers = [];\n this.onMessageConsumers = [];\n };\n\n fireMessage = (msgType: MessageType, ...args: any[]) => {\n if (this.onMessageConsumers.length === 0) {\n this.delayedMessages.push({ msgType, args });\n return;\n }\n\n for (const next of this.onMessageConsumers) {\n next(msgType, ...args);\n }\n };\n\n fireNetworkConnected = (networkType: NetworkType, address: string) => {\n for (const next of this.onNetworkConnectedConsumers) {\n next(networkType, address);\n }\n };\n\n fireNetworkDisconnected = (networkType: NetworkType) => {\n for (const next of this.onNetworkDisconnectedConsumers) {\n next(networkType);\n }\n };\n\n fireUnload = async () => {\n const promises = [];\n for (const next of this.onUnloadConsumers) {\n promises.push(next());\n }\n await Promise.all(promises);\n };\n}\n","import { Build } from \"../build\";\nimport { Emulators, CommandInterface, BackendOptions, DosConfig, InitFs, InitBundleEntry } from \"../emulators\";\n\nimport { IWasmModules, WasmModulesImpl } from \"./modules\";\n\nimport DosBundle from \"../dos/bundle/dos-bundle\";\nimport { dosDirect } from \"../dos/dosbox/ts/direct\";\nimport { dosWorker } from \"../dos/dosbox/ts/worker\";\n\nimport { TransportLayer, CommandInterfaceOverTransportLayer } from \"../protocol/protocol\";\nimport LibZip from \"../libzip/libzip\";\n\nclass EmulatorsImpl implements Emulators {\n pathPrefix = \"\";\n pathSuffix = \"\";\n version = Build.version;\n wdosboxJs = \"wdosbox.js\";\n wdosboxxJs = \"wdosbox-x.js\";\n wdosboxxJsJspi = \"wdosbox-x-jspi.js\";\n\n private wasmModulesPromise?: Promise<IWasmModules>;\n\n async bundle(): Promise<DosBundle> {\n const modules = await this.wasmModules();\n const libzipWasm = await modules.libzip();\n return new DosBundle(libzipWasm);\n }\n\n async bundleConfig(bundle: InitBundleEntry): Promise<DosConfig | null> {\n const modules = await this.wasmModules();\n const libzipWasm = await modules.libzip();\n\n const module = {};\n await libzipWasm.instantiate(module);\n const libzip = new LibZip(module);\n\n try {\n libzip.zipToFs(bundle, \"/\", \".jsdos/\");\n try {\n const dosboxConf = (await libzip.readFile(\".jsdos/dosbox.conf\")) as string;\n try {\n const jsdosConf = (await libzip.readFile(\".jsdos/jsdos.json\")) as string;\n return {\n dosboxConf,\n jsdosConf: JSON.parse(jsdosConf),\n };\n } catch (e) {\n // ignore\n }\n return {\n dosboxConf,\n jsdosConf: {\n version: Build.version,\n },\n };\n } catch (e) {\n // ignore\n }\n return null;\n } finally {\n libzip.destroy();\n }\n }\n\n async bundleUpdateConfig(bundle: InitBundleEntry, config: DosConfig): Promise<Uint8Array> {\n const modules = await this.wasmModules();\n const libzipWasm = await modules.libzip();\n\n const module = {};\n await libzipWasm.instantiate(module);\n const libzip = new LibZip(module);\n\n try {\n await libzip.writeFile(\"bundle.zip\", bundle);\n await libzip.writeFile(\".jsdos/dosbox.conf\", config.dosboxConf);\n await libzip.writeFile(\".jsdos/jsdos.json\", JSON.stringify(config.jsdosConf));\n await libzip.zipAddFile(\"bundle.zip\", \".jsdos/jsdos.json\");\n await libzip.zipAddFile(\"bundle.zip\", \".jsdos/dosbox.conf\");\n return (await libzip.readFile(\"bundle.zip\", \"binary\")) as Uint8Array;\n } finally {\n libzip.destroy();\n }\n }\n\n async dosboxNode(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n return this.dosboxDirect(init, options);\n }\n\n async dosboxDirect(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n const modules = await this.wasmModules();\n const dosboxWasm = await modules.dosbox();\n const transportLayer = await dosDirect(dosboxWasm, \"session-\" + Date.now(),\n options?.canvas, options?.audioWorklet, options?.net);\n return this.backend(init, transportLayer, options);\n }\n\n async dosboxWorker(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n const modules = await this.wasmModules();\n const dosboxWasm = await modules.dosbox();\n const transportLayer = await dosWorker(this.pathPrefix + this.wdosboxJs + this.pathSuffix,\n dosboxWasm, \"session-\" + Date.now(), options?.canvas, options?.audioWorklet, options?.net);\n return this.backend(init, transportLayer, options);\n }\n\n async dosboxXNode(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n return this.dosboxXDirect(init, options);\n }\n\n async dosboxXDirect(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n const modules = await this.wasmModules();\n const dosboxxWasm = await modules.dosboxx();\n const transportLayer = await dosDirect(dosboxxWasm, \"session-\" + Date.now(),\n options?.canvas, options?.audioWorklet, options?.net);\n return this.backend(init, transportLayer, options);\n }\n\n async dosboxXJspiDirect(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n const modules = await this.wasmModules();\n const dosboxxWasm = await modules.dosboxxJspi();\n const transportLayer = await dosDirect(dosboxxWasm, \"session-\" + Date.now(),\n options?.canvas, options?.audioWorklet, options?.net);\n return this.backend(init, transportLayer, options);\n }\n\n async dosboxXWorker(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n const modules = await this.wasmModules();\n const dosboxxWasm = await modules.dosboxx();\n const transportLayer = await dosWorker(this.pathPrefix + this.wdosboxxJs + this.pathSuffix,\n dosboxxWasm, \"session-\" + Date.now(), options?.canvas, options?.audioWorklet, options?.net);\n return this.backend(init, transportLayer, options);\n }\n\n async dosboxXJspiWorker(init: InitFs, options?: BackendOptions): Promise<CommandInterface> {\n const modules = await this.wasmModules();\n const dosboxxWasm = await modules.dosboxxJspi();\n const transportLayer = await dosWorker(this.pathPrefix + this.wdosboxxJsJspi + this.pathSuffix,\n dosboxxWasm, \"session-\" + Date.now(), options?.canvas, options?.audioWorklet, options?.net);\n return this.backend(init, transportLayer, options);\n }\n\n async backend(init: InitFs, transportLayer: TransportLayer,\n options?: BackendOptions): Promise<CommandInterface> {\n return new Promise<CommandInterface>((resolve, reject) => {\n const ci = new CommandInterfaceOverTransportLayer(\n Array.isArray(init) ? init : [init],\n transportLayer,\n (err) => {\n if (err !== null) {\n reject(err);\n } else {\n // can be called from ctor, without timeout can be undefined\n setTimeout(() => resolve(ci), 4);\n }\n },\n options || {},\n );\n });\n }\n\n wasmModules(): Promise<IWasmModules> {\n if (this.wasmModulesPromise !== undefined) {\n return this.wasmModulesPromise;\n }\n\n const make = async () => {\n return new WasmModulesImpl(this.pathPrefix, this.pathSuffix, this.wdosboxJs,\n this.wdosboxxJs, this.wdosboxxJsJspi);\n };\n\n this.wasmModulesPromise = make();\n return this.wasmModulesPromise;\n }\n\n async dosDirect(init: InitFs): Promise<CommandInterface> {\n return this.dosboxDirect(init);\n }\n\n async dosWorker(init: InitFs): Promise<CommandInterface> {\n return this.dosboxWorker(init);\n }\n}\n\nconst emulators = new EmulatorsImpl();\n\nexport default emulators;\n","import { httpRequest } from \"../http\";\n\nexport interface WasmModule {\n instantiate: (module?: any) => Promise<any>;\n}\n\nexport interface IWasmModules {\n libzip: () => Promise<WasmModule>;\n dosbox: () => Promise<WasmModule>;\n dosboxx: () => Promise<WasmModule>;\n dosboxxJspi: () => Promise<WasmModule>;\n}\n\ninterface Globals {\n exports: {[moduleName: string]: any},\n module: {\n exports?: () => void,\n },\n compiled: {[moduleName: string]: Promise<WasmModule>},\n}\n\nclass Host {\n public wasmSupported = false;\n public globals: Globals;\n constructor() {\n this.globals = typeof window === \"undefined\" ? {} : window as any;\n if (!this.globals.module) {\n this.globals.module = {};\n }\n if (!this.globals.exports) {\n this.globals.exports = {};\n }\n if (!this.globals.compiled) {\n this.globals.compiled = {};\n }\n\n // ### WebAssembly\n // Host able to detect is WebAssembly supported or not,\n // this information is stored in `Host.wasmSupported` variable\n if (typeof WebAssembly === \"object\" &&\n typeof WebAssembly.instantiate === \"function\" &&\n typeof WebAssembly.compile === \"function\") {\n const wmodule = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n if (wmodule instanceof WebAssembly.Module) {\n this.wasmSupported = new WebAssembly.Instance(wmodule) instanceof WebAssembly.Instance;\n }\n }\n\n // Polyfill for old contains implementations for:\n // `Math.imul`, `Math.fround`, `Math.clz32`, `Math.trunc`\n (function polyfill() {\n if (!Math.imul || Math.imul(0xffffffff, 5) !== -5) {\n Math.imul = function imul(a: any, b: any) {\n const ah = a >>> 16;\n const al = a & 0xffff;\n const bh = b >>> 16;\n const bl = b & 0xffff;\n return (al * bl + ((ah * bl + al * bh) << 16)) | 0;\n };\n }\n Math.imul = Math.imul;\n\n if (!Math.fround) {\n Math.fround = function(x) {\n return x;\n };\n }\n Math.fround = Math.fround;\n\n if (!Math.clz32) {\n Math.clz32 = function(x) {\n x = x >>> 0;\n for (let i = 0; i < 32; i++) {\n if (x & (1 << (31 - i))) {\n return i;\n }\n }\n return 32;\n };\n }\n Math.clz32 = Math.clz32;\n\n if (!Math.trunc) {\n Math.trunc = function(x) {\n return x < 0 ? Math.ceil(x) : Math.floor(x);\n };\n }\n Math.trunc = Math.trunc;\n })();\n }\n}\n\nexport const host = new Host();\n\nexport class WasmModulesImpl implements IWasmModules {\n private pathPrefix: string;\n private pathSuffix: string;\n private wdosboxJs: string;\n private wdosboxxJs: string;\n private wdosboxxJsJspi: string;\n\n private libzipPromise?: Promise<WasmModule>;\n private dosboxPromise?: Promise<WasmModule>;\n private dosboxxPromise?: Promise<WasmModule>;\n private dosboxxJspiPromise?: Promise<WasmModule>;\n\n public wasmSupported = false;\n\n constructor(pathPrefix: string,\n pathSuffix: string,\n wdosboxJs: string,\n wdosboxxJs: string,\n wdosboxxJsJspi: string) {\n if (pathPrefix.length > 0 && pathPrefix[pathPrefix.length - 1] !== \"/\") {\n pathPrefix += \"/\";\n }\n\n this.pathPrefix = pathPrefix;\n this.pathSuffix = pathSuffix;\n this.wdosboxJs = wdosboxJs;\n this.wdosboxxJs = wdosboxxJs;\n this.wdosboxxJsJspi = wdosboxxJsJspi;\n }\n\n libzip() {\n if (this.libzipPromise !== undefined) {\n return this.libzipPromise;\n }\n\n this.libzipPromise = this.loadModule(this.pathPrefix + \"wlibzip.js\" + this.pathSuffix, \"WLIBZIP\");\n return this.libzipPromise;\n }\n\n dosbox() {\n if (this.dosboxPromise !== undefined) {\n return this.dosboxPromise;\n }\n\n this.dosboxPromise = this.loadModule(this.pathPrefix + this.wdosboxJs + this.pathSuffix, \"WDOSBOX\");\n\n return this.dosboxPromise;\n }\n\n dosboxx() {\n if (this.dosboxxPromise !== undefined) {\n return this.dosboxxPromise;\n }\n\n this.dosboxxPromise = this.loadModule(this.pathPrefix + this.wdosboxxJs + this.pathSuffix, \"WDOSBOXX\");\n\n return this.dosboxxPromise;\n }\n\n dosboxxJspi() {\n if (this.dosboxxJspiPromise !== undefined) {\n return this.dosboxxJspiPromise;\n }\n\n this.dosboxxJspiPromise = this\n .loadModule(this.pathPrefix + this.wdosboxxJsJspi + this.pathSuffix, \"WDOSBOXXJSPI\");\n return this.dosboxxJspiPromise;\n }\n\n private loadModule(url: string,\n moduleName: string) {\n // eslint-disable-next-line\n return loadWasmModule(url, moduleName, () => {});\n }\n}\n\nexport function loadWasmModule(url: string,\n moduleName: string,\n onprogress: (stage: string, total: number, loaded: number) => void,\n): Promise<WasmModule> {\n if (typeof XMLHttpRequest === \"undefined\") {\n return loadWasmModuleNode(url, moduleName, onprogress);\n } else {\n return loadWasmModuleBrowser(url, moduleName, onprogress);\n }\n}\n\nfunction loadWasmModuleNode(url: string,\n moduleName: string,\n // eslint-disable-next-line\n onprogress: (stage: string, total: number, loaded: number) => void) {\n if (host.globals.compiled[moduleName] !== undefined) {\n return host.globals.compiled[moduleName];\n }\n\n const emModule = require(url);\n const compiledModulePromise = Promise.resolve(new CompiledNodeModule(emModule));\n if (moduleName) {\n host.globals.compiled[moduleName] = compiledModulePromise;\n }\n\n return compiledModulePromise;\n}\n\nfunction loadWasmModuleBrowser(url: string,\n moduleName: string,\n onprogress: (stage: string, total: number, loaded: number) => void) {\n if (host.globals.compiled[moduleName] !== undefined) {\n return host.globals.compiled[moduleName];\n }\n\n async function load() {\n const fromIndex = url.lastIndexOf(\"/\");\n const wIndex = url.indexOf(\"w\", fromIndex);\n const isWasmUrl = wIndex === fromIndex + 1 && wIndex >= 0;\n\n if (!host.wasmSupported || !isWasmUrl) {\n throw new Error(\"Starting from js-dos 6.22.60 js environment is not supported\");\n }\n\n const indexOfJs = url.lastIndexOf(\".js\");\n const wasmUrl = url.substring(0, indexOfJs) + \".wasm\" + url.substring(indexOfJs + 3);\n const binaryPromise = httpRequest(wasmUrl, {\n responseType: \"arraybuffer\",\n progress: (total, loaded) => {\n onprogress(\"Resolving DosBox (\" + url + \")\", total, loaded);\n },\n });\n const scriptPromise = httpRequest(url, {\n progress: (total, loaded) => {\n onprogress(\"Resolving DosBox\", total, loaded);\n },\n });\n\n const [binary, script] = await Promise.all([binaryPromise, scriptPromise]);\n const wasmModule = await WebAssembly.compile(binary as ArrayBuffer);\n const instantiateWasm = (info: any, receiveInstance: any) => {\n info.env = info.env || {};\n return WebAssembly.instantiate(wasmModule, info)\n .then((instance) => receiveInstance(instance, wasmModule));\n };\n\n eval.call(window, script as string);\n host.globals.exports[moduleName] = host.globals.module.exports;\n\n return new CompiledBrowserModule(wasmModule,\n host.globals.exports[moduleName],\n instantiateWasm);\n }\n\n const promise = load();\n\n if (moduleName) {\n host.globals.compiled[moduleName] = promise;\n }\n\n return promise;\n}\n\nclass CompiledNodeModule implements WasmModule {\n private emModule: any;\n constructor(emModule: any) {\n this.emModule = emModule;\n }\n\n async instantiate(initialModule: any): Promise<void> {\n await this.emModule(initialModule);\n }\n}\n\nclass CompiledBrowserModule implements WasmModule {\n public wasmModule: WebAssembly.Module;\n private module: any;\n private instantiateWasm: any;\n\n constructor(wasmModule: WebAssembly.Module, module: any, instantiateWasm: any) {\n this.wasmModule = wasmModule;\n this.module = module;\n this.instantiateWasm = instantiateWasm;\n }\n\n async instantiate(initialModule: any): Promise<void> {\n initialModule.instantiateWasm = this.instantiateWasm;\n await this.module(initialModule);\n }\n}\n","export default class LibZip {\n public module: any;\n private home: string;\n\n constructor(module: any, home: string = \"/home/web_user\") {\n this.module = module;\n this.home = home;\n this.module.callMain([]);\n this.module.FS.ignorePermissions = true;\n this.chdirToHome();\n }\n\n zipFromFs(changedAfterMs = -1): Promise<Uint8Array> {\n this.chdirToHome();\n\n const ptr = this.module._zip_from_fs(changedAfterMs);\n if (ptr === 0) {\n return Promise.reject(new Error(\"Can't create zip, see more info in logs\"));\n }\n\n const length = this.module.HEAPU32[ptr / 4];\n const memory: Uint8Array = this.module.HEAPU8;\n const archive = memory.slice(ptr + 4, ptr + 4 + length);\n this.module._free(ptr);\n return Promise.resolve(archive);\n }\n\n zipToFs(zipArchive: Uint8Array, path = \"/\", filter?: string): Promise<void> {\n const Module = this.module;\n\n path = this.normalizeFilename(path);\n const pathParts = this.normalizeFilename(path).split(\"/\");\n this.createPath(pathParts, 0, pathParts.length);\n this.chdir(path);\n\n const withFilter = filter !== undefined && filter.length > 0;\n let filterBuffer = 0;\n if (withFilter) {\n const filterLength = Module[\"lengthBytesUTF8\"](filter) + 1;\n filterBuffer = Module[\"_malloc\"](filterLength);\n Module.stringToUTF8(filter, filterBuffer, filterLength);\n }\n\n const bytes = new Uint8Array(zipArchive);\n const buffer = Module._malloc(bytes.length);\n Module.HEAPU8.set(bytes, buffer);\n const retcode = Module._zip_to_fs(buffer, bytes.length, filterBuffer);\n Module._free(buffer);\n\n this.chdirToHome();\n\n if (withFilter) {\n Module._free(filterBuffer);\n }\n\n if (retcode === 0) {\n return Promise.resolve();\n } else {\n return Promise.reject(new Error(\"Can't extract zip, retcode \" +\n retcode + \", see more info in logs\"));\n }\n }\n\n // ### writeFile\n writeFile(file: string, body: ArrayBuffer | Uint8Array | string) {\n // Allow to create file in FS, it will be created relatively cwd\n // All directories will be created\n //\n // windows style path are also valid, but **drive letter is ignored**\n // if you pass only filename, then file will be writed in cwd\n //\n // body can be string or ArrayBuffer or Uint8Array\n file = this.normalizeFilename(file);\n\n if (body instanceof ArrayBuffer) {\n body = new Uint8Array(body);\n }\n\n const parts = file.split(\"/\");\n\n if (parts.length === 0) {\n throw new Error(\"Can't create file '\" + file + \"', because it's not valid file path\");\n }\n\n const filename = parts[parts.length - 1].trim();\n\n if (filename.length === 0) {\n throw new Error(\"Can't create file '\" + file + \"', because file name is empty\");\n }\n\n /* i < parts.length - 1, because last part is file name */\n const path = this.createPath(parts, 0, parts.length - 1);\n this.module.FS.writeFile(path + \"/\" + filename, body);\n }\n\n async readFile(file: string, encoding: \"binary\" | \"utf8\" = \"utf8\"): Promise<string | Uint8Array> {\n file = this.normalizeFilename(file);\n return this.module.FS.readFile(file, { encoding });\n }\n\n exists(file: string): boolean {\n file = this.normalizeFilename(file);\n try {\n this.module.FS.lookupPath(file);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n destroy(): any {\n try {\n this.module._libzip_destroy();\n } catch (e) {\n return e;\n }\n }\n\n private normalizeFilename(file: string): string {\n file = file.replace(new RegExp(\"^[a-zA-z]+:\"), \"\").replace(new RegExp(\"\\\\\\\\\", \"g\"), \"/\");\n while (file[0] === \"/\") {\n file = file.substr(1);\n }\n return file;\n }\n\n private createPath(parts: string[], begin: number, end: number) {\n let path = \".\";\n for (let i = begin; i < end; ++i) {\n const part = parts[i].trim();\n if (part.length === 0) {\n continue;\n }\n\n this.module.FS.createPath(path, part, true, true);\n path = path + \"/\" + part;\n }\n\n return path;\n }\n\n private chdirToHome() {\n this.module.FS.chdir(this.home);\n }\n\n private chdir(path: string) {\n this.module.FS.chdir(this.home + \"/\" + path);\n }\n\n public async zipAddFile(archive: string, file: string) {\n const Module = this.module;\n const archiveLength = Module[\"lengthBytesUTF8\"](archive) + 1;\n const archiveBuffer = Module[\"_malloc\"](archiveLength);\n Module.stringToUTF8(archive, archiveBuffer, archiveLength);\n\n const fileLength = Module[\"lengthBytesUTF8\"](file) + 1;\n const fileBuffer = Module[\"_malloc\"](fileLength);\n Module.stringToUTF8(file, fileBuffer, fileLength);\n\n const ret = this.module._zipfile_add(archiveBuffer, fileBuffer, fileBuffer);\n\n Module[\"_free\"](archiveBuffer);\n Module[\"_free\"](fileBuffer);\n\n if (ret !== 0) {\n throw new Error(\"Unable to add \" + file + \" into \" + archive);\n }\n }\n}\n","import { ServerMessage, MessageHandler } from \"./protocol\";\n\ninterface DelayedMessage {\n name: ServerMessage,\n props: {[key: string]: any},\n}\n\nexport class MessagesQueue {\n private messages: DelayedMessage[] = [];\n public handler(name: ServerMessage, props: {[key: string]: any}) {\n this.messages.push({ name, props });\n }\n public sendTo(handler: MessageHandler) {\n for (const next of this.messages) {\n handler(next.name, next.props);\n }\n\n this.messages = [];\n }\n}\n","/* eslint-disable */\n/*\nMiniLZ4: Minimal LZ4 block decoding and encoding.\n\nbased off of node-lz4, https://github.com/pierrec/node-lz4\n\n====\nCopyright (c) 2012 Pierre Curto\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n====\n\nchanges have the same license\n*/\n\n\nconst lz4: any = {};\n \n /**\n * Decode a block. Assumptions: input contains all sequences of a \n * chunk, output is large enough to receive the decoded data.\n * If the output buffer is too small, an error will be thrown.\n * If the returned value is negative, an error occured at the returned offset.\n *\n * @param {ArrayBufferView} input input data\n * @param {ArrayBufferView} output output data\n * @param {number=} sIdx\n * @param {number=} eIdx\n * @return {number} number of decoded bytes\n * @private\n */\n lz4.uncompress = function (input: Uint8Array, output: Uint8Array, sIdx: number, eIdx: number) {\n sIdx = sIdx || 0\n eIdx = eIdx || (input.length - sIdx)\n // Process each sequence in the incoming data\n for (var i = sIdx, n = eIdx, j = 0; i < n;) {\n var token = input[i++]\n \n // Literals\n var literals_length = (token >> 4)\n if (literals_length > 0) {\n // length of literals\n var l = literals_length + 240\n while (l === 255) {\n l = input[i++]\n literals_length += l\n }\n \n // Copy the literals\n var end = i + literals_length\n while (i < end) output[j++] = input[i++]\n \n // End of buffer?\n if (i === n) return j\n }\n \n // Match copy\n // 2 bytes offset (little endian)\n var offset = input[i++] | (input[i++] << 8)\n \n // XXX 0 is an invalid offset value\n if (offset === 0) return j\n if (offset > j) return -(i-2)\n \n // length of match copy\n var match_length = (token & 0xf)\n var l = match_length + 240\n while (l === 255) {\n l = input[i++]\n match_length += l\n }\n \n // Copy the match\n var pos = j - offset // position of the match copy in the current output\n var end = j + match_length + 4 // minmatch = 4\n while (j < end) output[j++] = output[pos++]\n }\n \n return j\n }\n \n var\n maxInputSize\t= 0x7E000000\n ,\tminMatch\t\t= 4\n // uint32() optimization\n ,\thashLog\t\t\t= 16\n ,\thashShift\t\t= (minMatch * 8) - hashLog\n ,\thashSize\t\t= 1 << hashLog\n \n ,\tcopyLength\t\t= 8\n ,\tlastLiterals\t= 5\n ,\tmfLimit\t\t\t= copyLength + minMatch\n ,\tskipStrength\t= 6\n \n ,\tmlBits \t\t= 4\n ,\tmlMask \t\t= (1 << mlBits) - 1\n ,\trunBits \t\t= 8 - mlBits\n ,\trunMask \t\t= (1 << runBits) - 1\n \n ,\thasher \t\t\t= /* XXX uint32( */ 2654435761 /* ) */\n \n assert(hashShift === 16);\n var hashTable = new Int16Array(1<<16);\n var empty = new Int16Array(hashTable.length);\n \n // CompressBound returns the maximum length of a lz4 block, given it's uncompressed length\n lz4.compressBound = function (isize: number) {\n return isize > maxInputSize\n ? 0\n : (isize + (isize/255) + 16) | 0\n }\n \n /** @param {number=} sIdx\n @param {number=} eIdx */\n lz4.compress = function (src: Uint8Array, dst: Uint8Array, sIdx: number, eIdx: number) {\n hashTable.set(empty);\n return compressBlock(src, dst, 0, sIdx || 0, eIdx || dst.length)\n }\n \n function compressBlock (src: Uint8Array, dst: Uint8Array, pos: number, sIdx: number, eIdx: number) {\n // XXX var Hash = uint32() // Reusable unsigned 32 bits integer\n var dpos = sIdx\n var dlen = eIdx - sIdx\n var anchor = 0\n \n if (src.length >= maxInputSize) throw new Error(\"input too large\")\n \n // Minimum of input bytes for compression (LZ4 specs)\n if (src.length > mfLimit) {\n var n = lz4.compressBound(src.length)\n if ( dlen < n ) throw Error(\"output too small: \" + dlen + \" < \" + n)\n \n var \n step = 1\n ,\tfindMatchAttempts = (1 << skipStrength) + 3\n // Keep last few bytes incompressible (LZ4 specs):\n // last 5 bytes must be literals\n ,\tsrcLength = src.length - mfLimit\n \n while (pos + minMatch < srcLength) {\n // Find a match\n // min match of 4 bytes aka sequence\n var sequenceLowBits = src[pos+1]<<8 | src[pos]\n var sequenceHighBits = src[pos+3]<<8 | src[pos+2]\n // compute hash for the current sequence\n var hash = Math.imul(sequenceLowBits | (sequenceHighBits << 16), hasher) >>> hashShift;\n /* XXX Hash.fromBits(sequenceLowBits, sequenceHighBits)\n .multiply(hasher)\n .shiftr(hashShift)\n .toNumber() */\n // get the position of the sequence matching the hash\n // NB. since 2 different sequences may have the same hash\n // it is double-checked below\n // do -1 to distinguish between initialized and uninitialized values\n var ref = hashTable[hash] - 1\n // save position of current sequence in hash table\n hashTable[hash] = pos + 1\n \n // first reference or within 64k limit or current sequence !== hashed one: no match\n if ( ref < 0 ||\n ((pos - ref) >>> 16) > 0 ||\n (\n ((src[ref+3]<<8 | src[ref+2]) != sequenceHighBits) ||\n ((src[ref+1]<<8 | src[ref]) != sequenceLowBits )\n )\n ) {\n // increase step if nothing found within limit\n step = findMatchAttempts++ >> skipStrength\n pos += step\n continue\n }\n \n findMatchAttempts = (1 << skipStrength) + 3\n \n // got a match\n var literals_length = pos - anchor\n var offset = pos - ref\n \n // minMatch already verified\n pos += minMatch\n ref += minMatch\n \n // move to the end of the match (>=minMatch)\n var match_length = pos\n while (pos < srcLength && src[pos] == src[ref]) {\n pos++\n ref++\n }\n \n // match length\n match_length = pos - match_length\n \n // token\n var token = match_length < mlMask ? match_length : mlMask\n \n // encode literals length\n if (literals_length >= runMask) {\n // add match length to the token\n dst[dpos++] = (runMask << mlBits) + token\n for (var len = literals_length - runMask; len > 254; len -= 255) {\n dst[dpos++] = 255\n }\n dst[dpos++] = len\n } else {\n // add match length to the token\n dst[dpos++] = (literals_length << mlBits) + token\n }\n \n // write literals\n for (var i = 0; i < literals_length; i++) {\n dst[dpos++] = src[anchor+i]\n }\n \n // encode offset\n dst[dpos++] = offset\n dst[dpos++] = (offset >> 8)\n \n // encode match length\n if (match_length >= mlMask) {\n match_length -= mlMask\n while (match_length >= 255) {\n match_length -= 255\n dst[dpos++] = 255\n }\n \n dst[dpos++] = match_length\n }\n \n anchor = pos\n }\n }\n \n // cannot compress input\n if (anchor == 0) return 0\n \n // Write last literals\n // encode literals length\n literals_length = src.length - anchor\n if (literals_length >= runMask) {\n // add match length to the token\n dst[dpos++] = (runMask << mlBits)\n for (var ln = literals_length - runMask; ln > 254; ln -= 255) {\n dst[dpos++] = 255\n }\n dst[dpos++] = ln\n } else {\n // add match length to the token\n dst[dpos++] = (literals_length << mlBits)\n }\n \n // write literals\n pos = anchor\n while (pos < src.length) {\n dst[dpos++] = src[pos++]\n }\n \n return dpos\n }\n \n lz4.CHUNK_SIZE = 2048; // musl libc does readaheads of 1024 bytes, so a multiple of that is a good idea\n \n \n \nexport const compressBound = lz4.compressBound;\nexport const compress = lz4.compress;\nexport const uncompress = lz4.uncompress;\n\nfunction assert(condition: boolean, message?: string) {\n if (!condition) {\n throw new Error(message || \"Assertion failed\");\n }\n}\n\n","import {\n CommandInterface, NetworkType, BackendOptions, DosConfig,\n InitFsEntry, InitFileEntry,\n} from \"../emulators\";\nimport { CommandInterfaceEventsImpl } from \"../impl/ci-impl\";\n\nconst maxDataChunkSize = 4 * 1024 * 1024;\n\ntype Peer = {\n peerId: number;\n}\n\nexport type Net = {\n peerId: number;\n connected: Set<number>;\n wait: (ms: number) => void;\n registerAlias: (alias: string) => Promise<void>;\n unregisterAlias: (alias: string) => void;\n queryAliases: (query: string) => Promise<Peer[]>;\n sendBinary: (data: Uint8Array, peerId: number) => number;\n recvBinary: () => { data: Uint8Array, peerId: number } | null;\n disconnect: (peerId: number) => void;\n}\n\nexport type ClientMessage =\n \"wc-install\" |\n \"wc-run\" |\n \"wc-pack-fs-to-bundle\" |\n \"wc-add-key\" |\n \"wc-mouse-move\" |\n \"wc-mouse-button\" |\n \"wc-mouse-sync\" |\n \"wc-exit\" |\n \"wc-sync-sleep\" |\n \"wc-pause\" |\n \"wc-resume\" |\n \"wc-mute\" |\n \"wc-unmute\" |\n \"wc-connect\" |\n \"wc-disconnect\" |\n \"wc-backend-event\" |\n \"wc-asyncify-stats\" |\n \"wc-fs-tree\" |\n \"wc-fs-get-file\" |\n \"wc-send-data-chunk\" |\n \"wc-net-connected\" |\n \"wc-net-received\" |\n \"wc-unload\" |\n \"wc-fs-delete-file\" |\n \"wc-persist-sockdrives\" |\n \"wc-get-running-program\";\n\nexport type ServerMessage =\n \"ws-extract-progress\" |\n \"ws-ready\" |\n \"ws-server-ready\" |\n \"ws-frame-set-size\" |\n \"ws-update-lines\" |\n \"ws-log\" |\n \"ws-warn\" |\n \"ws-err\" |\n \"ws-stdout\" |\n \"ws-exit\" |\n \"ws-persist\" |\n \"ws-sound-init\" |\n \"ws-sound-push\" |\n \"ws-config\" |\n \"ws-sync-sleep\" |\n \"ws-connected\" |\n \"ws-disconnected\" |\n \"ws-asyncify-stats\" |\n \"ws-fs-tree\" |\n \"ws-send-data-chunk\" |\n \"ws-net-disconnect\" |\n \"ws-net-send\" |\n \"ws-unload\" |\n \"ws-fs-delete-file\" |\n \"ws-persist-sockdrives\" |\n \"ws-get-running-program\";\n\nexport type MessageHandler = (name: ServerMessage, props: { [key: string]: any }) => void;\n\nexport interface TransportLayer {\n sessionId: string;\n sendMessageToServer(name: ClientMessage,\n props: { [key: string]: any },\n transfer?: Transferable[]): void;\n initMessageHandler(handler: MessageHandler): void;\n exit?: () => void;\n net: Net | null;\n}\n\nexport interface FrameLine {\n start: number;\n heapu8: Uint8Array;\n}\n\nexport interface DataChunk {\n type: \"ok\" | \"file\" | \"bundle\";\n name: string;\n data: ArrayBuffer | null;\n}\n\nexport interface CPUMetrics {\n cpuMax: number;\n emulatorSpeed: number;\n cpuUsed: number;\n frameSkip: number;\n fastForward: boolean;\n cpuSockdrive: boolean;\n cpuAuto: boolean;\n cpuSkip: boolean;\n sleepPattern: string;\n ratio: number[];\n newCmax: number[];\n ticksDone: number[];\n ticksScheduled: number[];\n}\n\nexport interface AsyncifyStats {\n glfx?: boolean,\n offscreenCanvas?: boolean,\n messageSent: number,\n messageReceived: number,\n messageFrame: number,\n messageSound: number,\n nonSkippableSleepCount: number,\n sleepCount: number,\n sleepTime: number,\n cpuMetrics: CPUMetrics | null,\n netSent: number,\n netRecv: number,\n driveIo: {\n url: string,\n preload: number,\n total: number,\n read: number,\n write: number,\n }[];\n}\n\nexport interface FsNode {\n name: string,\n size: number | null,\n nodes: FsNode[] | null,\n}\n\nexport class CommandInterfaceOverTransportLayer implements CommandInterface {\n private startedAt = Date.now();\n private exited = false;\n private frameWidth = 0;\n private frameHeight = 0;\n private rgb: Uint8Array | null = null;\n private rgba: Uint8Array | null = null;\n private freq = 0;\n private utf8Decoder = new TextDecoder();\n\n private init?: InitFsEntry[];\n private transport: TransportLayer;\n private ready: (err: Error | null) => void;\n\n private persistPromise?: Promise<Uint8Array | null>;\n private persistResolve?: (bundle: Uint8Array | null) => void;\n\n private exitPromise?: Promise<void>;\n private exitResolve?: () => void;\n\n private eventsImpl = new CommandInterfaceEventsImpl();\n\n private keyMatrix: { [keyCode: number]: boolean } = {};\n\n private configPromise: Promise<DosConfig>;\n private configResolve: (config: DosConfig) => void = () => {/**/};\n private panicMessages: string[] = [];\n\n private connectPromise: Promise<void> | null = null;\n private connectResolve: () => void = () => {/**/};\n private connectReject: () => void = () => {/**/};\n\n private disconnectPromise: Promise<void> | null = null;\n private disconnectResolve: () => void = () => {/**/};\n\n private asyncifyStatsPromise: Promise<AsyncifyStats> | null = null;\n private asyncifyStatsResolve: (stats: AsyncifyStats) => void = () => {/**/};\n\n private fsTreePromise: Promise<FsNode> | null = null;\n private fsTreeResolve: (fsRoot: FsNode) => void = () => {/**/};\n\n private fsGetFilePromise: { [name: string]: Promise<Uint8Array> } = {};\n private fsGetFileResolve: { [name: string]: (file: Uint8Array) => void } = {};\n private fsGetFileParts: { [name: string]: Uint8Array[] } = {};\n\n private fsDeleteFilePromise: Promise<boolean> | null = null;\n private fsDeleteFileResolve: (deleted: boolean) => void = () => {/**/};\n\n private getRunningProgramPromise: Promise<string> | null = null;\n private getRunningProgramResolve: (program: string) => void = () => {/**/};\n\n private dataChunkPromise: { [name: string]: Promise<void> } = {};\n private dataChunkResolve: { [name: string]: () => void } = {};\n\n private persistSockdrivesPromise: Promise<Uint8Array | null> | null = null;\n private persistSockdrivesResolve: (changes: Uint8Array | null) => void = () => {/**/};\n\n private myPeerId: number = 0;\n private netSent = 0;\n private netRecv = 0;\n private netPollInterval: ReturnType<typeof setInterval> | null = null;\n\n public options: BackendOptions;\n\n constructor(init: InitFsEntry[],\n transport: TransportLayer,\n ready: (err: Error | null) => void,\n options: BackendOptions) {\n this.options = options;\n this.init = init;\n this.transport = transport;\n this.ready = ready;\n this.configPromise = new Promise<DosConfig>((resolve) => this.configResolve = resolve);\n this.transport.initMessageHandler(this.onServerMessage.bind(this));\n this.transport.net = this.transport.net ?? null;\n if (this.transport.net) {\n this.myPeerId = this.transport.net.peerId;\n this.netPollInterval = setInterval(() => {\n this.transport.net!.wait(0);\n\n let data = this.transport.net!.recvBinary();\n while (data != null) {\n this.netRecv += data.data.length;\n this.sendClientMessage(\"wc-net-received\", {\n peerId: data.peerId,\n data: data.data.buffer,\n }, [data.data.buffer]);\n data = this.transport.net!.recvBinary();\n }\n }, 16);\n }\n }\n\n private sendClientMessage(name: ClientMessage, props?: { [key: string]: any }, transfer?: [ArrayBuffer]) {\n props = props || {};\n props.sessionId = props.sessionId || this.transport.sessionId;\n this.transport.sendMessageToServer(name, props, transfer);\n }\n\n\n private onServerMessage(name: ServerMessage, props: { [key: string]: any }) {\n if (name === undefined || name.length < 3 ||\n name[0] !== \"w\" || name[1] !== \"s\" || name[2] !== \"-\") {\n return;\n }\n\n if (props === undefined || props.sessionId !== this.transport.sessionId) {\n return;\n }\n\n switch (name) {\n case \"ws-ready\": {\n const sendBundles = async () => {\n if (!this.init || this.init.length === 0) {\n return;\n }\n\n const encoder = new TextEncoder();\n const sendData = async (type: \"file\" | \"bundle\", name: string, contents: Uint8Array) => {\n await this.sendDataChunk({\n type,\n name,\n data: contents.buffer,\n });\n\n await this.sendDataChunk({\n type,\n name,\n data: null,\n });\n };\n\n let bundleIndex = 0;\n for (const next of this.init) {\n if (ArrayBuffer.isView(next)) {\n await sendData(\"bundle\", bundleIndex + \"\", next);\n bundleIndex++;\n } else if (typeof next === \"string\") {\n await sendData(\"file\", \".jsdos/dosbox.conf\", encoder.encode(next));\n } else {\n const fileEntry = next as InitFileEntry;\n const dosConfig = next as DosConfig;\n\n if (dosConfig.jsdosConf?.version !== undefined) {\n await sendData(\"file\", \".jsdos/dosbox.conf\",\n encoder.encode(dosConfig.dosboxConf));\n await sendData(\"file\", \".jsdos/jsdos.json\",\n encoder.encode(JSON.stringify(dosConfig.jsdosConf, null, 2)));\n } else if (fileEntry.path !== undefined) {\n await sendData(\"file\", fileEntry.path, fileEntry.contents);\n } else {\n console.error(\"Unknown init part\", next);\n }\n }\n }\n };\n\n sendBundles()\n .then(() => {\n this.sendClientMessage(\"wc-run\", {\n token: this.options.token,\n myPeerId: this.myPeerId,\n sockdrivePreload: this.options.sockdrivePreload,\n });\n })\n .catch((e) => {\n this.onErr(\"panic\", \"Can't send bundles to backend: \" + e.message);\n console.error(e);\n })\n .finally(() => {\n delete this.init;\n });\n } break;\n case \"ws-server-ready\": {\n if (this.panicMessages.length > 0) {\n if (this.transport.exit !== undefined) {\n this.transport.exit();\n }\n this.ready(new Error(JSON.stringify(this.panicMessages)));\n } else {\n this.ready(null);\n }\n delete (this as any).ready;\n } break;\n case \"ws-frame-set-size\": {\n this.onFrameSize(props.width, props.height);\n } break;\n case \"ws-update-lines\": {\n this.onFrameLines(props.lines, props.rgba);\n } break;\n case \"ws-exit\": {\n this.onExit();\n } break;\n case \"ws-log\": {\n // eslint-disable-next-line\n this.onLog(props.tag, props.message);\n } break;\n case \"ws-warn\": {\n // eslint-disable-next-line\n this.onWarn(props.tag, props.message);\n } break;\n case \"ws-err\": {\n // eslint-disable-next-line\n this.onErr(props.tag, props.message);\n } break;\n case \"ws-stdout\": {\n this.onStdout(props.message);\n } break;\n case \"ws-persist\": {\n this.onPersist(props.bundle ?? props.sockdrives ?? null);\n } break;\n case \"ws-sound-init\": {\n this.onSoundInit(props.freq);\n } break;\n case \"ws-sound-push\": {\n this.onSoundPush(props.samples);\n } break;\n case \"ws-config\": {\n this.onConfig({\n dosboxConf: this.utf8Decoder.decode(props.dosboxConf),\n jsdosConf: JSON.parse(props.jsdosConf),\n });\n } break;\n case \"ws-sync-sleep\": {\n this.sendClientMessage(\"wc-sync-sleep\", props);\n } break;\n case \"ws-connected\": {\n this.connectResolve();\n this.connectPromise = null;\n this.connectResolve = () => {/**/};\n this.connectReject = () => {/**/};\n this.eventsImpl.fireNetworkConnected(props.networkType, props.address);\n } break;\n case \"ws-disconnected\": {\n if (this.connectPromise !== null) {\n this.connectReject();\n this.connectPromise = null;\n this.connectResolve = () => {/**/};\n this.connectReject = () => {/**/};\n } else {\n this.disconnectResolve();\n this.disconnectPromise = null;\n this.disconnectResolve = () => {/**/};\n }\n this.eventsImpl.fireNetworkDisconnected(props.networkType);\n } break;\n case \"ws-extract-progress\": {\n if (this.options.onExtractProgress) {\n this.options.onExtractProgress(props.index, props.file, props.extracted, props.count);\n }\n } break;\n case \"ws-asyncify-stats\": {\n props.netSent = this.netSent;\n props.netRecv = this.netRecv;\n if (props.cpuMetrics && props.cpuMetrics.length > 0) {\n const partial = props.cpuMetrics.split(\" \");\n const cpu = partial[0].split(\"|\");\n const metrics: CPUMetrics = {\n cpuMax: parseInt(cpu[0]),\n emulatorSpeed: parseInt(cpu[1]) / 100,\n cpuUsed: parseInt(cpu[2]) / 100,\n frameSkip: parseInt(cpu[3]),\n fastForward: cpu[4][0] === \"1\",\n cpuSockdrive: cpu[4][1] === \"1\",\n cpuAuto: cpu[4][2] === \"1\",\n cpuSkip: cpu[4][3] === \"1\",\n sleepPattern: \"\",\n ratio: [],\n newCmax: [],\n ticksDone: [],\n ticksScheduled: [],\n };\n\n for (let i = 1; i < partial.length; i++) {\n if (partial[i][0] === \"r\") {\n const parts = partial[i].split(\"|\");\n metrics.ratio.push(parseInt(parts[0].substring(1)) / 1024);\n metrics.newCmax.push(parseInt(parts[1]));\n metrics.ticksDone.push(parseInt(parts[2]));\n metrics.ticksScheduled.push(parseInt(parts[3]));\n } else {\n metrics.sleepPattern += partial[i] + \" \";\n }\n }\n props.cpuMetrics = metrics;\n } else {\n props.cpuMetrics = null;\n }\n this.asyncifyStatsResolve(props as AsyncifyStats);\n this.asyncifyStatsResolve = () => {/**/};\n this.asyncifyStatsPromise = null;\n } break;\n case \"ws-fs-tree\": {\n this.fsTreeResolve(props.fsTree as FsNode);\n this.fsTreeResolve = () => {/**/};\n this.fsTreePromise = null;\n } break;\n case \"ws-fs-delete-file\": {\n this.fsDeleteFileResolve(props.deleted);\n this.fsDeleteFileResolve = () => {/**/};\n this.fsDeleteFilePromise = null;\n } break;\n case \"ws-send-data-chunk\": {\n const chunk: DataChunk = props.chunk;\n const key = this.dataChunkKey(chunk);\n if (chunk.type === \"ok\") {\n if (this.dataChunkPromise[key] !== undefined) {\n this.dataChunkResolve[key]();\n delete this.dataChunkPromise[key];\n delete this.dataChunkResolve[key];\n }\n } else if (chunk.type === \"file\") {\n if (chunk.data === null) {\n const file = this.mergeChunks(this.fsGetFileParts[chunk.name]);\n this.fsGetFileResolve[chunk.name](file);\n delete this.fsGetFilePromise[chunk.name];\n delete this.fsGetFileResolve[chunk.name];\n } else {\n this.fsGetFileParts[chunk.name].push(new Uint8Array(chunk.data));\n }\n } else {\n console.log(\"Unknown chunk type:\", chunk.type);\n }\n } break;\n case \"ws-net-send\": {\n this.netSent += props.data.length;\n const response = this.transport.net?.sendBinary(new Uint8Array(props.data), props.peerId);\n if (response === 0) {\n const retryFn = () => {\n if (this.transport.net?.sendBinary(new Uint8Array(props.data), props.peerId) === 0) {\n setTimeout(retryFn, 100);\n }\n };\n setTimeout(retryFn, 100);\n }\n } break;\n case \"ws-net-disconnect\": {\n this.transport.net?.disconnect(props.peerId);\n } break;\n case \"ws-unload\": {\n this.eventsImpl.fireUnload().finally(() => {\n this.sendClientMessage(\"wc-unload\");\n });\n } break;\n case \"ws-persist-sockdrives\": {\n if (props.drives === null) {\n this.persistSockdrivesResolve(null);\n } else {\n this.persistSockdrivesResolve(encodeSockdriveChanges(props.drives));\n }\n this.persistSockdrivesResolve = () => {/**/};\n this.persistSockdrivesPromise = null;\n } break;\n case \"ws-get-running-program\": {\n if (this.getRunningProgramPromise !== null) {\n this.getRunningProgramResolve(props.program);\n this.getRunningProgramResolve = () => {/**/};\n this.getRunningProgramPromise = null;\n }\n } break;\n default: {\n // eslint-disable-next-line\n console.log(\"Unknown server message (ws):\", name);\n } break;\n }\n }\n\n private onConfig(config: DosConfig) {\n this.configResolve(config);\n }\n\n private onFrameSize(width: number, height: number) {\n if (this.frameWidth === width && this.frameHeight === height) {\n return;\n }\n\n this.frameWidth = width;\n this.frameHeight = height;\n this.rgb = new Uint8Array(width * height * 3);\n this.eventsImpl.fireFrameSize(width, height);\n }\n\n private onFrameLines(lines: FrameLine[], rgbaPtr: number) {\n for (const line of (lines as FrameLine[])) {\n this.rgb!.set(line.heapu8, line.start * this.frameWidth * 3);\n }\n\n this.eventsImpl.fireFrame(this.rgb, this.rgba);\n }\n\n private onSoundInit(freq: number) {\n this.freq = freq;\n }\n\n private onSoundPush(samples: Float32Array) {\n this.eventsImpl.fireSoundPush(samples);\n }\n\n private onLog(tag: string, message: string) {\n this.eventsImpl.fireMessage(\"log\", \"[\" + tag + \"]\" + message);\n }\n\n private onWarn(tag: string, message: string) {\n this.eventsImpl.fireMessage(\"warn\", \"[\" + tag + \"]\" + message);\n }\n\n private onErr(tag: string, message: string) {\n if (tag === \"panic\") {\n this.panicMessages.push(message);\n console.error(\"[\" + tag + \"]\" + message);\n }\n this.eventsImpl.fireMessage(\"error\", \"[\" + tag + \"]\" + message);\n }\n\n private onStdout(message: string) {\n this.eventsImpl.fireStdout(message);\n }\n\n public config() {\n return this.configPromise;\n }\n\n public width() {\n return this.frameWidth;\n }\n\n public height() {\n return this.frameHeight;\n }\n\n public soundFrequency() {\n return this.freq;\n }\n\n public screenshot(): Promise<ImageData> {\n if (this.rgb !== null || this.rgba !== null) {\n const rgba = new Uint8ClampedArray(this.frameWidth * this.frameHeight * 4);\n const frame = (this.rgb !== null ? this.rgb : this.rgba) as Uint8Array;\n\n let frameOffset = 0;\n let rgbaOffset = 0;\n\n while (rgbaOffset < rgba.length) {\n rgba[rgbaOffset++] = frame[frameOffset++];\n rgba[rgbaOffset++] = frame[frameOffset++];\n rgba[rgbaOffset++] = frame[frameOffset++];\n rgba[rgbaOffset++] = 255;\n\n if (frame.length === rgba.length) {\n frameOffset++;\n }\n }\n\n return Promise.resolve(new ImageData(rgba, this.frameWidth, this.frameHeight));\n } else {\n return Promise.reject(new Error(\"No frame received\"));\n }\n }\n\n public simulateKeyPress(...keyCodes: number[]) {\n const timeMs = Date.now() - this.startedAt;\n keyCodes.forEach((keyCode) => this.addKey(keyCode, true, timeMs));\n keyCodes.forEach((keyCode) => this.addKey(keyCode, false, timeMs + 16));\n }\n\n public sendKeyEvent(keyCode: number, pressed: boolean) {\n this.addKey(keyCode, pressed, Date.now() - this.startedAt);\n }\n\n // public for test\n public addKey(keyCode: number, pressed: boolean, timeMs: number) {\n const keyPressed = this.keyMatrix[keyCode] === true;\n if (keyPressed === pressed) {\n return;\n }\n this.keyMatrix[keyCode] = pressed;\n this.sendClientMessage(\"wc-add-key\", { key: keyCode, pressed, timeMs });\n }\n\n public sendMouseMotion(x: number, y: number) {\n this.sendClientMessage(\"wc-mouse-move\", { x, y, relative: false, timeMs: Date.now() - this.startedAt });\n }\n\n public sendMouseRelativeMotion(x: number, y: number) {\n this.sendClientMessage(\"wc-mouse-move\", { x, y, relative: true, timeMs: Date.now() - this.startedAt });\n }\n\n public sendMouseButton(button: number, pressed: boolean) {\n this.sendClientMessage(\"wc-mouse-button\", { button, pressed, timeMs: Date.now() - this.startedAt });\n }\n\n public sendMouseSync() {\n this.sendClientMessage(\"wc-mouse-sync\", { timeMs: Date.now() - this.startedAt });\n }\n\n public sendBackendEvent(payload: any) {\n this.sendClientMessage(\"wc-backend-event\", { json: JSON.stringify(payload) });\n }\n\n\n public async persist(optOnlyChanges?: boolean): Promise<Uint8Array | null> {\n const onlyChanges = optOnlyChanges ?? true;\n if (this.persistPromise !== undefined) {\n return this.persistPromise;\n }\n\n const sockdrives = await this.persistSockdrives();\n if (sockdrives !== null && onlyChanges) {\n return Promise.resolve(sockdrives);\n }\n\n const persistPromise = new Promise<Uint8Array | null>((resolve) => {\n this.persistResolve = resolve;\n });\n this.persistPromise = persistPromise;\n this.sendClientMessage(\"wc-pack-fs-to-bundle\", {\n onlyChanges,\n });\n\n return persistPromise;\n }\n\n private onPersist(bundle: Uint8Array | null) {\n if (this.persistResolve) {\n this.persistResolve(bundle);\n delete this.persistPromise;\n delete this.persistResolve;\n }\n }\n\n public pause() {\n this.sendClientMessage(\"wc-pause\");\n }\n\n public resume() {\n this.sendClientMessage(\"wc-resume\");\n }\n\n public mute() {\n this.sendClientMessage(\"wc-mute\");\n }\n\n public unmute() {\n this.sendClientMessage(\"wc-unmute\");\n }\n\n public exit(): Promise<void> {\n if (this.exited) {\n return Promise.resolve();\n }\n if (this.exitPromise !== undefined) {\n return this.exitPromise;\n }\n this.exitPromise = new Promise<void>((resolve) => this.exitResolve = resolve);\n this.exitPromise.then(() => {\n this.events().fireExit();\n });\n\n this.resume();\n for (const next of this.transport.net?.connected ?? []) {\n this.transport.net?.disconnect(next);\n }\n this.sendClientMessage(\"wc-exit\");\n\n return this.exitPromise;\n }\n\n private onExit() {\n if (!this.exited) {\n this.exited = true;\n if (this.netPollInterval !== null) {\n clearInterval(this.netPollInterval);\n this.netPollInterval = null;\n }\n if (this.transport.exit !== undefined) {\n this.transport.exit();\n }\n if (this.exitResolve) {\n this.exitResolve();\n delete this.exitPromise;\n delete this.exitResolve;\n }\n }\n }\n\n public events() {\n return this.eventsImpl;\n }\n\n public networkConnect(networkType: NetworkType, address: string): Promise<void> {\n if (this.connectPromise !== null || this.disconnectPromise !== null) {\n return Promise.reject(new Error(\"Already prefoming connection or disconnection...\"));\n }\n\n this.connectPromise = new Promise<void>((resolve, reject) => {\n this.connectResolve = resolve;\n this.connectReject = reject;\n this.sendClientMessage(\"wc-connect\", {\n networkType,\n address,\n });\n });\n return this.connectPromise;\n }\n\n public networkDisconnect(networkType: NetworkType): Promise<void> {\n if (this.connectPromise !== null || this.disconnectPromise !== null) {\n return Promise.reject(new Error(\"Already prefoming connection or disconnection...\"));\n }\n\n this.disconnectPromise = new Promise<void>((resolve) => {\n this.disconnectResolve = resolve;\n\n this.sendClientMessage(\"wc-disconnect\", {\n networkType,\n });\n });\n return this.disconnectPromise;\n }\n\n public asyncifyStats(): Promise<AsyncifyStats> {\n if (this.asyncifyStatsPromise !== null) {\n return this.asyncifyStatsPromise;\n }\n\n const promise = new Promise<AsyncifyStats>((resolve) => {\n this.asyncifyStatsResolve = resolve;\n });\n\n this.asyncifyStatsPromise = promise;\n this.sendClientMessage(\"wc-asyncify-stats\", {});\n\n return promise;\n }\n\n public fsTree(): Promise<FsNode> {\n if (this.fsTreePromise !== null) {\n return this.fsTreePromise;\n }\n\n const promise = new Promise<FsNode>((resolve) => {\n this.fsTreeResolve = resolve;\n });\n this.fsTreePromise = promise;\n this.sendClientMessage(\"wc-fs-tree\");\n\n return promise;\n }\n\n async fsReadFile(file: string): Promise<Uint8Array> {\n if (this.fsGetFilePromise[file] !== undefined) {\n throw new Error(\"fsGetFile should not be called twice for same file\");\n }\n\n const promise = new Promise<Uint8Array>((resolve) => {\n this.fsGetFileResolve[file] = resolve;\n });\n this.fsGetFilePromise[file] = promise;\n this.fsGetFileParts[file] = [];\n this.sendClientMessage(\"wc-fs-get-file\", {\n file,\n });\n\n return promise;\n }\n\n async fsWriteFile(file: string, contents: ReadableStream<Uint8Array> | Uint8Array): Promise<void> {\n if (ArrayBuffer.isView(contents)) {\n await this.sendDataChunk({\n type: \"file\",\n name: file,\n data: contents.buffer,\n });\n } else {\n const reader = contents.getReader();\n while (true) {\n const result = await reader.read();\n if (result.value !== undefined) {\n await this.sendDataChunk({\n type: \"file\",\n name: file,\n data: result.value.buffer,\n });\n }\n if (result.done) {\n break;\n }\n }\n }\n\n await this.sendDataChunk({\n type: \"file\",\n name: file,\n data: null,\n });\n }\n\n async fsDeleteFile(file: string): Promise<boolean> {\n if (this.fsDeleteFilePromise !== null) {\n throw new Error(\"fsDeleteFile should not be called while previous one is not resolved\");\n }\n\n const promise = new Promise<boolean>((resolve) => {\n this.fsDeleteFileResolve = resolve;\n });\n this.fsDeleteFilePromise = promise;\n this.sendClientMessage(\"wc-fs-delete-file\", { file });\n return promise;\n }\n\n async persistSockdrives(): Promise<Uint8Array | null> {\n if (this.persistSockdrivesPromise === null) {\n this.persistSockdrivesPromise = new Promise<Uint8Array | null>((resolve) => {\n this.persistSockdrivesResolve = resolve;\n });\n this.sendClientMessage(\"wc-persist-sockdrives\");\n }\n return this.persistSockdrivesPromise;\n }\n\n private async sendDataChunk(chunk: DataChunk): Promise<void> {\n if (chunk.data === null || chunk.data.byteLength <= maxDataChunkSize) {\n return this.sendFullDataChunk(chunk);\n } else {\n let pos = 0;\n while (pos < chunk.data.byteLength) {\n await this.sendFullDataChunk({\n type: chunk.type,\n name: chunk.name,\n data: chunk.data.slice(pos, Math.min(chunk.data.byteLength, pos + maxDataChunkSize)),\n });\n pos += maxDataChunkSize;\n }\n }\n }\n\n private async sendFullDataChunk(chunk: DataChunk): Promise<void> {\n const key = this.dataChunkKey(chunk);\n if (this.dataChunkPromise[key] !== undefined) {\n throw new Error(\"sendDataChunk should be accepted before sending new one\");\n }\n const promise = new Promise<void>((resolve) => {\n this.dataChunkResolve[key] = resolve;\n });\n this.dataChunkPromise[key] = promise;\n this.sendClientMessage(\"wc-send-data-chunk\", {\n chunk,\n }, chunk.data === null ? undefined : [chunk.data]);\n return promise;\n }\n\n private dataChunkKey(chunk: DataChunk) {\n return chunk.name;\n }\n\n private mergeChunks(parts: Uint8Array[]): Uint8Array {\n if (parts.length === 1) {\n return parts[0];\n }\n\n let length = 0;\n for (const next of parts) {\n length += next.byteLength;\n }\n const merged = new Uint8Array(length);\n length = 0;\n for (const next of parts) {\n merged.set(next, length);\n length += next.byteLength;\n }\n return merged;\n }\n\n public net(): Net | null {\n return this.transport.net ?? null;\n }\n\n public getRunningProgram(): Promise<string> {\n if (this.getRunningProgramPromise !== null) {\n return this.getRunningProgramPromise;\n }\n this.getRunningProgramPromise = new Promise<string>((resolve) => {\n this.getRunningProgramResolve = resolve;\n });\n this.sendClientMessage(\"wc-get-running-program\");\n return this.getRunningProgramPromise;\n }\n}\n\nfunction encodeSockdriveChanges(changes: {\n url: string,\n persist: Uint8Array,\n}[]) {\n function writeUint32(container: Uint8Array, value: number, offset: number) {\n container[offset] = value & 0xFF;\n container[offset + 1] = (value & 0x0000FF00) >> 8;\n container[offset + 2] = (value & 0x00FF0000) >> 16;\n container[offset + 3] = (value & 0xFF000000) >> 24;\n return offset + 4;\n }\n\n const encoder = new TextEncoder();\n\n const urls = [];\n let totalSize = 0;\n for (const { url, persist } of changes) {\n urls.push(encoder.encode(url));\n totalSize += persist.length + urls[urls.length - 1].length + 8;\n }\n\n const result = new Uint8Array(totalSize);\n let offset = 0;\n for (let i = 0; i < changes.length; i++) {\n const url = urls[i];\n const persist = changes[i].persist;\n\n offset = writeUint32(result, url.length, offset);\n result.set(url, offset);\n offset += url.length;\n\n offset = writeUint32(result, persist.length, offset);\n result.set(persist, offset);\n offset += persist.length;\n }\n\n return result;\n}\n","const OPFS_META_ENTRY_SIZE = 8; // index + offset\n\nexport interface Store {\n keys: () => Promise<number[]>;\n put: (key: number, data: Uint8Array) => Promise<void>;\n getSync: (key: number) => Uint8Array | null;\n getAsync: (key: number) => Promise<Uint8Array | null>;\n}\n\nexport class NoStore implements Store {\n store: Map<number, Uint8Array> = new Map();\n put(key: number, data: Uint8Array): Promise<void> {\n this.store.set(key, data);\n return Promise.resolve();\n }\n getSync(key: number): Uint8Array | null {\n return this.store.get(key) ?? null;\n }\n getAsync(_: number): Promise<Uint8Array | null> {\n return Promise.resolve(null);\n }\n keys(): Promise<number[]> {\n return Promise.resolve(Array.from(this.store.keys()));\n }\n}\n\nfunction urlToDirectory(owner: string): string {\n return owner\n .replace(/^https?:\\/\\//, \"\")\n .replace(/[^a-zA-Z0-9._-]/g, \"_\")\n .substring(0, 200);\n}\n\ninterface SyncAccessHandle {\n read(buffer: Uint8Array, opts: { at: number }): number;\n write(data: Uint8Array, opts: { at: number }): number;\n truncate(size: number): void;\n flush(): void;\n getSize(): number;\n close(): void;\n}\n\ninterface AsyncFileHandle {\n getFile(): Promise<File>;\n createWritable(opts?: { keepExistingData?: boolean }): Promise<{\n seek(offset: number): Promise<void>;\n write(data: Uint8Array): Promise<void>;\n close(): Promise<void>;\n }>;\n}\n\ntype Handle = SyncAccessHandle | AsyncFileHandle;\n\nexport class OpfsStore implements Store {\n private dir: FileSystemDirectoryHandle;\n private index: Map<number, number> = new Map();\n private syncMode: boolean = false;\n private blockHandle: Handle | null = null;\n private metaHandle: Handle | null = null;\n private blockSize: number = 0;\n private metaSize: number = 0;\n private blockLength: number;\n private metaEntry = new Uint8Array(OPFS_META_ENTRY_SIZE);\n private asyncOpPromise: Promise<void> | null = null;\n\n private constructor(dir: FileSystemDirectoryHandle, blockLength: number) {\n this.dir = dir;\n this.blockLength = blockLength;\n }\n\n static async create(url: string, blockLength: number): Promise<OpfsStore> {\n const root = await navigator.storage.getDirectory();\n const jsdosRoot = await root.getDirectoryHandle(\"jsdos\", { create: true });\n const cachesRoot = await jsdosRoot.getDirectoryHandle(\"caches\", {\n create: true,\n });\n const sockdriveRoot = await cachesRoot.getDirectoryHandle(\"sockdrive\", {\n create: true,\n });\n const dir = await sockdriveRoot.getDirectoryHandle(urlToDirectory(url), {\n create: true,\n });\n const store = new OpfsStore(dir, blockLength);\n await store.init();\n return store;\n }\n\n private async init(): Promise<void> {\n const blockFH = await this.dir.getFileHandle(\"_block\", { create: true });\n const metaFH = await this.dir.getFileHandle(\"_meta\", { create: true });\n\n // Default: sync mode via createSyncAccessHandle (workers)\n try {\n const blockSH = await (\n blockFH as unknown as {\n createSyncAccessHandle(): Promise<SyncAccessHandle>;\n }\n ).createSyncAccessHandle();\n this.blockHandle = blockSH;\n const metaSH = await (\n metaFH as unknown as {\n createSyncAccessHandle(): Promise<SyncAccessHandle>;\n }\n ).createSyncAccessHandle();\n this.metaHandle = metaSH;\n this.blockSize = blockSH.getSize();\n this.metaSize = metaSH.getSize();\n this.syncMode = true;\n } catch (e) {\n try {\n (this.blockHandle as SyncAccessHandle)?.close();\n } catch {}\n try {\n (this.metaHandle as SyncAccessHandle)?.close();\n } catch {}\n this.blockHandle = null;\n this.metaHandle = null;\n\n // Fallback: async mode (main thread where sync access is unavailable)\n console.warn(\"OPFS sync mode unavailable, using async fallback\", e);\n this.blockHandle = blockFH as unknown as AsyncFileHandle;\n this.metaHandle = metaFH as unknown as AsyncFileHandle;\n const file = await (this.blockHandle as AsyncFileHandle).getFile();\n this.blockSize = file.size;\n }\n\n // Validate: block file size must match the number of meta entries\n let metaData: Uint8Array | null = null;\n try {\n const file = await (await this.dir.getFileHandle(\"_meta\")).getFile();\n if (file.size >= OPFS_META_ENTRY_SIZE) {\n metaData = new Uint8Array(await file.arrayBuffer());\n }\n } catch {\n /* meta doesn't exist yet */\n }\n\n if (metaData && this.blockSize > this.blockLength) {\n [this.metaSize, this.blockSize] = this.loadIndex(\n metaData,\n this.blockSize,\n );\n } else {\n this.index.clear();\n this.metaSize = 0;\n this.blockSize = 0;\n if (this.syncMode) {\n (this.blockHandle as SyncAccessHandle).truncate(0);\n (this.metaHandle as SyncAccessHandle).truncate(0);\n } else {\n const bw = await (this.blockHandle as AsyncFileHandle).createWritable();\n await bw.close();\n const mw = await (this.metaHandle as AsyncFileHandle).createWritable();\n await mw.close();\n }\n }\n }\n\n private loadIndex(metaData: Uint8Array, blockSize: number): [number, number] {\n const expectedBlockSize =\n Math.floor(metaData.length / OPFS_META_ENTRY_SIZE) * this.blockLength;\n let metaPos = 0;\n let blockPos = 0;\n while (\n metaPos + OPFS_META_ENTRY_SIZE <= metaData.byteLength &&\n blockPos + this.blockLength <= blockSize\n ) {\n const key = readUint32(metaData, metaPos);\n const offset = readUint32(metaData, metaPos + 4);\n this.index.set(key, offset);\n metaPos += OPFS_META_ENTRY_SIZE;\n blockPos += this.blockLength;\n }\n if (metaPos !== metaData.byteLength) {\n console.warn(\n \"OPFS _meta file corrupted: expected\",\n metaPos,\n \"bytes, got\",\n metaData.byteLength,\n );\n }\n if (blockPos !== blockSize || blockSize < expectedBlockSize) {\n console.warn(\n \"OPFS _block file corrupted: expected\",\n blockPos / this.blockLength,\n \"bytes, got\",\n blockSize / this.blockLength,\n \" meta expects\",\n expectedBlockSize / this.blockLength,\n );\n }\n return [\n this.index.size * OPFS_META_ENTRY_SIZE,\n this.index.size * this.blockLength,\n ];\n }\n\n async keys(): Promise<number[]> {\n return Array.from(this.index.keys());\n }\n\n async put(key: number, data: Uint8Array): Promise<void> {\n while (this.asyncOpPromise !== null) {\n await this.asyncOpPromise;\n }\n\n const offset = this.blockSize;\n writeUint32(this.metaEntry, key, 0);\n writeUint32(this.metaEntry, offset, 4);\n\n if (this.syncMode) {\n const block = this.blockHandle as SyncAccessHandle;\n const meta = this.metaHandle as SyncAccessHandle;\n block.write(data, { at: offset });\n meta.write(this.metaEntry, { at: this.metaSize });\n block.flush();\n meta.flush();\n } else {\n const writeOp = async function(\n handle: AsyncFileHandle,\n offset: number,\n data: Uint8Array,\n filename: string,\n ): Promise<void> {\n let writable;\n try {\n writable = await handle.createWritable({ keepExistingData: true });\n } catch (e) {\n console.warn(\n \"Can't create wirtable for '\" +\n filename +\n \"', cause: '\" +\n ((e as any).message ?? \"???\") +\n \"', retrying...\",\n );\n await new Promise((resolve) => setTimeout(resolve, 16));\n return writeOp(handle, offset, data, filename);\n }\n await writable.seek(offset);\n await writable.write(data);\n await writable.close();\n };\n\n this.asyncOpPromise = (async () => {\n const blockWrite = writeOp(\n this.blockHandle as AsyncFileHandle,\n offset,\n data,\n \"_block\",\n );\n const metaWrite = writeOp(\n this.metaHandle as AsyncFileHandle,\n this.metaSize,\n this.metaEntry,\n \"_meta\",\n );\n\n try {\n await blockWrite;\n } catch (e) {\n console.error(\n \"Can't write _block file \" + (e as any).message ?? \"???\",\n );\n }\n try {\n await metaWrite;\n } catch (e) {\n console.error(\n \"Can't write _meta file \" + (e as any).message ?? \"???\",\n );\n }\n\n this.asyncOpPromise = null;\n })();\n }\n\n this.blockSize += this.blockLength;\n this.metaSize += OPFS_META_ENTRY_SIZE;\n this.index.set(key, offset);\n\n return this.asyncOpPromise ?? Promise.resolve();\n }\n\n getSync(key: number): Uint8Array | null {\n if (!this.syncMode) {\n return null;\n }\n const offset = this.index.get(key);\n if (offset === undefined) {\n return null;\n }\n\n const buffer = new Uint8Array(this.blockLength);\n (this.blockHandle as SyncAccessHandle).read(buffer, { at: offset });\n return buffer;\n }\n\n async getAsync(key: number): Promise<Uint8Array | null> {\n if (this.syncMode) {\n return null;\n }\n\n while (this.asyncOpPromise !== null) {\n await this.asyncOpPromise;\n }\n\n const offset = this.index.get(key);\n if (offset === undefined) {\n return null;\n }\n\n const file = await (this.blockHandle as AsyncFileHandle).getFile();\n return new Uint8Array(\n await file.slice(offset, offset + this.blockLength).arrayBuffer(),\n );\n }\n}\n\nexport async function getStore(\n url: string,\n blockLength: number,\n): Promise<Store> {\n try {\n if (\n typeof navigator !== \"undefined\" &&\n navigator.storage &&\n typeof navigator.storage.getDirectory === \"function\"\n ) {\n return await OpfsStore.create(url, blockLength);\n }\n } catch (e) {\n console.warn(\"OPFS not available, falling back to in-memory store\", e);\n }\n return new NoStore();\n}\n\nexport function readUint32(container: Uint8Array, offset: number) {\n return (\n ((container[offset] & 0x000000ff) |\n ((container[offset + 1] << 8) & 0x0000ff00) |\n ((container[offset + 2] << 16) & 0x00ff0000) |\n ((container[offset + 3] << 24) & 0xff000000)) >>>\n 0\n );\n}\n\nexport function writeUint32(\n container: Uint8Array,\n value: number,\n offset: number,\n) {\n container[offset] = value & 0xff;\n container[offset + 1] = (value & 0x0000ff00) >> 8;\n container[offset + 2] = (value & 0x00ff0000) >> 16;\n container[offset + 3] = (value & 0xff000000) >> 24;\n return offset + 4;\n}\n","import { getStore, readUint32 } from \"./sockdrive-store\";\nimport { compress, compressBound, uncompress } from \"../protocol/mini-lz4\";\n\nconst BATCH_SIZE = 4;\nconst context: any = typeof window !== \"undefined\" ? window : typeof self !== \"undefined\" ? self : global;\n\ninterface DriveInfo {\n ahead_read: number;\n range_count: number;\n dropped_ranges: number[];\n preload_ranges: number[] | \"_\";\n small_ranges: number[];\n cylinders: number;\n heads: number;\n sectors: number;\n sector_size: number;\n size: number;\n name: string;\n url: string;\n\n preloadSizeInBytes: number;\n sizeInBytes: number;\n readInBytes: number;\n writeInBytes: number;\n}\n\nexport interface Drive {\n info: DriveInfo;\n range(sector: number): number;\n readRangeAsync(range: number): void;\n ready(): void;\n write(sector: number, buffer: Uint8Array): void;\n persist(): Promise<Uint8Array | null>;\n}\n\nexport async function sockdrive(\n url: string,\n persistedSectors: Uint8Array | null,\n preloadMode: \"all\" | \"default\" | \"none\",\n _onNewRange: (range: number, buffer: Uint8Array) => void,\n): Promise<Drive> {\n const response = await fetch(url + \"/sockdrive.metaj\");\n const info = await response.json() as DriveInfo;\n const store = await getStore(url, info.ahead_read);\n try {\n info.preload_ranges = await (await fetch(url + \"/preload_ranges.metaj\")).json();\n } catch (e) {\n // ignore\n }\n info.url = url;\n info.readInBytes = 0;\n info.writeInBytes = 0;\n const loadedRanges: Set<number> = new Set();\n\n if (info.small_ranges === undefined) {\n info.small_ranges = [];\n }\n\n let storedSectors = new Map<number, Map<number, Uint8Array>>();\n if (persistedSectors) {\n info.writeInBytes = persistedSectors.length;\n storedSectors = deserializeSectors(persistedSectors);\n }\n\n const storeKeys = new Set<number>();\n for (const key of await store.keys()) {\n storeKeys.add(key);\n }\n\n if (info.small_ranges.find((range) => !storeKeys.has(range)) !== undefined) {\n const preload = new Uint8Array(await (await fetch(url + \"/preload.raw\")).arrayBuffer());\n\n for (let i = 0; i < info.small_ranges.length; i++) {\n const range = info.small_ranges[i];\n storeKeys.add(range);\n store.put(range, preload.slice(i * info.ahead_read, (i + 1) * info.ahead_read)).catch(console.error);\n };\n }\n\n const loaded = new Set<number>();\n const droppedRanges: number[] = info.dropped_ranges;\n const emptyRanges: Set<number> = new Set();\n info.dropped_ranges = [];\n for (const next of droppedRanges) {\n emptyRanges.add(next);\n if (!storedSectors.has(next)) {\n loaded.add(next);\n info.dropped_ranges.push(next);\n }\n }\n\n const loadQueue: number[] = [];\n const preloaded = new Set<number>();\n if (preloadMode === \"none\") {\n console.warn(\"Preload mode is disabled\");\n } else if (info.preload_ranges !== \"_\" && preloadMode !== \"all\") {\n for (const next of info.preload_ranges) {\n if (!loaded.has(next)) {\n loadQueue.push(next);\n preloaded.add(next);\n }\n }\n } else {\n for (let i = 0; i < info.range_count; i++) {\n if (!loaded.has(i)) {\n loadQueue.push(i);\n }\n }\n }\n\n // validate queue\n {\n const invalidRanges = [];\n for (const range of loadQueue) {\n if (range < 0 || range >= info.range_count) {\n invalidRanges.push(range);\n }\n }\n if (invalidRanges.length > 0) {\n console.error(\"sockdrive-error: invalid ranges\", invalidRanges);\n for (const range of invalidRanges) {\n loadQueue.splice(loadQueue.indexOf(range), 1);\n }\n }\n }\n\n loadQueue.reverse();\n\n\n let rangesToLoad = loadQueue.length;\n for (let i = 0; i < info.range_count; i++) {\n if (!loaded.has(i) && !preloaded.has(i)) {\n rangesToLoad++;\n }\n }\n info.preloadSizeInBytes = loadQueue.length * info.ahead_read;\n info.sizeInBytes = rangesToLoad * info.ahead_read;\n\n function range(sector: number) {\n return Math.floor(sector * info.sector_size / info.ahead_read);\n };\n\n function mergeSectorsData(range: number, data: Uint8Array): Uint8Array {\n if (storedSectors.has(range)) {\n for (const [offset, sectorData] of storedSectors.get(range)!.entries()) {\n data.set(sectorData, offset * info.sector_size);\n }\n }\n\n return data;\n }\n\n function onNewRange(range: number, buffer: Uint8Array) {\n _onNewRange(range, mergeSectorsData(range, buffer));\n }\n\n async function loadRange(range: number) {\n try {\n if (emptyRanges.has(range)) {\n onNewRange(range, new Uint8Array(info.ahead_read));\n return;\n }\n\n if (storeKeys.has(range)) {\n let buffer = store.getSync(range);\n if (buffer === null) {\n buffer = await store.getAsync(range);\n }\n if (buffer) {\n onNewRange(range, buffer);\n return;\n }\n }\n\n let retries = 3;\n while (retries > 0) {\n let response;\n try {\n response = await fetch(url + \"/\" + range + \".raw\");\n } catch (e) {\n // ignore\n }\n\n if (!response || !response.ok) {\n retries--;\n if (retries > 0) {\n console.warn(\"Can't read range \" + range + \", network response code is \" +\n response?.status + \", retrying...\");\n continue;\n } else {\n throw new Error(\"Can't read range \" + range + \", network response code is \" +\n response?.status);\n }\n }\n\n const buffer = new Uint8Array(await response.arrayBuffer());\n store.put(range, buffer).catch(console.error);\n onNewRange(range, buffer);\n break;\n }\n } catch (e) {\n console.error(\"Can't read range\", range, e);\n } finally {\n info.readInBytes += info.ahead_read;\n }\n }\n\n async function loadFromQueue() {\n const bach: Promise<void>[] = [];\n while (loadQueue.length > 0 && bach.length < BATCH_SIZE) {\n const range = loadQueue.pop()!;\n if (!loaded.has(range)) {\n loaded.add(range);\n bach.push(loadRange(range));\n }\n }\n await Promise.all(bach);\n\n if (loadQueue.length > 0) {\n loadFromQueue().catch(console.error);\n }\n };\n\n function serializeSectors(sectors: Map<number, Map<number, Uint8Array>>): Uint8Array {\n const sectorsData = new Map<number, Uint8Array>();\n\n for (const [range, rangeSectors] of sectors.entries()) {\n rangeSectors.forEach((data, sector) => {\n sectorsData.set(sector + range * info.ahead_read / info.sector_size, data);\n });\n }\n\n const chunksSize = info.sector_size + 4;\n const boundSize = compressBound(chunksSize);\n\n const uncompressedChunk = new Uint8Array(chunksSize);\n const u32uncompressedChunk = new Uint32Array(uncompressedChunk.buffer);\n\n const compressedChunk = new Uint8Array(boundSize);\n const chunks: Uint8Array[] = [];\n\n let total = 0;\n sectorsData.forEach((data, sector) => {\n u32uncompressedChunk[0] = sector;\n uncompressedChunk.set(data, 4);\n const compressedSize = compress(uncompressedChunk, compressedChunk, 0, compressedChunk.length);\n if (compressedSize <= 0 || compressedSize >= uncompressedChunk.length) {\n chunks.push(uncompressedChunk.slice(0));\n total += chunksSize;\n } else {\n chunks.push(compressedChunk.slice(0, compressedSize));\n total += compressedSize;\n }\n });\n\n const payload = new Uint8Array(total + sectorsData.size * 4 + 4);\n payload[0] = sectorsData.size;\n payload[1] = (sectorsData.size & 0x0000ff00) >> 8;\n payload[2] = (sectorsData.size & 0x00ff0000) >> 16;\n payload[3] = (sectorsData.size & 0xff000000) >> 24;\n\n\n let offset = 4;\n for (const chunk of chunks) {\n payload[offset] = chunk.length;\n payload[offset + 1] = (chunk.length & 0x0000ff00) >> 8;\n payload[offset + 2] = (chunk.length & 0x00ff0000) >> 16;\n payload[offset + 3] = (chunk.length & 0xff000000) >> 24;\n offset += 4;\n payload.set(chunk, offset);\n offset += chunk.length;\n }\n\n return payload;\n }\n\n function deserializeSectors(data: Uint8Array): Map<number, Map<number, Uint8Array>> {\n const sectors = new Map<number, Map<number, Uint8Array>>();\n const count = (data[0] & 0x000000ff) | ((data[1] << 8) & 0x0000ff00) |\n ((data[2] << 16) & 0x00ff0000) | ((data[3] << 24) & 0xff000000);\n const chunkSize = info.sector_size + 4;\n const uncompressedChunk = new Uint8Array(chunkSize);\n const u32uncompressedChunk = new Uint32Array(uncompressedChunk.buffer);\n\n let offset = 4;\n for (let i = 0; i < count; i++) {\n const compressedSize = (data[offset] & 0x000000ff) | ((data[offset + 1] << 8) & 0x0000ff00) |\n ((data[offset + 2] << 16) & 0x00ff0000) | ((data[offset + 3] << 24) & 0xff000000);\n offset += 4;\n const compressedChunk = data.slice(offset, offset + compressedSize);\n offset += compressedSize;\n\n\n let sector;\n let sectorData;\n if (compressedSize === chunkSize) {\n sector = new Uint32Array(compressedChunk.buffer)[0];\n sectorData = compressedChunk.slice(4);\n } else {\n const uncompressedSize = uncompress(compressedChunk, uncompressedChunk, 0, 0);\n if (uncompressedSize !== chunkSize) {\n console.error(\"Can't uncompress sectors data, size mismatch\",\n uncompressedSize, \"!==\", chunkSize, \"chunk\", i, \"offset\", offset);\n return new Map();\n }\n sector = u32uncompressedChunk[0];\n sectorData = uncompressedChunk.slice(4);\n }\n\n\n const rangeOfSector = range(sector);\n\n if (!sectors.has(rangeOfSector)) {\n sectors.set(rangeOfSector, new Map());\n }\n\n sectors.get(rangeOfSector)!.set(\n sector - (rangeOfSector * info.ahead_read) / info.sector_size,\n sectorData,\n );\n }\n\n return sectors;\n }\n\n context.loadedRanges = () => {\n console.log(\"Loaded ranges (\" + loadedRanges.size + \"):\",\n JSON.stringify(Array.from(loadedRanges).sort((a, b) => a - b)));\n };\n\n context.brotliRanges = () => {\n console.log(\"Loaded ranges (\" + loadedRanges.size + \"):\",\n \"echo '\" +\n JSON.stringify(Array.from(loadedRanges).sort((a, b) => a - b)) +\n \"' | brotli > /tmp/preload_ranges.metaj\");\n };\n\n context.verifySectors = () => {\n if (storedSectors.size === 0) {\n return;\n }\n\n const serialized = serializeSectors(storedSectors);\n // Create a blob URL for downloading the serialized data\n const blob = new Blob([serialized], { type: \"application/octet-stream\" });\n const url = URL.createObjectURL(blob);\n console.log(\"Download serialized sectors:\", url);\n const deserialized = deserializeSectors(serialized);\n console.log(\"Comparing sectors and deserialized:\");\n\n // Compare sizes\n console.log(\"Original sectors size:\", storedSectors.size);\n console.log(\"Deserialized sectors size:\", deserialized.size);\n\n // Compare each range and sector\n storedSectors.forEach((rangeMap, rangeKey) => {\n const deserializedRange = deserialized.get(rangeKey);\n if (!deserializedRange) {\n console.error(`Range ${rangeKey} missing in deserialized data`);\n return;\n }\n\n rangeMap.forEach((sectorData, sectorKey) => {\n const deserializedSector = deserializedRange.get(sectorKey);\n if (!deserializedSector) {\n console.error(`Sector ${sectorKey} missing in range ${rangeKey}`);\n return;\n }\n\n // Compare sector data\n const match = sectorData.length === deserializedSector.length &&\n sectorData.every((val, i) => val === deserializedSector[i]);\n\n if (!match) {\n console.error(`Data mismatch in range ${rangeKey}, sector ${sectorKey}`);\n console.log(\"Original:\", sectorData);\n console.log(\"Deserialized:\", deserializedSector);\n }\n });\n });\n };\n\n return {\n info,\n range,\n readRangeAsync: async (range: number) => {\n loadedRanges.add(range);\n if (!loaded.has(range)) {\n loaded.add(range);\n loadRange(range);\n }\n },\n ready: () => {\n loadFromQueue().catch(console.error);\n },\n write: (sector: number, buffer: Uint8Array) => {\n const rangeOfSector = range(sector);\n if (!storedSectors.has(rangeOfSector)) {\n storedSectors.set(rangeOfSector, new Map());\n }\n storedSectors.get(rangeOfSector)!.set(\n sector - (rangeOfSector * info.ahead_read) / info.sector_size,\n buffer);\n },\n persist: async () => {\n const serialized = serializeSectors(storedSectors);\n if (serialized.byteLength > 4) {\n return serialized;\n }\n return null;\n },\n };\n}\n\nexport function traverseSockdriveChanges(encoded: Uint8Array,\n callback: (url: string, changes: Uint8Array) => void) {\n const decoder = new TextDecoder();\n let offset = 0;\n while (offset < encoded.length) {\n const urlLength = readUint32(encoded, offset);\n offset += 4;\n\n if (urlLength > 4096) {\n return false;\n }\n\n const url = decoder.decode(encoded.slice(offset, offset + urlLength));\n\n if (!(url.startsWith(\"http://\") || url.startsWith(\"https://\"))) {\n return false;\n }\n\n offset += urlLength;\n\n const persistLength = readUint32(encoded, offset);\n offset += 4;\n\n const changes = encoded.slice(offset, offset + persistLength);\n offset += persistLength;\n callback(url, changes);\n }\n\n return true;\n}\n\ncontext.sockdrive = sockdrive;\ncontext.traverseSockdriveChanges = traverseSockdriveChanges;\n"]}