var BASIS = ( function () { var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; if ( typeof __filename !== 'undefined' ) _scriptDir = _scriptDir || __filename; return ( function ( BASIS ) { BASIS = BASIS || {}; var Module = typeof BASIS !== "undefined" ? BASIS : {}; var readyPromiseResolve, readyPromiseReject; Module[ "ready" ] = new Promise( function ( resolve, reject ) { readyPromiseResolve = resolve; readyPromiseReject = reject } ); var moduleOverrides = {}; var key; for ( key in Module ) { if ( Module.hasOwnProperty( key ) ) { moduleOverrides[ key ] = Module[ key ] } } var arguments_ = []; var thisProgram = "./this.program"; var quit_ = function ( status, toThrow ) { throw toThrow }; var ENVIRONMENT_IS_WEB = false; var ENVIRONMENT_IS_WORKER = false; var ENVIRONMENT_IS_NODE = false; var ENVIRONMENT_IS_SHELL = false; ENVIRONMENT_IS_WEB = typeof window === "object"; ENVIRONMENT_IS_WORKER = typeof importScripts === "function"; ENVIRONMENT_IS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string"; ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; var scriptDirectory = ""; function locateFile( path ) { if ( Module[ "locateFile" ] ) { return Module[ "locateFile" ]( path, scriptDirectory ) } return scriptDirectory + path } var read_, readAsync, readBinary, setWindowTitle; var nodeFS; var nodePath; if ( ENVIRONMENT_IS_NODE ) { if ( ENVIRONMENT_IS_WORKER ) { scriptDirectory = require( "path" ).dirname( scriptDirectory ) + "/" } else { scriptDirectory = __dirname + "/" } read_ = function shell_read( filename, binary ) { if ( !nodeFS ) nodeFS = require( "fs" ); if ( !nodePath ) nodePath = require( "path" ); filename = nodePath[ "normalize" ]( filename ); return nodeFS[ "readFileSync" ]( filename, binary ? null : "utf8" ) }; readBinary = function readBinary( filename ) { var ret = read_( filename, true ); if ( !ret.buffer ) { ret = new Uint8Array( ret ) } assert( ret.buffer ); return ret }; if ( process[ "argv" ].length > 1 ) { thisProgram = process[ "argv" ][ 1 ].replace( /\\/g, "/" ) } arguments_ = process[ "argv" ].slice( 2 ); process[ "on" ]( "uncaughtException", function ( ex ) { if ( !( ex instanceof ExitStatus ) ) { throw ex } } ); process[ "on" ]( "unhandledRejection", abort ); quit_ = function ( status ) { process[ "exit" ]( status ) }; Module[ "inspect" ] = function () { return "[Emscripten Module object]" } } else if ( ENVIRONMENT_IS_SHELL ) { if ( typeof read != "undefined" ) { read_ = function shell_read( f ) { return read( f ) } } readBinary = function readBinary( f ) { var data; if ( typeof readbuffer === "function" ) { return new Uint8Array( readbuffer( f ) ) } data = read( f, "binary" ); assert( typeof data === "object" ); return data }; if ( typeof scriptArgs != "undefined" ) { arguments_ = scriptArgs } else if ( typeof arguments != "undefined" ) { arguments_ = arguments } if ( typeof quit === "function" ) { quit_ = function ( status ) { quit( status ) } } if ( typeof print !== "undefined" ) { if ( typeof console === "undefined" ) console = {}; console.log = print; console.warn = console.error = typeof printErr !== "undefined" ? printErr : print } } else if ( ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER ) { if ( ENVIRONMENT_IS_WORKER ) { scriptDirectory = self.location.href } else if ( typeof document !== "undefined" && document.currentScript ) { scriptDirectory = document.currentScript.src } if ( _scriptDir ) { scriptDirectory = _scriptDir } if ( scriptDirectory.indexOf( "blob:" ) !== 0 ) { scriptDirectory = scriptDirectory.substr( 0, scriptDirectory.lastIndexOf( "/" ) + 1 ) } else { scriptDirectory = "" } { read_ = function shell_read( url ) { var xhr = new XMLHttpRequest; xhr.open( "GET", url, false ); xhr.send( null ); return xhr.responseText }; if ( ENVIRONMENT_IS_WORKER ) { readBinary = function readBinary( url ) { var xhr = new XMLHttpRequest; xhr.open( "GET", url, false ); xhr.responseType = "arraybuffer"; xhr.send( null ); return new Uint8Array( xhr.response ) } } readAsync = function readAsync( url, onload, onerror ) { var xhr = new XMLHttpRequest; xhr.open( "GET", url, true ); xhr.responseType = "arraybuffer"; xhr.onload = function xhr_onload() { if ( xhr.status == 200 || xhr.status == 0 && xhr.response ) { onload( xhr.response ); return } onerror() }; xhr.onerror = onerror; xhr.send( null ) } } setWindowTitle = function ( title ) { document.title = title } } else { } var out = Module[ "print" ] || console.log.bind( console ); var err = Module[ "printErr" ] || console.warn.bind( console ); for ( key in moduleOverrides ) { if ( moduleOverrides.hasOwnProperty( key ) ) { Module[ key ] = moduleOverrides[ key ] } } moduleOverrides = null; if ( Module[ "arguments" ] ) arguments_ = Module[ "arguments" ]; if ( Module[ "thisProgram" ] ) thisProgram = Module[ "thisProgram" ]; if ( Module[ "quit" ] ) quit_ = Module[ "quit" ]; var wasmBinary; if ( Module[ "wasmBinary" ] ) wasmBinary = Module[ "wasmBinary" ]; var noExitRuntime; if ( Module[ "noExitRuntime" ] ) noExitRuntime = Module[ "noExitRuntime" ]; if ( typeof WebAssembly !== "object" ) { abort( "no native wasm support detected" ) } var wasmMemory; var ABORT = false; var EXITSTATUS; function assert( condition, text ) { if ( !condition ) { abort( "Assertion failed: " + text ) } } var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder( "utf8" ) : undefined; function UTF8ArrayToString( heap, idx, maxBytesToRead ) { var endIdx = idx + maxBytesToRead; var endPtr = idx; while ( heap[ endPtr ] && !( endPtr >= endIdx ) ) ++endPtr; if ( endPtr - idx > 16 && heap.subarray && UTF8Decoder ) { return UTF8Decoder.decode( heap.subarray( idx, endPtr ) ) } else { var str = ""; while ( idx < endPtr ) { var u0 = heap[ idx++ ]; if ( !( u0 & 128 ) ) { str += String.fromCharCode( u0 ); continue } var u1 = heap[ idx++ ] & 63; if ( ( u0 & 224 ) == 192 ) { str += String.fromCharCode( ( u0 & 31 ) << 6 | u1 ); continue } var u2 = heap[ idx++ ] & 63; if ( ( u0 & 240 ) == 224 ) { u0 = ( u0 & 15 ) << 12 | u1 << 6 | u2 } else { u0 = ( u0 & 7 ) << 18 | u1 << 12 | u2 << 6 | heap[ idx++ ] & 63 } if ( u0 < 65536 ) { str += String.fromCharCode( u0 ) } else { var ch = u0 - 65536; str += String.fromCharCode( 55296 | ch >> 10, 56320 | ch & 1023 ) } } } return str } function UTF8ToString( ptr, maxBytesToRead ) { return ptr ? UTF8ArrayToString( HEAPU8, ptr, maxBytesToRead ) : "" } function stringToUTF8Array( str, heap, outIdx, maxBytesToWrite ) { if ( !( maxBytesToWrite > 0 ) ) return 0; var startIdx = outIdx; var endIdx = outIdx + maxBytesToWrite - 1; for ( var i = 0; i < str.length; ++i ) { var u = str.charCodeAt( i ); if ( u >= 55296 && u <= 57343 ) { var u1 = str.charCodeAt( ++i ); u = 65536 + ( ( u & 1023 ) << 10 ) | u1 & 1023 } if ( u <= 127 ) { if ( outIdx >= endIdx ) break; heap[ outIdx++ ] = u } else if ( u <= 2047 ) { if ( outIdx + 1 >= endIdx ) break; heap[ outIdx++ ] = 192 | u >> 6; heap[ outIdx++ ] = 128 | u & 63 } else if ( u <= 65535 ) { if ( outIdx + 2 >= endIdx ) break; heap[ outIdx++ ] = 224 | u >> 12; heap[ outIdx++ ] = 128 | u >> 6 & 63; heap[ outIdx++ ] = 128 | u & 63 } else { if ( outIdx + 3 >= endIdx ) break; heap[ outIdx++ ] = 240 | u >> 18; heap[ outIdx++ ] = 128 | u >> 12 & 63; heap[ outIdx++ ] = 128 | u >> 6 & 63; heap[ outIdx++ ] = 128 | u & 63 } } heap[ outIdx ] = 0; return outIdx - startIdx } function stringToUTF8( str, outPtr, maxBytesToWrite ) { return stringToUTF8Array( str, HEAPU8, outPtr, maxBytesToWrite ) } function lengthBytesUTF8( str ) { var len = 0; for ( var i = 0; i < str.length; ++i ) { var u = str.charCodeAt( i ); if ( u >= 55296 && u <= 57343 ) u = 65536 + ( ( u & 1023 ) << 10 ) | str.charCodeAt( ++i ) & 1023; if ( u <= 127 ) ++len; else if ( u <= 2047 ) len += 2; else if ( u <= 65535 ) len += 3; else len += 4 } return len } var UTF16Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder( "utf-16le" ) : undefined; function UTF16ToString( ptr, maxBytesToRead ) { var endPtr = ptr; var idx = endPtr >> 1; var maxIdx = idx + maxBytesToRead / 2; while ( !( idx >= maxIdx ) && HEAPU16[ idx ] ) ++idx; endPtr = idx << 1; if ( endPtr - ptr > 32 && UTF16Decoder ) { return UTF16Decoder.decode( HEAPU8.subarray( ptr, endPtr ) ) } else { var str = ""; for ( var i = 0; !( i >= maxBytesToRead / 2 ); ++i ) { var codeUnit = HEAP16[ ptr + i * 2 >> 1 ]; if ( codeUnit == 0 ) break; str += String.fromCharCode( codeUnit ) } return str } } function stringToUTF16( str, outPtr, maxBytesToWrite ) { if ( maxBytesToWrite === undefined ) { maxBytesToWrite = 2147483647 } if ( maxBytesToWrite < 2 ) return 0; maxBytesToWrite -= 2; var startPtr = outPtr; var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length; for ( var i = 0; i < numCharsToWrite; ++i ) { var codeUnit = str.charCodeAt( i ); HEAP16[ outPtr >> 1 ] = codeUnit; outPtr += 2 } HEAP16[ outPtr >> 1 ] = 0; return outPtr - startPtr } function lengthBytesUTF16( str ) { return str.length * 2 } function UTF32ToString( ptr, maxBytesToRead ) { var i = 0; var str = ""; while ( !( i >= maxBytesToRead / 4 ) ) { var utf32 = HEAP32[ ptr + i * 4 >> 2 ]; if ( utf32 == 0 ) break; ++i; if ( utf32 >= 65536 ) { var ch = utf32 - 65536; str += String.fromCharCode( 55296 | ch >> 10, 56320 | ch & 1023 ) } else { str += String.fromCharCode( utf32 ) } } return str } function stringToUTF32( str, outPtr, maxBytesToWrite ) { if ( maxBytesToWrite === undefined ) { maxBytesToWrite = 2147483647 } if ( maxBytesToWrite < 4 ) return 0; var startPtr = outPtr; var endPtr = startPtr + maxBytesToWrite - 4; for ( var i = 0; i < str.length; ++i ) { var codeUnit = str.charCodeAt( i ); if ( codeUnit >= 55296 && codeUnit <= 57343 ) { var trailSurrogate = str.charCodeAt( ++i ); codeUnit = 65536 + ( ( codeUnit & 1023 ) << 10 ) | trailSurrogate & 1023 } HEAP32[ outPtr >> 2 ] = codeUnit; outPtr += 4; if ( outPtr + 4 > endPtr ) break } HEAP32[ outPtr >> 2 ] = 0; return outPtr - startPtr } function lengthBytesUTF32( str ) { var len = 0; for ( var i = 0; i < str.length; ++i ) { var codeUnit = str.charCodeAt( i ); if ( codeUnit >= 55296 && codeUnit <= 57343 ) ++i; len += 4 } return len } function alignUp( x, multiple ) { if ( x % multiple > 0 ) { x += multiple - x % multiple } return x } var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; function updateGlobalBufferAndViews( buf ) { buffer = buf; Module[ "HEAP8" ] = HEAP8 = new Int8Array( buf ); Module[ "HEAP16" ] = HEAP16 = new Int16Array( buf ); Module[ "HEAP32" ] = HEAP32 = new Int32Array( buf ); Module[ "HEAPU8" ] = HEAPU8 = new Uint8Array( buf ); Module[ "HEAPU16" ] = HEAPU16 = new Uint16Array( buf ); Module[ "HEAPU32" ] = HEAPU32 = new Uint32Array( buf ); Module[ "HEAPF32" ] = HEAPF32 = new Float32Array( buf ); Module[ "HEAPF64" ] = HEAPF64 = new Float64Array( buf ) } var INITIAL_MEMORY = Module[ "INITIAL_MEMORY" ] || 16777216; var wasmTable; var __ATPRERUN__ = []; var __ATINIT__ = []; var __ATMAIN__ = []; var __ATPOSTRUN__ = []; var runtimeInitialized = false; function preRun() { if ( Module[ "preRun" ] ) { if ( typeof Module[ "preRun" ] == "function" ) Module[ "preRun" ] = [ Module[ "preRun" ] ]; while ( Module[ "preRun" ].length ) { addOnPreRun( Module[ "preRun" ].shift() ) } } callRuntimeCallbacks( __ATPRERUN__ ) } function initRuntime() { runtimeInitialized = true; callRuntimeCallbacks( __ATINIT__ ) } function preMain() { callRuntimeCallbacks( __ATMAIN__ ) } function postRun() { if ( Module[ "postRun" ] ) { if ( typeof Module[ "postRun" ] == "function" ) Module[ "postRun" ] = [ Module[ "postRun" ] ]; while ( Module[ "postRun" ].length ) { addOnPostRun( Module[ "postRun" ].shift() ) } } callRuntimeCallbacks( __ATPOSTRUN__ ) } function addOnPreRun( cb ) { __ATPRERUN__.unshift( cb ) } function addOnPostRun( cb ) { __ATPOSTRUN__.unshift( cb ) } var runDependencies = 0; var runDependencyWatcher = null; var dependenciesFulfilled = null; function addRunDependency( id ) { runDependencies++; if ( Module[ "monitorRunDependencies" ] ) { Module[ "monitorRunDependencies" ]( runDependencies ) } } function removeRunDependency( id ) { runDependencies--; if ( Module[ "monitorRunDependencies" ] ) { Module[ "monitorRunDependencies" ]( runDependencies ) } if ( runDependencies == 0 ) { if ( runDependencyWatcher !== null ) { clearInterval( runDependencyWatcher ); runDependencyWatcher = null } if ( dependenciesFulfilled ) { var callback = dependenciesFulfilled; dependenciesFulfilled = null; callback() } } } Module[ "preloadedImages" ] = {}; Module[ "preloadedAudios" ] = {}; function abort( what ) { if ( Module[ "onAbort" ] ) { Module[ "onAbort" ]( what ) } what += ""; err( what ); ABORT = true; EXITSTATUS = 1; what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; var e = new WebAssembly.RuntimeError( what ); readyPromiseReject( e ); throw e } function hasPrefix( str, prefix ) { return String.prototype.startsWith ? str.startsWith( prefix ) : str.indexOf( prefix ) === 0 } var dataURIPrefix = "data:application/octet-stream;base64,"; function isDataURI( filename ) { return hasPrefix( filename, dataURIPrefix ) } var fileURIPrefix = "file://"; function isFileURI( filename ) { return hasPrefix( filename, fileURIPrefix ) } var wasmBinaryFile = "basis_transcoder.wasm"; if ( !isDataURI( wasmBinaryFile ) ) { wasmBinaryFile = locateFile( wasmBinaryFile ) } function getBinary() { try { if ( wasmBinary ) { return new Uint8Array( wasmBinary ) } if ( readBinary ) { return readBinary( wasmBinaryFile ) } else { throw"both async and sync fetching of the wasm failed" } } catch ( err ) { abort( err ) } } function getBinaryPromise() { if ( !wasmBinary && ( ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER ) && typeof fetch === "function" && !isFileURI( wasmBinaryFile ) ) { return fetch( wasmBinaryFile, { credentials: "same-origin" } ).then( function ( response ) { if ( !response[ "ok" ] ) { throw"failed to load wasm binary file at '" + wasmBinaryFile + "'" } return response[ "arrayBuffer" ]() } ).catch( function () { return getBinary() } ) } return Promise.resolve().then( getBinary ) } function createWasm() { var info = { "a": asmLibraryArg }; function receiveInstance( instance, module ) { var exports = instance.exports; Module[ "asm" ] = exports; wasmMemory = Module[ "asm" ][ "H" ]; updateGlobalBufferAndViews( wasmMemory.buffer ); wasmTable = Module[ "asm" ][ "I" ]; removeRunDependency( "wasm-instantiate" ) } addRunDependency( "wasm-instantiate" ); function receiveInstantiatedSource( output ) { receiveInstance( output[ "instance" ] ) } function instantiateArrayBuffer( receiver ) { return getBinaryPromise().then( function ( binary ) { return WebAssembly.instantiate( binary, info ) } ).then( receiver, function ( reason ) { err( "failed to asynchronously prepare wasm: " + reason ); abort( reason ) } ) } function instantiateAsync() { if ( !wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI( wasmBinaryFile ) && !isFileURI( wasmBinaryFile ) && typeof fetch === "function" ) { return fetch( wasmBinaryFile, { credentials: "same-origin" } ).then( function ( response ) { var result = WebAssembly.instantiateStreaming( response, info ); return result.then( receiveInstantiatedSource, function ( reason ) { err( "wasm streaming compile failed: " + reason ); err( "falling back to ArrayBuffer instantiation" ); return instantiateArrayBuffer( receiveInstantiatedSource ) } ) } ) } else { return instantiateArrayBuffer( receiveInstantiatedSource ) } } if ( Module[ "instantiateWasm" ] ) { try { var exports = Module[ "instantiateWasm" ]( info, receiveInstance ); return exports } catch ( e ) { err( "Module.instantiateWasm callback failed with error: " + e ); return false } } instantiateAsync().catch( readyPromiseReject ); return {} } function callRuntimeCallbacks( callbacks ) { while ( callbacks.length > 0 ) { var callback = callbacks.shift(); if ( typeof callback == "function" ) { callback( Module ); continue } var func = callback.func; if ( typeof func === "number" ) { if ( callback.arg === undefined ) { wasmTable.get( func )() } else { wasmTable.get( func )( callback.arg ) } } else { func( callback.arg === undefined ? null : callback.arg ) } } } var ExceptionInfoAttrs = { DESTRUCTOR_OFFSET: 0, REFCOUNT_OFFSET: 4, TYPE_OFFSET: 8, CAUGHT_OFFSET: 12, RETHROWN_OFFSET: 13, SIZE: 16 }; function ___cxa_allocate_exception( size ) { return _malloc( size + ExceptionInfoAttrs.SIZE ) + ExceptionInfoAttrs.SIZE } function ExceptionInfo( excPtr ) { this.excPtr = excPtr; this.ptr = excPtr - ExceptionInfoAttrs.SIZE; this.set_type = function ( type ) { HEAP32[ this.ptr + ExceptionInfoAttrs.TYPE_OFFSET >> 2 ] = type }; this.get_type = function () { return HEAP32[ this.ptr + ExceptionInfoAttrs.TYPE_OFFSET >> 2 ] }; this.set_destructor = function ( destructor ) { HEAP32[ this.ptr + ExceptionInfoAttrs.DESTRUCTOR_OFFSET >> 2 ] = destructor }; this.get_destructor = function () { return HEAP32[ this.ptr + ExceptionInfoAttrs.DESTRUCTOR_OFFSET >> 2 ] }; this.set_refcount = function ( refcount ) { HEAP32[ this.ptr + ExceptionInfoAttrs.REFCOUNT_OFFSET >> 2 ] = refcount }; this.set_caught = function ( caught ) { caught = caught ? 1 : 0; HEAP8[ this.ptr + ExceptionInfoAttrs.CAUGHT_OFFSET >> 0 ] = caught }; this.get_caught = function () { return HEAP8[ this.ptr + ExceptionInfoAttrs.CAUGHT_OFFSET >> 0 ] != 0 }; this.set_rethrown = function ( rethrown ) { rethrown = rethrown ? 1 : 0; HEAP8[ this.ptr + ExceptionInfoAttrs.RETHROWN_OFFSET >> 0 ] = rethrown }; this.get_rethrown = function () { return HEAP8[ this.ptr + ExceptionInfoAttrs.RETHROWN_OFFSET >> 0 ] != 0 }; this.init = function ( type, destructor ) { this.set_type( type ); this.set_destructor( destructor ); this.set_refcount( 0 ); this.set_caught( false ); this.set_rethrown( false ) }; this.add_ref = function () { var value = HEAP32[ this.ptr + ExceptionInfoAttrs.REFCOUNT_OFFSET >> 2 ]; HEAP32[ this.ptr + ExceptionInfoAttrs.REFCOUNT_OFFSET >> 2 ] = value + 1 }; this.release_ref = function () { var prev = HEAP32[ this.ptr + ExceptionInfoAttrs.REFCOUNT_OFFSET >> 2 ]; HEAP32[ this.ptr + ExceptionInfoAttrs.REFCOUNT_OFFSET >> 2 ] = prev - 1; return prev === 1 } } var exceptionLast = 0; var uncaughtExceptionCount = 0; function ___cxa_throw( ptr, type, destructor ) { var info = new ExceptionInfo( ptr ); info.init( type, destructor ); exceptionLast = ptr; uncaughtExceptionCount++; throw ptr } var structRegistrations = {}; function runDestructors( destructors ) { while ( destructors.length ) { var ptr = destructors.pop(); var del = destructors.pop(); del( ptr ) } } function simpleReadValueFromPointer( pointer ) { return this[ "fromWireType" ]( HEAPU32[ pointer >> 2 ] ) } var awaitingDependencies = {}; var registeredTypes = {}; var typeDependencies = {}; var char_0 = 48; var char_9 = 57; function makeLegalFunctionName( name ) { if ( undefined === name ) { return "_unknown" } name = name.replace( /[^a-zA-Z0-9_]/g, "$" ); var f = name.charCodeAt( 0 ); if ( f >= char_0 && f <= char_9 ) { return "_" + name } else { return name } } function createNamedFunction( name, body ) { name = makeLegalFunctionName( name ); return new Function( "body", "return function " + name + "() {\n" + ' "use strict";' + " return body.apply(this, arguments);\n" + "};\n" )( body ) } function extendError( baseErrorType, errorName ) { var errorClass = createNamedFunction( errorName, function ( message ) { this.name = errorName; this.message = message; var stack = new Error( message ).stack; if ( stack !== undefined ) { this.stack = this.toString() + "\n" + stack.replace( /^Error(:[^\n]*)?\n/, "" ) } } ); errorClass.prototype = Object.create( baseErrorType.prototype ); errorClass.prototype.constructor = errorClass; errorClass.prototype.toString = function () { if ( this.message === undefined ) { return this.name } else { return this.name + ": " + this.message } }; return errorClass } var InternalError = undefined; function throwInternalError( message ) { throw new InternalError( message ) } function whenDependentTypesAreResolved( myTypes, dependentTypes, getTypeConverters ) { myTypes.forEach( function ( type ) { typeDependencies[ type ] = dependentTypes } ); function onComplete( typeConverters ) { var myTypeConverters = getTypeConverters( typeConverters ); if ( myTypeConverters.length !== myTypes.length ) { throwInternalError( "Mismatched type converter count" ) } for ( var i = 0; i < myTypes.length; ++i ) { registerType( myTypes[ i ], myTypeConverters[ i ] ) } } var typeConverters = new Array( dependentTypes.length ); var unregisteredTypes = []; var registered = 0; dependentTypes.forEach( function ( dt, i ) { if ( registeredTypes.hasOwnProperty( dt ) ) { typeConverters[ i ] = registeredTypes[ dt ] } else { unregisteredTypes.push( dt ); if ( !awaitingDependencies.hasOwnProperty( dt ) ) { awaitingDependencies[ dt ] = [] } awaitingDependencies[ dt ].push( function () { typeConverters[ i ] = registeredTypes[ dt ]; ++registered; if ( registered === unregisteredTypes.length ) { onComplete( typeConverters ) } } ) } } ); if ( 0 === unregisteredTypes.length ) { onComplete( typeConverters ) } } function __embind_finalize_value_object( structType ) { var reg = structRegistrations[ structType ]; delete structRegistrations[ structType ]; var rawConstructor = reg.rawConstructor; var rawDestructor = reg.rawDestructor; var fieldRecords = reg.fields; var fieldTypes = fieldRecords.map( function ( field ) { return field.getterReturnType } ).concat( fieldRecords.map( function ( field ) { return field.setterArgumentType } ) ); whenDependentTypesAreResolved( [ structType ], fieldTypes, function ( fieldTypes ) { var fields = {}; fieldRecords.forEach( function ( field, i ) { var fieldName = field.fieldName; var getterReturnType = fieldTypes[ i ]; var getter = field.getter; var getterContext = field.getterContext; var setterArgumentType = fieldTypes[ i + fieldRecords.length ]; var setter = field.setter; var setterContext = field.setterContext; fields[ fieldName ] = { read: function ( ptr ) { return getterReturnType[ "fromWireType" ]( getter( getterContext, ptr ) ) }, write: function ( ptr, o ) { var destructors = []; setter( setterContext, ptr, setterArgumentType[ "toWireType" ]( destructors, o ) ); runDestructors( destructors ) } } } ); return [ { name: reg.name, "fromWireType": function ( ptr ) { var rv = {}; for ( var i in fields ) { rv[ i ] = fields[ i ].read( ptr ) } rawDestructor( ptr ); return rv }, "toWireType": function ( destructors, o ) { for ( var fieldName in fields ) { if ( !( fieldName in o ) ) { throw new TypeError( 'Missing field: "' + fieldName + '"' ) } } var ptr = rawConstructor(); for ( fieldName in fields ) { fields[ fieldName ].write( ptr, o[ fieldName ] ) } if ( destructors !== null ) { destructors.push( rawDestructor, ptr ) } return ptr }, "argPackAdvance": 8, "readValueFromPointer": simpleReadValueFromPointer, destructorFunction: rawDestructor } ] } ) } function getShiftFromSize( size ) { switch ( size ) { case 1: return 0; case 2: return 1; case 4: return 2; case 8: return 3; default: throw new TypeError( "Unknown type size: " + size ) } } function embind_init_charCodes() { var codes = new Array( 256 ); for ( var i = 0; i < 256; ++i ) { codes[ i ] = String.fromCharCode( i ) } embind_charCodes = codes } var embind_charCodes = undefined; function readLatin1String( ptr ) { var ret = ""; var c = ptr; while ( HEAPU8[ c ] ) { ret += embind_charCodes[ HEAPU8[ c++ ] ] } return ret } var BindingError = undefined; function throwBindingError( message ) { throw new BindingError( message ) } function registerType( rawType, registeredInstance, options ) { options = options || {}; if ( !( "argPackAdvance" in registeredInstance ) ) { throw new TypeError( "registerType registeredInstance requires argPackAdvance" ) } var name = registeredInstance.name; if ( !rawType ) { throwBindingError( 'type "' + name + '" must have a positive integer typeid pointer' ) } if ( registeredTypes.hasOwnProperty( rawType ) ) { if ( options.ignoreDuplicateRegistrations ) { return } else { throwBindingError( "Cannot register type '" + name + "' twice" ) } } registeredTypes[ rawType ] = registeredInstance; delete typeDependencies[ rawType ]; if ( awaitingDependencies.hasOwnProperty( rawType ) ) { var callbacks = awaitingDependencies[ rawType ]; delete awaitingDependencies[ rawType ]; callbacks.forEach( function ( cb ) { cb() } ) } } function __embind_register_bool( rawType, name, size, trueValue, falseValue ) { var shift = getShiftFromSize( size ); name = readLatin1String( name ); registerType( rawType, { name: name, "fromWireType": function ( wt ) { return !!wt }, "toWireType": function ( destructors, o ) { return o ? trueValue : falseValue }, "argPackAdvance": 8, "readValueFromPointer": function ( pointer ) { var heap; if ( size === 1 ) { heap = HEAP8 } else if ( size === 2 ) { heap = HEAP16 } else if ( size === 4 ) { heap = HEAP32 } else { throw new TypeError( "Unknown boolean type size: " + name ) } return this[ "fromWireType" ]( heap[ pointer >> shift ] ) }, destructorFunction: null } ) } function ClassHandle_isAliasOf( other ) { if ( !( this instanceof ClassHandle ) ) { return false } if ( !( other instanceof ClassHandle ) ) { return false } var leftClass = this.$$.ptrType.registeredClass; var left = this.$$.ptr; var rightClass = other.$$.ptrType.registeredClass; var right = other.$$.ptr; while ( leftClass.baseClass ) { left = leftClass.upcast( left ); leftClass = leftClass.baseClass } while ( rightClass.baseClass ) { right = rightClass.upcast( right ); rightClass = rightClass.baseClass } return leftClass === rightClass && left === right } function shallowCopyInternalPointer( o ) { return { count: o.count, deleteScheduled: o.deleteScheduled, preservePointerOnDelete: o.preservePointerOnDelete, ptr: o.ptr, ptrType: o.ptrType, smartPtr: o.smartPtr, smartPtrType: o.smartPtrType } } function throwInstanceAlreadyDeleted( obj ) { function getInstanceTypeName( handle ) { return handle.$$.ptrType.registeredClass.name } throwBindingError( getInstanceTypeName( obj ) + " instance already deleted" ) } var finalizationGroup = false; function detachFinalizer( handle ) { } function runDestructor( $$ ) { if ( $$.smartPtr ) { $$.smartPtrType.rawDestructor( $$.smartPtr ) } else { $$.ptrType.registeredClass.rawDestructor( $$.ptr ) } } function releaseClassHandle( $$ ) { $$.count.value -= 1; var toDelete = 0 === $$.count.value; if ( toDelete ) { runDestructor( $$ ) } } function attachFinalizer( handle ) { if ( "undefined" === typeof FinalizationGroup ) { attachFinalizer = function ( handle ) { return handle }; return handle } finalizationGroup = new FinalizationGroup( function ( iter ) { for ( var result = iter.next(); !result.done; result = iter.next() ) { var $$ = result.value; if ( !$$.ptr ) { console.warn( "object already deleted: " + $$.ptr ) } else { releaseClassHandle( $$ ) } } } ); attachFinalizer = function ( handle ) { finalizationGroup.register( handle, handle.$$, handle.$$ ); return handle }; detachFinalizer = function ( handle ) { finalizationGroup.unregister( handle.$$ ) }; return attachFinalizer( handle ) } function ClassHandle_clone() { if ( !this.$$.ptr ) { throwInstanceAlreadyDeleted( this ) } if ( this.$$.preservePointerOnDelete ) { this.$$.count.value += 1; return this } else { var clone = attachFinalizer( Object.create( Object.getPrototypeOf( this ), { $$: { value: shallowCopyInternalPointer( this.$$ ) } } ) ); clone.$$.count.value += 1; clone.$$.deleteScheduled = false; return clone } } function ClassHandle_delete() { if ( !this.$$.ptr ) { throwInstanceAlreadyDeleted( this ) } if ( this.$$.deleteScheduled && !this.$$.preservePointerOnDelete ) { throwBindingError( "Object already scheduled for deletion" ) } detachFinalizer( this ); releaseClassHandle( this.$$ ); if ( !this.$$.preservePointerOnDelete ) { this.$$.smartPtr = undefined; this.$$.ptr = undefined } } function ClassHandle_isDeleted() { return !this.$$.ptr } var delayFunction = undefined; var deletionQueue = []; function flushPendingDeletes() { while ( deletionQueue.length ) { var obj = deletionQueue.pop(); obj.$$.deleteScheduled = false; obj[ "delete" ]() } } function ClassHandle_deleteLater() { if ( !this.$$.ptr ) { throwInstanceAlreadyDeleted( this ) } if ( this.$$.deleteScheduled && !this.$$.preservePointerOnDelete ) { throwBindingError( "Object already scheduled for deletion" ) } deletionQueue.push( this ); if ( deletionQueue.length === 1 && delayFunction ) { delayFunction( flushPendingDeletes ) } this.$$.deleteScheduled = true; return this } function init_ClassHandle() { ClassHandle.prototype[ "isAliasOf" ] = ClassHandle_isAliasOf; ClassHandle.prototype[ "clone" ] = ClassHandle_clone; ClassHandle.prototype[ "delete" ] = ClassHandle_delete; ClassHandle.prototype[ "isDeleted" ] = ClassHandle_isDeleted; ClassHandle.prototype[ "deleteLater" ] = ClassHandle_deleteLater } function ClassHandle() { } var registeredPointers = {}; function ensureOverloadTable( proto, methodName, humanName ) { if ( undefined === proto[ methodName ].overloadTable ) { var prevFunc = proto[ methodName ]; proto[ methodName ] = function () { if ( !proto[ methodName ].overloadTable.hasOwnProperty( arguments.length ) ) { throwBindingError( "Function '" + humanName + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + proto[ methodName ].overloadTable + ")!" ) } return proto[ methodName ].overloadTable[ arguments.length ].apply( this, arguments ) }; proto[ methodName ].overloadTable = []; proto[ methodName ].overloadTable[ prevFunc.argCount ] = prevFunc } } function exposePublicSymbol( name, value, numArguments ) { if ( Module.hasOwnProperty( name ) ) { if ( undefined === numArguments || undefined !== Module[ name ].overloadTable && undefined !== Module[ name ].overloadTable[ numArguments ] ) { throwBindingError( "Cannot register public name '" + name + "' twice" ) } ensureOverloadTable( Module, name, name ); if ( Module.hasOwnProperty( numArguments ) ) { throwBindingError( "Cannot register multiple overloads of a function with the same number of arguments (" + numArguments + ")!" ) } Module[ name ].overloadTable[ numArguments ] = value } else { Module[ name ] = value; if ( undefined !== numArguments ) { Module[ name ].numArguments = numArguments } } } function RegisteredClass( name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast ) { this.name = name; this.constructor = constructor; this.instancePrototype = instancePrototype; this.rawDestructor = rawDestructor; this.baseClass = baseClass; this.getActualType = getActualType; this.upcast = upcast; this.downcast = downcast; this.pureVirtualFunctions = [] } function upcastPointer( ptr, ptrClass, desiredClass ) { while ( ptrClass !== desiredClass ) { if ( !ptrClass.upcast ) { throwBindingError( "Expected null or instance of " + desiredClass.name + ", got an instance of " + ptrClass.name ) } ptr = ptrClass.upcast( ptr ); ptrClass = ptrClass.baseClass } return ptr } function constNoSmartPtrRawPointerToWireType( destructors, handle ) { if ( handle === null ) { if ( this.isReference ) { throwBindingError( "null is not a valid " + this.name ) } return 0 } if ( !handle.$$ ) { throwBindingError( 'Cannot pass "' + _embind_repr( handle ) + '" as a ' + this.name ) } if ( !handle.$$.ptr ) { throwBindingError( "Cannot pass deleted object as a pointer of type " + this.name ) } var handleClass = handle.$$.ptrType.registeredClass; var ptr = upcastPointer( handle.$$.ptr, handleClass, this.registeredClass ); return ptr } function genericPointerToWireType( destructors, handle ) { var ptr; if ( handle === null ) { if ( this.isReference ) { throwBindingError( "null is not a valid " + this.name ) } if ( this.isSmartPointer ) { ptr = this.rawConstructor(); if ( destructors !== null ) { destructors.push( this.rawDestructor, ptr ) } return ptr } else { return 0 } } if ( !handle.$$ ) { throwBindingError( 'Cannot pass "' + _embind_repr( handle ) + '" as a ' + this.name ) } if ( !handle.$$.ptr ) { throwBindingError( "Cannot pass deleted object as a pointer of type " + this.name ) } if ( !this.isConst && handle.$$.ptrType.isConst ) { throwBindingError( "Cannot convert argument of type " + ( handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name ) + " to parameter type " + this.name ) } var handleClass = handle.$$.ptrType.registeredClass; ptr = upcastPointer( handle.$$.ptr, handleClass, this.registeredClass ); if ( this.isSmartPointer ) { if ( undefined === handle.$$.smartPtr ) { throwBindingError( "Passing raw pointer to smart pointer is illegal" ) } switch ( this.sharingPolicy ) { case 0: if ( handle.$$.smartPtrType === this ) { ptr = handle.$$.smartPtr } else { throwBindingError( "Cannot convert argument of type " + ( handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name ) + " to parameter type " + this.name ) } break; case 1: ptr = handle.$$.smartPtr; break; case 2: if ( handle.$$.smartPtrType === this ) { ptr = handle.$$.smartPtr } else { var clonedHandle = handle[ "clone" ](); ptr = this.rawShare( ptr, __emval_register( function () { clonedHandle[ "delete" ]() } ) ); if ( destructors !== null ) { destructors.push( this.rawDestructor, ptr ) } } break; default: throwBindingError( "Unsupporting sharing policy" ) } } return ptr } function nonConstNoSmartPtrRawPointerToWireType( destructors, handle ) { if ( handle === null ) { if ( this.isReference ) { throwBindingError( "null is not a valid " + this.name ) } return 0 } if ( !handle.$$ ) { throwBindingError( 'Cannot pass "' + _embind_repr( handle ) + '" as a ' + this.name ) } if ( !handle.$$.ptr ) { throwBindingError( "Cannot pass deleted object as a pointer of type " + this.name ) } if ( handle.$$.ptrType.isConst ) { throwBindingError( "Cannot convert argument of type " + handle.$$.ptrType.name + " to parameter type " + this.name ) } var handleClass = handle.$$.ptrType.registeredClass; var ptr = upcastPointer( handle.$$.ptr, handleClass, this.registeredClass ); return ptr } function RegisteredPointer_getPointee( ptr ) { if ( this.rawGetPointee ) { ptr = this.rawGetPointee( ptr ) } return ptr } function RegisteredPointer_destructor( ptr ) { if ( this.rawDestructor ) { this.rawDestructor( ptr ) } } function RegisteredPointer_deleteObject( handle ) { if ( handle !== null ) { handle[ "delete" ]() } } function downcastPointer( ptr, ptrClass, desiredClass ) { if ( ptrClass === desiredClass ) { return ptr } if ( undefined === desiredClass.baseClass ) { return null } var rv = downcastPointer( ptr, ptrClass, desiredClass.baseClass ); if ( rv === null ) { return null } return desiredClass.downcast( rv ) } function getInheritedInstanceCount() { return Object.keys( registeredInstances ).length } function getLiveInheritedInstances() { var rv = []; for ( var k in registeredInstances ) { if ( registeredInstances.hasOwnProperty( k ) ) { rv.push( registeredInstances[ k ] ) } } return rv } function setDelayFunction( fn ) { delayFunction = fn; if ( deletionQueue.length && delayFunction ) { delayFunction( flushPendingDeletes ) } } function init_embind() { Module[ "getInheritedInstanceCount" ] = getInheritedInstanceCount; Module[ "getLiveInheritedInstances" ] = getLiveInheritedInstances; Module[ "flushPendingDeletes" ] = flushPendingDeletes; Module[ "setDelayFunction" ] = setDelayFunction } var registeredInstances = {}; function getBasestPointer( class_, ptr ) { if ( ptr === undefined ) { throwBindingError( "ptr should not be undefined" ) } while ( class_.baseClass ) { ptr = class_.upcast( ptr ); class_ = class_.baseClass } return ptr } function getInheritedInstance( class_, ptr ) { ptr = getBasestPointer( class_, ptr ); return registeredInstances[ ptr ] } function makeClassHandle( prototype, record ) { if ( !record.ptrType || !record.ptr ) { throwInternalError( "makeClassHandle requires ptr and ptrType" ) } var hasSmartPtrType = !!record.smartPtrType; var hasSmartPtr = !!record.smartPtr; if ( hasSmartPtrType !== hasSmartPtr ) { throwInternalError( "Both smartPtrType and smartPtr must be specified" ) } record.count = { value: 1 }; return attachFinalizer( Object.create( prototype, { $$: { value: record } } ) ) } function RegisteredPointer_fromWireType( ptr ) { var rawPointer = this.getPointee( ptr ); if ( !rawPointer ) { this.destructor( ptr ); return null } var registeredInstance = getInheritedInstance( this.registeredClass, rawPointer ); if ( undefined !== registeredInstance ) { if ( 0 === registeredInstance.$$.count.value ) { registeredInstance.$$.ptr = rawPointer; registeredInstance.$$.smartPtr = ptr; return registeredInstance[ "clone" ]() } else { var rv = registeredInstance[ "clone" ](); this.destructor( ptr ); return rv } } function makeDefaultHandle() { if ( this.isSmartPointer ) { return makeClassHandle( this.registeredClass.instancePrototype, { ptrType: this.pointeeType, ptr: rawPointer, smartPtrType: this, smartPtr: ptr } ) } else { return makeClassHandle( this.registeredClass.instancePrototype, { ptrType: this, ptr: ptr } ) } } var actualType = this.registeredClass.getActualType( rawPointer ); var registeredPointerRecord = registeredPointers[ actualType ]; if ( !registeredPointerRecord ) { return makeDefaultHandle.call( this ) } var toType; if ( this.isConst ) { toType = registeredPointerRecord.constPointerType } else { toType = registeredPointerRecord.pointerType } var dp = downcastPointer( rawPointer, this.registeredClass, toType.registeredClass ); if ( dp === null ) { return makeDefaultHandle.call( this ) } if ( this.isSmartPointer ) { return makeClassHandle( toType.registeredClass.instancePrototype, { ptrType: toType, ptr: dp, smartPtrType: this, smartPtr: ptr } ) } else { return makeClassHandle( toType.registeredClass.instancePrototype, { ptrType: toType, ptr: dp } ) } } function init_RegisteredPointer() { RegisteredPointer.prototype.getPointee = RegisteredPointer_getPointee; RegisteredPointer.prototype.destructor = RegisteredPointer_destructor; RegisteredPointer.prototype[ "argPackAdvance" ] = 8; RegisteredPointer.prototype[ "readValueFromPointer" ] = simpleReadValueFromPointer; RegisteredPointer.prototype[ "deleteObject" ] = RegisteredPointer_deleteObject; RegisteredPointer.prototype[ "fromWireType" ] = RegisteredPointer_fromWireType } function RegisteredPointer( name, registeredClass, isReference, isConst, isSmartPointer, pointeeType, sharingPolicy, rawGetPointee, rawConstructor, rawShare, rawDestructor ) { this.name = name; this.registeredClass = registeredClass; this.isReference = isReference; this.isConst = isConst; this.isSmartPointer = isSmartPointer; this.pointeeType = pointeeType; this.sharingPolicy = sharingPolicy; this.rawGetPointee = rawGetPointee; this.rawConstructor = rawConstructor; this.rawShare = rawShare; this.rawDestructor = rawDestructor; if ( !isSmartPointer && registeredClass.baseClass === undefined ) { if ( isConst ) { this[ "toWireType" ] = constNoSmartPtrRawPointerToWireType; this.destructorFunction = null } else { this[ "toWireType" ] = nonConstNoSmartPtrRawPointerToWireType; this.destructorFunction = null } } else { this[ "toWireType" ] = genericPointerToWireType } } function replacePublicSymbol( name, value, numArguments ) { if ( !Module.hasOwnProperty( name ) ) { throwInternalError( "Replacing nonexistant public symbol" ) } if ( undefined !== Module[ name ].overloadTable && undefined !== numArguments ) { Module[ name ].overloadTable[ numArguments ] = value } else { Module[ name ] = value; Module[ name ].argCount = numArguments } } function dynCallLegacy( sig, ptr, args ) { if ( args && args.length ) { return Module[ "dynCall_" + sig ].apply( null, [ ptr ].concat( args ) ) } return Module[ "dynCall_" + sig ].call( null, ptr ) } function dynCall( sig, ptr, args ) { if ( sig.indexOf( "j" ) != -1 ) { return dynCallLegacy( sig, ptr, args ) } return wasmTable.get( ptr ).apply( null, args ) } function getDynCaller( sig, ptr ) { assert( sig.indexOf( "j" ) >= 0, "getDynCaller should only be called with i64 sigs" ); var argCache = []; return function () { argCache.length = arguments.length; for ( var i = 0; i < arguments.length; i++ ) { argCache[ i ] = arguments[ i ] } return dynCall( sig, ptr, argCache ) } } function embind__requireFunction( signature, rawFunction ) { signature = readLatin1String( signature ); function makeDynCaller() { if ( signature.indexOf( "j" ) != -1 ) { return getDynCaller( signature, rawFunction ) } return wasmTable.get( rawFunction ) } var fp = makeDynCaller(); if ( typeof fp !== "function" ) { throwBindingError( "unknown function pointer with signature " + signature + ": " + rawFunction ) } return fp } var UnboundTypeError = undefined; function getTypeName( type ) { var ptr = ___getTypeName( type ); var rv = readLatin1String( ptr ); _free( ptr ); return rv } function throwUnboundTypeError( message, types ) { var unboundTypes = []; var seen = {}; function visit( type ) { if ( seen[ type ] ) { return } if ( registeredTypes[ type ] ) { return } if ( typeDependencies[ type ] ) { typeDependencies[ type ].forEach( visit ); return } unboundTypes.push( type ); seen[ type ] = true } types.forEach( visit ); throw new UnboundTypeError( message + ": " + unboundTypes.map( getTypeName ).join( [ ", " ] ) ) } function __embind_register_class( rawType, rawPointerType, rawConstPointerType, baseClassRawType, getActualTypeSignature, getActualType, upcastSignature, upcast, downcastSignature, downcast, name, destructorSignature, rawDestructor ) { name = readLatin1String( name ); getActualType = embind__requireFunction( getActualTypeSignature, getActualType ); if ( upcast ) { upcast = embind__requireFunction( upcastSignature, upcast ) } if ( downcast ) { downcast = embind__requireFunction( downcastSignature, downcast ) } rawDestructor = embind__requireFunction( destructorSignature, rawDestructor ); var legalFunctionName = makeLegalFunctionName( name ); exposePublicSymbol( legalFunctionName, function () { throwUnboundTypeError( "Cannot construct " + name + " due to unbound types", [ baseClassRawType ] ) } ); whenDependentTypesAreResolved( [ rawType, rawPointerType, rawConstPointerType ], baseClassRawType ? [ baseClassRawType ] : [], function ( base ) { base = base[ 0 ]; var baseClass; var basePrototype; if ( baseClassRawType ) { baseClass = base.registeredClass; basePrototype = baseClass.instancePrototype } else { basePrototype = ClassHandle.prototype } var constructor = createNamedFunction( legalFunctionName, function () { if ( Object.getPrototypeOf( this ) !== instancePrototype ) { throw new BindingError( "Use 'new' to construct " + name ) } if ( undefined === registeredClass.constructor_body ) { throw new BindingError( name + " has no accessible constructor" ) } var body = registeredClass.constructor_body[ arguments.length ]; if ( undefined === body ) { throw new BindingError( "Tried to invoke ctor of " + name + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys( registeredClass.constructor_body ).toString() + ") parameters instead!" ) } return body.apply( this, arguments ) } ); var instancePrototype = Object.create( basePrototype, { constructor: { value: constructor } } ); constructor.prototype = instancePrototype; var registeredClass = new RegisteredClass( name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast ); var referenceConverter = new RegisteredPointer( name, registeredClass, true, false, false ); var pointerConverter = new RegisteredPointer( name + "*", registeredClass, false, false, false ); var constPointerConverter = new RegisteredPointer( name + " const*", registeredClass, false, true, false ); registeredPointers[ rawType ] = { pointerType: pointerConverter, constPointerType: constPointerConverter }; replacePublicSymbol( legalFunctionName, constructor ); return [ referenceConverter, pointerConverter, constPointerConverter ] } ) } function heap32VectorToArray( count, firstElement ) { var array = []; for ( var i = 0; i < count; i++ ) { array.push( HEAP32[ ( firstElement >> 2 ) + i ] ) } return array } function __embind_register_class_constructor( rawClassType, argCount, rawArgTypesAddr, invokerSignature, invoker, rawConstructor ) { assert( argCount > 0 ); var rawArgTypes = heap32VectorToArray( argCount, rawArgTypesAddr ); invoker = embind__requireFunction( invokerSignature, invoker ); var args = [ rawConstructor ]; var destructors = []; whenDependentTypesAreResolved( [], [ rawClassType ], function ( classType ) { classType = classType[ 0 ]; var humanName = "constructor " + classType.name; if ( undefined === classType.registeredClass.constructor_body ) { classType.registeredClass.constructor_body = [] } if ( undefined !== classType.registeredClass.constructor_body[ argCount - 1 ] ) { throw new BindingError( "Cannot register multiple constructors with identical number of parameters (" + ( argCount - 1 ) + ") for class '" + classType.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!" ) } classType.registeredClass.constructor_body[ argCount - 1 ] = function unboundTypeHandler() { throwUnboundTypeError( "Cannot construct " + classType.name + " due to unbound types", rawArgTypes ) }; whenDependentTypesAreResolved( [], rawArgTypes, function ( argTypes ) { classType.registeredClass.constructor_body[ argCount - 1 ] = function constructor_body() { if ( arguments.length !== argCount - 1 ) { throwBindingError( humanName + " called with " + arguments.length + " arguments, expected " + ( argCount - 1 ) ) } destructors.length = 0; args.length = argCount; for ( var i = 1; i < argCount; ++i ) { args[ i ] = argTypes[ i ][ "toWireType" ]( destructors, arguments[ i - 1 ] ) } var ptr = invoker.apply( null, args ); runDestructors( destructors ); return argTypes[ 0 ][ "fromWireType" ]( ptr ) }; return [] } ); return [] } ) } function new_( constructor, argumentList ) { if ( !( constructor instanceof Function ) ) { throw new TypeError( "new_ called with constructor type " + typeof constructor + " which is not a function" ) } var dummy = createNamedFunction( constructor.name || "unknownFunctionName", function () { } ); dummy.prototype = constructor.prototype; var obj = new dummy; var r = constructor.apply( obj, argumentList ); return r instanceof Object ? r : obj } function craftInvokerFunction( humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc ) { var argCount = argTypes.length; if ( argCount < 2 ) { throwBindingError( "argTypes array size mismatch! Must at least get return value and 'this' types!" ) } var isClassMethodFunc = argTypes[ 1 ] !== null && classType !== null; var needsDestructorStack = false; for ( var i = 1; i < argTypes.length; ++i ) { if ( argTypes[ i ] !== null && argTypes[ i ].destructorFunction === undefined ) { needsDestructorStack = true; break } } var returns = argTypes[ 0 ].name !== "void"; var argsList = ""; var argsListWired = ""; for ( var i = 0; i < argCount - 2; ++i ) { argsList += ( i !== 0 ? ", " : "" ) + "arg" + i; argsListWired += ( i !== 0 ? ", " : "" ) + "arg" + i + "Wired" } var invokerFnBody = "return function " + makeLegalFunctionName( humanName ) + "(" + argsList + ") {\n" + "if (arguments.length !== " + ( argCount - 2 ) + ") {\n" + "throwBindingError('function " + humanName + " called with ' + arguments.length + ' arguments, expected " + ( argCount - 2 ) + " args!');\n" + "}\n"; if ( needsDestructorStack ) { invokerFnBody += "var destructors = [];\n" } var dtorStack = needsDestructorStack ? "destructors" : "null"; var args1 = [ "throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam" ]; var args2 = [ throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[ 0 ], argTypes[ 1 ] ]; if ( isClassMethodFunc ) { invokerFnBody += "var thisWired = classParam.toWireType(" + dtorStack + ", this);\n" } for ( var i = 0; i < argCount - 2; ++i ) { invokerFnBody += "var arg" + i + "Wired = argType" + i + ".toWireType(" + dtorStack + ", arg" + i + "); // " + argTypes[ i + 2 ].name + "\n"; args1.push( "argType" + i ); args2.push( argTypes[ i + 2 ] ) } if ( isClassMethodFunc ) { argsListWired = "thisWired" + ( argsListWired.length > 0 ? ", " : "" ) + argsListWired } invokerFnBody += ( returns ? "var rv = " : "" ) + "invoker(fn" + ( argsListWired.length > 0 ? ", " : "" ) + argsListWired + ");\n"; if ( needsDestructorStack ) { invokerFnBody += "runDestructors(destructors);\n" } else { for ( var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; ++i ) { var paramName = i === 1 ? "thisWired" : "arg" + ( i - 2 ) + "Wired"; if ( argTypes[ i ].destructorFunction !== null ) { invokerFnBody += paramName + "_dtor(" + paramName + "); // " + argTypes[ i ].name + "\n"; args1.push( paramName + "_dtor" ); args2.push( argTypes[ i ].destructorFunction ) } } } if ( returns ) { invokerFnBody += "var ret = retType.fromWireType(rv);\n" + "return ret;\n" } else { } invokerFnBody += "}\n"; args1.push( invokerFnBody ); var invokerFunction = new_( Function, args1 ).apply( null, args2 ); return invokerFunction } function __embind_register_class_function( rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, context, isPureVirtual ) { var rawArgTypes = heap32VectorToArray( argCount, rawArgTypesAddr ); methodName = readLatin1String( methodName ); rawInvoker = embind__requireFunction( invokerSignature, rawInvoker ); whenDependentTypesAreResolved( [], [ rawClassType ], function ( classType ) { classType = classType[ 0 ]; var humanName = classType.name + "." + methodName; if ( isPureVirtual ) { classType.registeredClass.pureVirtualFunctions.push( methodName ) } function unboundTypesHandler() { throwUnboundTypeError( "Cannot call " + humanName + " due to unbound types", rawArgTypes ) } var proto = classType.registeredClass.instancePrototype; var method = proto[ methodName ]; if ( undefined === method || undefined === method.overloadTable && method.className !== classType.name && method.argCount === argCount - 2 ) { unboundTypesHandler.argCount = argCount - 2; unboundTypesHandler.className = classType.name; proto[ methodName ] = unboundTypesHandler } else { ensureOverloadTable( proto, methodName, humanName ); proto[ methodName ].overloadTable[ argCount - 2 ] = unboundTypesHandler } whenDependentTypesAreResolved( [], rawArgTypes, function ( argTypes ) { var memberFunction = craftInvokerFunction( humanName, argTypes, classType, rawInvoker, context ); if ( undefined === proto[ methodName ].overloadTable ) { memberFunction.argCount = argCount - 2; proto[ methodName ] = memberFunction } else { proto[ methodName ].overloadTable[ argCount - 2 ] = memberFunction } return [] } ); return [] } ) } var emval_free_list = []; var emval_handle_array = [ {}, { value: undefined }, { value: null }, { value: true }, { value: false } ]; function __emval_decref( handle ) { if ( handle > 4 && 0 === --emval_handle_array[ handle ].refcount ) { emval_handle_array[ handle ] = undefined; emval_free_list.push( handle ) } } function count_emval_handles() { var count = 0; for ( var i = 5; i < emval_handle_array.length; ++i ) { if ( emval_handle_array[ i ] !== undefined ) { ++count } } return count } function get_first_emval() { for ( var i = 5; i < emval_handle_array.length; ++i ) { if ( emval_handle_array[ i ] !== undefined ) { return emval_handle_array[ i ] } } return null } function init_emval() { Module[ "count_emval_handles" ] = count_emval_handles; Module[ "get_first_emval" ] = get_first_emval } function __emval_register( value ) { switch ( value ) { case undefined: { return 1 } case null: { return 2 } case true: { return 3 } case false: { return 4 } default: { var handle = emval_free_list.length ? emval_free_list.pop() : emval_handle_array.length; emval_handle_array[ handle ] = { refcount: 1, value: value }; return handle } } } function __embind_register_emval( rawType, name ) { name = readLatin1String( name ); registerType( rawType, { name: name, "fromWireType": function ( handle ) { var rv = emval_handle_array[ handle ].value; __emval_decref( handle ); return rv }, "toWireType": function ( destructors, value ) { return __emval_register( value ) }, "argPackAdvance": 8, "readValueFromPointer": simpleReadValueFromPointer, destructorFunction: null } ) } function enumReadValueFromPointer( name, shift, signed ) { switch ( shift ) { case 0: return function ( pointer ) { var heap = signed ? HEAP8 : HEAPU8; return this[ "fromWireType" ]( heap[ pointer ] ) }; case 1: return function ( pointer ) { var heap = signed ? HEAP16 : HEAPU16; return this[ "fromWireType" ]( heap[ pointer >> 1 ] ) }; case 2: return function ( pointer ) { var heap = signed ? HEAP32 : HEAPU32; return this[ "fromWireType" ]( heap[ pointer >> 2 ] ) }; default: throw new TypeError( "Unknown integer type: " + name ) } } function __embind_register_enum( rawType, name, size, isSigned ) { var shift = getShiftFromSize( size ); name = readLatin1String( name ); function ctor() { } ctor.values = {}; registerType( rawType, { name: name, constructor: ctor, "fromWireType": function ( c ) { return this.constructor.values[ c ] }, "toWireType": function ( destructors, c ) { return c.value }, "argPackAdvance": 8, "readValueFromPointer": enumReadValueFromPointer( name, shift, isSigned ), destructorFunction: null } ); exposePublicSymbol( name, ctor ) } function requireRegisteredType( rawType, humanName ) { var impl = registeredTypes[ rawType ]; if ( undefined === impl ) { throwBindingError( humanName + " has unknown type " + getTypeName( rawType ) ) } return impl } function __embind_register_enum_value( rawEnumType, name, enumValue ) { var enumType = requireRegisteredType( rawEnumType, "enum" ); name = readLatin1String( name ); var Enum = enumType.constructor; var Value = Object.create( enumType.constructor.prototype, { value: { value: enumValue }, constructor: { value: createNamedFunction( enumType.name + "_" + name, function () { } ) } } ); Enum.values[ enumValue ] = Value; Enum[ name ] = Value } function _embind_repr( v ) { if ( v === null ) { return "null" } var t = typeof v; if ( t === "object" || t === "array" || t === "function" ) { return v.toString() } else { return "" + v } } function floatReadValueFromPointer( name, shift ) { switch ( shift ) { case 2: return function ( pointer ) { return this[ "fromWireType" ]( HEAPF32[ pointer >> 2 ] ) }; case 3: return function ( pointer ) { return this[ "fromWireType" ]( HEAPF64[ pointer >> 3 ] ) }; default: throw new TypeError( "Unknown float type: " + name ) } } function __embind_register_float( rawType, name, size ) { var shift = getShiftFromSize( size ); name = readLatin1String( name ); registerType( rawType, { name: name, "fromWireType": function ( value ) { return value }, "toWireType": function ( destructors, value ) { if ( typeof value !== "number" && typeof value !== "boolean" ) { throw new TypeError( 'Cannot convert "' + _embind_repr( value ) + '" to ' + this.name ) } return value }, "argPackAdvance": 8, "readValueFromPointer": floatReadValueFromPointer( name, shift ), destructorFunction: null } ) } function __embind_register_function( name, argCount, rawArgTypesAddr, signature, rawInvoker, fn ) { var argTypes = heap32VectorToArray( argCount, rawArgTypesAddr ); name = readLatin1String( name ); rawInvoker = embind__requireFunction( signature, rawInvoker ); exposePublicSymbol( name, function () { throwUnboundTypeError( "Cannot call " + name + " due to unbound types", argTypes ) }, argCount - 1 ); whenDependentTypesAreResolved( [], argTypes, function ( argTypes ) { var invokerArgsArray = [ argTypes[ 0 ], null ].concat( argTypes.slice( 1 ) ); replacePublicSymbol( name, craftInvokerFunction( name, invokerArgsArray, null, rawInvoker, fn ), argCount - 1 ); return [] } ) } function integerReadValueFromPointer( name, shift, signed ) { switch ( shift ) { case 0: return signed ? function readS8FromPointer( pointer ) { return HEAP8[ pointer ] } : function readU8FromPointer( pointer ) { return HEAPU8[ pointer ] }; case 1: return signed ? function readS16FromPointer( pointer ) { return HEAP16[ pointer >> 1 ] } : function readU16FromPointer( pointer ) { return HEAPU16[ pointer >> 1 ] }; case 2: return signed ? function readS32FromPointer( pointer ) { return HEAP32[ pointer >> 2 ] } : function readU32FromPointer( pointer ) { return HEAPU32[ pointer >> 2 ] }; default: throw new TypeError( "Unknown integer type: " + name ) } } function __embind_register_integer( primitiveType, name, size, minRange, maxRange ) { name = readLatin1String( name ); if ( maxRange === -1 ) { maxRange = 4294967295 } var shift = getShiftFromSize( size ); var fromWireType = function ( value ) { return value }; if ( minRange === 0 ) { var bitshift = 32 - 8 * size; fromWireType = function ( value ) { return value << bitshift >>> bitshift } } var isUnsignedType = name.indexOf( "unsigned" ) != -1; registerType( primitiveType, { name: name, "fromWireType": fromWireType, "toWireType": function ( destructors, value ) { if ( typeof value !== "number" && typeof value !== "boolean" ) { throw new TypeError( 'Cannot convert "' + _embind_repr( value ) + '" to ' + this.name ) } if ( value < minRange || value > maxRange ) { throw new TypeError( 'Passing a number "' + _embind_repr( value ) + '" from JS side to C/C++ side to an argument of type "' + name + '", which is outside the valid range [' + minRange + ", " + maxRange + "]!" ) } return isUnsignedType ? value >>> 0 : value | 0 }, "argPackAdvance": 8, "readValueFromPointer": integerReadValueFromPointer( name, shift, minRange !== 0 ), destructorFunction: null } ) } function __embind_register_memory_view( rawType, dataTypeIndex, name ) { var typeMapping = [ Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array ]; var TA = typeMapping[ dataTypeIndex ]; function decodeMemoryView( handle ) { handle = handle >> 2; var heap = HEAPU32; var size = heap[ handle ]; var data = heap[ handle + 1 ]; return new TA( buffer, data, size ) } name = readLatin1String( name ); registerType( rawType, { name: name, "fromWireType": decodeMemoryView, "argPackAdvance": 8, "readValueFromPointer": decodeMemoryView }, { ignoreDuplicateRegistrations: true } ) } function __embind_register_std_string( rawType, name ) { name = readLatin1String( name ); var stdStringIsUTF8 = name === "std::string"; registerType( rawType, { name: name, "fromWireType": function ( value ) { var length = HEAPU32[ value >> 2 ]; var str; if ( stdStringIsUTF8 ) { var decodeStartPtr = value + 4; for ( var i = 0; i <= length; ++i ) { var currentBytePtr = value + 4 + i; if ( i == length || HEAPU8[ currentBytePtr ] == 0 ) { var maxRead = currentBytePtr - decodeStartPtr; var stringSegment = UTF8ToString( decodeStartPtr, maxRead ); if ( str === undefined ) { str = stringSegment } else { str += String.fromCharCode( 0 ); str += stringSegment } decodeStartPtr = currentBytePtr + 1 } } } else { var a = new Array( length ); for ( var i = 0; i < length; ++i ) { a[ i ] = String.fromCharCode( HEAPU8[ value + 4 + i ] ) } str = a.join( "" ) } _free( value ); return str }, "toWireType": function ( destructors, value ) { if ( value instanceof ArrayBuffer ) { value = new Uint8Array( value ) } var getLength; var valueIsOfTypeString = typeof value === "string"; if ( !( valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array ) ) { throwBindingError( "Cannot pass non-string to std::string" ) } if ( stdStringIsUTF8 && valueIsOfTypeString ) { getLength = function () { return lengthBytesUTF8( value ) } } else { getLength = function () { return value.length } } var length = getLength(); var ptr = _malloc( 4 + length + 1 ); HEAPU32[ ptr >> 2 ] = length; if ( stdStringIsUTF8 && valueIsOfTypeString ) { stringToUTF8( value, ptr + 4, length + 1 ) } else { if ( valueIsOfTypeString ) { for ( var i = 0; i < length; ++i ) { var charCode = value.charCodeAt( i ); if ( charCode > 255 ) { _free( ptr ); throwBindingError( "String has UTF-16 code units that do not fit in 8 bits" ) } HEAPU8[ ptr + 4 + i ] = charCode } } else { for ( var i = 0; i < length; ++i ) { HEAPU8[ ptr + 4 + i ] = value[ i ] } } } if ( destructors !== null ) { destructors.push( _free, ptr ) } return ptr }, "argPackAdvance": 8, "readValueFromPointer": simpleReadValueFromPointer, destructorFunction: function ( ptr ) { _free( ptr ) } } ) } function __embind_register_std_wstring( rawType, charSize, name ) { name = readLatin1String( name ); var decodeString, encodeString, getHeap, lengthBytesUTF, shift; if ( charSize === 2 ) { decodeString = UTF16ToString; encodeString = stringToUTF16; lengthBytesUTF = lengthBytesUTF16; getHeap = function () { return HEAPU16 }; shift = 1 } else if ( charSize === 4 ) { decodeString = UTF32ToString; encodeString = stringToUTF32; lengthBytesUTF = lengthBytesUTF32; getHeap = function () { return HEAPU32 }; shift = 2 } registerType( rawType, { name: name, "fromWireType": function ( value ) { var length = HEAPU32[ value >> 2 ]; var HEAP = getHeap(); var str; var decodeStartPtr = value + 4; for ( var i = 0; i <= length; ++i ) { var currentBytePtr = value + 4 + i * charSize; if ( i == length || HEAP[ currentBytePtr >> shift ] == 0 ) { var maxReadBytes = currentBytePtr - decodeStartPtr; var stringSegment = decodeString( decodeStartPtr, maxReadBytes ); if ( str === undefined ) { str = stringSegment } else { str += String.fromCharCode( 0 ); str += stringSegment } decodeStartPtr = currentBytePtr + charSize } } _free( value ); return str }, "toWireType": function ( destructors, value ) { if ( !( typeof value === "string" ) ) { throwBindingError( "Cannot pass non-string to C++ string type " + name ) } var length = lengthBytesUTF( value ); var ptr = _malloc( 4 + length + charSize ); HEAPU32[ ptr >> 2 ] = length >> shift; encodeString( value, ptr + 4, length + charSize ); if ( destructors !== null ) { destructors.push( _free, ptr ) } return ptr }, "argPackAdvance": 8, "readValueFromPointer": simpleReadValueFromPointer, destructorFunction: function ( ptr ) { _free( ptr ) } } ) } function __embind_register_value_object( rawType, name, constructorSignature, rawConstructor, destructorSignature, rawDestructor ) { structRegistrations[ rawType ] = { name: readLatin1String( name ), rawConstructor: embind__requireFunction( constructorSignature, rawConstructor ), rawDestructor: embind__requireFunction( destructorSignature, rawDestructor ), fields: [] } } function __embind_register_value_object_field( structType, fieldName, getterReturnType, getterSignature, getter, getterContext, setterArgumentType, setterSignature, setter, setterContext ) { structRegistrations[ structType ].fields.push( { fieldName: readLatin1String( fieldName ), getterReturnType: getterReturnType, getter: embind__requireFunction( getterSignature, getter ), getterContext: getterContext, setterArgumentType: setterArgumentType, setter: embind__requireFunction( setterSignature, setter ), setterContext: setterContext } ) } function __embind_register_void( rawType, name ) { name = readLatin1String( name ); registerType( rawType, { isVoid: true, name: name, "argPackAdvance": 0, "fromWireType": function () { return undefined }, "toWireType": function ( destructors, o ) { return undefined } } ) } function requireHandle( handle ) { if ( !handle ) { throwBindingError( "Cannot use deleted val. handle = " + handle ) } return emval_handle_array[ handle ].value } function __emval_as( handle, returnType, destructorsRef ) { handle = requireHandle( handle ); returnType = requireRegisteredType( returnType, "emval::as" ); var destructors = []; var rd = __emval_register( destructors ); HEAP32[ destructorsRef >> 2 ] = rd; return returnType[ "toWireType" ]( destructors, handle ) } var emval_symbols = {}; function getStringOrSymbol( address ) { var symbol = emval_symbols[ address ]; if ( symbol === undefined ) { return readLatin1String( address ) } else { return symbol } } var emval_methodCallers = []; function __emval_call_void_method( caller, handle, methodName, args ) { caller = emval_methodCallers[ caller ]; handle = requireHandle( handle ); methodName = getStringOrSymbol( methodName ); caller( handle, methodName, null, args ) } function emval_get_global() { if ( typeof globalThis === "object" ) { return globalThis } return function () { return Function }()( "return this" )() } function __emval_get_global( name ) { if ( name === 0 ) { return __emval_register( emval_get_global() ) } else { name = getStringOrSymbol( name ); return __emval_register( emval_get_global()[ name ] ) } } function __emval_addMethodCaller( caller ) { var id = emval_methodCallers.length; emval_methodCallers.push( caller ); return id } function __emval_lookupTypes( argCount, argTypes ) { var a = new Array( argCount ); for ( var i = 0; i < argCount; ++i ) { a[ i ] = requireRegisteredType( HEAP32[ ( argTypes >> 2 ) + i ], "parameter " + i ) } return a } function __emval_get_method_caller( argCount, argTypes ) { var types = __emval_lookupTypes( argCount, argTypes ); var retType = types[ 0 ]; var signatureName = retType.name + "_$" + types.slice( 1 ).map( function ( t ) { return t.name } ).join( "_" ) + "$"; var params = [ "retType" ]; var args = [ retType ]; var argsList = ""; for ( var i = 0; i < argCount - 1; ++i ) { argsList += ( i !== 0 ? ", " : "" ) + "arg" + i; params.push( "argType" + i ); args.push( types[ 1 + i ] ) } var functionName = makeLegalFunctionName( "methodCaller_" + signatureName ); var functionBody = "return function " + functionName + "(handle, name, destructors, args) {\n"; var offset = 0; for ( var i = 0; i < argCount - 1; ++i ) { functionBody += " var arg" + i + " = argType" + i + ".readValueFromPointer(args" + ( offset ? "+" + offset : "" ) + ");\n"; offset += types[ i + 1 ][ "argPackAdvance" ] } functionBody += " var rv = handle[name](" + argsList + ");\n"; for ( var i = 0; i < argCount - 1; ++i ) { if ( types[ i + 1 ][ "deleteObject" ] ) { functionBody += " argType" + i + ".deleteObject(arg" + i + ");\n" } } if ( !retType.isVoid ) { functionBody += " return retType.toWireType(destructors, rv);\n" } functionBody += "};\n"; params.push( functionBody ); var invokerFunction = new_( Function, params ).apply( null, args ); return __emval_addMethodCaller( invokerFunction ) } function __emval_get_module_property( name ) { name = getStringOrSymbol( name ); return __emval_register( Module[ name ] ) } function __emval_get_property( handle, key ) { handle = requireHandle( handle ); key = requireHandle( key ); return __emval_register( handle[ key ] ) } function __emval_incref( handle ) { if ( handle > 4 ) { emval_handle_array[ handle ].refcount += 1 } } function craftEmvalAllocator( argCount ) { var argsList = ""; for ( var i = 0; i < argCount; ++i ) { argsList += ( i !== 0 ? ", " : "" ) + "arg" + i } var functionBody = "return function emval_allocator_" + argCount + "(constructor, argTypes, args) {\n"; for ( var i = 0; i < argCount; ++i ) { functionBody += "var argType" + i + " = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + " + i + '], "parameter ' + i + '");\n' + "var arg" + i + " = argType" + i + ".readValueFromPointer(args);\n" + "args += argType" + i + "['argPackAdvance'];\n" } functionBody += "var obj = new constructor(" + argsList + ");\n" + "return __emval_register(obj);\n" + "}\n"; return new Function( "requireRegisteredType", "Module", "__emval_register", functionBody )( requireRegisteredType, Module, __emval_register ) } var emval_newers = {}; function __emval_new( handle, argCount, argTypes, args ) { handle = requireHandle( handle ); var newer = emval_newers[ argCount ]; if ( !newer ) { newer = craftEmvalAllocator( argCount ); emval_newers[ argCount ] = newer } return newer( handle, argTypes, args ) } function __emval_new_cstring( v ) { return __emval_register( getStringOrSymbol( v ) ) } function __emval_run_destructors( handle ) { var destructors = emval_handle_array[ handle ].value; runDestructors( destructors ); __emval_decref( handle ) } function _abort() { abort() } function _emscripten_memcpy_big( dest, src, num ) { HEAPU8.copyWithin( dest, src, src + num ) } function _emscripten_get_heap_size() { return HEAPU8.length } function emscripten_realloc_buffer( size ) { try { wasmMemory.grow( size - buffer.byteLength + 65535 >>> 16 ); updateGlobalBufferAndViews( wasmMemory.buffer ); return 1 } catch ( e ) { } } function _emscripten_resize_heap( requestedSize ) { requestedSize = requestedSize >>> 0; var oldSize = _emscripten_get_heap_size(); var maxHeapSize = 2147483648; if ( requestedSize > maxHeapSize ) { return false } var minHeapSize = 16777216; for ( var cutDown = 1; cutDown <= 4; cutDown *= 2 ) { var overGrownHeapSize = oldSize * ( 1 + .2 / cutDown ); overGrownHeapSize = Math.min( overGrownHeapSize, requestedSize + 100663296 ); var newSize = Math.min( maxHeapSize, alignUp( Math.max( minHeapSize, requestedSize, overGrownHeapSize ), 65536 ) ); var replacement = emscripten_realloc_buffer( newSize ); if ( replacement ) { return true } } return false } InternalError = Module[ "InternalError" ] = extendError( Error, "InternalError" ); embind_init_charCodes(); BindingError = Module[ "BindingError" ] = extendError( Error, "BindingError" ); init_ClassHandle(); init_RegisteredPointer(); init_embind(); UnboundTypeError = Module[ "UnboundTypeError" ] = extendError( Error, "UnboundTypeError" ); init_emval(); __ATINIT__.push( { func: function () { ___wasm_call_ctors() } } ); var asmLibraryArg = { "G": ___cxa_allocate_exception, "F": ___cxa_throw, "s": __embind_finalize_value_object, "D": __embind_register_bool, "x": __embind_register_class, "w": __embind_register_class_constructor, "d": __embind_register_class_function, "C": __embind_register_emval, "o": __embind_register_enum, "b": __embind_register_enum_value, "u": __embind_register_float, "j": __embind_register_function, "h": __embind_register_integer, "g": __embind_register_memory_view, "v": __embind_register_std_string, "r": __embind_register_std_wstring, "t": __embind_register_value_object, "c": __embind_register_value_object_field, "E": __embind_register_void, "l": __emval_as, "p": __emval_call_void_method, "a": __emval_decref, "y": __emval_get_global, "q": __emval_get_method_caller, "n": __emval_get_module_property, "e": __emval_get_property, "i": __emval_incref, "m": __emval_new, "f": __emval_new_cstring, "k": __emval_run_destructors, "B": _abort, "z": _emscripten_memcpy_big, "A": _emscripten_resize_heap }; var asm = createWasm(); var ___wasm_call_ctors = Module[ "___wasm_call_ctors" ] = function () { return ( ___wasm_call_ctors = Module[ "___wasm_call_ctors" ] = Module[ "asm" ][ "J" ] ).apply( null, arguments ) }; var _malloc = Module[ "_malloc" ] = function () { return ( _malloc = Module[ "_malloc" ] = Module[ "asm" ][ "K" ] ).apply( null, arguments ) }; var _free = Module[ "_free" ] = function () { return ( _free = Module[ "_free" ] = Module[ "asm" ][ "L" ] ).apply( null, arguments ) }; var ___getTypeName = Module[ "___getTypeName" ] = function () { return ( ___getTypeName = Module[ "___getTypeName" ] = Module[ "asm" ][ "M" ] ).apply( null, arguments ) }; var ___embind_register_native_and_builtin_types = Module[ "___embind_register_native_and_builtin_types" ] = function () { return ( ___embind_register_native_and_builtin_types = Module[ "___embind_register_native_and_builtin_types" ] = Module[ "asm" ][ "N" ] ).apply( null, arguments ) }; var calledRun; function ExitStatus( status ) { this.name = "ExitStatus"; this.message = "Program terminated with exit(" + status + ")"; this.status = status } dependenciesFulfilled = function runCaller() { if ( !calledRun ) run(); if ( !calledRun ) dependenciesFulfilled = runCaller }; function run( args ) { args = args || arguments_; if ( runDependencies > 0 ) { return } preRun(); if ( runDependencies > 0 ) return; function doRun() { if ( calledRun ) return; calledRun = true; Module[ "calledRun" ] = true; if ( ABORT ) return; initRuntime(); preMain(); readyPromiseResolve( Module ); if ( Module[ "onRuntimeInitialized" ] ) Module[ "onRuntimeInitialized" ](); postRun() } if ( Module[ "setStatus" ] ) { Module[ "setStatus" ]( "Running..." ); setTimeout( function () { setTimeout( function () { Module[ "setStatus" ]( "" ) }, 1 ); doRun() }, 1 ) } else { doRun() } } Module[ "run" ] = run; if ( Module[ "preInit" ] ) { if ( typeof Module[ "preInit" ] == "function" ) Module[ "preInit" ] = [ Module[ "preInit" ] ]; while ( Module[ "preInit" ].length > 0 ) { Module[ "preInit" ].pop()() } } noExitRuntime = true; run(); return BASIS.ready } ); } )(); if ( typeof exports === 'object' && typeof module === 'object' ) module.exports = BASIS; else if ( typeof define === 'function' && define[ 'amd' ] ) define( [], function () { return BASIS; } ); else if ( typeof exports === 'object' ) exports[ "BASIS" ] = BASIS;