missile-format.js 347 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300
  1. var ENVIRONMENT_IS_PTHREAD = true;
  2. var Module = typeof Module !== "undefined" ? Module: {};
  3. var moduleOverrides = {};
  4. var key;
  5. for (key in Module) {
  6. if (Module.hasOwnProperty(key)) {
  7. moduleOverrides[key] = Module[key]
  8. }
  9. }
  10. var arguments_ = [];
  11. var thisProgram = "./this.program";
  12. var quit_ = function(status, toThrow) {
  13. throw toThrow
  14. };
  15. var ENVIRONMENT_IS_WEB = false;
  16. var ENVIRONMENT_IS_WORKER = false;
  17. var ENVIRONMENT_IS_NODE = false;
  18. var ENVIRONMENT_HAS_NODE = false;
  19. var ENVIRONMENT_IS_SHELL = false;
  20. ENVIRONMENT_IS_WEB = typeof window === "object";
  21. ENVIRONMENT_IS_WORKER = typeof importScripts === "function";
  22. ENVIRONMENT_HAS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string";
  23. ENVIRONMENT_IS_NODE = ENVIRONMENT_HAS_NODE && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;
  24. ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
  25. if (Module["ENVIRONMENT"]) {
  26. throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)")
  27. }
  28. var ENVIRONMENT_IS_PTHREAD = Module.ENVIRONMENT_IS_PTHREAD || false;
  29. if (!ENVIRONMENT_IS_PTHREAD) {
  30. var PthreadWorkerInit = {}
  31. }
  32. var _scriptDir = typeof document !== "undefined" && document.currentScript ? document.currentScript.src: undefined;
  33. var scriptDirectory = "";
  34. function locateFile(path) {
  35. if (Module["locateFile"]) {
  36. return Module["locateFile"](path, scriptDirectory)
  37. }
  38. return scriptDirectory + path
  39. }
  40. var read_, readAsync, readBinary, setWindowTitle;
  41. if (ENVIRONMENT_IS_NODE) {
  42. scriptDirectory = __dirname + "/";
  43. var nodeFS;
  44. var nodePath;
  45. read_ = function shell_read(filename, binary) {
  46. var ret;
  47. if (!nodeFS) nodeFS = require("fs");
  48. if (!nodePath) nodePath = require("path");
  49. filename = nodePath["normalize"](filename);
  50. ret = nodeFS["readFileSync"](filename);
  51. return binary ? ret: ret.toString()
  52. };
  53. readBinary = function readBinary(filename) {
  54. var ret = read_(filename, true);
  55. if (!ret.buffer) {
  56. ret = new Uint8Array(ret)
  57. }
  58. assert(ret.buffer);
  59. return ret
  60. };
  61. if (process["argv"].length > 1) {
  62. thisProgram = process["argv"][1].replace(/\\/g, "/")
  63. }
  64. arguments_ = process["argv"].slice(2);
  65. if (typeof module !== "undefined") {
  66. module["exports"] = Module
  67. }
  68. process["on"]("uncaughtException",
  69. function(ex) {
  70. if (! (ex instanceof ExitStatus)) {
  71. throw ex
  72. }
  73. });
  74. process["on"]("unhandledRejection", abort);
  75. quit_ = function(status) {
  76. process["exit"](status)
  77. };
  78. Module["inspect"] = function() {
  79. return "[Emscripten Module object]"
  80. }
  81. } else if (ENVIRONMENT_IS_SHELL) {
  82. if (typeof read != "undefined") {
  83. read_ = function shell_read(f) {
  84. return read(f)
  85. }
  86. }
  87. readBinary = function readBinary(f) {
  88. var data;
  89. if (typeof readbuffer === "function") {
  90. return new Uint8Array(readbuffer(f))
  91. }
  92. data = read(f, "binary");
  93. assert(typeof data === "object");
  94. return data
  95. };
  96. if (typeof scriptArgs != "undefined") {
  97. arguments_ = scriptArgs
  98. } else if (typeof arguments != "undefined") {
  99. arguments_ = arguments
  100. }
  101. if (typeof quit === "function") {
  102. quit_ = function(status) {
  103. quit(status)
  104. }
  105. }
  106. if (typeof print !== "undefined") {
  107. if (typeof console === "undefined") console = {};
  108. console.log = print;
  109. console.warn = console.error = typeof printErr !== "undefined" ? printErr: print
  110. }
  111. } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
  112. if (ENVIRONMENT_IS_WORKER) {
  113. scriptDirectory = self.location.href
  114. } else if (document.currentScript) {
  115. scriptDirectory = document.currentScript.src
  116. }
  117. if (scriptDirectory.indexOf("blob:") !== 0) {
  118. scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1)
  119. } else {
  120. scriptDirectory = ""
  121. }
  122. read_ = function shell_read(url) {
  123. var xhr = new XMLHttpRequest;
  124. xhr.open("GET", url, false);
  125. xhr.send(null);
  126. return xhr.responseText
  127. };
  128. if (ENVIRONMENT_IS_WORKER) {
  129. readBinary = function readBinary(url) {
  130. var xhr = new XMLHttpRequest;
  131. xhr.open("GET", url, false);
  132. xhr.responseType = "arraybuffer";
  133. xhr.send(null);
  134. return new Uint8Array(xhr.response)
  135. }
  136. }
  137. readAsync = function readAsync(url, onload, onerror) {
  138. var xhr = new XMLHttpRequest;
  139. xhr.open("GET", url, true);
  140. xhr.responseType = "arraybuffer";
  141. xhr.onload = function xhr_onload() {
  142. if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
  143. onload(xhr.response);
  144. return
  145. }
  146. onerror()
  147. };
  148. xhr.onerror = onerror;
  149. xhr.send(null)
  150. };
  151. setWindowTitle = function(title) {
  152. document.title = title
  153. }
  154. } else {
  155. throw new Error("environment detection error")
  156. }
  157. var out = Module["print"] || console.log.bind(console);
  158. var err = Module["printErr"] || console.warn.bind(console);
  159. for (key in moduleOverrides) {
  160. if (moduleOverrides.hasOwnProperty(key)) {
  161. Module[key] = moduleOverrides[key]
  162. }
  163. }
  164. moduleOverrides = null;
  165. if (Module["arguments"]) arguments_ = Module["arguments"];
  166. if (!Object.getOwnPropertyDescriptor(Module, "arguments")) Object.defineProperty(Module, "arguments", {
  167. configurable: true,
  168. get: function() {
  169. abort("Module.arguments has been replaced with plain arguments_")
  170. }
  171. });
  172. if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
  173. if (!Object.getOwnPropertyDescriptor(Module, "thisProgram")) Object.defineProperty(Module, "thisProgram", {
  174. configurable: true,
  175. get: function() {
  176. abort("Module.thisProgram has been replaced with plain thisProgram")
  177. }
  178. });
  179. if (Module["quit"]) quit_ = Module["quit"];
  180. if (!Object.getOwnPropertyDescriptor(Module, "quit")) Object.defineProperty(Module, "quit", {
  181. configurable: true,
  182. get: function() {
  183. abort("Module.quit has been replaced with plain quit_")
  184. }
  185. });
  186. assert(typeof Module["memoryInitializerPrefixURL"] === "undefined", "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead");
  187. assert(typeof Module["pthreadMainPrefixURL"] === "undefined", "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead");
  188. assert(typeof Module["cdInitializerPrefixURL"] === "undefined", "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead");
  189. assert(typeof Module["filePackagePrefixURL"] === "undefined", "Module.filePackagePrefixURL option was removed, use Module.locateFile instead");
  190. assert(typeof Module["read"] === "undefined", "Module.read option was removed (modify read_ in JS)");
  191. assert(typeof Module["readAsync"] === "undefined", "Module.readAsync option was removed (modify readAsync in JS)");
  192. assert(typeof Module["readBinary"] === "undefined", "Module.readBinary option was removed (modify readBinary in JS)");
  193. assert(typeof Module["setWindowTitle"] === "undefined", "Module.setWindowTitle option was removed (modify setWindowTitle in JS)");
  194. if (!Object.getOwnPropertyDescriptor(Module, "read")) Object.defineProperty(Module, "read", {
  195. configurable: true,
  196. get: function() {
  197. abort("Module.read has been replaced with plain read_")
  198. }
  199. });
  200. if (!Object.getOwnPropertyDescriptor(Module, "readAsync")) Object.defineProperty(Module, "readAsync", {
  201. configurable: true,
  202. get: function() {
  203. abort("Module.readAsync has been replaced with plain readAsync")
  204. }
  205. });
  206. if (!Object.getOwnPropertyDescriptor(Module, "readBinary")) Object.defineProperty(Module, "readBinary", {
  207. configurable: true,
  208. get: function() {
  209. abort("Module.readBinary has been replaced with plain readBinary")
  210. }
  211. });
  212. assert(ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER, "Pthreads do not work in non-browser environments yet (need Web Workers, or an alternative to them)");
  213. stackSave = stackRestore = stackAlloc = function() {
  214. abort("cannot use the stack before compiled code is ready to run, and has provided stack access")
  215. };
  216. function dynamicAlloc(size) {
  217. assert(DYNAMICTOP_PTR);
  218. assert(!ENVIRONMENT_IS_PTHREAD);
  219. var ret = HEAP32[DYNAMICTOP_PTR >> 2];
  220. var end = ret + size + 15 & -16;
  221. if (end > _emscripten_get_heap_size()) {
  222. abort("failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly")
  223. }
  224. HEAP32[DYNAMICTOP_PTR >> 2] = end;
  225. return ret
  226. }
  227. function getNativeTypeSize(type) {
  228. switch (type) {
  229. case "i1":
  230. case "i8":
  231. return 1;
  232. case "i16":
  233. return 2;
  234. case "i32":
  235. return 4;
  236. case "i64":
  237. return 8;
  238. case "float":
  239. return 4;
  240. case "double":
  241. return 8;
  242. default:
  243. {
  244. if (type[type.length - 1] === "*") {
  245. return 4
  246. } else if (type[0] === "i") {
  247. var bits = parseInt(type.substr(1));
  248. assert(bits % 8 === 0, "getNativeTypeSize invalid bits " + bits + ", type " + type);
  249. return bits / 8
  250. } else {
  251. return 0
  252. }
  253. }
  254. }
  255. }
  256. function warnOnce(text) {
  257. if (!warnOnce.shown) warnOnce.shown = {};
  258. if (!warnOnce.shown[text]) {
  259. warnOnce.shown[text] = 1;
  260. err(text)
  261. }
  262. }
  263. var asm2wasmImports = {
  264. "f64-rem": function(x, y) {
  265. return x % y
  266. },
  267. "debugger": function() {
  268. debugger
  269. }
  270. };
  271. var jsCallStartIndex = 1;
  272. var functionPointers = new Array(35);
  273. function addFunction(func, sig) {
  274. assert(typeof func !== "undefined");
  275. var base = 0;
  276. for (var i = base; i < base + 35; i++) {
  277. if (!functionPointers[i]) {
  278. functionPointers[i] = func;
  279. return jsCallStartIndex + i
  280. }
  281. }
  282. throw "Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."
  283. }
  284. function removeFunction(index) {
  285. functionPointers[index - jsCallStartIndex] = null
  286. }
  287. var tempRet0 = 0;
  288. var setTempRet0 = function(value) {
  289. tempRet0 = value
  290. };
  291. var getTempRet0 = function() {
  292. return tempRet0
  293. };
  294. var GLOBAL_BASE = 1024;
  295. var wasmBinary;
  296. if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
  297. if (!Object.getOwnPropertyDescriptor(Module, "wasmBinary")) Object.defineProperty(Module, "wasmBinary", {
  298. configurable: true,
  299. get: function() {
  300. abort("Module.wasmBinary has been replaced with plain wasmBinary")
  301. }
  302. });
  303. var noExitRuntime;
  304. if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"];
  305. if (!Object.getOwnPropertyDescriptor(Module, "noExitRuntime")) Object.defineProperty(Module, "noExitRuntime", {
  306. configurable: true,
  307. get: function() {
  308. abort("Module.noExitRuntime has been replaced with plain noExitRuntime")
  309. }
  310. });
  311. if (typeof WebAssembly !== "object") {
  312. abort("No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.")
  313. }
  314. function setValue(ptr, value, type, noSafe) {
  315. type = type || "i8";
  316. if (type.charAt(type.length - 1) === "*") type = "i32";
  317. switch (type) {
  318. case "i1":
  319. HEAP8[ptr >> 0] = value;
  320. break;
  321. case "i8":
  322. HEAP8[ptr >> 0] = value;
  323. break;
  324. case "i16":
  325. HEAP16[ptr >> 1] = value;
  326. break;
  327. case "i32":
  328. HEAP32[ptr >> 2] = value;
  329. break;
  330. case "i64":
  331. tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min( + Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~ + Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)],
  332. HEAP32[ptr >> 2] = tempI64[0],
  333. HEAP32[ptr + 4 >> 2] = tempI64[1];
  334. break;
  335. case "float":
  336. HEAPF32[ptr >> 2] = value;
  337. break;
  338. case "double":
  339. HEAPF64[ptr >> 3] = value;
  340. break;
  341. default:
  342. abort("invalid type for setValue: " + type)
  343. }
  344. }
  345. var wasmMemory;
  346. var wasmTable = new WebAssembly.Table({
  347. "initial": 5312,
  348. "element": "anyfunc"
  349. });
  350. var wasmModule;
  351. var ABORT = false;
  352. var EXITSTATUS = 0;
  353. function assert(condition, text) {
  354. if (!condition) {
  355. abort("Assertion failed: " + text)
  356. }
  357. }
  358. function getCFunc(ident) {
  359. var func = Module["_" + ident];
  360. assert(func, "Cannot call unknown function " + ident + ", make sure it is exported");
  361. return func
  362. }
  363. function ccall(ident, returnType, argTypes, args, opts) {
  364. var toC = {
  365. "string": function(str) {
  366. var ret = 0;
  367. if (str !== null && str !== undefined && str !== 0) {
  368. var len = (str.length << 2) + 1;
  369. ret = stackAlloc(len);
  370. stringToUTF8(str, ret, len)
  371. }
  372. return ret
  373. },
  374. "array": function(arr) {
  375. var ret = stackAlloc(arr.length);
  376. writeArrayToMemory(arr, ret);
  377. return ret
  378. }
  379. };
  380. function convertReturnValue(ret) {
  381. if (returnType === "string") return UTF8ToString(ret);
  382. if (returnType === "boolean") return Boolean(ret);
  383. return ret
  384. }
  385. var func = getCFunc(ident);
  386. var cArgs = [];
  387. var stack = 0;
  388. assert(returnType !== "array", 'Return type should not be "array".');
  389. if (args) {
  390. for (var i = 0; i < args.length; i++) {
  391. var converter = toC[argTypes[i]];
  392. if (converter) {
  393. if (stack === 0) stack = stackSave();
  394. cArgs[i] = converter(args[i])
  395. } else {
  396. cArgs[i] = args[i]
  397. }
  398. }
  399. }
  400. var ret = func.apply(null, cArgs);
  401. ret = convertReturnValue(ret);
  402. if (stack !== 0) stackRestore(stack);
  403. return ret
  404. }
  405. function cwrap(ident, returnType, argTypes, opts) {
  406. return function() {
  407. return ccall(ident, returnType, argTypes, arguments, opts)
  408. }
  409. }
  410. var ALLOC_NORMAL = 0;
  411. var ALLOC_DYNAMIC = 2;
  412. var ALLOC_NONE = 3;
  413. function allocate(slab, types, allocator, ptr) {
  414. var zeroinit, size;
  415. if (typeof slab === "number") {
  416. zeroinit = true;
  417. size = slab
  418. } else {
  419. zeroinit = false;
  420. size = slab.length
  421. }
  422. var singleType = typeof types === "string" ? types: null;
  423. var ret;
  424. if (allocator == ALLOC_NONE) {
  425. ret = ptr
  426. } else {
  427. ret = [_malloc, stackAlloc, dynamicAlloc][allocator](Math.max(size, singleType ? 1 : types.length))
  428. }
  429. if (zeroinit) {
  430. var stop;
  431. ptr = ret;
  432. assert((ret & 3) == 0);
  433. stop = ret + (size & ~3);
  434. for (; ptr < stop; ptr += 4) {
  435. HEAP32[ptr >> 2] = 0
  436. }
  437. stop = ret + size;
  438. while (ptr < stop) {
  439. HEAP8[ptr++>>0] = 0
  440. }
  441. return ret
  442. }
  443. if (singleType === "i8") {
  444. if (slab.subarray || slab.slice) {
  445. HEAPU8.set(slab, ret)
  446. } else {
  447. HEAPU8.set(new Uint8Array(slab), ret)
  448. }
  449. return ret
  450. }
  451. var i = 0,
  452. type, typeSize, previousType;
  453. while (i < size) {
  454. var curr = slab[i];
  455. type = singleType || types[i];
  456. if (type === 0) {
  457. i++;
  458. continue
  459. }
  460. assert(type, "Must know what type to store in allocate!");
  461. if (type == "i64") type = "i32";
  462. setValue(ret + i, curr, type);
  463. if (previousType !== type) {
  464. typeSize = getNativeTypeSize(type);
  465. previousType = type
  466. }
  467. i += typeSize
  468. }
  469. return ret
  470. }
  471. function getMemory(size) {
  472. if (!runtimeInitialized) return dynamicAlloc(size);
  473. return _malloc(size)
  474. }
  475. function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {
  476. var endIdx = idx + maxBytesToRead;
  477. var str = "";
  478. while (! (idx >= endIdx)) {
  479. var u0 = u8Array[idx++];
  480. if (!u0) return str;
  481. if (! (u0 & 128)) {
  482. str += String.fromCharCode(u0);
  483. continue
  484. }
  485. var u1 = u8Array[idx++] & 63;
  486. if ((u0 & 224) == 192) {
  487. str += String.fromCharCode((u0 & 31) << 6 | u1);
  488. continue
  489. }
  490. var u2 = u8Array[idx++] & 63;
  491. if ((u0 & 240) == 224) {
  492. u0 = (u0 & 15) << 12 | u1 << 6 | u2
  493. } else {
  494. if ((u0 & 248) != 240) warnOnce("Invalid UTF-8 leading byte 0x" + u0.toString(16) + " encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!");
  495. u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63
  496. }
  497. if (u0 < 65536) {
  498. str += String.fromCharCode(u0)
  499. } else {
  500. var ch = u0 - 65536;
  501. str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)
  502. }
  503. }
  504. return str
  505. }
  506. function UTF8ToString(ptr, maxBytesToRead) {
  507. return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""
  508. }
  509. function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {
  510. if (! (maxBytesToWrite > 0)) return 0;
  511. var startIdx = outIdx;
  512. var endIdx = outIdx + maxBytesToWrite - 1;
  513. for (var i = 0; i < str.length; ++i) {
  514. var u = str.charCodeAt(i);
  515. if (u >= 55296 && u <= 57343) {
  516. var u1 = str.charCodeAt(++i);
  517. u = 65536 + ((u & 1023) << 10) | u1 & 1023
  518. }
  519. if (u <= 127) {
  520. if (outIdx >= endIdx) break;
  521. outU8Array[outIdx++] = u
  522. } else if (u <= 2047) {
  523. if (outIdx + 1 >= endIdx) break;
  524. outU8Array[outIdx++] = 192 | u >> 6;
  525. outU8Array[outIdx++] = 128 | u & 63
  526. } else if (u <= 65535) {
  527. if (outIdx + 2 >= endIdx) break;
  528. outU8Array[outIdx++] = 224 | u >> 12;
  529. outU8Array[outIdx++] = 128 | u >> 6 & 63;
  530. outU8Array[outIdx++] = 128 | u & 63
  531. } else {
  532. if (outIdx + 3 >= endIdx) break;
  533. if (u >= 2097152) warnOnce("Invalid Unicode code point 0x" + u.toString(16) + " encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF).");
  534. outU8Array[outIdx++] = 240 | u >> 18;
  535. outU8Array[outIdx++] = 128 | u >> 12 & 63;
  536. outU8Array[outIdx++] = 128 | u >> 6 & 63;
  537. outU8Array[outIdx++] = 128 | u & 63
  538. }
  539. }
  540. outU8Array[outIdx] = 0;
  541. return outIdx - startIdx
  542. }
  543. function stringToUTF8(str, outPtr, maxBytesToWrite) {
  544. assert(typeof maxBytesToWrite == "number", "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");
  545. return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite)
  546. }
  547. function lengthBytesUTF8(str) {
  548. var len = 0;
  549. for (var i = 0; i < str.length; ++i) {
  550. var u = str.charCodeAt(i);
  551. if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
  552. if (u <= 127)++len;
  553. else if (u <= 2047) len += 2;
  554. else if (u <= 65535) len += 3;
  555. else len += 4
  556. }
  557. return len
  558. }
  559. function allocateUTF8(str) {
  560. var size = lengthBytesUTF8(str) + 1;
  561. var ret = _malloc(size);
  562. if (ret) stringToUTF8Array(str, HEAP8, ret, size);
  563. return ret
  564. }
  565. function allocateUTF8OnStack(str) {
  566. var size = lengthBytesUTF8(str) + 1;
  567. var ret = stackAlloc(size);
  568. stringToUTF8Array(str, HEAP8, ret, size);
  569. return ret
  570. }
  571. function writeArrayToMemory(array, buffer) {
  572. assert(array.length >= 0, "writeArrayToMemory array must have a length (should be an array or typed array)");
  573. HEAP8.set(array, buffer)
  574. }
  575. function writeAsciiToMemory(str, buffer, dontAddNull) {
  576. for (var i = 0; i < str.length; ++i) {
  577. assert(str.charCodeAt(i) === str.charCodeAt(i) & 255);
  578. HEAP8[buffer++>>0] = str.charCodeAt(i)
  579. }
  580. if (!dontAddNull) HEAP8[buffer >> 0] = 0
  581. }
  582. var PAGE_SIZE = 16384;
  583. var WASM_PAGE_SIZE = 65536;
  584. var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
  585. function updateGlobalBufferAndViews(buf) {
  586. buffer = buf;
  587. Module["HEAP8"] = HEAP8 = new Int8Array(buf);
  588. Module["HEAP16"] = HEAP16 = new Int16Array(buf);
  589. Module["HEAP32"] = HEAP32 = new Int32Array(buf);
  590. Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf);
  591. Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf);
  592. Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf);
  593. Module["HEAPF32"] = HEAPF32 = new Float32Array(buf);
  594. Module["HEAPF64"] = HEAPF64 = new Float64Array(buf)
  595. }
  596. if (!ENVIRONMENT_IS_PTHREAD) {
  597. var STACK_BASE = 1389264,
  598. STACK_MAX = 6632144,
  599. DYNAMIC_BASE = 6632144,
  600. DYNAMICTOP_PTR = 1388240;
  601. assert(STACK_BASE % 16 === 0, "stack must start aligned");
  602. assert(DYNAMIC_BASE % 16 === 0, "heap must start aligned")
  603. }
  604. var TOTAL_STACK = 5242880;
  605. if (Module["TOTAL_STACK"]) assert(TOTAL_STACK === Module["TOTAL_STACK"], "the stack size can no longer be determined at runtime");
  606. var INITIAL_TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 1073741824;
  607. if (!Object.getOwnPropertyDescriptor(Module, "TOTAL_MEMORY")) Object.defineProperty(Module, "TOTAL_MEMORY", {
  608. configurable: true,
  609. get: function() {
  610. abort("Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY")
  611. }
  612. });
  613. assert(INITIAL_TOTAL_MEMORY >= TOTAL_STACK, "TOTAL_MEMORY should be larger than TOTAL_STACK, was " + INITIAL_TOTAL_MEMORY + "! (TOTAL_STACK=" + TOTAL_STACK + ")");
  614. assert(typeof Int32Array !== "undefined" && typeof Float64Array !== "undefined" && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, "JS engine does not provide full typed array support");
  615. if (ENVIRONMENT_IS_PTHREAD) {} else {
  616. if (Module["wasmMemory"]) {
  617. wasmMemory = Module["wasmMemory"]
  618. } else {
  619. wasmMemory = new WebAssembly.Memory({
  620. "initial": INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE,
  621. "maximum": INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE,
  622. "shared": true
  623. });
  624. assert(wasmMemory.buffer instanceof SharedArrayBuffer, "requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag")
  625. }
  626. }
  627. if (wasmMemory) {
  628. buffer = wasmMemory.buffer
  629. }
  630. INITIAL_TOTAL_MEMORY = buffer.byteLength;
  631. assert(INITIAL_TOTAL_MEMORY % WASM_PAGE_SIZE === 0);
  632. updateGlobalBufferAndViews(buffer);
  633. if (!ENVIRONMENT_IS_PTHREAD) {
  634. HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE
  635. }
  636. function writeStackCookie() {
  637. assert((STACK_MAX & 3) == 0);
  638. HEAPU32[(STACK_MAX >> 2) - 1] = 34821223;
  639. HEAPU32[(STACK_MAX >> 2) - 2] = 2310721022;
  640. HEAP32[0] = 1668509029
  641. }
  642. function checkStackCookie() {
  643. var cookie1 = HEAPU32[(STACK_MAX >> 2) - 1];
  644. var cookie2 = HEAPU32[(STACK_MAX >> 2) - 2];
  645. if (cookie1 != 34821223 || cookie2 != 2310721022) {
  646. abort("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x" + cookie2.toString(16) + " " + cookie1.toString(16))
  647. }
  648. if (HEAP32[0] !== 1668509029) abort("Runtime error: The application has corrupted its heap memory area (address zero)!")
  649. }
  650. function abortStackOverflow(allocSize) {
  651. abort("Stack overflow! Attempted to allocate " + allocSize + " bytes on the stack, but stack has only " + (STACK_MAX - stackSave() + allocSize) + " bytes available!")
  652. } (function() {
  653. var h16 = new Int16Array(1);
  654. var h8 = new Int8Array(h16.buffer);
  655. h16[0] = 25459;
  656. if (h8[0] !== 115 || h8[1] !== 99) throw "Runtime error: expected the system to be little-endian!"
  657. })();
  658. function abortFnPtrError(ptr, sig) {
  659. var possibleSig = "";
  660. for (var x in debug_tables) {
  661. var tbl = debug_tables[x];
  662. if (tbl[ptr]) {
  663. possibleSig += 'as sig "' + x + '" pointing to function ' + tbl[ptr] + ", "
  664. }
  665. }
  666. abort("Invalid function pointer " + ptr + " called with signature '" + sig + "'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). This pointer might make sense in another type signature: " + possibleSig)
  667. }
  668. function callRuntimeCallbacks(callbacks) {
  669. while (callbacks.length > 0) {
  670. var callback = callbacks.shift();
  671. if (typeof callback == "function") {
  672. callback();
  673. continue
  674. }
  675. var func = callback.func;
  676. if (typeof func === "number") {
  677. if (callback.arg === undefined) {
  678. Module["dynCall_v"](func)
  679. } else {
  680. Module["dynCall_vi"](func, callback.arg)
  681. }
  682. } else {
  683. func(callback.arg === undefined ? null: callback.arg)
  684. }
  685. }
  686. }
  687. var __ATPRERUN__ = [];
  688. var __ATINIT__ = [];
  689. var __ATMAIN__ = [];
  690. var __ATEXIT__ = [];
  691. var __ATPOSTRUN__ = [];
  692. var runtimeInitialized = false;
  693. var runtimeExited = false;
  694. if (ENVIRONMENT_IS_PTHREAD) runtimeInitialized = true;
  695. function preRun() {
  696. if (ENVIRONMENT_IS_PTHREAD) return;
  697. if (Module["preRun"]) {
  698. if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]];
  699. while (Module["preRun"].length) {
  700. addOnPreRun(Module["preRun"].shift())
  701. }
  702. }
  703. callRuntimeCallbacks(__ATPRERUN__)
  704. }
  705. function initRuntime() {
  706. checkStackCookie();
  707. assert(!runtimeInitialized);
  708. runtimeInitialized = true;
  709. if (!Module["noFSInit"] && !FS.init.initialized) FS.init();
  710. TTY.init();
  711. callRuntimeCallbacks(__ATINIT__)
  712. }
  713. function preMain() {
  714. checkStackCookie();
  715. if (ENVIRONMENT_IS_PTHREAD) return;
  716. FS.ignorePermissions = false;
  717. callRuntimeCallbacks(__ATMAIN__)
  718. }
  719. function exitRuntime() {
  720. checkStackCookie();
  721. if (ENVIRONMENT_IS_PTHREAD) return;
  722. runtimeExited = true
  723. }
  724. function postRun() {
  725. checkStackCookie();
  726. if (ENVIRONMENT_IS_PTHREAD) return;
  727. if (Module["postRun"]) {
  728. if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]];
  729. while (Module["postRun"].length) {
  730. addOnPostRun(Module["postRun"].shift())
  731. }
  732. }
  733. callRuntimeCallbacks(__ATPOSTRUN__)
  734. }
  735. function addOnPreRun(cb) {
  736. __ATPRERUN__.unshift(cb)
  737. }
  738. function addOnPostRun(cb) {
  739. __ATPOSTRUN__.unshift(cb)
  740. }
  741. assert(Math.imul, "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
  742. assert(Math.fround, "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
  743. assert(Math.clz32, "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
  744. assert(Math.trunc, "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
  745. var Math_abs = Math.abs;
  746. var Math_ceil = Math.ceil;
  747. var Math_floor = Math.floor;
  748. var Math_min = Math.min;
  749. var Math_trunc = Math.trunc;
  750. var runDependencies = 0;
  751. var runDependencyWatcher = null;
  752. var dependenciesFulfilled = null;
  753. var runDependencyTracking = {};
  754. function getUniqueRunDependency(id) {
  755. var orig = id;
  756. while (1) {
  757. if (!runDependencyTracking[id]) return id;
  758. id = orig + Math.random()
  759. }
  760. return id
  761. }
  762. function addRunDependency(id) {
  763. assert(!ENVIRONMENT_IS_PTHREAD, "addRunDependency cannot be used in a pthread worker");
  764. runDependencies++;
  765. if (Module["monitorRunDependencies"]) {
  766. Module["monitorRunDependencies"](runDependencies)
  767. }
  768. if (id) {
  769. assert(!runDependencyTracking[id]);
  770. runDependencyTracking[id] = 1;
  771. if (runDependencyWatcher === null && typeof setInterval !== "undefined") {
  772. runDependencyWatcher = setInterval(function() {
  773. if (ABORT) {
  774. clearInterval(runDependencyWatcher);
  775. runDependencyWatcher = null;
  776. return
  777. }
  778. var shown = false;
  779. for (var dep in runDependencyTracking) {
  780. if (!shown) {
  781. shown = true;
  782. err("still waiting on run dependencies:")
  783. }
  784. err("dependency: " + dep)
  785. }
  786. if (shown) {
  787. err("(end of list)")
  788. }
  789. },
  790. 1e4)
  791. }
  792. } else {
  793. err("warning: run dependency added without ID")
  794. }
  795. }
  796. function removeRunDependency(id) {
  797. runDependencies--;
  798. if (Module["monitorRunDependencies"]) {
  799. Module["monitorRunDependencies"](runDependencies)
  800. }
  801. if (id) {
  802. assert(runDependencyTracking[id]);
  803. delete runDependencyTracking[id]
  804. } else {
  805. err("warning: run dependency removed without ID")
  806. }
  807. if (runDependencies == 0) {
  808. if (runDependencyWatcher !== null) {
  809. clearInterval(runDependencyWatcher);
  810. runDependencyWatcher = null
  811. }
  812. if (dependenciesFulfilled) {
  813. var callback = dependenciesFulfilled;
  814. dependenciesFulfilled = null;
  815. callback()
  816. }
  817. }
  818. }
  819. Module["preloadedImages"] = {};
  820. Module["preloadedAudios"] = {};
  821. function abort(what) {
  822. if (Module["onAbort"]) {
  823. Module["onAbort"](what)
  824. }
  825. if (ENVIRONMENT_IS_PTHREAD) console.error("Pthread aborting at " + (new Error).stack);
  826. what += "";
  827. out(what);
  828. err(what);
  829. ABORT = true;
  830. EXITSTATUS = 1;
  831. var extra = "";
  832. var output = "abort(" + what + ") at " + stackTrace() + extra;
  833. throw output
  834. }
  835. var memoryInitializer = null;
  836. if (!ENVIRONMENT_IS_PTHREAD) addOnPreRun(function() {
  837. if (typeof SharedArrayBuffer !== "undefined") {
  838. addRunDependency("pthreads");
  839. PThread.allocateUnusedWorkers(10,
  840. function() {
  841. removeRunDependency("pthreads")
  842. })
  843. }
  844. });
  845. var dataURIPrefix = "data:application/octet-stream;base64,";
  846. function isDataURI(filename) {
  847. return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0
  848. }
  849. var wasmBinaryFile = "missile-v20220507.wasm";
  850. if (!isDataURI(wasmBinaryFile)) {
  851. wasmBinaryFile = locateFile(wasmBinaryFile)
  852. }
  853. function getBinary() {
  854. try {
  855. if (wasmBinary) {
  856. return new Uint8Array(wasmBinary)
  857. }
  858. if (readBinary) {
  859. return readBinary(wasmBinaryFile)
  860. } else {
  861. throw "both async and sync fetching of the wasm failed"
  862. }
  863. } catch(err) {
  864. abort(err)
  865. }
  866. }
  867. function getBinaryPromise() {
  868. if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === "function") {
  869. return fetch(wasmBinaryFile, {
  870. credentials: "same-origin"
  871. }).then(function(response) {
  872. if (!response["ok"]) {
  873. throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"
  874. }
  875. return response["arrayBuffer"]()
  876. }).
  877. catch(function() {
  878. return getBinary()
  879. })
  880. }
  881. return new Promise(function(resolve, reject) {
  882. resolve(getBinary())
  883. })
  884. }
  885. function createWasm() {
  886. var info = {
  887. "env": asmLibraryArg,
  888. "wasi_unstable": asmLibraryArg,
  889. "global": {
  890. "NaN": NaN,
  891. Infinity: Infinity
  892. },
  893. "global.Math": Math,
  894. "asm2wasm": asm2wasmImports
  895. };
  896. function receiveInstance(instance, module) {
  897. var exports = instance.exports;
  898. Module["asm"] = exports;
  899. wasmModule = module;
  900. if (!ENVIRONMENT_IS_PTHREAD) removeRunDependency("wasm-instantiate")
  901. }
  902. if (!ENVIRONMENT_IS_PTHREAD) {
  903. addRunDependency("wasm-instantiate")
  904. }
  905. var trueModule = Module;
  906. function receiveInstantiatedSource(output) {
  907. assert(Module === trueModule, "the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?");
  908. trueModule = null;
  909. receiveInstance(output["instance"], output["module"])
  910. }
  911. function instantiateArrayBuffer(receiver) {
  912. return getBinaryPromise().then(function(binary) {
  913. return WebAssembly.instantiate(binary, info)
  914. }).then(receiver,
  915. function(reason) {
  916. err("failed to asynchronously prepare wasm: " + reason);
  917. abort(reason)
  918. })
  919. }
  920. function instantiateAsync() {
  921. if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && typeof fetch === "function") {
  922. fetch(wasmBinaryFile, {
  923. credentials: "same-origin"
  924. }).then(function(response) {
  925. var result = WebAssembly.instantiateStreaming(response, info);
  926. return result.then(receiveInstantiatedSource,
  927. function(reason) {
  928. err("wasm streaming compile failed: " + reason);
  929. err("falling back to ArrayBuffer instantiation");
  930. instantiateArrayBuffer(receiveInstantiatedSource)
  931. })
  932. })
  933. } else {
  934. return instantiateArrayBuffer(receiveInstantiatedSource)
  935. }
  936. }
  937. if (Module["instantiateWasm"]) {
  938. try {
  939. var exports = Module["instantiateWasm"](info, receiveInstance);
  940. return exports
  941. } catch(e) {
  942. err("Module.instantiateWasm callback failed with error: " + e);
  943. return false
  944. }
  945. }
  946. instantiateAsync();
  947. return {}
  948. }
  949. Module["asm"] = createWasm;
  950. var tempDouble;
  951. var tempI64;
  952. var ASM_CONSTS = [function() {
  953. if (typeof window != "undefined") {
  954. window.dispatchEvent(new CustomEvent("wasmLoaded"))
  955. } else {}
  956. },
  957. function() {
  958. alert("myThread111")
  959. },
  960. function($0) {
  961. console.log("myThread111", $0)
  962. },
  963. function() {
  964. postMessage({
  965. cmd: "go",
  966. data: "myThread go"
  967. })
  968. },
  969. function() {
  970. console.error("fetch: emscripten_fetch_wait failed: main thread cannot block to wait for long periods of time! Migrate the application to run in a worker to perform synchronous file IO, or switch to using asynchronous IO.")
  971. },
  972. function() {
  973. postMessage({
  974. cmd: "processQueuedMainThreadWork"
  975. })
  976. },
  977. function($0) {
  978. if (!ENVIRONMENT_IS_PTHREAD) {
  979. if (!PThread.pthreads[$0] || !PThread.pthreads[$0].worker) {
  980. return 0
  981. }
  982. PThread.pthreads[$0].worker.postMessage({
  983. cmd: "processThreadQueue"
  984. })
  985. } else {
  986. postMessage({
  987. targetThread: $0,
  988. cmd: "processThreadQueue"
  989. })
  990. }
  991. return 1
  992. },
  993. function() {
  994. return !! Module["canvas"]
  995. },
  996. function() {
  997. noExitRuntime = true
  998. },
  999. function() {
  1000. throw "Canceled!"
  1001. }];
  1002. function _emscripten_asm_const_i(code) {
  1003. return ASM_CONSTS[code]()
  1004. }
  1005. function _emscripten_asm_const_ii(code, a0) {
  1006. return ASM_CONSTS[code](a0)
  1007. }
  1008. function _initPthreadsJS() {
  1009. PThread.initRuntime()
  1010. }
  1011. if (!ENVIRONMENT_IS_PTHREAD) __ATINIT__.push({
  1012. func: function() {
  1013. globalCtors()
  1014. }
  1015. });
  1016. if (!ENVIRONMENT_IS_PTHREAD) {
  1017. memoryInitializer = "missile-v20220507.html.mem"
  1018. }
  1019. var tempDoublePtr;
  1020. if (!ENVIRONMENT_IS_PTHREAD) tempDoublePtr = 1389248;
  1021. assert(tempDoublePtr % 8 == 0);
  1022. function demangle(func) {
  1023. warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");
  1024. return func
  1025. }
  1026. function demangleAll(text) {
  1027. var regex = /\b__Z[\w\d_]+/g;
  1028. return text.replace(regex,
  1029. function(x) {
  1030. var y = demangle(x);
  1031. return x === y ? x: y + " [" + x + "]"
  1032. })
  1033. }
  1034. function jsStackTrace() {
  1035. var err = new Error;
  1036. if (!err.stack) {
  1037. try {
  1038. throw new Error(0)
  1039. } catch(e) {
  1040. err = e
  1041. }
  1042. if (!err.stack) {
  1043. return "(no stack trace available)"
  1044. }
  1045. }
  1046. return err.stack.toString()
  1047. }
  1048. function stackTrace() {
  1049. var js = jsStackTrace();
  1050. if (Module["extraStackTrace"]) js += "\n" + Module["extraStackTrace"]();
  1051. return demangleAll(js)
  1052. }
  1053. function ___assert_fail(condition, filename, line, func) {
  1054. abort("Assertion failed: " + UTF8ToString(condition) + ", at: " + [filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function"])
  1055. }
  1056. var ENV = {};
  1057. function ___buildEnvironment(environ) {
  1058. var MAX_ENV_VALUES = 64;
  1059. var TOTAL_ENV_SIZE = 1024;
  1060. var poolPtr;
  1061. var envPtr;
  1062. if (!___buildEnvironment.called) {
  1063. ___buildEnvironment.called = true;
  1064. ENV["USER"] = "web_user";
  1065. ENV["LOGNAME"] = "web_user";
  1066. ENV["PATH"] = "/";
  1067. ENV["PWD"] = "/";
  1068. ENV["HOME"] = "/home/web_user";
  1069. ENV["LANG"] = (typeof navigator === "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8";
  1070. ENV["_"] = thisProgram;
  1071. poolPtr = getMemory(TOTAL_ENV_SIZE);
  1072. envPtr = getMemory(MAX_ENV_VALUES * 4);
  1073. HEAP32[envPtr >> 2] = poolPtr;
  1074. HEAP32[environ >> 2] = envPtr
  1075. } else {
  1076. envPtr = HEAP32[environ >> 2];
  1077. poolPtr = HEAP32[envPtr >> 2]
  1078. }
  1079. var strings = [];
  1080. var totalSize = 0;
  1081. for (var key in ENV) {
  1082. if (typeof ENV[key] === "string") {
  1083. var line = key + "=" + ENV[key];
  1084. strings.push(line);
  1085. totalSize += line.length
  1086. }
  1087. }
  1088. if (totalSize > TOTAL_ENV_SIZE) {
  1089. throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")
  1090. }
  1091. var ptrSize = 4;
  1092. for (var i = 0; i < strings.length; i++) {
  1093. var line = strings[i];
  1094. writeAsciiToMemory(line, poolPtr);
  1095. HEAP32[envPtr + i * ptrSize >> 2] = poolPtr;
  1096. poolPtr += line.length + 1
  1097. }
  1098. HEAP32[envPtr + strings.length * ptrSize >> 2] = 0
  1099. }
  1100. var PROCINFO = {
  1101. ppid: 1,
  1102. pid: 42,
  1103. sid: 42,
  1104. pgid: 42
  1105. };
  1106. var ERRNO_CODES = {
  1107. EPERM: 63,
  1108. ENOENT: 44,
  1109. ESRCH: 71,
  1110. EINTR: 27,
  1111. EIO: 29,
  1112. ENXIO: 60,
  1113. E2BIG: 1,
  1114. ENOEXEC: 45,
  1115. EBADF: 8,
  1116. ECHILD: 12,
  1117. EAGAIN: 6,
  1118. EWOULDBLOCK: 6,
  1119. ENOMEM: 48,
  1120. EACCES: 2,
  1121. EFAULT: 21,
  1122. ENOTBLK: 105,
  1123. EBUSY: 10,
  1124. EEXIST: 20,
  1125. EXDEV: 75,
  1126. ENODEV: 43,
  1127. ENOTDIR: 54,
  1128. EISDIR: 31,
  1129. EINVAL: 28,
  1130. ENFILE: 41,
  1131. EMFILE: 33,
  1132. ENOTTY: 59,
  1133. ETXTBSY: 74,
  1134. EFBIG: 22,
  1135. ENOSPC: 51,
  1136. ESPIPE: 70,
  1137. EROFS: 69,
  1138. EMLINK: 34,
  1139. EPIPE: 64,
  1140. EDOM: 18,
  1141. ERANGE: 68,
  1142. ENOMSG: 49,
  1143. EIDRM: 24,
  1144. ECHRNG: 106,
  1145. EL2NSYNC: 156,
  1146. EL3HLT: 107,
  1147. EL3RST: 108,
  1148. ELNRNG: 109,
  1149. EUNATCH: 110,
  1150. ENOCSI: 111,
  1151. EL2HLT: 112,
  1152. EDEADLK: 16,
  1153. ENOLCK: 46,
  1154. EBADE: 113,
  1155. EBADR: 114,
  1156. EXFULL: 115,
  1157. ENOANO: 104,
  1158. EBADRQC: 103,
  1159. EBADSLT: 102,
  1160. EDEADLOCK: 16,
  1161. EBFONT: 101,
  1162. ENOSTR: 100,
  1163. ENODATA: 116,
  1164. ETIME: 117,
  1165. ENOSR: 118,
  1166. ENONET: 119,
  1167. ENOPKG: 120,
  1168. EREMOTE: 121,
  1169. ENOLINK: 47,
  1170. EADV: 122,
  1171. ESRMNT: 123,
  1172. ECOMM: 124,
  1173. EPROTO: 65,
  1174. EMULTIHOP: 36,
  1175. EDOTDOT: 125,
  1176. EBADMSG: 9,
  1177. ENOTUNIQ: 126,
  1178. EBADFD: 127,
  1179. EREMCHG: 128,
  1180. ELIBACC: 129,
  1181. ELIBBAD: 130,
  1182. ELIBSCN: 131,
  1183. ELIBMAX: 132,
  1184. ELIBEXEC: 133,
  1185. ENOSYS: 52,
  1186. ENOTEMPTY: 55,
  1187. ENAMETOOLONG: 37,
  1188. ELOOP: 32,
  1189. EOPNOTSUPP: 138,
  1190. EPFNOSUPPORT: 139,
  1191. ECONNRESET: 15,
  1192. ENOBUFS: 42,
  1193. EAFNOSUPPORT: 5,
  1194. EPROTOTYPE: 67,
  1195. ENOTSOCK: 57,
  1196. ENOPROTOOPT: 50,
  1197. ESHUTDOWN: 140,
  1198. ECONNREFUSED: 14,
  1199. EADDRINUSE: 3,
  1200. ECONNABORTED: 13,
  1201. ENETUNREACH: 40,
  1202. ENETDOWN: 38,
  1203. ETIMEDOUT: 73,
  1204. EHOSTDOWN: 142,
  1205. EHOSTUNREACH: 23,
  1206. EINPROGRESS: 26,
  1207. EALREADY: 7,
  1208. EDESTADDRREQ: 17,
  1209. EMSGSIZE: 35,
  1210. EPROTONOSUPPORT: 66,
  1211. ESOCKTNOSUPPORT: 137,
  1212. EADDRNOTAVAIL: 4,
  1213. ENETRESET: 39,
  1214. EISCONN: 30,
  1215. ENOTCONN: 53,
  1216. ETOOMANYREFS: 141,
  1217. EUSERS: 136,
  1218. EDQUOT: 19,
  1219. ESTALE: 72,
  1220. ENOTSUP: 138,
  1221. ENOMEDIUM: 148,
  1222. EILSEQ: 25,
  1223. EOVERFLOW: 61,
  1224. ECANCELED: 11,
  1225. ENOTRECOVERABLE: 56,
  1226. EOWNERDEAD: 62,
  1227. ESTRPIPE: 135
  1228. };
  1229. var __main_thread_futex_wait_address;
  1230. if (ENVIRONMENT_IS_PTHREAD) __main_thread_futex_wait_address = PthreadWorkerInit.__main_thread_futex_wait_address;
  1231. else PthreadWorkerInit.__main_thread_futex_wait_address = __main_thread_futex_wait_address = 1389232;
  1232. function _emscripten_futex_wake(addr, count) {
  1233. if (addr <= 0 || addr > HEAP8.length || addr & 3 != 0 || count < 0) return - 28;
  1234. if (count == 0) return 0;
  1235. if (count >= 2147483647) count = Infinity;
  1236. var mainThreadWaitAddress = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2);
  1237. var mainThreadWoken = 0;
  1238. if (mainThreadWaitAddress == addr) {
  1239. var loadedAddr = Atomics.compareExchange(HEAP32, __main_thread_futex_wait_address >> 2, mainThreadWaitAddress, 0);
  1240. if (loadedAddr == mainThreadWaitAddress) {--count;
  1241. mainThreadWoken = 1;
  1242. if (count <= 0) return 1
  1243. }
  1244. }
  1245. var ret = Atomics.notify(HEAP32, addr >> 2, count);
  1246. if (ret >= 0) return ret + mainThreadWoken;
  1247. throw "Atomics.notify returned an unexpected value " + ret
  1248. }
  1249. var PThread = {
  1250. MAIN_THREAD_ID: 1,
  1251. mainThreadInfo: {
  1252. schedPolicy: 0,
  1253. schedPrio: 0
  1254. },
  1255. preallocatedWorkers: [],
  1256. unusedWorkers: [],
  1257. runningWorkers: [],
  1258. initRuntime: function() {
  1259. __register_pthread_ptr(PThread.mainThreadBlock, !ENVIRONMENT_IS_WORKER, 1);
  1260. _emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)
  1261. },
  1262. initMainThreadBlock: function() {
  1263. if (ENVIRONMENT_IS_PTHREAD) return undefined;
  1264. var requestedPoolSize = 10;
  1265. PThread.preallocatedWorkers = PThread.createNewWorkers(requestedPoolSize);
  1266. PThread.mainThreadBlock = 1388448;
  1267. for (var i = 0; i < 244 / 4; ++i) HEAPU32[PThread.mainThreadBlock / 4 + i] = 0;
  1268. HEAP32[PThread.mainThreadBlock + 24 >> 2] = PThread.mainThreadBlock;
  1269. var headPtr = PThread.mainThreadBlock + 168;
  1270. HEAP32[headPtr >> 2] = headPtr;
  1271. var tlsMemory = 1388704;
  1272. for (var i = 0; i < 128; ++i) HEAPU32[tlsMemory / 4 + i] = 0;
  1273. Atomics.store(HEAPU32, PThread.mainThreadBlock + 116 >> 2, tlsMemory);
  1274. Atomics.store(HEAPU32, PThread.mainThreadBlock + 52 >> 2, PThread.mainThreadBlock);
  1275. Atomics.store(HEAPU32, PThread.mainThreadBlock + 56 >> 2, PROCINFO.pid)
  1276. },
  1277. pthreads: {},
  1278. exitHandlers: null,
  1279. setThreadStatus: function() {},
  1280. runExitHandlers: function() {
  1281. if (PThread.exitHandlers !== null) {
  1282. while (PThread.exitHandlers.length > 0) {
  1283. PThread.exitHandlers.pop()()
  1284. }
  1285. PThread.exitHandlers = null
  1286. }
  1287. if (ENVIRONMENT_IS_PTHREAD && threadInfoStruct) ___pthread_tsd_run_dtors()
  1288. },
  1289. threadExit: function(exitCode) {
  1290. var tb = _pthread_self();
  1291. if (tb) {
  1292. Atomics.store(HEAPU32, tb + 4 >> 2, exitCode);
  1293. Atomics.store(HEAPU32, tb + 0 >> 2, 1);
  1294. Atomics.store(HEAPU32, tb + 72 >> 2, 1);
  1295. Atomics.store(HEAPU32, tb + 76 >> 2, 0);
  1296. PThread.runExitHandlers();
  1297. _emscripten_futex_wake(tb + 0, 2147483647);
  1298. __register_pthread_ptr(0, 0, 0);
  1299. threadInfoStruct = 0;
  1300. if (ENVIRONMENT_IS_PTHREAD) {
  1301. postMessage({
  1302. cmd: "exit"
  1303. })
  1304. }
  1305. }
  1306. },
  1307. threadCancel: function() {
  1308. PThread.runExitHandlers();
  1309. Atomics.store(HEAPU32, threadInfoStruct + 4 >> 2, -1);
  1310. Atomics.store(HEAPU32, threadInfoStruct + 0 >> 2, 1);
  1311. _emscripten_futex_wake(threadInfoStruct + 0, 2147483647);
  1312. threadInfoStruct = selfThreadId = 0;
  1313. __register_pthread_ptr(0, 0, 0);
  1314. postMessage({
  1315. cmd: "cancelDone"
  1316. })
  1317. },
  1318. terminateAllThreads: function() {
  1319. for (var t in PThread.pthreads) {
  1320. var pthread = PThread.pthreads[t];
  1321. if (pthread) {
  1322. PThread.freeThreadData(pthread);
  1323. if (pthread.worker) pthread.worker.terminate()
  1324. }
  1325. }
  1326. PThread.pthreads = {};
  1327. for (var i = 0; i < PThread.preallocatedWorkers.length; ++i) {
  1328. var worker = PThread.preallocatedWorkers[i];
  1329. assert(!worker.pthread);
  1330. worker.terminate()
  1331. }
  1332. PThread.preallocatedWorkers = [];
  1333. for (var i = 0; i < PThread.unusedWorkers.length; ++i) {
  1334. var worker = PThread.unusedWorkers[i];
  1335. assert(!worker.pthread);
  1336. worker.terminate()
  1337. }
  1338. PThread.unusedWorkers = [];
  1339. for (var i = 0; i < PThread.runningWorkers.length; ++i) {
  1340. var worker = PThread.runningWorkers[i];
  1341. var pthread = worker.pthread;
  1342. assert(pthread, "This Worker should have a pthread it is executing");
  1343. PThread.freeThreadData(pthread);
  1344. worker.terminate()
  1345. }
  1346. PThread.runningWorkers = []
  1347. },
  1348. freeThreadData: function(pthread) {
  1349. if (!pthread) return;
  1350. if (pthread.threadInfoStruct) {
  1351. var tlsMemory = HEAP32[pthread.threadInfoStruct + 116 >> 2];
  1352. HEAP32[pthread.threadInfoStruct + 116 >> 2] = 0;
  1353. _free(tlsMemory);
  1354. _free(pthread.threadInfoStruct)
  1355. }
  1356. pthread.threadInfoStruct = 0;
  1357. if (pthread.allocatedOwnStack && pthread.stackBase) _free(pthread.stackBase);
  1358. pthread.stackBase = 0;
  1359. if (pthread.worker) pthread.worker.pthread = null
  1360. },
  1361. returnWorkerToPool: function(worker) {
  1362. delete PThread.pthreads[worker.pthread.thread];
  1363. PThread.unusedWorkers.push(worker);
  1364. PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker), 1);
  1365. PThread.freeThreadData(worker.pthread);
  1366. worker.pthread = undefined
  1367. },
  1368. receiveObjectTransfer: function(data) {},
  1369. allocateUnusedWorkers: function(numWorkers, onFinishedLoading) {
  1370. if (typeof SharedArrayBuffer === "undefined") return;
  1371. var workers = [];
  1372. var numWorkersToCreate = numWorkers;
  1373. if (PThread.preallocatedWorkers.length > 0) {
  1374. var workersUsed = Math.min(PThread.preallocatedWorkers.length, numWorkers);
  1375. workers = workers.concat(PThread.preallocatedWorkers.splice(0, workersUsed));
  1376. numWorkersToCreate -= workersUsed
  1377. }
  1378. if (numWorkersToCreate > 0) {
  1379. workers = workers.concat(PThread.createNewWorkers(numWorkersToCreate))
  1380. }
  1381. PThread.attachListenerToWorkers(workers, onFinishedLoading);
  1382. for (var i = 0; i < numWorkers; ++i) {
  1383. var worker = workers[i];
  1384. var tempDoublePtr = getMemory(8);
  1385. worker.postMessage({
  1386. cmd: "load",
  1387. urlOrBlob: Module["mainScriptUrlOrBlob"] || _scriptDir,
  1388. wasmMemory: wasmMemory,
  1389. wasmModule: wasmModule,
  1390. tempDoublePtr: tempDoublePtr,
  1391. DYNAMIC_BASE: DYNAMIC_BASE,
  1392. DYNAMICTOP_PTR: DYNAMICTOP_PTR,
  1393. PthreadWorkerInit: PthreadWorkerInit
  1394. });
  1395. PThread.unusedWorkers.push(worker)
  1396. }
  1397. },
  1398. attachListenerToWorkers: function(workers, onFinishedLoading) {
  1399. var numWorkersLoaded = 0;
  1400. var numWorkers = workers.length;
  1401. for (var i = 0; i < numWorkers; ++i) {
  1402. var worker = workers[i]; (function(worker) {
  1403. worker.onmessage = function(e) {
  1404. var d = e.data;
  1405. if (worker.pthread) PThread.currentProxiedOperationCallerThread = worker.pthread.threadInfoStruct;
  1406. if (d.targetThread && d.targetThread != _pthread_self()) {
  1407. var thread = PThread.pthreads[d.targetThread];
  1408. if (thread) {
  1409. thread.worker.postMessage(e.data, d.transferList)
  1410. } else {
  1411. console.error('Internal error! Worker sent a message "' + d.cmd + '" to target pthread ' + d.targetThread + ", but that thread no longer exists!")
  1412. }
  1413. PThread.currentProxiedOperationCallerThread = undefined;
  1414. return
  1415. }
  1416. if (d.cmd === "processQueuedMainThreadWork") {
  1417. _emscripten_main_thread_process_queued_calls()
  1418. } else if (d.cmd === "spawnThread") {
  1419. __spawn_thread(e.data)
  1420. } else if (d.cmd === "cleanupThread") {
  1421. __cleanup_thread(d.thread)
  1422. } else if (d.cmd === "killThread") {
  1423. __kill_thread(d.thread)
  1424. } else if (d.cmd === "cancelThread") {
  1425. __cancel_thread(d.thread)
  1426. } else if (d.cmd === "loaded") {
  1427. worker.loaded = true;
  1428. if (worker.runPthread) {
  1429. worker.runPthread();
  1430. delete worker.runPthread
  1431. }++numWorkersLoaded;
  1432. if (numWorkersLoaded === numWorkers && onFinishedLoading) {
  1433. onFinishedLoading()
  1434. }
  1435. } else if (d.cmd === "print") {
  1436. out("Thread " + d.threadId + ": " + d.text)
  1437. } else if (d.cmd === "printErr") {
  1438. err("Thread " + d.threadId + ": " + d.text)
  1439. } else if (d.cmd === "alert") {
  1440. alert("Thread " + d.threadId + ": " + d.text)
  1441. } else if (d.cmd === "exit") {
  1442. var detached = worker.pthread && Atomics.load(HEAPU32, worker.pthread.thread + 80 >> 2);
  1443. if (detached) {
  1444. PThread.returnWorkerToPool(worker)
  1445. }
  1446. } else if (d.cmd === "exitProcess") {
  1447. noExitRuntime = false;
  1448. try {
  1449. exit(d.returnCode)
  1450. } catch(e) {
  1451. if (e instanceof ExitStatus) return;
  1452. throw e
  1453. }
  1454. } else if (d.cmd === "cancelDone") {
  1455. PThread.returnWorkerToPool(worker)
  1456. } else if (d.cmd === "objectTransfer") {
  1457. PThread.receiveObjectTransfer(e.data)
  1458. } else if (e.data.target === "setimmediate") {
  1459. worker.postMessage(e.data)
  1460. } else if (d.cmd === "go") {
  1461. console.log("ecmd go ",
  1462. window.postMessage(e.data));
  1463. } else {
  1464. err("worker sent an unknown command " + d.cmd)
  1465. }
  1466. PThread.currentProxiedOperationCallerThread = undefined
  1467. };
  1468. worker.onerror = function(e) {
  1469. err("pthread sent an error! " + e.filename + ":" + e.lineno + ": " + e.message)
  1470. }
  1471. })(worker)
  1472. }
  1473. },
  1474. createNewWorkers: function(numWorkers) {
  1475. if (typeof SharedArrayBuffer === "undefined") return [];
  1476. var pthreadMainJs = "missile-v20220507.worker.js";
  1477. pthreadMainJs = locateFile(pthreadMainJs);
  1478. var newWorkers = [];
  1479. for (var i = 0; i < numWorkers; ++i) {
  1480. newWorkers.push(new Worker(pthreadMainJs))
  1481. }
  1482. return newWorkers
  1483. },
  1484. getNewWorker: function() {
  1485. if (PThread.unusedWorkers.length == 0) PThread.allocateUnusedWorkers(1);
  1486. if (PThread.unusedWorkers.length > 0) return PThread.unusedWorkers.pop();
  1487. else return null
  1488. },
  1489. busySpinWait: function(msecs) {
  1490. var t = performance.now() + msecs;
  1491. while (performance.now() < t) {}
  1492. }
  1493. };
  1494. function ___call_main(argc, argv) {
  1495. var returnCode = _main(argc, argv);
  1496. if (!noExitRuntime) postMessage({
  1497. cmd: "exitProcess",
  1498. returnCode: returnCode
  1499. });
  1500. return returnCode
  1501. }
  1502. function _emscripten_get_now() {
  1503. abort()
  1504. }
  1505. function _emscripten_get_now_is_monotonic() {
  1506. return 0 || ENVIRONMENT_IS_NODE || typeof dateNow !== "undefined" || typeof performance === "object" && performance && typeof performance["now"] === "function"
  1507. }
  1508. function ___setErrNo(value) {
  1509. if (Module["___errno_location"]) HEAP32[Module["___errno_location"]() >> 2] = value;
  1510. else err("failed to set errno from JS");
  1511. return value
  1512. }
  1513. function _clock_gettime(clk_id, tp) {
  1514. var now;
  1515. if (clk_id === 0) {
  1516. now = Date.now()
  1517. } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
  1518. now = _emscripten_get_now()
  1519. } else {
  1520. ___setErrNo(28);
  1521. return - 1
  1522. }
  1523. HEAP32[tp >> 2] = now / 1e3 | 0;
  1524. HEAP32[tp + 4 >> 2] = now % 1e3 * 1e3 * 1e3 | 0;
  1525. return 0
  1526. }
  1527. function ___lock() {}
  1528. var PATH = {
  1529. splitPath: function(filename) {
  1530. var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
  1531. return splitPathRe.exec(filename).slice(1)
  1532. },
  1533. normalizeArray: function(parts, allowAboveRoot) {
  1534. var up = 0;
  1535. for (var i = parts.length - 1; i >= 0; i--) {
  1536. var last = parts[i];
  1537. if (last === ".") {
  1538. parts.splice(i, 1)
  1539. } else if (last === "..") {
  1540. parts.splice(i, 1);
  1541. up++
  1542. } else if (up) {
  1543. parts.splice(i, 1);
  1544. up--
  1545. }
  1546. }
  1547. if (allowAboveRoot) {
  1548. for (; up; up--) {
  1549. parts.unshift("..")
  1550. }
  1551. }
  1552. return parts
  1553. },
  1554. normalize: function(path) {
  1555. var isAbsolute = path.charAt(0) === "/",
  1556. trailingSlash = path.substr( - 1) === "/";
  1557. path = PATH.normalizeArray(path.split("/").filter(function(p) {
  1558. return !! p
  1559. }), !isAbsolute).join("/");
  1560. if (!path && !isAbsolute) {
  1561. path = "."
  1562. }
  1563. if (path && trailingSlash) {
  1564. path += "/"
  1565. }
  1566. return (isAbsolute ? "/": "") + path
  1567. },
  1568. dirname: function(path) {
  1569. var result = PATH.splitPath(path),
  1570. root = result[0],
  1571. dir = result[1];
  1572. if (!root && !dir) {
  1573. return "."
  1574. }
  1575. if (dir) {
  1576. dir = dir.substr(0, dir.length - 1)
  1577. }
  1578. return root + dir
  1579. },
  1580. basename: function(path) {
  1581. if (path === "/") return "/";
  1582. var lastSlash = path.lastIndexOf("/");
  1583. if (lastSlash === -1) return path;
  1584. return path.substr(lastSlash + 1)
  1585. },
  1586. extname: function(path) {
  1587. return PATH.splitPath(path)[3]
  1588. },
  1589. join: function() {
  1590. var paths = Array.prototype.slice.call(arguments, 0);
  1591. return PATH.normalize(paths.join("/"))
  1592. },
  1593. join2: function(l, r) {
  1594. return PATH.normalize(l + "/" + r)
  1595. }
  1596. };
  1597. var PATH_FS = {
  1598. resolve: function() {
  1599. var resolvedPath = "",
  1600. resolvedAbsolute = false;
  1601. for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
  1602. var path = i >= 0 ? arguments[i] : FS.cwd();
  1603. if (typeof path !== "string") {
  1604. throw new TypeError("Arguments to path.resolve must be strings")
  1605. } else if (!path) {
  1606. return ""
  1607. }
  1608. resolvedPath = path + "/" + resolvedPath;
  1609. resolvedAbsolute = path.charAt(0) === "/"
  1610. }
  1611. resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter(function(p) {
  1612. return !! p
  1613. }), !resolvedAbsolute).join("/");
  1614. return (resolvedAbsolute ? "/": "") + resolvedPath || "."
  1615. },
  1616. relative: function(from, to) {
  1617. from = PATH_FS.resolve(from).substr(1);
  1618. to = PATH_FS.resolve(to).substr(1);
  1619. function trim(arr) {
  1620. var start = 0;
  1621. for (; start < arr.length; start++) {
  1622. if (arr[start] !== "") break
  1623. }
  1624. var end = arr.length - 1;
  1625. for (; end >= 0; end--) {
  1626. if (arr[end] !== "") break
  1627. }
  1628. if (start > end) return [];
  1629. return arr.slice(start, end - start + 1)
  1630. }
  1631. var fromParts = trim(from.split("/"));
  1632. var toParts = trim(to.split("/"));
  1633. var length = Math.min(fromParts.length, toParts.length);
  1634. var samePartsLength = length;
  1635. for (var i = 0; i < length; i++) {
  1636. if (fromParts[i] !== toParts[i]) {
  1637. samePartsLength = i;
  1638. break
  1639. }
  1640. }
  1641. var outputParts = [];
  1642. for (var i = samePartsLength; i < fromParts.length; i++) {
  1643. outputParts.push("..")
  1644. }
  1645. outputParts = outputParts.concat(toParts.slice(samePartsLength));
  1646. return outputParts.join("/")
  1647. }
  1648. };
  1649. var TTY = {
  1650. ttys: [],
  1651. init: function() {},
  1652. shutdown: function() {},
  1653. register: function(dev, ops) {
  1654. TTY.ttys[dev] = {
  1655. input: [],
  1656. output: [],
  1657. ops: ops
  1658. };
  1659. FS.registerDevice(dev, TTY.stream_ops)
  1660. },
  1661. stream_ops: {
  1662. open: function(stream) {
  1663. var tty = TTY.ttys[stream.node.rdev];
  1664. if (!tty) {
  1665. throw new FS.ErrnoError(43)
  1666. }
  1667. stream.tty = tty;
  1668. stream.seekable = false
  1669. },
  1670. close: function(stream) {
  1671. stream.tty.ops.flush(stream.tty)
  1672. },
  1673. flush: function(stream) {
  1674. stream.tty.ops.flush(stream.tty)
  1675. },
  1676. read: function(stream, buffer, offset, length, pos) {
  1677. if (!stream.tty || !stream.tty.ops.get_char) {
  1678. throw new FS.ErrnoError(60)
  1679. }
  1680. var bytesRead = 0;
  1681. for (var i = 0; i < length; i++) {
  1682. var result;
  1683. try {
  1684. result = stream.tty.ops.get_char(stream.tty)
  1685. } catch(e) {
  1686. throw new FS.ErrnoError(29)
  1687. }
  1688. if (result === undefined && bytesRead === 0) {
  1689. throw new FS.ErrnoError(6)
  1690. }
  1691. if (result === null || result === undefined) break;
  1692. bytesRead++;
  1693. buffer[offset + i] = result
  1694. }
  1695. if (bytesRead) {
  1696. stream.node.timestamp = Date.now()
  1697. }
  1698. return bytesRead
  1699. },
  1700. write: function(stream, buffer, offset, length, pos) {
  1701. if (!stream.tty || !stream.tty.ops.put_char) {
  1702. throw new FS.ErrnoError(60)
  1703. }
  1704. try {
  1705. for (var i = 0; i < length; i++) {
  1706. stream.tty.ops.put_char(stream.tty, buffer[offset + i])
  1707. }
  1708. } catch(e) {
  1709. throw new FS.ErrnoError(29)
  1710. }
  1711. if (length) {
  1712. stream.node.timestamp = Date.now()
  1713. }
  1714. return i
  1715. }
  1716. },
  1717. default_tty_ops: {
  1718. get_char: function(tty) {
  1719. if (!tty.input.length) {
  1720. var result = null;
  1721. if (ENVIRONMENT_IS_NODE) {
  1722. var BUFSIZE = 256;
  1723. var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE);
  1724. var bytesRead = 0;
  1725. try {
  1726. bytesRead = fs.readSync(process.stdin.fd, buf, 0, BUFSIZE, null)
  1727. } catch(e) {
  1728. if (e.toString().indexOf("EOF") != -1) bytesRead = 0;
  1729. else throw e
  1730. }
  1731. if (bytesRead > 0) {
  1732. result = buf.slice(0, bytesRead).toString("utf-8")
  1733. } else {
  1734. result = null
  1735. }
  1736. } else if (typeof window != "undefined" && typeof window.prompt == "function") {
  1737. result = window.prompt("Input: ");
  1738. if (result !== null) {
  1739. result += "\n"
  1740. }
  1741. } else if (typeof readline == "function") {
  1742. result = readline();
  1743. if (result !== null) {
  1744. result += "\n"
  1745. }
  1746. }
  1747. if (!result) {
  1748. return null
  1749. }
  1750. tty.input = intArrayFromString(result, true)
  1751. }
  1752. return tty.input.shift()
  1753. },
  1754. put_char: function(tty, val) {
  1755. if (val === null || val === 10) {
  1756. out(UTF8ArrayToString(tty.output, 0));
  1757. tty.output = []
  1758. } else {
  1759. if (val != 0) tty.output.push(val)
  1760. }
  1761. },
  1762. flush: function(tty) {
  1763. if (tty.output && tty.output.length > 0) {
  1764. out(UTF8ArrayToString(tty.output, 0));
  1765. tty.output = []
  1766. }
  1767. }
  1768. },
  1769. default_tty1_ops: {
  1770. put_char: function(tty, val) {
  1771. if (val === null || val === 10) {
  1772. err(UTF8ArrayToString(tty.output, 0));
  1773. tty.output = []
  1774. } else {
  1775. if (val != 0) tty.output.push(val)
  1776. }
  1777. },
  1778. flush: function(tty) {
  1779. if (tty.output && tty.output.length > 0) {
  1780. err(UTF8ArrayToString(tty.output, 0));
  1781. tty.output = []
  1782. }
  1783. }
  1784. }
  1785. };
  1786. var MEMFS = {
  1787. ops_table: null,
  1788. mount: function(mount) {
  1789. return MEMFS.createNode(null, "/", 16384 | 511, 0)
  1790. },
  1791. createNode: function(parent, name, mode, dev) {
  1792. if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
  1793. throw new FS.ErrnoError(63)
  1794. }
  1795. if (!MEMFS.ops_table) {
  1796. MEMFS.ops_table = {
  1797. dir: {
  1798. node: {
  1799. getattr: MEMFS.node_ops.getattr,
  1800. setattr: MEMFS.node_ops.setattr,
  1801. lookup: MEMFS.node_ops.lookup,
  1802. mknod: MEMFS.node_ops.mknod,
  1803. rename: MEMFS.node_ops.rename,
  1804. unlink: MEMFS.node_ops.unlink,
  1805. rmdir: MEMFS.node_ops.rmdir,
  1806. readdir: MEMFS.node_ops.readdir,
  1807. symlink: MEMFS.node_ops.symlink
  1808. },
  1809. stream: {
  1810. llseek: MEMFS.stream_ops.llseek
  1811. }
  1812. },
  1813. file: {
  1814. node: {
  1815. getattr: MEMFS.node_ops.getattr,
  1816. setattr: MEMFS.node_ops.setattr
  1817. },
  1818. stream: {
  1819. llseek: MEMFS.stream_ops.llseek,
  1820. read: MEMFS.stream_ops.read,
  1821. write: MEMFS.stream_ops.write,
  1822. allocate: MEMFS.stream_ops.allocate,
  1823. mmap: MEMFS.stream_ops.mmap,
  1824. msync: MEMFS.stream_ops.msync
  1825. }
  1826. },
  1827. link: {
  1828. node: {
  1829. getattr: MEMFS.node_ops.getattr,
  1830. setattr: MEMFS.node_ops.setattr,
  1831. readlink: MEMFS.node_ops.readlink
  1832. },
  1833. stream: {}
  1834. },
  1835. chrdev: {
  1836. node: {
  1837. getattr: MEMFS.node_ops.getattr,
  1838. setattr: MEMFS.node_ops.setattr
  1839. },
  1840. stream: FS.chrdev_stream_ops
  1841. }
  1842. }
  1843. }
  1844. var node = FS.createNode(parent, name, mode, dev);
  1845. if (FS.isDir(node.mode)) {
  1846. node.node_ops = MEMFS.ops_table.dir.node;
  1847. node.stream_ops = MEMFS.ops_table.dir.stream;
  1848. node.contents = {}
  1849. } else if (FS.isFile(node.mode)) {
  1850. node.node_ops = MEMFS.ops_table.file.node;
  1851. node.stream_ops = MEMFS.ops_table.file.stream;
  1852. node.usedBytes = 0;
  1853. node.contents = null
  1854. } else if (FS.isLink(node.mode)) {
  1855. node.node_ops = MEMFS.ops_table.link.node;
  1856. node.stream_ops = MEMFS.ops_table.link.stream
  1857. } else if (FS.isChrdev(node.mode)) {
  1858. node.node_ops = MEMFS.ops_table.chrdev.node;
  1859. node.stream_ops = MEMFS.ops_table.chrdev.stream
  1860. }
  1861. node.timestamp = Date.now();
  1862. if (parent) {
  1863. parent.contents[name] = node
  1864. }
  1865. return node
  1866. },
  1867. getFileDataAsRegularArray: function(node) {
  1868. if (node.contents && node.contents.subarray) {
  1869. var arr = [];
  1870. for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);
  1871. return arr
  1872. }
  1873. return node.contents
  1874. },
  1875. getFileDataAsTypedArray: function(node) {
  1876. if (!node.contents) return new Uint8Array;
  1877. if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);
  1878. return new Uint8Array(node.contents)
  1879. },
  1880. expandFileStorage: function(node, newCapacity) {
  1881. var prevCapacity = node.contents ? node.contents.length: 0;
  1882. if (prevCapacity >= newCapacity) return;
  1883. var CAPACITY_DOUBLING_MAX = 1024 * 1024;
  1884. newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) | 0);
  1885. if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);
  1886. var oldContents = node.contents;
  1887. node.contents = new Uint8Array(newCapacity);
  1888. if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);
  1889. return
  1890. },
  1891. resizeFileStorage: function(node, newSize) {
  1892. if (node.usedBytes == newSize) return;
  1893. if (newSize == 0) {
  1894. node.contents = null;
  1895. node.usedBytes = 0;
  1896. return
  1897. }
  1898. if (!node.contents || node.contents.subarray) {
  1899. var oldContents = node.contents;
  1900. node.contents = new Uint8Array(new ArrayBuffer(newSize));
  1901. if (oldContents) {
  1902. node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)))
  1903. }
  1904. node.usedBytes = newSize;
  1905. return
  1906. }
  1907. if (!node.contents) node.contents = [];
  1908. if (node.contents.length > newSize) node.contents.length = newSize;
  1909. else while (node.contents.length < newSize) node.contents.push(0);
  1910. node.usedBytes = newSize
  1911. },
  1912. node_ops: {
  1913. getattr: function(node) {
  1914. var attr = {};
  1915. attr.dev = FS.isChrdev(node.mode) ? node.id: 1;
  1916. attr.ino = node.id;
  1917. attr.mode = node.mode;
  1918. attr.nlink = 1;
  1919. attr.uid = 0;
  1920. attr.gid = 0;
  1921. attr.rdev = node.rdev;
  1922. if (FS.isDir(node.mode)) {
  1923. attr.size = 4096
  1924. } else if (FS.isFile(node.mode)) {
  1925. attr.size = node.usedBytes
  1926. } else if (FS.isLink(node.mode)) {
  1927. attr.size = node.link.length
  1928. } else {
  1929. attr.size = 0
  1930. }
  1931. attr.atime = new Date(node.timestamp);
  1932. attr.mtime = new Date(node.timestamp);
  1933. attr.ctime = new Date(node.timestamp);
  1934. attr.blksize = 4096;
  1935. attr.blocks = Math.ceil(attr.size / attr.blksize);
  1936. return attr
  1937. },
  1938. setattr: function(node, attr) {
  1939. if (attr.mode !== undefined) {
  1940. node.mode = attr.mode
  1941. }
  1942. if (attr.timestamp !== undefined) {
  1943. node.timestamp = attr.timestamp
  1944. }
  1945. if (attr.size !== undefined) {
  1946. MEMFS.resizeFileStorage(node, attr.size)
  1947. }
  1948. },
  1949. lookup: function(parent, name) {
  1950. throw FS.genericErrors[44]
  1951. },
  1952. mknod: function(parent, name, mode, dev) {
  1953. return MEMFS.createNode(parent, name, mode, dev)
  1954. },
  1955. rename: function(old_node, new_dir, new_name) {
  1956. if (FS.isDir(old_node.mode)) {
  1957. var new_node;
  1958. try {
  1959. new_node = FS.lookupNode(new_dir, new_name)
  1960. } catch(e) {}
  1961. if (new_node) {
  1962. for (var i in new_node.contents) {
  1963. throw new FS.ErrnoError(55)
  1964. }
  1965. }
  1966. }
  1967. delete old_node.parent.contents[old_node.name];
  1968. old_node.name = new_name;
  1969. new_dir.contents[new_name] = old_node;
  1970. old_node.parent = new_dir
  1971. },
  1972. unlink: function(parent, name) {
  1973. delete parent.contents[name]
  1974. },
  1975. rmdir: function(parent, name) {
  1976. var node = FS.lookupNode(parent, name);
  1977. for (var i in node.contents) {
  1978. throw new FS.ErrnoError(55)
  1979. }
  1980. delete parent.contents[name]
  1981. },
  1982. readdir: function(node) {
  1983. var entries = [".", ".."];
  1984. for (var key in node.contents) {
  1985. if (!node.contents.hasOwnProperty(key)) {
  1986. continue
  1987. }
  1988. entries.push(key)
  1989. }
  1990. return entries
  1991. },
  1992. symlink: function(parent, newname, oldpath) {
  1993. var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);
  1994. node.link = oldpath;
  1995. return node
  1996. },
  1997. readlink: function(node) {
  1998. if (!FS.isLink(node.mode)) {
  1999. throw new FS.ErrnoError(28)
  2000. }
  2001. return node.link
  2002. }
  2003. },
  2004. stream_ops: {
  2005. read: function(stream, buffer, offset, length, position) {
  2006. var contents = stream.node.contents;
  2007. if (position >= stream.node.usedBytes) return 0;
  2008. var size = Math.min(stream.node.usedBytes - position, length);
  2009. assert(size >= 0);
  2010. if (size > 8 && contents.subarray) {
  2011. buffer.set(contents.subarray(position, position + size), offset)
  2012. } else {
  2013. for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]
  2014. }
  2015. return size
  2016. },
  2017. write: function(stream, buffer, offset, length, position, canOwn) {
  2018. if (!length) return 0;
  2019. var node = stream.node;
  2020. node.timestamp = Date.now();
  2021. if (buffer.subarray && (!node.contents || node.contents.subarray)) {
  2022. if (canOwn) {
  2023. assert(position === 0, "canOwn must imply no weird position inside the file");
  2024. node.contents = buffer.subarray(offset, offset + length);
  2025. node.usedBytes = length;
  2026. return length
  2027. } else if (node.usedBytes === 0 && position === 0) {
  2028. node.contents = new Uint8Array(buffer.subarray(offset, offset + length));
  2029. node.usedBytes = length;
  2030. return length
  2031. } else if (position + length <= node.usedBytes) {
  2032. node.contents.set(buffer.subarray(offset, offset + length), position);
  2033. return length
  2034. }
  2035. }
  2036. MEMFS.expandFileStorage(node, position + length);
  2037. if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);
  2038. else {
  2039. for (var i = 0; i < length; i++) {
  2040. node.contents[position + i] = buffer[offset + i]
  2041. }
  2042. }
  2043. node.usedBytes = Math.max(node.usedBytes, position + length);
  2044. return length
  2045. },
  2046. llseek: function(stream, offset, whence) {
  2047. var position = offset;
  2048. if (whence === 1) {
  2049. position += stream.position
  2050. } else if (whence === 2) {
  2051. if (FS.isFile(stream.node.mode)) {
  2052. position += stream.node.usedBytes
  2053. }
  2054. }
  2055. if (position < 0) {
  2056. throw new FS.ErrnoError(28)
  2057. }
  2058. return position
  2059. },
  2060. allocate: function(stream, offset, length) {
  2061. MEMFS.expandFileStorage(stream.node, offset + length);
  2062. stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length)
  2063. },
  2064. mmap: function(stream, buffer, offset, length, position, prot, flags) {
  2065. if (!FS.isFile(stream.node.mode)) {
  2066. throw new FS.ErrnoError(43)
  2067. }
  2068. var ptr;
  2069. var allocated;
  2070. var contents = stream.node.contents;
  2071. if (! (flags & 2) && (contents.buffer === buffer || contents.buffer === buffer.buffer)) {
  2072. allocated = false;
  2073. ptr = contents.byteOffset
  2074. } else {
  2075. if (position > 0 || position + length < stream.node.usedBytes) {
  2076. if (contents.subarray) {
  2077. contents = contents.subarray(position, position + length)
  2078. } else {
  2079. contents = Array.prototype.slice.call(contents, position, position + length)
  2080. }
  2081. }
  2082. allocated = true;
  2083. var fromHeap = buffer.buffer == HEAP8.buffer;
  2084. ptr = _malloc(length);
  2085. if (!ptr) {
  2086. throw new FS.ErrnoError(48)
  2087. } (fromHeap ? HEAP8: buffer).set(contents, ptr)
  2088. }
  2089. return {
  2090. ptr: ptr,
  2091. allocated: allocated
  2092. }
  2093. },
  2094. msync: function(stream, buffer, offset, length, mmapFlags) {
  2095. if (!FS.isFile(stream.node.mode)) {
  2096. throw new FS.ErrnoError(43)
  2097. }
  2098. if (mmapFlags & 2) {
  2099. return 0
  2100. }
  2101. var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
  2102. return 0
  2103. }
  2104. }
  2105. };
  2106. var IDBFS = {
  2107. dbs: {},
  2108. indexedDB: function() {
  2109. if (typeof indexedDB !== "undefined") return indexedDB;
  2110. var ret = null;
  2111. if (typeof window === "object") ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
  2112. assert(ret, "IDBFS used, but indexedDB not supported");
  2113. return ret
  2114. },
  2115. DB_VERSION: 21,
  2116. DB_STORE_NAME: "FILE_DATA",
  2117. mount: function(mount) {
  2118. return MEMFS.mount.apply(null, arguments)
  2119. },
  2120. syncfs: function(mount, populate, callback) {
  2121. IDBFS.getLocalSet(mount,
  2122. function(err, local) {
  2123. if (err) return callback(err);
  2124. IDBFS.getRemoteSet(mount,
  2125. function(err, remote) {
  2126. if (err) return callback(err);
  2127. var src = populate ? remote: local;
  2128. var dst = populate ? local: remote;
  2129. IDBFS.reconcile(src, dst, callback)
  2130. })
  2131. })
  2132. },
  2133. getDB: function(name, callback) {
  2134. var db = IDBFS.dbs[name];
  2135. if (db) {
  2136. return callback(null, db)
  2137. }
  2138. var req;
  2139. try {
  2140. req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION)
  2141. } catch(e) {
  2142. return callback(e)
  2143. }
  2144. if (!req) {
  2145. return callback("Unable to connect to IndexedDB")
  2146. }
  2147. req.onupgradeneeded = function(e) {
  2148. var db = e.target.result;
  2149. var transaction = e.target.transaction;
  2150. var fileStore;
  2151. if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
  2152. fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME)
  2153. } else {
  2154. fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME)
  2155. }
  2156. if (!fileStore.indexNames.contains("timestamp")) {
  2157. fileStore.createIndex("timestamp", "timestamp", {
  2158. unique: false
  2159. })
  2160. }
  2161. };
  2162. req.onsuccess = function() {
  2163. db = req.result;
  2164. IDBFS.dbs[name] = db;
  2165. callback(null, db)
  2166. };
  2167. req.onerror = function(e) {
  2168. callback(this.error);
  2169. e.preventDefault()
  2170. }
  2171. },
  2172. getLocalSet: function(mount, callback) {
  2173. var entries = {};
  2174. function isRealDir(p) {
  2175. return p !== "." && p !== ".."
  2176. }
  2177. function toAbsolute(root) {
  2178. return function(p) {
  2179. return PATH.join2(root, p)
  2180. }
  2181. }
  2182. var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));
  2183. while (check.length) {
  2184. var path = check.pop();
  2185. var stat;
  2186. try {
  2187. stat = FS.stat(path)
  2188. } catch(e) {
  2189. return callback(e)
  2190. }
  2191. if (FS.isDir(stat.mode)) {
  2192. check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))
  2193. }
  2194. entries[path] = {
  2195. timestamp: stat.mtime
  2196. }
  2197. }
  2198. return callback(null, {
  2199. type: "local",
  2200. entries: entries
  2201. })
  2202. },
  2203. getRemoteSet: function(mount, callback) {
  2204. var entries = {};
  2205. IDBFS.getDB(mount.mountpoint,
  2206. function(err, db) {
  2207. if (err) return callback(err);
  2208. try {
  2209. var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readonly");
  2210. transaction.onerror = function(e) {
  2211. callback(this.error);
  2212. e.preventDefault()
  2213. };
  2214. var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
  2215. var index = store.index("timestamp");
  2216. index.openKeyCursor().onsuccess = function(event) {
  2217. var cursor = event.target.result;
  2218. if (!cursor) {
  2219. return callback(null, {
  2220. type: "remote",
  2221. db: db,
  2222. entries: entries
  2223. })
  2224. }
  2225. entries[cursor.primaryKey] = {
  2226. timestamp: cursor.key
  2227. };
  2228. cursor.
  2229. continue ()
  2230. }
  2231. } catch(e) {
  2232. return callback(e)
  2233. }
  2234. })
  2235. },
  2236. loadLocalEntry: function(path, callback) {
  2237. var stat, node;
  2238. try {
  2239. var lookup = FS.lookupPath(path);
  2240. node = lookup.node;
  2241. stat = FS.stat(path)
  2242. } catch(e) {
  2243. return callback(e)
  2244. }
  2245. if (FS.isDir(stat.mode)) {
  2246. return callback(null, {
  2247. timestamp: stat.mtime,
  2248. mode: stat.mode
  2249. })
  2250. } else if (FS.isFile(stat.mode)) {
  2251. node.contents = MEMFS.getFileDataAsTypedArray(node);
  2252. return callback(null, {
  2253. timestamp: stat.mtime,
  2254. mode: stat.mode,
  2255. contents: node.contents
  2256. })
  2257. } else {
  2258. return callback(new Error("node type not supported"))
  2259. }
  2260. },
  2261. storeLocalEntry: function(path, entry, callback) {
  2262. try {
  2263. if (FS.isDir(entry.mode)) {
  2264. FS.mkdir(path, entry.mode)
  2265. } else if (FS.isFile(entry.mode)) {
  2266. FS.writeFile(path, entry.contents, {
  2267. canOwn: true
  2268. })
  2269. } else {
  2270. return callback(new Error("node type not supported"))
  2271. }
  2272. FS.chmod(path, entry.mode);
  2273. FS.utime(path, entry.timestamp, entry.timestamp)
  2274. } catch(e) {
  2275. return callback(e)
  2276. }
  2277. callback(null)
  2278. },
  2279. removeLocalEntry: function(path, callback) {
  2280. try {
  2281. var lookup = FS.lookupPath(path);
  2282. var stat = FS.stat(path);
  2283. if (FS.isDir(stat.mode)) {
  2284. FS.rmdir(path)
  2285. } else if (FS.isFile(stat.mode)) {
  2286. FS.unlink(path)
  2287. }
  2288. } catch(e) {
  2289. return callback(e)
  2290. }
  2291. callback(null)
  2292. },
  2293. loadRemoteEntry: function(store, path, callback) {
  2294. var req = store.get(path);
  2295. req.onsuccess = function(event) {
  2296. callback(null, event.target.result)
  2297. };
  2298. req.onerror = function(e) {
  2299. callback(this.error);
  2300. e.preventDefault()
  2301. }
  2302. },
  2303. storeRemoteEntry: function(store, path, entry, callback) {
  2304. var req = store.put(entry, path);
  2305. req.onsuccess = function() {
  2306. callback(null)
  2307. };
  2308. req.onerror = function(e) {
  2309. callback(this.error);
  2310. e.preventDefault()
  2311. }
  2312. },
  2313. removeRemoteEntry: function(store, path, callback) {
  2314. var req = store.delete(path);
  2315. req.onsuccess = function() {
  2316. callback(null)
  2317. };
  2318. req.onerror = function(e) {
  2319. callback(this.error);
  2320. e.preventDefault()
  2321. }
  2322. },
  2323. reconcile: function(src, dst, callback) {
  2324. var total = 0;
  2325. var create = [];
  2326. Object.keys(src.entries).forEach(function(key) {
  2327. var e = src.entries[key];
  2328. var e2 = dst.entries[key];
  2329. if (!e2 || e.timestamp > e2.timestamp) {
  2330. create.push(key);
  2331. total++
  2332. }
  2333. });
  2334. var remove = [];
  2335. Object.keys(dst.entries).forEach(function(key) {
  2336. var e = dst.entries[key];
  2337. var e2 = src.entries[key];
  2338. if (!e2) {
  2339. remove.push(key);
  2340. total++
  2341. }
  2342. });
  2343. if (!total) {
  2344. return callback(null)
  2345. }
  2346. var errored = false;
  2347. var db = src.type === "remote" ? src.db: dst.db;
  2348. var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readwrite");
  2349. var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
  2350. function done(err) {
  2351. if (err && !errored) {
  2352. errored = true;
  2353. return callback(err)
  2354. }
  2355. }
  2356. transaction.onerror = function(e) {
  2357. done(this.error);
  2358. e.preventDefault()
  2359. };
  2360. transaction.oncomplete = function(e) {
  2361. if (!errored) {
  2362. callback(null)
  2363. }
  2364. };
  2365. create.sort().forEach(function(path) {
  2366. if (dst.type === "local") {
  2367. IDBFS.loadRemoteEntry(store, path,
  2368. function(err, entry) {
  2369. if (err) return done(err);
  2370. IDBFS.storeLocalEntry(path, entry, done)
  2371. })
  2372. } else {
  2373. IDBFS.loadLocalEntry(path,
  2374. function(err, entry) {
  2375. if (err) return done(err);
  2376. IDBFS.storeRemoteEntry(store, path, entry, done)
  2377. })
  2378. }
  2379. });
  2380. remove.sort().reverse().forEach(function(path) {
  2381. if (dst.type === "local") {
  2382. IDBFS.removeLocalEntry(path, done)
  2383. } else {
  2384. IDBFS.removeRemoteEntry(store, path, done)
  2385. }
  2386. })
  2387. }
  2388. };
  2389. var NODEFS = {
  2390. isWindows: false,
  2391. staticInit: function() {
  2392. NODEFS.isWindows = !!process.platform.match(/^win/);
  2393. var flags = process["binding"]("constants");
  2394. if (flags["fs"]) {
  2395. flags = flags["fs"]
  2396. }
  2397. NODEFS.flagsForNodeMap = {
  2398. 1024 : flags["O_APPEND"],
  2399. 64 : flags["O_CREAT"],
  2400. 128 : flags["O_EXCL"],
  2401. 0 : flags["O_RDONLY"],
  2402. 2 : flags["O_RDWR"],
  2403. 4096 : flags["O_SYNC"],
  2404. 512 : flags["O_TRUNC"],
  2405. 1 : flags["O_WRONLY"]
  2406. }
  2407. },
  2408. bufferFrom: function(arrayBuffer) {
  2409. return Buffer["alloc"] ? Buffer.from(arrayBuffer) : new Buffer(arrayBuffer)
  2410. },
  2411. convertNodeCode: function(e) {
  2412. var code = e.code;
  2413. assert(code in ERRNO_CODES);
  2414. return ERRNO_CODES[code]
  2415. },
  2416. mount: function(mount) {
  2417. assert(ENVIRONMENT_HAS_NODE);
  2418. return NODEFS.createNode(null, "/", NODEFS.getMode(mount.opts.root), 0)
  2419. },
  2420. createNode: function(parent, name, mode, dev) {
  2421. if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
  2422. throw new FS.ErrnoError(28)
  2423. }
  2424. var node = FS.createNode(parent, name, mode);
  2425. node.node_ops = NODEFS.node_ops;
  2426. node.stream_ops = NODEFS.stream_ops;
  2427. return node
  2428. },
  2429. getMode: function(path) {
  2430. var stat;
  2431. try {
  2432. stat = fs.lstatSync(path);
  2433. if (NODEFS.isWindows) {
  2434. stat.mode = stat.mode | (stat.mode & 292) >> 2
  2435. }
  2436. } catch(e) {
  2437. if (!e.code) throw e;
  2438. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2439. }
  2440. return stat.mode
  2441. },
  2442. realPath: function(node) {
  2443. var parts = [];
  2444. while (node.parent !== node) {
  2445. parts.push(node.name);
  2446. node = node.parent
  2447. }
  2448. parts.push(node.mount.opts.root);
  2449. parts.reverse();
  2450. return PATH.join.apply(null, parts)
  2451. },
  2452. flagsForNode: function(flags) {
  2453. flags &= ~2097152;
  2454. flags &= ~2048;
  2455. flags &= ~32768;
  2456. flags &= ~524288;
  2457. var newFlags = 0;
  2458. for (var k in NODEFS.flagsForNodeMap) {
  2459. if (flags & k) {
  2460. newFlags |= NODEFS.flagsForNodeMap[k];
  2461. flags ^= k
  2462. }
  2463. }
  2464. if (!flags) {
  2465. return newFlags
  2466. } else {
  2467. throw new FS.ErrnoError(28)
  2468. }
  2469. },
  2470. node_ops: {
  2471. getattr: function(node) {
  2472. var path = NODEFS.realPath(node);
  2473. var stat;
  2474. try {
  2475. stat = fs.lstatSync(path)
  2476. } catch(e) {
  2477. if (!e.code) throw e;
  2478. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2479. }
  2480. if (NODEFS.isWindows && !stat.blksize) {
  2481. stat.blksize = 4096
  2482. }
  2483. if (NODEFS.isWindows && !stat.blocks) {
  2484. stat.blocks = (stat.size + stat.blksize - 1) / stat.blksize | 0
  2485. }
  2486. return {
  2487. dev: stat.dev,
  2488. ino: stat.ino,
  2489. mode: stat.mode,
  2490. nlink: stat.nlink,
  2491. uid: stat.uid,
  2492. gid: stat.gid,
  2493. rdev: stat.rdev,
  2494. size: stat.size,
  2495. atime: stat.atime,
  2496. mtime: stat.mtime,
  2497. ctime: stat.ctime,
  2498. blksize: stat.blksize,
  2499. blocks: stat.blocks
  2500. }
  2501. },
  2502. setattr: function(node, attr) {
  2503. var path = NODEFS.realPath(node);
  2504. try {
  2505. if (attr.mode !== undefined) {
  2506. fs.chmodSync(path, attr.mode);
  2507. node.mode = attr.mode
  2508. }
  2509. if (attr.timestamp !== undefined) {
  2510. var date = new Date(attr.timestamp);
  2511. fs.utimesSync(path, date, date)
  2512. }
  2513. if (attr.size !== undefined) {
  2514. fs.truncateSync(path, attr.size)
  2515. }
  2516. } catch(e) {
  2517. if (!e.code) throw e;
  2518. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2519. }
  2520. },
  2521. lookup: function(parent, name) {
  2522. var path = PATH.join2(NODEFS.realPath(parent), name);
  2523. var mode = NODEFS.getMode(path);
  2524. return NODEFS.createNode(parent, name, mode)
  2525. },
  2526. mknod: function(parent, name, mode, dev) {
  2527. var node = NODEFS.createNode(parent, name, mode, dev);
  2528. var path = NODEFS.realPath(node);
  2529. try {
  2530. if (FS.isDir(node.mode)) {
  2531. fs.mkdirSync(path, node.mode)
  2532. } else {
  2533. fs.writeFileSync(path, "", {
  2534. mode: node.mode
  2535. })
  2536. }
  2537. } catch(e) {
  2538. if (!e.code) throw e;
  2539. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2540. }
  2541. return node
  2542. },
  2543. rename: function(oldNode, newDir, newName) {
  2544. var oldPath = NODEFS.realPath(oldNode);
  2545. var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
  2546. try {
  2547. fs.renameSync(oldPath, newPath)
  2548. } catch(e) {
  2549. if (!e.code) throw e;
  2550. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2551. }
  2552. },
  2553. unlink: function(parent, name) {
  2554. var path = PATH.join2(NODEFS.realPath(parent), name);
  2555. try {
  2556. fs.unlinkSync(path)
  2557. } catch(e) {
  2558. if (!e.code) throw e;
  2559. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2560. }
  2561. },
  2562. rmdir: function(parent, name) {
  2563. var path = PATH.join2(NODEFS.realPath(parent), name);
  2564. try {
  2565. fs.rmdirSync(path)
  2566. } catch(e) {
  2567. if (!e.code) throw e;
  2568. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2569. }
  2570. },
  2571. readdir: function(node) {
  2572. var path = NODEFS.realPath(node);
  2573. try {
  2574. return fs.readdirSync(path)
  2575. } catch(e) {
  2576. if (!e.code) throw e;
  2577. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2578. }
  2579. },
  2580. symlink: function(parent, newName, oldPath) {
  2581. var newPath = PATH.join2(NODEFS.realPath(parent), newName);
  2582. try {
  2583. fs.symlinkSync(oldPath, newPath)
  2584. } catch(e) {
  2585. if (!e.code) throw e;
  2586. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2587. }
  2588. },
  2589. readlink: function(node) {
  2590. var path = NODEFS.realPath(node);
  2591. try {
  2592. path = fs.readlinkSync(path);
  2593. path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path);
  2594. return path
  2595. } catch(e) {
  2596. if (!e.code) throw e;
  2597. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2598. }
  2599. }
  2600. },
  2601. stream_ops: {
  2602. open: function(stream) {
  2603. var path = NODEFS.realPath(stream.node);
  2604. try {
  2605. if (FS.isFile(stream.node.mode)) {
  2606. stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags))
  2607. }
  2608. } catch(e) {
  2609. if (!e.code) throw e;
  2610. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2611. }
  2612. },
  2613. close: function(stream) {
  2614. try {
  2615. if (FS.isFile(stream.node.mode) && stream.nfd) {
  2616. fs.closeSync(stream.nfd)
  2617. }
  2618. } catch(e) {
  2619. if (!e.code) throw e;
  2620. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2621. }
  2622. },
  2623. read: function(stream, buffer, offset, length, position) {
  2624. if (length === 0) return 0;
  2625. try {
  2626. return fs.readSync(stream.nfd, NODEFS.bufferFrom(buffer.buffer), offset, length, position)
  2627. } catch(e) {
  2628. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2629. }
  2630. },
  2631. write: function(stream, buffer, offset, length, position) {
  2632. try {
  2633. return fs.writeSync(stream.nfd, NODEFS.bufferFrom(buffer.buffer), offset, length, position)
  2634. } catch(e) {
  2635. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2636. }
  2637. },
  2638. llseek: function(stream, offset, whence) {
  2639. var position = offset;
  2640. if (whence === 1) {
  2641. position += stream.position
  2642. } else if (whence === 2) {
  2643. if (FS.isFile(stream.node.mode)) {
  2644. try {
  2645. var stat = fs.fstatSync(stream.nfd);
  2646. position += stat.size
  2647. } catch(e) {
  2648. throw new FS.ErrnoError(NODEFS.convertNodeCode(e))
  2649. }
  2650. }
  2651. }
  2652. if (position < 0) {
  2653. throw new FS.ErrnoError(28)
  2654. }
  2655. return position
  2656. }
  2657. }
  2658. };
  2659. var WORKERFS = {
  2660. DIR_MODE: 16895,
  2661. FILE_MODE: 33279,
  2662. reader: null,
  2663. mount: function(mount) {
  2664. assert(ENVIRONMENT_IS_WORKER);
  2665. if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync;
  2666. var root = WORKERFS.createNode(null, "/", WORKERFS.DIR_MODE, 0);
  2667. var createdParents = {};
  2668. function ensureParent(path) {
  2669. var parts = path.split("/");
  2670. var parent = root;
  2671. for (var i = 0; i < parts.length - 1; i++) {
  2672. var curr = parts.slice(0, i + 1).join("/");
  2673. if (!createdParents[curr]) {
  2674. createdParents[curr] = WORKERFS.createNode(parent, parts[i], WORKERFS.DIR_MODE, 0)
  2675. }
  2676. parent = createdParents[curr]
  2677. }
  2678. return parent
  2679. }
  2680. function base(path) {
  2681. var parts = path.split("/");
  2682. return parts[parts.length - 1]
  2683. }
  2684. Array.prototype.forEach.call(mount.opts["files"] || [],
  2685. function(file) {
  2686. WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate)
  2687. }); (mount.opts["blobs"] || []).forEach(function(obj) {
  2688. WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"])
  2689. }); (mount.opts["packages"] || []).forEach(function(pack) {
  2690. pack["metadata"].files.forEach(function(file) {
  2691. var name = file.filename.substr(1);
  2692. WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack["blob"].slice(file.start, file.end))
  2693. })
  2694. });
  2695. return root
  2696. },
  2697. createNode: function(parent, name, mode, dev, contents, mtime) {
  2698. var node = FS.createNode(parent, name, mode);
  2699. node.mode = mode;
  2700. node.node_ops = WORKERFS.node_ops;
  2701. node.stream_ops = WORKERFS.stream_ops;
  2702. node.timestamp = (mtime || new Date).getTime();
  2703. assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE);
  2704. if (mode === WORKERFS.FILE_MODE) {
  2705. node.size = contents.size;
  2706. node.contents = contents
  2707. } else {
  2708. node.size = 4096;
  2709. node.contents = {}
  2710. }
  2711. if (parent) {
  2712. parent.contents[name] = node
  2713. }
  2714. return node
  2715. },
  2716. node_ops: {
  2717. getattr: function(node) {
  2718. return {
  2719. dev: 1,
  2720. ino: undefined,
  2721. mode: node.mode,
  2722. nlink: 1,
  2723. uid: 0,
  2724. gid: 0,
  2725. rdev: undefined,
  2726. size: node.size,
  2727. atime: new Date(node.timestamp),
  2728. mtime: new Date(node.timestamp),
  2729. ctime: new Date(node.timestamp),
  2730. blksize: 4096,
  2731. blocks: Math.ceil(node.size / 4096)
  2732. }
  2733. },
  2734. setattr: function(node, attr) {
  2735. if (attr.mode !== undefined) {
  2736. node.mode = attr.mode
  2737. }
  2738. if (attr.timestamp !== undefined) {
  2739. node.timestamp = attr.timestamp
  2740. }
  2741. },
  2742. lookup: function(parent, name) {
  2743. throw new FS.ErrnoError(44)
  2744. },
  2745. mknod: function(parent, name, mode, dev) {
  2746. throw new FS.ErrnoError(63)
  2747. },
  2748. rename: function(oldNode, newDir, newName) {
  2749. throw new FS.ErrnoError(63)
  2750. },
  2751. unlink: function(parent, name) {
  2752. throw new FS.ErrnoError(63)
  2753. },
  2754. rmdir: function(parent, name) {
  2755. throw new FS.ErrnoError(63)
  2756. },
  2757. readdir: function(node) {
  2758. var entries = [".", ".."];
  2759. for (var key in node.contents) {
  2760. if (!node.contents.hasOwnProperty(key)) {
  2761. continue
  2762. }
  2763. entries.push(key)
  2764. }
  2765. return entries
  2766. },
  2767. symlink: function(parent, newName, oldPath) {
  2768. throw new FS.ErrnoError(63)
  2769. },
  2770. readlink: function(node) {
  2771. throw new FS.ErrnoError(63)
  2772. }
  2773. },
  2774. stream_ops: {
  2775. read: function(stream, buffer, offset, length, position) {
  2776. if (position >= stream.node.size) return 0;
  2777. var chunk = stream.node.contents.slice(position, position + length);
  2778. var ab = WORKERFS.reader.readAsArrayBuffer(chunk);
  2779. buffer.set(new Uint8Array(ab), offset);
  2780. return chunk.size
  2781. },
  2782. write: function(stream, buffer, offset, length, position) {
  2783. throw new FS.ErrnoError(29)
  2784. },
  2785. llseek: function(stream, offset, whence) {
  2786. var position = offset;
  2787. if (whence === 1) {
  2788. position += stream.position
  2789. } else if (whence === 2) {
  2790. if (FS.isFile(stream.node.mode)) {
  2791. position += stream.node.size
  2792. }
  2793. }
  2794. if (position < 0) {
  2795. throw new FS.ErrnoError(28)
  2796. }
  2797. return position
  2798. }
  2799. }
  2800. };
  2801. var ERRNO_MESSAGES = {
  2802. 0 : "Success",
  2803. 1 : "Arg list too long",
  2804. 2 : "Permission denied",
  2805. 3 : "Address already in use",
  2806. 4 : "Address not available",
  2807. 5 : "Address family not supported by protocol family",
  2808. 6 : "No more processes",
  2809. 7 : "Socket already connected",
  2810. 8 : "Bad file number",
  2811. 9 : "Trying to read unreadable message",
  2812. 10 : "Mount device busy",
  2813. 11 : "Operation canceled",
  2814. 12 : "No children",
  2815. 13 : "Connection aborted",
  2816. 14 : "Connection refused",
  2817. 15 : "Connection reset by peer",
  2818. 16 : "File locking deadlock error",
  2819. 17 : "Destination address required",
  2820. 18 : "Math arg out of domain of func",
  2821. 19 : "Quota exceeded",
  2822. 20 : "File exists",
  2823. 21 : "Bad address",
  2824. 22 : "File too large",
  2825. 23 : "Host is unreachable",
  2826. 24 : "Identifier removed",
  2827. 25 : "Illegal byte sequence",
  2828. 26 : "Connection already in progress",
  2829. 27 : "Interrupted system call",
  2830. 28 : "Invalid argument",
  2831. 29 : "I/O error",
  2832. 30 : "Socket is already connected",
  2833. 31 : "Is a directory",
  2834. 32 : "Too many symbolic links",
  2835. 33 : "Too many open files",
  2836. 34 : "Too many links",
  2837. 35 : "Message too long",
  2838. 36 : "Multihop attempted",
  2839. 37 : "File or path name too long",
  2840. 38 : "Network interface is not configured",
  2841. 39 : "Connection reset by network",
  2842. 40 : "Network is unreachable",
  2843. 41 : "Too many open files in system",
  2844. 42 : "No buffer space available",
  2845. 43 : "No such device",
  2846. 44 : "No such file or directory",
  2847. 45 : "Exec format error",
  2848. 46 : "No record locks available",
  2849. 47 : "The link has been severed",
  2850. 48 : "Not enough core",
  2851. 49 : "No message of desired type",
  2852. 50 : "Protocol not available",
  2853. 51 : "No space left on device",
  2854. 52 : "Function not implemented",
  2855. 53 : "Socket is not connected",
  2856. 54 : "Not a directory",
  2857. 55 : "Directory not empty",
  2858. 56 : "State not recoverable",
  2859. 57 : "Socket operation on non-socket",
  2860. 59 : "Not a typewriter",
  2861. 60 : "No such device or address",
  2862. 61 : "Value too large for defined data type",
  2863. 62 : "Previous owner died",
  2864. 63 : "Not super-user",
  2865. 64 : "Broken pipe",
  2866. 65 : "Protocol error",
  2867. 66 : "Unknown protocol",
  2868. 67 : "Protocol wrong type for socket",
  2869. 68 : "Math result not representable",
  2870. 69 : "Read only file system",
  2871. 70 : "Illegal seek",
  2872. 71 : "No such process",
  2873. 72 : "Stale file handle",
  2874. 73 : "Connection timed out",
  2875. 74 : "Text file busy",
  2876. 75 : "Cross-device link",
  2877. 100 : "Device not a stream",
  2878. 101 : "Bad font file fmt",
  2879. 102 : "Invalid slot",
  2880. 103 : "Invalid request code",
  2881. 104 : "No anode",
  2882. 105 : "Block device required",
  2883. 106 : "Channel number out of range",
  2884. 107 : "Level 3 halted",
  2885. 108 : "Level 3 reset",
  2886. 109 : "Link number out of range",
  2887. 110 : "Protocol driver not attached",
  2888. 111 : "No CSI structure available",
  2889. 112 : "Level 2 halted",
  2890. 113 : "Invalid exchange",
  2891. 114 : "Invalid request descriptor",
  2892. 115 : "Exchange full",
  2893. 116 : "No data (for no delay io)",
  2894. 117 : "Timer expired",
  2895. 118 : "Out of streams resources",
  2896. 119 : "Machine is not on the network",
  2897. 120 : "Package not installed",
  2898. 121 : "The object is remote",
  2899. 122 : "Advertise error",
  2900. 123 : "Srmount error",
  2901. 124 : "Communication error on send",
  2902. 125 : "Cross mount point (not really error)",
  2903. 126 : "Given log. name not unique",
  2904. 127 : "f.d. invalid for this operation",
  2905. 128 : "Remote address changed",
  2906. 129 : "Can access a needed shared lib",
  2907. 130 : "Accessing a corrupted shared lib",
  2908. 131 : ".lib section in a.out corrupted",
  2909. 132 : "Attempting to link in too many libs",
  2910. 133 : "Attempting to exec a shared library",
  2911. 135 : "Streams pipe error",
  2912. 136 : "Too many users",
  2913. 137 : "Socket type not supported",
  2914. 138 : "Not supported",
  2915. 139 : "Protocol family not supported",
  2916. 140 : "Can't send after socket shutdown",
  2917. 141 : "Too many references",
  2918. 142 : "Host is down",
  2919. 148 : "No medium (in tape drive)",
  2920. 156 : "Level 2 not synchronized"
  2921. };
  2922. var FS = {
  2923. root: null,
  2924. mounts: [],
  2925. devices: {},
  2926. streams: [],
  2927. nextInode: 1,
  2928. nameTable: null,
  2929. currentPath: "/",
  2930. initialized: false,
  2931. ignorePermissions: true,
  2932. trackingDelegate: {},
  2933. tracking: {
  2934. openFlags: {
  2935. READ: 1,
  2936. WRITE: 2
  2937. }
  2938. },
  2939. ErrnoError: null,
  2940. genericErrors: {},
  2941. filesystems: null,
  2942. syncFSRequests: 0,
  2943. handleFSError: function(e) {
  2944. if (! (e instanceof FS.ErrnoError)) throw e + " : " + stackTrace();
  2945. return ___setErrNo(e.errno)
  2946. },
  2947. lookupPath: function(path, opts) {
  2948. path = PATH_FS.resolve(FS.cwd(), path);
  2949. opts = opts || {};
  2950. if (!path) return {
  2951. path: "",
  2952. node: null
  2953. };
  2954. var defaults = {
  2955. follow_mount: true,
  2956. recurse_count: 0
  2957. };
  2958. for (var key in defaults) {
  2959. if (opts[key] === undefined) {
  2960. opts[key] = defaults[key]
  2961. }
  2962. }
  2963. if (opts.recurse_count > 8) {
  2964. throw new FS.ErrnoError(32)
  2965. }
  2966. var parts = PATH.normalizeArray(path.split("/").filter(function(p) {
  2967. return !! p
  2968. }), false);
  2969. var current = FS.root;
  2970. var current_path = "/";
  2971. for (var i = 0; i < parts.length; i++) {
  2972. var islast = i === parts.length - 1;
  2973. if (islast && opts.parent) {
  2974. break
  2975. }
  2976. current = FS.lookupNode(current, parts[i]);
  2977. current_path = PATH.join2(current_path, parts[i]);
  2978. if (FS.isMountpoint(current)) {
  2979. if (!islast || islast && opts.follow_mount) {
  2980. current = current.mounted.root
  2981. }
  2982. }
  2983. if (!islast || opts.follow) {
  2984. var count = 0;
  2985. while (FS.isLink(current.mode)) {
  2986. var link = FS.readlink(current_path);
  2987. current_path = PATH_FS.resolve(PATH.dirname(current_path), link);
  2988. var lookup = FS.lookupPath(current_path, {
  2989. recurse_count: opts.recurse_count
  2990. });
  2991. current = lookup.node;
  2992. if (count++>40) {
  2993. throw new FS.ErrnoError(32)
  2994. }
  2995. }
  2996. }
  2997. }
  2998. return {
  2999. path: current_path,
  3000. node: current
  3001. }
  3002. },
  3003. getPath: function(node) {
  3004. var path;
  3005. while (true) {
  3006. if (FS.isRoot(node)) {
  3007. var mount = node.mount.mountpoint;
  3008. if (!path) return mount;
  3009. return mount[mount.length - 1] !== "/" ? mount + "/" + path: mount + path
  3010. }
  3011. path = path ? node.name + "/" + path: node.name;
  3012. node = node.parent
  3013. }
  3014. },
  3015. hashName: function(parentid, name) {
  3016. var hash = 0;
  3017. for (var i = 0; i < name.length; i++) {
  3018. hash = (hash << 5) - hash + name.charCodeAt(i) | 0
  3019. }
  3020. return (parentid + hash >>> 0) % FS.nameTable.length
  3021. },
  3022. hashAddNode: function(node) {
  3023. var hash = FS.hashName(node.parent.id, node.name);
  3024. node.name_next = FS.nameTable[hash];
  3025. FS.nameTable[hash] = node
  3026. },
  3027. hashRemoveNode: function(node) {
  3028. var hash = FS.hashName(node.parent.id, node.name);
  3029. if (FS.nameTable[hash] === node) {
  3030. FS.nameTable[hash] = node.name_next
  3031. } else {
  3032. var current = FS.nameTable[hash];
  3033. while (current) {
  3034. if (current.name_next === node) {
  3035. current.name_next = node.name_next;
  3036. break
  3037. }
  3038. current = current.name_next
  3039. }
  3040. }
  3041. },
  3042. lookupNode: function(parent, name) {
  3043. var err = FS.mayLookup(parent);
  3044. if (err) {
  3045. throw new FS.ErrnoError(err, parent)
  3046. }
  3047. var hash = FS.hashName(parent.id, name);
  3048. for (var node = FS.nameTable[hash]; node; node = node.name_next) {
  3049. var nodeName = node.name;
  3050. if (node.parent.id === parent.id && nodeName === name) {
  3051. return node
  3052. }
  3053. }
  3054. return FS.lookup(parent, name)
  3055. },
  3056. createNode: function(parent, name, mode, rdev) {
  3057. if (!FS.FSNode) {
  3058. FS.FSNode = function(parent, name, mode, rdev) {
  3059. if (!parent) {
  3060. parent = this
  3061. }
  3062. this.parent = parent;
  3063. this.mount = parent.mount;
  3064. this.mounted = null;
  3065. this.id = FS.nextInode++;
  3066. this.name = name;
  3067. this.mode = mode;
  3068. this.node_ops = {};
  3069. this.stream_ops = {};
  3070. this.rdev = rdev
  3071. };
  3072. FS.FSNode.prototype = {};
  3073. var readMode = 292 | 73;
  3074. var writeMode = 146;
  3075. Object.defineProperties(FS.FSNode.prototype, {
  3076. read: {
  3077. get: function() {
  3078. return (this.mode & readMode) === readMode
  3079. },
  3080. set: function(val) {
  3081. val ? this.mode |= readMode: this.mode &= ~readMode
  3082. }
  3083. },
  3084. write: {
  3085. get: function() {
  3086. return (this.mode & writeMode) === writeMode
  3087. },
  3088. set: function(val) {
  3089. val ? this.mode |= writeMode: this.mode &= ~writeMode
  3090. }
  3091. },
  3092. isFolder: {
  3093. get: function() {
  3094. return FS.isDir(this.mode)
  3095. }
  3096. },
  3097. isDevice: {
  3098. get: function() {
  3099. return FS.isChrdev(this.mode)
  3100. }
  3101. }
  3102. })
  3103. }
  3104. var node = new FS.FSNode(parent, name, mode, rdev);
  3105. FS.hashAddNode(node);
  3106. return node
  3107. },
  3108. destroyNode: function(node) {
  3109. FS.hashRemoveNode(node)
  3110. },
  3111. isRoot: function(node) {
  3112. return node === node.parent
  3113. },
  3114. isMountpoint: function(node) {
  3115. return !! node.mounted
  3116. },
  3117. isFile: function(mode) {
  3118. return (mode & 61440) === 32768
  3119. },
  3120. isDir: function(mode) {
  3121. return (mode & 61440) === 16384
  3122. },
  3123. isLink: function(mode) {
  3124. return (mode & 61440) === 40960
  3125. },
  3126. isChrdev: function(mode) {
  3127. return (mode & 61440) === 8192
  3128. },
  3129. isBlkdev: function(mode) {
  3130. return (mode & 61440) === 24576
  3131. },
  3132. isFIFO: function(mode) {
  3133. return (mode & 61440) === 4096
  3134. },
  3135. isSocket: function(mode) {
  3136. return (mode & 49152) === 49152
  3137. },
  3138. flagModes: {
  3139. "r": 0,
  3140. "rs": 1052672,
  3141. "r+": 2,
  3142. "w": 577,
  3143. "wx": 705,
  3144. "xw": 705,
  3145. "w+": 578,
  3146. "wx+": 706,
  3147. "xw+": 706,
  3148. "a": 1089,
  3149. "ax": 1217,
  3150. "xa": 1217,
  3151. "a+": 1090,
  3152. "ax+": 1218,
  3153. "xa+": 1218
  3154. },
  3155. modeStringToFlags: function(str) {
  3156. var flags = FS.flagModes[str];
  3157. if (typeof flags === "undefined") {
  3158. throw new Error("Unknown file open mode: " + str)
  3159. }
  3160. return flags
  3161. },
  3162. flagsToPermissionString: function(flag) {
  3163. var perms = ["r", "w", "rw"][flag & 3];
  3164. if (flag & 512) {
  3165. perms += "w"
  3166. }
  3167. return perms
  3168. },
  3169. nodePermissions: function(node, perms) {
  3170. if (FS.ignorePermissions) {
  3171. return 0
  3172. }
  3173. if (perms.indexOf("r") !== -1 && !(node.mode & 292)) {
  3174. return 2
  3175. } else if (perms.indexOf("w") !== -1 && !(node.mode & 146)) {
  3176. return 2
  3177. } else if (perms.indexOf("x") !== -1 && !(node.mode & 73)) {
  3178. return 2
  3179. }
  3180. return 0
  3181. },
  3182. mayLookup: function(dir) {
  3183. var err = FS.nodePermissions(dir, "x");
  3184. if (err) return err;
  3185. if (!dir.node_ops.lookup) return 2;
  3186. return 0
  3187. },
  3188. mayCreate: function(dir, name) {
  3189. try {
  3190. var node = FS.lookupNode(dir, name);
  3191. return 20
  3192. } catch(e) {}
  3193. return FS.nodePermissions(dir, "wx")
  3194. },
  3195. mayDelete: function(dir, name, isdir) {
  3196. var node;
  3197. try {
  3198. node = FS.lookupNode(dir, name)
  3199. } catch(e) {
  3200. return e.errno
  3201. }
  3202. var err = FS.nodePermissions(dir, "wx");
  3203. if (err) {
  3204. return err
  3205. }
  3206. if (isdir) {
  3207. if (!FS.isDir(node.mode)) {
  3208. return 54
  3209. }
  3210. if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
  3211. return 10
  3212. }
  3213. } else {
  3214. if (FS.isDir(node.mode)) {
  3215. return 31
  3216. }
  3217. }
  3218. return 0
  3219. },
  3220. mayOpen: function(node, flags) {
  3221. if (!node) {
  3222. return 44
  3223. }
  3224. if (FS.isLink(node.mode)) {
  3225. return 32
  3226. } else if (FS.isDir(node.mode)) {
  3227. if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) {
  3228. return 31
  3229. }
  3230. }
  3231. return FS.nodePermissions(node, FS.flagsToPermissionString(flags))
  3232. },
  3233. MAX_OPEN_FDS: 4096,
  3234. nextfd: function(fd_start, fd_end) {
  3235. fd_start = fd_start || 0;
  3236. fd_end = fd_end || FS.MAX_OPEN_FDS;
  3237. for (var fd = fd_start; fd <= fd_end; fd++) {
  3238. if (!FS.streams[fd]) {
  3239. return fd
  3240. }
  3241. }
  3242. throw new FS.ErrnoError(33)
  3243. },
  3244. getStream: function(fd) {
  3245. return FS.streams[fd]
  3246. },
  3247. createStream: function(stream, fd_start, fd_end) {
  3248. if (!FS.FSStream) {
  3249. FS.FSStream = function() {};
  3250. FS.FSStream.prototype = {};
  3251. Object.defineProperties(FS.FSStream.prototype, {
  3252. object: {
  3253. get: function() {
  3254. return this.node
  3255. },
  3256. set: function(val) {
  3257. this.node = val
  3258. }
  3259. },
  3260. isRead: {
  3261. get: function() {
  3262. return (this.flags & 2097155) !== 1
  3263. }
  3264. },
  3265. isWrite: {
  3266. get: function() {
  3267. return (this.flags & 2097155) !== 0
  3268. }
  3269. },
  3270. isAppend: {
  3271. get: function() {
  3272. return this.flags & 1024
  3273. }
  3274. }
  3275. })
  3276. }
  3277. var newStream = new FS.FSStream;
  3278. for (var p in stream) {
  3279. newStream[p] = stream[p]
  3280. }
  3281. stream = newStream;
  3282. var fd = FS.nextfd(fd_start, fd_end);
  3283. stream.fd = fd;
  3284. FS.streams[fd] = stream;
  3285. return stream
  3286. },
  3287. closeStream: function(fd) {
  3288. FS.streams[fd] = null
  3289. },
  3290. chrdev_stream_ops: {
  3291. open: function(stream) {
  3292. var device = FS.getDevice(stream.node.rdev);
  3293. stream.stream_ops = device.stream_ops;
  3294. if (stream.stream_ops.open) {
  3295. stream.stream_ops.open(stream)
  3296. }
  3297. },
  3298. llseek: function() {
  3299. throw new FS.ErrnoError(70)
  3300. }
  3301. },
  3302. major: function(dev) {
  3303. return dev >> 8
  3304. },
  3305. minor: function(dev) {
  3306. return dev & 255
  3307. },
  3308. makedev: function(ma, mi) {
  3309. return ma << 8 | mi
  3310. },
  3311. registerDevice: function(dev, ops) {
  3312. FS.devices[dev] = {
  3313. stream_ops: ops
  3314. }
  3315. },
  3316. getDevice: function(dev) {
  3317. return FS.devices[dev]
  3318. },
  3319. getMounts: function(mount) {
  3320. var mounts = [];
  3321. var check = [mount];
  3322. while (check.length) {
  3323. var m = check.pop();
  3324. mounts.push(m);
  3325. check.push.apply(check, m.mounts)
  3326. }
  3327. return mounts
  3328. },
  3329. syncfs: function(populate, callback) {
  3330. if (typeof populate === "function") {
  3331. callback = populate;
  3332. populate = false
  3333. }
  3334. FS.syncFSRequests++;
  3335. if (FS.syncFSRequests > 1) {
  3336. console.log("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work")
  3337. }
  3338. var mounts = FS.getMounts(FS.root.mount);
  3339. var completed = 0;
  3340. function doCallback(err) {
  3341. assert(FS.syncFSRequests > 0);
  3342. FS.syncFSRequests--;
  3343. return callback(err)
  3344. }
  3345. function done(err) {
  3346. if (err) {
  3347. if (!done.errored) {
  3348. done.errored = true;
  3349. return doCallback(err)
  3350. }
  3351. return
  3352. }
  3353. if (++completed >= mounts.length) {
  3354. doCallback(null)
  3355. }
  3356. }
  3357. mounts.forEach(function(mount) {
  3358. if (!mount.type.syncfs) {
  3359. return done(null)
  3360. }
  3361. mount.type.syncfs(mount, populate, done)
  3362. })
  3363. },
  3364. mount: function(type, opts, mountpoint) {
  3365. var root = mountpoint === "/";
  3366. var pseudo = !mountpoint;
  3367. var node;
  3368. if (root && FS.root) {
  3369. throw new FS.ErrnoError(10)
  3370. } else if (!root && !pseudo) {
  3371. var lookup = FS.lookupPath(mountpoint, {
  3372. follow_mount: false
  3373. });
  3374. mountpoint = lookup.path;
  3375. node = lookup.node;
  3376. if (FS.isMountpoint(node)) {
  3377. throw new FS.ErrnoError(10)
  3378. }
  3379. if (!FS.isDir(node.mode)) {
  3380. throw new FS.ErrnoError(54)
  3381. }
  3382. }
  3383. var mount = {
  3384. type: type,
  3385. opts: opts,
  3386. mountpoint: mountpoint,
  3387. mounts: []
  3388. };
  3389. var mountRoot = type.mount(mount);
  3390. mountRoot.mount = mount;
  3391. mount.root = mountRoot;
  3392. if (root) {
  3393. FS.root = mountRoot
  3394. } else if (node) {
  3395. node.mounted = mount;
  3396. if (node.mount) {
  3397. node.mount.mounts.push(mount)
  3398. }
  3399. }
  3400. return mountRoot
  3401. },
  3402. unmount: function(mountpoint) {
  3403. var lookup = FS.lookupPath(mountpoint, {
  3404. follow_mount: false
  3405. });
  3406. if (!FS.isMountpoint(lookup.node)) {
  3407. throw new FS.ErrnoError(28)
  3408. }
  3409. var node = lookup.node;
  3410. var mount = node.mounted;
  3411. var mounts = FS.getMounts(mount);
  3412. Object.keys(FS.nameTable).forEach(function(hash) {
  3413. var current = FS.nameTable[hash];
  3414. while (current) {
  3415. var next = current.name_next;
  3416. if (mounts.indexOf(current.mount) !== -1) {
  3417. FS.destroyNode(current)
  3418. }
  3419. current = next
  3420. }
  3421. });
  3422. node.mounted = null;
  3423. var idx = node.mount.mounts.indexOf(mount);
  3424. assert(idx !== -1);
  3425. node.mount.mounts.splice(idx, 1)
  3426. },
  3427. lookup: function(parent, name) {
  3428. return parent.node_ops.lookup(parent, name)
  3429. },
  3430. mknod: function(path, mode, dev) {
  3431. var lookup = FS.lookupPath(path, {
  3432. parent: true
  3433. });
  3434. var parent = lookup.node;
  3435. var name = PATH.basename(path);
  3436. if (!name || name === "." || name === "..") {
  3437. throw new FS.ErrnoError(28)
  3438. }
  3439. var err = FS.mayCreate(parent, name);
  3440. if (err) {
  3441. throw new FS.ErrnoError(err)
  3442. }
  3443. if (!parent.node_ops.mknod) {
  3444. throw new FS.ErrnoError(63)
  3445. }
  3446. return parent.node_ops.mknod(parent, name, mode, dev)
  3447. },
  3448. create: function(path, mode) {
  3449. mode = mode !== undefined ? mode: 438;
  3450. mode &= 4095;
  3451. mode |= 32768;
  3452. return FS.mknod(path, mode, 0)
  3453. },
  3454. mkdir: function(path, mode) {
  3455. mode = mode !== undefined ? mode: 511;
  3456. mode &= 511 | 512;
  3457. mode |= 16384;
  3458. return FS.mknod(path, mode, 0)
  3459. },
  3460. mkdirTree: function(path, mode) {
  3461. var dirs = path.split("/");
  3462. var d = "";
  3463. for (var i = 0; i < dirs.length; ++i) {
  3464. if (!dirs[i]) continue;
  3465. d += "/" + dirs[i];
  3466. try {
  3467. FS.mkdir(d, mode)
  3468. } catch(e) {
  3469. if (e.errno != 20) throw e
  3470. }
  3471. }
  3472. },
  3473. mkdev: function(path, mode, dev) {
  3474. if (typeof dev === "undefined") {
  3475. dev = mode;
  3476. mode = 438
  3477. }
  3478. mode |= 8192;
  3479. return FS.mknod(path, mode, dev)
  3480. },
  3481. symlink: function(oldpath, newpath) {
  3482. if (!PATH_FS.resolve(oldpath)) {
  3483. throw new FS.ErrnoError(44)
  3484. }
  3485. var lookup = FS.lookupPath(newpath, {
  3486. parent: true
  3487. });
  3488. var parent = lookup.node;
  3489. if (!parent) {
  3490. throw new FS.ErrnoError(44)
  3491. }
  3492. var newname = PATH.basename(newpath);
  3493. var err = FS.mayCreate(parent, newname);
  3494. if (err) {
  3495. throw new FS.ErrnoError(err)
  3496. }
  3497. if (!parent.node_ops.symlink) {
  3498. throw new FS.ErrnoError(63)
  3499. }
  3500. return parent.node_ops.symlink(parent, newname, oldpath)
  3501. },
  3502. rename: function(old_path, new_path) {
  3503. var old_dirname = PATH.dirname(old_path);
  3504. var new_dirname = PATH.dirname(new_path);
  3505. var old_name = PATH.basename(old_path);
  3506. var new_name = PATH.basename(new_path);
  3507. var lookup, old_dir, new_dir;
  3508. try {
  3509. lookup = FS.lookupPath(old_path, {
  3510. parent: true
  3511. });
  3512. old_dir = lookup.node;
  3513. lookup = FS.lookupPath(new_path, {
  3514. parent: true
  3515. });
  3516. new_dir = lookup.node
  3517. } catch(e) {
  3518. throw new FS.ErrnoError(10)
  3519. }
  3520. if (!old_dir || !new_dir) throw new FS.ErrnoError(44);
  3521. if (old_dir.mount !== new_dir.mount) {
  3522. throw new FS.ErrnoError(75)
  3523. }
  3524. var old_node = FS.lookupNode(old_dir, old_name);
  3525. var relative = PATH_FS.relative(old_path, new_dirname);
  3526. if (relative.charAt(0) !== ".") {
  3527. throw new FS.ErrnoError(28)
  3528. }
  3529. relative = PATH_FS.relative(new_path, old_dirname);
  3530. if (relative.charAt(0) !== ".") {
  3531. throw new FS.ErrnoError(55)
  3532. }
  3533. var new_node;
  3534. try {
  3535. new_node = FS.lookupNode(new_dir, new_name)
  3536. } catch(e) {}
  3537. if (old_node === new_node) {
  3538. return
  3539. }
  3540. var isdir = FS.isDir(old_node.mode);
  3541. var err = FS.mayDelete(old_dir, old_name, isdir);
  3542. if (err) {
  3543. throw new FS.ErrnoError(err)
  3544. }
  3545. err = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);
  3546. if (err) {
  3547. throw new FS.ErrnoError(err)
  3548. }
  3549. if (!old_dir.node_ops.rename) {
  3550. throw new FS.ErrnoError(63)
  3551. }
  3552. if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {
  3553. throw new FS.ErrnoError(10)
  3554. }
  3555. if (new_dir !== old_dir) {
  3556. err = FS.nodePermissions(old_dir, "w");
  3557. if (err) {
  3558. throw new FS.ErrnoError(err)
  3559. }
  3560. }
  3561. try {
  3562. if (FS.trackingDelegate["willMovePath"]) {
  3563. FS.trackingDelegate["willMovePath"](old_path, new_path)
  3564. }
  3565. } catch(e) {
  3566. console.log("FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message)
  3567. }
  3568. FS.hashRemoveNode(old_node);
  3569. try {
  3570. old_dir.node_ops.rename(old_node, new_dir, new_name)
  3571. } catch(e) {
  3572. throw e
  3573. } finally {
  3574. FS.hashAddNode(old_node)
  3575. }
  3576. try {
  3577. if (FS.trackingDelegate["onMovePath"]) FS.trackingDelegate["onMovePath"](old_path, new_path)
  3578. } catch(e) {
  3579. console.log("FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message)
  3580. }
  3581. },
  3582. rmdir: function(path) {
  3583. var lookup = FS.lookupPath(path, {
  3584. parent: true
  3585. });
  3586. var parent = lookup.node;
  3587. var name = PATH.basename(path);
  3588. var node = FS.lookupNode(parent, name);
  3589. var err = FS.mayDelete(parent, name, true);
  3590. if (err) {
  3591. throw new FS.ErrnoError(err)
  3592. }
  3593. if (!parent.node_ops.rmdir) {
  3594. throw new FS.ErrnoError(63)
  3595. }
  3596. if (FS.isMountpoint(node)) {
  3597. throw new FS.ErrnoError(10)
  3598. }
  3599. try {
  3600. if (FS.trackingDelegate["willDeletePath"]) {
  3601. FS.trackingDelegate["willDeletePath"](path)
  3602. }
  3603. } catch(e) {
  3604. console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message)
  3605. }
  3606. parent.node_ops.rmdir(parent, name);
  3607. FS.destroyNode(node);
  3608. try {
  3609. if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path)
  3610. } catch(e) {
  3611. console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message)
  3612. }
  3613. },
  3614. readdir: function(path) {
  3615. var lookup = FS.lookupPath(path, {
  3616. follow: true
  3617. });
  3618. var node = lookup.node;
  3619. if (!node.node_ops.readdir) {
  3620. throw new FS.ErrnoError(54)
  3621. }
  3622. return node.node_ops.readdir(node)
  3623. },
  3624. unlink: function(path) {
  3625. var lookup = FS.lookupPath(path, {
  3626. parent: true
  3627. });
  3628. var parent = lookup.node;
  3629. var name = PATH.basename(path);
  3630. var node = FS.lookupNode(parent, name);
  3631. var err = FS.mayDelete(parent, name, false);
  3632. if (err) {
  3633. throw new FS.ErrnoError(err)
  3634. }
  3635. if (!parent.node_ops.unlink) {
  3636. throw new FS.ErrnoError(63)
  3637. }
  3638. if (FS.isMountpoint(node)) {
  3639. throw new FS.ErrnoError(10)
  3640. }
  3641. try {
  3642. if (FS.trackingDelegate["willDeletePath"]) {
  3643. FS.trackingDelegate["willDeletePath"](path)
  3644. }
  3645. } catch(e) {
  3646. console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message)
  3647. }
  3648. parent.node_ops.unlink(parent, name);
  3649. FS.destroyNode(node);
  3650. try {
  3651. if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path)
  3652. } catch(e) {
  3653. console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message)
  3654. }
  3655. },
  3656. readlink: function(path) {
  3657. var lookup = FS.lookupPath(path);
  3658. var link = lookup.node;
  3659. if (!link) {
  3660. throw new FS.ErrnoError(44)
  3661. }
  3662. if (!link.node_ops.readlink) {
  3663. throw new FS.ErrnoError(28)
  3664. }
  3665. return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link))
  3666. },
  3667. stat: function(path, dontFollow) {
  3668. var lookup = FS.lookupPath(path, {
  3669. follow: !dontFollow
  3670. });
  3671. var node = lookup.node;
  3672. if (!node) {
  3673. throw new FS.ErrnoError(44)
  3674. }
  3675. if (!node.node_ops.getattr) {
  3676. throw new FS.ErrnoError(63)
  3677. }
  3678. return node.node_ops.getattr(node)
  3679. },
  3680. lstat: function(path) {
  3681. return FS.stat(path, true)
  3682. },
  3683. chmod: function(path, mode, dontFollow) {
  3684. var node;
  3685. if (typeof path === "string") {
  3686. var lookup = FS.lookupPath(path, {
  3687. follow: !dontFollow
  3688. });
  3689. node = lookup.node
  3690. } else {
  3691. node = path
  3692. }
  3693. if (!node.node_ops.setattr) {
  3694. throw new FS.ErrnoError(63)
  3695. }
  3696. node.node_ops.setattr(node, {
  3697. mode: mode & 4095 | node.mode & ~4095,
  3698. timestamp: Date.now()
  3699. })
  3700. },
  3701. lchmod: function(path, mode) {
  3702. FS.chmod(path, mode, true)
  3703. },
  3704. fchmod: function(fd, mode) {
  3705. var stream = FS.getStream(fd);
  3706. if (!stream) {
  3707. throw new FS.ErrnoError(8)
  3708. }
  3709. FS.chmod(stream.node, mode)
  3710. },
  3711. chown: function(path, uid, gid, dontFollow) {
  3712. var node;
  3713. if (typeof path === "string") {
  3714. var lookup = FS.lookupPath(path, {
  3715. follow: !dontFollow
  3716. });
  3717. node = lookup.node
  3718. } else {
  3719. node = path
  3720. }
  3721. if (!node.node_ops.setattr) {
  3722. throw new FS.ErrnoError(63)
  3723. }
  3724. node.node_ops.setattr(node, {
  3725. timestamp: Date.now()
  3726. })
  3727. },
  3728. lchown: function(path, uid, gid) {
  3729. FS.chown(path, uid, gid, true)
  3730. },
  3731. fchown: function(fd, uid, gid) {
  3732. var stream = FS.getStream(fd);
  3733. if (!stream) {
  3734. throw new FS.ErrnoError(8)
  3735. }
  3736. FS.chown(stream.node, uid, gid)
  3737. },
  3738. truncate: function(path, len) {
  3739. if (len < 0) {
  3740. throw new FS.ErrnoError(28)
  3741. }
  3742. var node;
  3743. if (typeof path === "string") {
  3744. var lookup = FS.lookupPath(path, {
  3745. follow: true
  3746. });
  3747. node = lookup.node
  3748. } else {
  3749. node = path
  3750. }
  3751. if (!node.node_ops.setattr) {
  3752. throw new FS.ErrnoError(63)
  3753. }
  3754. if (FS.isDir(node.mode)) {
  3755. throw new FS.ErrnoError(31)
  3756. }
  3757. if (!FS.isFile(node.mode)) {
  3758. throw new FS.ErrnoError(28)
  3759. }
  3760. var err = FS.nodePermissions(node, "w");
  3761. if (err) {
  3762. throw new FS.ErrnoError(err)
  3763. }
  3764. node.node_ops.setattr(node, {
  3765. size: len,
  3766. timestamp: Date.now()
  3767. })
  3768. },
  3769. ftruncate: function(fd, len) {
  3770. var stream = FS.getStream(fd);
  3771. if (!stream) {
  3772. throw new FS.ErrnoError(8)
  3773. }
  3774. if ((stream.flags & 2097155) === 0) {
  3775. throw new FS.ErrnoError(28)
  3776. }
  3777. FS.truncate(stream.node, len)
  3778. },
  3779. utime: function(path, atime, mtime) {
  3780. var lookup = FS.lookupPath(path, {
  3781. follow: true
  3782. });
  3783. var node = lookup.node;
  3784. node.node_ops.setattr(node, {
  3785. timestamp: Math.max(atime, mtime)
  3786. })
  3787. },
  3788. open: function(path, flags, mode, fd_start, fd_end) {
  3789. if (path === "") {
  3790. throw new FS.ErrnoError(44)
  3791. }
  3792. flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags;
  3793. mode = typeof mode === "undefined" ? 438 : mode;
  3794. if (flags & 64) {
  3795. mode = mode & 4095 | 32768
  3796. } else {
  3797. mode = 0
  3798. }
  3799. var node;
  3800. if (typeof path === "object") {
  3801. node = path
  3802. } else {
  3803. path = PATH.normalize(path);
  3804. try {
  3805. var lookup = FS.lookupPath(path, {
  3806. follow: !(flags & 131072)
  3807. });
  3808. node = lookup.node
  3809. } catch(e) {}
  3810. }
  3811. var created = false;
  3812. if (flags & 64) {
  3813. if (node) {
  3814. if (flags & 128) {
  3815. throw new FS.ErrnoError(20)
  3816. }
  3817. } else {
  3818. node = FS.mknod(path, mode, 0);
  3819. created = true
  3820. }
  3821. }
  3822. if (!node) {
  3823. throw new FS.ErrnoError(44)
  3824. }
  3825. if (FS.isChrdev(node.mode)) {
  3826. flags &= ~512
  3827. }
  3828. if (flags & 65536 && !FS.isDir(node.mode)) {
  3829. throw new FS.ErrnoError(54)
  3830. }
  3831. if (!created) {
  3832. var err = FS.mayOpen(node, flags);
  3833. if (err) {
  3834. throw new FS.ErrnoError(err)
  3835. }
  3836. }
  3837. if (flags & 512) {
  3838. FS.truncate(node, 0)
  3839. }
  3840. flags &= ~ (128 | 512);
  3841. var stream = FS.createStream({
  3842. node: node,
  3843. path: FS.getPath(node),
  3844. flags: flags,
  3845. seekable: true,
  3846. position: 0,
  3847. stream_ops: node.stream_ops,
  3848. ungotten: [],
  3849. error: false
  3850. },
  3851. fd_start, fd_end);
  3852. if (stream.stream_ops.open) {
  3853. stream.stream_ops.open(stream)
  3854. }
  3855. if (Module["logReadFiles"] && !(flags & 1)) {
  3856. if (!FS.readFiles) FS.readFiles = {};
  3857. if (! (path in FS.readFiles)) {
  3858. FS.readFiles[path] = 1;
  3859. console.log("FS.trackingDelegate error on read file: " + path)
  3860. }
  3861. }
  3862. try {
  3863. if (FS.trackingDelegate["onOpenFile"]) {
  3864. var trackingFlags = 0;
  3865. if ((flags & 2097155) !== 1) {
  3866. trackingFlags |= FS.tracking.openFlags.READ
  3867. }
  3868. if ((flags & 2097155) !== 0) {
  3869. trackingFlags |= FS.tracking.openFlags.WRITE
  3870. }
  3871. FS.trackingDelegate["onOpenFile"](path, trackingFlags)
  3872. }
  3873. } catch(e) {
  3874. console.log("FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message)
  3875. }
  3876. return stream
  3877. },
  3878. close: function(stream) {
  3879. if (FS.isClosed(stream)) {
  3880. throw new FS.ErrnoError(8)
  3881. }
  3882. if (stream.getdents) stream.getdents = null;
  3883. try {
  3884. if (stream.stream_ops.close) {
  3885. stream.stream_ops.close(stream)
  3886. }
  3887. } catch(e) {
  3888. throw e
  3889. } finally {
  3890. FS.closeStream(stream.fd)
  3891. }
  3892. stream.fd = null
  3893. },
  3894. isClosed: function(stream) {
  3895. return stream.fd === null
  3896. },
  3897. llseek: function(stream, offset, whence) {
  3898. if (FS.isClosed(stream)) {
  3899. throw new FS.ErrnoError(8)
  3900. }
  3901. if (!stream.seekable || !stream.stream_ops.llseek) {
  3902. throw new FS.ErrnoError(70)
  3903. }
  3904. if (whence != 0 && whence != 1 && whence != 2) {
  3905. throw new FS.ErrnoError(28)
  3906. }
  3907. stream.position = stream.stream_ops.llseek(stream, offset, whence);
  3908. stream.ungotten = [];
  3909. return stream.position
  3910. },
  3911. read: function(stream, buffer, offset, length, position) {
  3912. if (length < 0 || position < 0) {
  3913. throw new FS.ErrnoError(28)
  3914. }
  3915. if (FS.isClosed(stream)) {
  3916. throw new FS.ErrnoError(8)
  3917. }
  3918. if ((stream.flags & 2097155) === 1) {
  3919. throw new FS.ErrnoError(8)
  3920. }
  3921. if (FS.isDir(stream.node.mode)) {
  3922. throw new FS.ErrnoError(31)
  3923. }
  3924. if (!stream.stream_ops.read) {
  3925. throw new FS.ErrnoError(28)
  3926. }
  3927. var seeking = typeof position !== "undefined";
  3928. if (!seeking) {
  3929. position = stream.position
  3930. } else if (!stream.seekable) {
  3931. throw new FS.ErrnoError(70)
  3932. }
  3933. var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
  3934. if (!seeking) stream.position += bytesRead;
  3935. return bytesRead
  3936. },
  3937. write: function(stream, buffer, offset, length, position, canOwn) {
  3938. if (length < 0 || position < 0) {
  3939. throw new FS.ErrnoError(28)
  3940. }
  3941. if (FS.isClosed(stream)) {
  3942. throw new FS.ErrnoError(8)
  3943. }
  3944. if ((stream.flags & 2097155) === 0) {
  3945. throw new FS.ErrnoError(8)
  3946. }
  3947. if (FS.isDir(stream.node.mode)) {
  3948. throw new FS.ErrnoError(31)
  3949. }
  3950. if (!stream.stream_ops.write) {
  3951. throw new FS.ErrnoError(28)
  3952. }
  3953. if (stream.flags & 1024) {
  3954. FS.llseek(stream, 0, 2)
  3955. }
  3956. var seeking = typeof position !== "undefined";
  3957. if (!seeking) {
  3958. position = stream.position
  3959. } else if (!stream.seekable) {
  3960. throw new FS.ErrnoError(70)
  3961. }
  3962. var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
  3963. if (!seeking) stream.position += bytesWritten;
  3964. try {
  3965. if (stream.path && FS.trackingDelegate["onWriteToFile"]) FS.trackingDelegate["onWriteToFile"](stream.path)
  3966. } catch(e) {
  3967. console.log("FS.trackingDelegate['onWriteToFile']('" + stream.path + "') threw an exception: " + e.message)
  3968. }
  3969. return bytesWritten
  3970. },
  3971. allocate: function(stream, offset, length) {
  3972. if (FS.isClosed(stream)) {
  3973. throw new FS.ErrnoError(8)
  3974. }
  3975. if (offset < 0 || length <= 0) {
  3976. throw new FS.ErrnoError(28)
  3977. }
  3978. if ((stream.flags & 2097155) === 0) {
  3979. throw new FS.ErrnoError(8)
  3980. }
  3981. if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {
  3982. throw new FS.ErrnoError(43)
  3983. }
  3984. if (!stream.stream_ops.allocate) {
  3985. throw new FS.ErrnoError(138)
  3986. }
  3987. stream.stream_ops.allocate(stream, offset, length)
  3988. },
  3989. mmap: function(stream, buffer, offset, length, position, prot, flags) {
  3990. if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {
  3991. throw new FS.ErrnoError(2)
  3992. }
  3993. if ((stream.flags & 2097155) === 1) {
  3994. throw new FS.ErrnoError(2)
  3995. }
  3996. if (!stream.stream_ops.mmap) {
  3997. throw new FS.ErrnoError(43)
  3998. }
  3999. return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags)
  4000. },
  4001. msync: function(stream, buffer, offset, length, mmapFlags) {
  4002. if (!stream || !stream.stream_ops.msync) {
  4003. return 0
  4004. }
  4005. return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags)
  4006. },
  4007. munmap: function(stream) {
  4008. return 0
  4009. },
  4010. ioctl: function(stream, cmd, arg) {
  4011. if (!stream.stream_ops.ioctl) {
  4012. throw new FS.ErrnoError(59)
  4013. }
  4014. return stream.stream_ops.ioctl(stream, cmd, arg)
  4015. },
  4016. readFile: function(path, opts) {
  4017. opts = opts || {};
  4018. opts.flags = opts.flags || "r";
  4019. opts.encoding = opts.encoding || "binary";
  4020. if (opts.encoding !== "utf8" && opts.encoding !== "binary") {
  4021. throw new Error('Invalid encoding type "' + opts.encoding + '"')
  4022. }
  4023. var ret;
  4024. var stream = FS.open(path, opts.flags);
  4025. var stat = FS.stat(path);
  4026. var length = stat.size;
  4027. var buf = new Uint8Array(length);
  4028. FS.read(stream, buf, 0, length, 0);
  4029. if (opts.encoding === "utf8") {
  4030. ret = UTF8ArrayToString(buf, 0)
  4031. } else if (opts.encoding === "binary") {
  4032. ret = buf
  4033. }
  4034. FS.close(stream);
  4035. return ret
  4036. },
  4037. writeFile: function(path, data, opts) {
  4038. opts = opts || {};
  4039. opts.flags = opts.flags || "w";
  4040. var stream = FS.open(path, opts.flags, opts.mode);
  4041. if (typeof data === "string") {
  4042. var buf = new Uint8Array(lengthBytesUTF8(data) + 1);
  4043. var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
  4044. FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn)
  4045. } else if (ArrayBuffer.isView(data)) {
  4046. FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn)
  4047. } else {
  4048. throw new Error("Unsupported data type")
  4049. }
  4050. FS.close(stream)
  4051. },
  4052. cwd: function() {
  4053. return FS.currentPath
  4054. },
  4055. chdir: function(path) {
  4056. var lookup = FS.lookupPath(path, {
  4057. follow: true
  4058. });
  4059. if (lookup.node === null) {
  4060. throw new FS.ErrnoError(44)
  4061. }
  4062. if (!FS.isDir(lookup.node.mode)) {
  4063. throw new FS.ErrnoError(54)
  4064. }
  4065. var err = FS.nodePermissions(lookup.node, "x");
  4066. if (err) {
  4067. throw new FS.ErrnoError(err)
  4068. }
  4069. FS.currentPath = lookup.path
  4070. },
  4071. createDefaultDirectories: function() {
  4072. FS.mkdir("/tmp");
  4073. FS.mkdir("/home");
  4074. FS.mkdir("/home/web_user")
  4075. },
  4076. createDefaultDevices: function() {
  4077. FS.mkdir("/dev");
  4078. FS.registerDevice(FS.makedev(1, 3), {
  4079. read: function() {
  4080. return 0
  4081. },
  4082. write: function(stream, buffer, offset, length, pos) {
  4083. return length
  4084. }
  4085. });
  4086. FS.mkdev("/dev/null", FS.makedev(1, 3));
  4087. TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
  4088. TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
  4089. FS.mkdev("/dev/tty", FS.makedev(5, 0));
  4090. FS.mkdev("/dev/tty1", FS.makedev(6, 0));
  4091. var random_device;
  4092. if (typeof crypto === "object" && typeof crypto["getRandomValues"] === "function") {
  4093. var randomBuffer = new Uint8Array(1);
  4094. random_device = function() {
  4095. crypto.getRandomValues(randomBuffer);
  4096. return randomBuffer[0]
  4097. }
  4098. } else if (ENVIRONMENT_IS_NODE) {
  4099. try {
  4100. var crypto_module = require("crypto");
  4101. random_device = function() {
  4102. return crypto_module["randomBytes"](1)[0]
  4103. }
  4104. } catch(e) {}
  4105. } else {}
  4106. if (!random_device) {
  4107. random_device = function() {
  4108. abort("no cryptographic support found for random_device. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")
  4109. }
  4110. }
  4111. FS.createDevice("/dev", "random", random_device);
  4112. FS.createDevice("/dev", "urandom", random_device);
  4113. FS.mkdir("/dev/shm");
  4114. FS.mkdir("/dev/shm/tmp")
  4115. },
  4116. createSpecialDirectories: function() {
  4117. FS.mkdir("/proc");
  4118. FS.mkdir("/proc/self");
  4119. FS.mkdir("/proc/self/fd");
  4120. FS.mount({
  4121. mount: function() {
  4122. var node = FS.createNode("/proc/self", "fd", 16384 | 511, 73);
  4123. node.node_ops = {
  4124. lookup: function(parent, name) {
  4125. var fd = +name;
  4126. var stream = FS.getStream(fd);
  4127. if (!stream) throw new FS.ErrnoError(8);
  4128. var ret = {
  4129. parent: null,
  4130. mount: {
  4131. mountpoint: "fake"
  4132. },
  4133. node_ops: {
  4134. readlink: function() {
  4135. return stream.path
  4136. }
  4137. }
  4138. };
  4139. ret.parent = ret;
  4140. return ret
  4141. }
  4142. };
  4143. return node
  4144. }
  4145. },
  4146. {},
  4147. "/proc/self/fd")
  4148. },
  4149. createStandardStreams: function() {
  4150. if (Module["stdin"]) {
  4151. FS.createDevice("/dev", "stdin", Module["stdin"])
  4152. } else {
  4153. FS.symlink("/dev/tty", "/dev/stdin")
  4154. }
  4155. if (Module["stdout"]) {
  4156. FS.createDevice("/dev", "stdout", null, Module["stdout"])
  4157. } else {
  4158. FS.symlink("/dev/tty", "/dev/stdout")
  4159. }
  4160. if (Module["stderr"]) {
  4161. FS.createDevice("/dev", "stderr", null, Module["stderr"])
  4162. } else {
  4163. FS.symlink("/dev/tty1", "/dev/stderr")
  4164. }
  4165. var stdin = FS.open("/dev/stdin", "r");
  4166. var stdout = FS.open("/dev/stdout", "w");
  4167. var stderr = FS.open("/dev/stderr", "w");
  4168. assert(stdin.fd === 0, "invalid handle for stdin (" + stdin.fd + ")");
  4169. assert(stdout.fd === 1, "invalid handle for stdout (" + stdout.fd + ")");
  4170. assert(stderr.fd === 2, "invalid handle for stderr (" + stderr.fd + ")")
  4171. },
  4172. ensureErrnoError: function() {
  4173. if (FS.ErrnoError) return;
  4174. FS.ErrnoError = function ErrnoError(errno, node) {
  4175. this.node = node;
  4176. this.setErrno = function(errno) {
  4177. this.errno = errno;
  4178. for (var key in ERRNO_CODES) {
  4179. if (ERRNO_CODES[key] === errno) {
  4180. this.code = key;
  4181. break
  4182. }
  4183. }
  4184. };
  4185. this.setErrno(errno);
  4186. this.message = ERRNO_MESSAGES[errno];
  4187. if (this.stack) {
  4188. Object.defineProperty(this, "stack", {
  4189. value: (new Error).stack,
  4190. writable: true
  4191. });
  4192. this.stack = demangleAll(this.stack)
  4193. }
  4194. };
  4195. FS.ErrnoError.prototype = new Error;
  4196. FS.ErrnoError.prototype.constructor = FS.ErrnoError; [44].forEach(function(code) {
  4197. FS.genericErrors[code] = new FS.ErrnoError(code);
  4198. FS.genericErrors[code].stack = "<generic error, no stack>"
  4199. })
  4200. },
  4201. staticInit: function() {
  4202. FS.ensureErrnoError();
  4203. FS.nameTable = new Array(4096);
  4204. FS.mount(MEMFS, {},
  4205. "/");
  4206. FS.createDefaultDirectories();
  4207. FS.createDefaultDevices();
  4208. FS.createSpecialDirectories();
  4209. FS.filesystems = {
  4210. "MEMFS": MEMFS,
  4211. "IDBFS": IDBFS,
  4212. "NODEFS": NODEFS,
  4213. "WORKERFS": WORKERFS
  4214. }
  4215. },
  4216. init: function(input, output, error) {
  4217. assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");
  4218. FS.init.initialized = true;
  4219. FS.ensureErrnoError();
  4220. Module["stdin"] = input || Module["stdin"];
  4221. Module["stdout"] = output || Module["stdout"];
  4222. Module["stderr"] = error || Module["stderr"];
  4223. FS.createStandardStreams()
  4224. },
  4225. quit: function() {
  4226. FS.init.initialized = false;
  4227. var fflush = Module["_fflush"];
  4228. if (fflush) fflush(0);
  4229. for (var i = 0; i < FS.streams.length; i++) {
  4230. var stream = FS.streams[i];
  4231. if (!stream) {
  4232. continue
  4233. }
  4234. FS.close(stream)
  4235. }
  4236. },
  4237. getMode: function(canRead, canWrite) {
  4238. var mode = 0;
  4239. if (canRead) mode |= 292 | 73;
  4240. if (canWrite) mode |= 146;
  4241. return mode
  4242. },
  4243. joinPath: function(parts, forceRelative) {
  4244. var path = PATH.join.apply(null, parts);
  4245. if (forceRelative && path[0] == "/") path = path.substr(1);
  4246. return path
  4247. },
  4248. absolutePath: function(relative, base) {
  4249. return PATH_FS.resolve(base, relative)
  4250. },
  4251. standardizePath: function(path) {
  4252. return PATH.normalize(path)
  4253. },
  4254. findObject: function(path, dontResolveLastLink) {
  4255. var ret = FS.analyzePath(path, dontResolveLastLink);
  4256. if (ret.exists) {
  4257. return ret.object
  4258. } else {
  4259. ___setErrNo(ret.error);
  4260. return null
  4261. }
  4262. },
  4263. analyzePath: function(path, dontResolveLastLink) {
  4264. try {
  4265. var lookup = FS.lookupPath(path, {
  4266. follow: !dontResolveLastLink
  4267. });
  4268. path = lookup.path
  4269. } catch(e) {}
  4270. var ret = {
  4271. isRoot: false,
  4272. exists: false,
  4273. error: 0,
  4274. name: null,
  4275. path: null,
  4276. object: null,
  4277. parentExists: false,
  4278. parentPath: null,
  4279. parentObject: null
  4280. };
  4281. try {
  4282. var lookup = FS.lookupPath(path, {
  4283. parent: true
  4284. });
  4285. ret.parentExists = true;
  4286. ret.parentPath = lookup.path;
  4287. ret.parentObject = lookup.node;
  4288. ret.name = PATH.basename(path);
  4289. lookup = FS.lookupPath(path, {
  4290. follow: !dontResolveLastLink
  4291. });
  4292. ret.exists = true;
  4293. ret.path = lookup.path;
  4294. ret.object = lookup.node;
  4295. ret.name = lookup.node.name;
  4296. ret.isRoot = lookup.path === "/"
  4297. } catch(e) {
  4298. ret.error = e.errno
  4299. }
  4300. return ret
  4301. },
  4302. createFolder: function(parent, name, canRead, canWrite) {
  4303. var path = PATH.join2(typeof parent === "string" ? parent: FS.getPath(parent), name);
  4304. var mode = FS.getMode(canRead, canWrite);
  4305. return FS.mkdir(path, mode)
  4306. },
  4307. createPath: function(parent, path, canRead, canWrite) {
  4308. parent = typeof parent === "string" ? parent: FS.getPath(parent);
  4309. var parts = path.split("/").reverse();
  4310. while (parts.length) {
  4311. var part = parts.pop();
  4312. if (!part) continue;
  4313. var current = PATH.join2(parent, part);
  4314. try {
  4315. FS.mkdir(current)
  4316. } catch(e) {}
  4317. parent = current
  4318. }
  4319. return current
  4320. },
  4321. createFile: function(parent, name, properties, canRead, canWrite) {
  4322. var path = PATH.join2(typeof parent === "string" ? parent: FS.getPath(parent), name);
  4323. var mode = FS.getMode(canRead, canWrite);
  4324. return FS.create(path, mode)
  4325. },
  4326. createDataFile: function(parent, name, data, canRead, canWrite, canOwn) {
  4327. var path = name ? PATH.join2(typeof parent === "string" ? parent: FS.getPath(parent), name) : parent;
  4328. var mode = FS.getMode(canRead, canWrite);
  4329. var node = FS.create(path, mode);
  4330. if (data) {
  4331. if (typeof data === "string") {
  4332. var arr = new Array(data.length);
  4333. for (var i = 0,
  4334. len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
  4335. data = arr
  4336. }
  4337. FS.chmod(node, mode | 146);
  4338. var stream = FS.open(node, "w");
  4339. FS.write(stream, data, 0, data.length, 0, canOwn);
  4340. FS.close(stream);
  4341. FS.chmod(node, mode)
  4342. }
  4343. return node
  4344. },
  4345. createDevice: function(parent, name, input, output) {
  4346. var path = PATH.join2(typeof parent === "string" ? parent: FS.getPath(parent), name);
  4347. var mode = FS.getMode( !! input, !!output);
  4348. if (!FS.createDevice.major) FS.createDevice.major = 64;
  4349. var dev = FS.makedev(FS.createDevice.major++, 0);
  4350. FS.registerDevice(dev, {
  4351. open: function(stream) {
  4352. stream.seekable = false
  4353. },
  4354. close: function(stream) {
  4355. if (output && output.buffer && output.buffer.length) {
  4356. output(10)
  4357. }
  4358. },
  4359. read: function(stream, buffer, offset, length, pos) {
  4360. var bytesRead = 0;
  4361. for (var i = 0; i < length; i++) {
  4362. var result;
  4363. try {
  4364. result = input()
  4365. } catch(e) {
  4366. throw new FS.ErrnoError(29)
  4367. }
  4368. if (result === undefined && bytesRead === 0) {
  4369. throw new FS.ErrnoError(6)
  4370. }
  4371. if (result === null || result === undefined) break;
  4372. bytesRead++;
  4373. buffer[offset + i] = result
  4374. }
  4375. if (bytesRead) {
  4376. stream.node.timestamp = Date.now()
  4377. }
  4378. return bytesRead
  4379. },
  4380. write: function(stream, buffer, offset, length, pos) {
  4381. for (var i = 0; i < length; i++) {
  4382. try {
  4383. output(buffer[offset + i])
  4384. } catch(e) {
  4385. throw new FS.ErrnoError(29)
  4386. }
  4387. }
  4388. if (length) {
  4389. stream.node.timestamp = Date.now()
  4390. }
  4391. return i
  4392. }
  4393. });
  4394. return FS.mkdev(path, mode, dev)
  4395. },
  4396. createLink: function(parent, name, target, canRead, canWrite) {
  4397. var path = PATH.join2(typeof parent === "string" ? parent: FS.getPath(parent), name);
  4398. return FS.symlink(target, path)
  4399. },
  4400. forceLoadFile: function(obj) {
  4401. if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
  4402. var success = true;
  4403. if (typeof XMLHttpRequest !== "undefined") {
  4404. throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")
  4405. } else if (read_) {
  4406. try {
  4407. obj.contents = intArrayFromString(read_(obj.url), true);
  4408. obj.usedBytes = obj.contents.length
  4409. } catch(e) {
  4410. success = false
  4411. }
  4412. } else {
  4413. throw new Error("Cannot load without read() or XMLHttpRequest.")
  4414. }
  4415. if (!success) ___setErrNo(29);
  4416. return success
  4417. },
  4418. createLazyFile: function(parent, name, url, canRead, canWrite) {
  4419. function LazyUint8Array() {
  4420. this.lengthKnown = false;
  4421. this.chunks = []
  4422. }
  4423. LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
  4424. if (idx > this.length - 1 || idx < 0) {
  4425. return undefined
  4426. }
  4427. var chunkOffset = idx % this.chunkSize;
  4428. var chunkNum = idx / this.chunkSize | 0;
  4429. return this.getter(chunkNum)[chunkOffset]
  4430. };
  4431. LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
  4432. this.getter = getter
  4433. };
  4434. LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
  4435. var xhr = new XMLHttpRequest;
  4436. xhr.open("HEAD", url, false);
  4437. xhr.send(null);
  4438. if (! (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
  4439. var datalength = Number(xhr.getResponseHeader("Content-length"));
  4440. var header;
  4441. var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
  4442. var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip";
  4443. var chunkSize = 1024 * 1024;
  4444. if (!hasByteServing) chunkSize = datalength;
  4445. var doXHR = function(from, to) {
  4446. if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
  4447. if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!");
  4448. var xhr = new XMLHttpRequest;
  4449. xhr.open("GET", url, false);
  4450. if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
  4451. if (typeof Uint8Array != "undefined") xhr.responseType = "arraybuffer";
  4452. if (xhr.overrideMimeType) {
  4453. xhr.overrideMimeType("text/plain; charset=x-user-defined")
  4454. }
  4455. xhr.send(null);
  4456. if (! (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
  4457. if (xhr.response !== undefined) {
  4458. return new Uint8Array(xhr.response || [])
  4459. } else {
  4460. return intArrayFromString(xhr.responseText || "", true)
  4461. }
  4462. };
  4463. var lazyArray = this;
  4464. lazyArray.setDataGetter(function(chunkNum) {
  4465. var start = chunkNum * chunkSize;
  4466. var end = (chunkNum + 1) * chunkSize - 1;
  4467. end = Math.min(end, datalength - 1);
  4468. if (typeof lazyArray.chunks[chunkNum] === "undefined") {
  4469. lazyArray.chunks[chunkNum] = doXHR(start, end)
  4470. }
  4471. if (typeof lazyArray.chunks[chunkNum] === "undefined") throw new Error("doXHR failed!");
  4472. return lazyArray.chunks[chunkNum]
  4473. });
  4474. if (usesGzip || !datalength) {
  4475. chunkSize = datalength = 1;
  4476. datalength = this.getter(0).length;
  4477. chunkSize = datalength;
  4478. console.log("LazyFiles on gzip forces download of the whole file when length is accessed")
  4479. }
  4480. this._length = datalength;
  4481. this._chunkSize = chunkSize;
  4482. this.lengthKnown = true
  4483. };
  4484. if (typeof XMLHttpRequest !== "undefined") {
  4485. if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
  4486. var lazyArray = new LazyUint8Array;
  4487. Object.defineProperties(lazyArray, {
  4488. length: {
  4489. get: function() {
  4490. if (!this.lengthKnown) {
  4491. this.cacheLength()
  4492. }
  4493. return this._length
  4494. }
  4495. },
  4496. chunkSize: {
  4497. get: function() {
  4498. if (!this.lengthKnown) {
  4499. this.cacheLength()
  4500. }
  4501. return this._chunkSize
  4502. }
  4503. }
  4504. });
  4505. var properties = {
  4506. isDevice: false,
  4507. contents: lazyArray
  4508. }
  4509. } else {
  4510. var properties = {
  4511. isDevice: false,
  4512. url: url
  4513. }
  4514. }
  4515. var node = FS.createFile(parent, name, properties, canRead, canWrite);
  4516. if (properties.contents) {
  4517. node.contents = properties.contents
  4518. } else if (properties.url) {
  4519. node.contents = null;
  4520. node.url = properties.url
  4521. }
  4522. Object.defineProperties(node, {
  4523. usedBytes: {
  4524. get: function() {
  4525. return this.contents.length
  4526. }
  4527. }
  4528. });
  4529. var stream_ops = {};
  4530. var keys = Object.keys(node.stream_ops);
  4531. keys.forEach(function(key) {
  4532. var fn = node.stream_ops[key];
  4533. stream_ops[key] = function forceLoadLazyFile() {
  4534. if (!FS.forceLoadFile(node)) {
  4535. throw new FS.ErrnoError(29)
  4536. }
  4537. return fn.apply(null, arguments)
  4538. }
  4539. });
  4540. stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
  4541. if (!FS.forceLoadFile(node)) {
  4542. throw new FS.ErrnoError(29)
  4543. }
  4544. var contents = stream.node.contents;
  4545. if (position >= contents.length) return 0;
  4546. var size = Math.min(contents.length - position, length);
  4547. assert(size >= 0);
  4548. if (contents.slice) {
  4549. for (var i = 0; i < size; i++) {
  4550. buffer[offset + i] = contents[position + i]
  4551. }
  4552. } else {
  4553. for (var i = 0; i < size; i++) {
  4554. buffer[offset + i] = contents.get(position + i)
  4555. }
  4556. }
  4557. return size
  4558. };
  4559. node.stream_ops = stream_ops;
  4560. return node
  4561. },
  4562. createPreloadedFile: function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {
  4563. Browser.init();
  4564. var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;
  4565. var dep = getUniqueRunDependency("cp " + fullname);
  4566. function processData(byteArray) {
  4567. function finish(byteArray) {
  4568. if (preFinish) preFinish();
  4569. if (!dontCreateFile) {
  4570. FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn)
  4571. }
  4572. if (onload) onload();
  4573. removeRunDependency(dep)
  4574. }
  4575. var handled = false;
  4576. Module["preloadPlugins"].forEach(function(plugin) {
  4577. if (handled) return;
  4578. if (plugin["canHandle"](fullname)) {
  4579. plugin["handle"](byteArray, fullname, finish,
  4580. function() {
  4581. if (onerror) onerror();
  4582. removeRunDependency(dep)
  4583. });
  4584. handled = true
  4585. }
  4586. });
  4587. if (!handled) finish(byteArray)
  4588. }
  4589. addRunDependency(dep);
  4590. if (typeof url == "string") {
  4591. Browser.asyncLoad(url,
  4592. function(byteArray) {
  4593. processData(byteArray)
  4594. },
  4595. onerror)
  4596. } else {
  4597. processData(url)
  4598. }
  4599. },
  4600. indexedDB: function() {
  4601. return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB
  4602. },
  4603. DB_NAME: function() {
  4604. return "EM_FS_" + window.location.pathname
  4605. },
  4606. DB_VERSION: 20,
  4607. DB_STORE_NAME: "FILE_DATA",
  4608. saveFilesToDB: function(paths, onload, onerror) {
  4609. onload = onload ||
  4610. function() {};
  4611. onerror = onerror ||
  4612. function() {};
  4613. var indexedDB = FS.indexedDB();
  4614. try {
  4615. var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION)
  4616. } catch(e) {
  4617. return onerror(e)
  4618. }
  4619. openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
  4620. console.log("creating db");
  4621. var db = openRequest.result;
  4622. db.createObjectStore(FS.DB_STORE_NAME)
  4623. };
  4624. openRequest.onsuccess = function openRequest_onsuccess() {
  4625. var db = openRequest.result;
  4626. var transaction = db.transaction([FS.DB_STORE_NAME], "readwrite");
  4627. var files = transaction.objectStore(FS.DB_STORE_NAME);
  4628. var ok = 0,
  4629. fail = 0,
  4630. total = paths.length;
  4631. function finish() {
  4632. if (fail == 0) onload();
  4633. else onerror()
  4634. }
  4635. paths.forEach(function(path) {
  4636. var putRequest = files.put(FS.analyzePath(path).object.contents, path);
  4637. putRequest.onsuccess = function putRequest_onsuccess() {
  4638. ok++;
  4639. if (ok + fail == total) finish()
  4640. };
  4641. putRequest.onerror = function putRequest_onerror() {
  4642. fail++;
  4643. if (ok + fail == total) finish()
  4644. }
  4645. });
  4646. transaction.onerror = onerror
  4647. };
  4648. openRequest.onerror = onerror
  4649. },
  4650. loadFilesFromDB: function(paths, onload, onerror) {
  4651. onload = onload ||
  4652. function() {};
  4653. onerror = onerror ||
  4654. function() {};
  4655. var indexedDB = FS.indexedDB();
  4656. try {
  4657. var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION)
  4658. } catch(e) {
  4659. return onerror(e)
  4660. }
  4661. openRequest.onupgradeneeded = onerror;
  4662. openRequest.onsuccess = function openRequest_onsuccess() {
  4663. var db = openRequest.result;
  4664. try {
  4665. var transaction = db.transaction([FS.DB_STORE_NAME], "readonly")
  4666. } catch(e) {
  4667. onerror(e);
  4668. return
  4669. }
  4670. var files = transaction.objectStore(FS.DB_STORE_NAME);
  4671. var ok = 0,
  4672. fail = 0,
  4673. total = paths.length;
  4674. function finish() {
  4675. if (fail == 0) onload();
  4676. else onerror()
  4677. }
  4678. paths.forEach(function(path) {
  4679. var getRequest = files.get(path);
  4680. getRequest.onsuccess = function getRequest_onsuccess() {
  4681. if (FS.analyzePath(path).exists) {
  4682. FS.unlink(path)
  4683. }
  4684. FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
  4685. ok++;
  4686. if (ok + fail == total) finish()
  4687. };
  4688. getRequest.onerror = function getRequest_onerror() {
  4689. fail++;
  4690. if (ok + fail == total) finish()
  4691. }
  4692. });
  4693. transaction.onerror = onerror
  4694. };
  4695. openRequest.onerror = onerror
  4696. }
  4697. };
  4698. var SYSCALLS = {
  4699. DEFAULT_POLLMASK: 5,
  4700. mappings: {},
  4701. umask: 511,
  4702. calculateAt: function(dirfd, path) {
  4703. if (path[0] !== "/") {
  4704. var dir;
  4705. if (dirfd === -100) {
  4706. dir = FS.cwd()
  4707. } else {
  4708. var dirstream = FS.getStream(dirfd);
  4709. if (!dirstream) throw new FS.ErrnoError(8);
  4710. dir = dirstream.path
  4711. }
  4712. path = PATH.join2(dir, path)
  4713. }
  4714. return path
  4715. },
  4716. doStat: function(func, path, buf) {
  4717. try {
  4718. var stat = func(path)
  4719. } catch(e) {
  4720. if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {
  4721. return - 54
  4722. }
  4723. throw e
  4724. }
  4725. HEAP32[buf >> 2] = stat.dev;
  4726. HEAP32[buf + 4 >> 2] = 0;
  4727. HEAP32[buf + 8 >> 2] = stat.ino;
  4728. HEAP32[buf + 12 >> 2] = stat.mode;
  4729. HEAP32[buf + 16 >> 2] = stat.nlink;
  4730. HEAP32[buf + 20 >> 2] = stat.uid;
  4731. HEAP32[buf + 24 >> 2] = stat.gid;
  4732. HEAP32[buf + 28 >> 2] = stat.rdev;
  4733. HEAP32[buf + 32 >> 2] = 0;
  4734. tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min( + Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~ + Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)],
  4735. HEAP32[buf + 40 >> 2] = tempI64[0],
  4736. HEAP32[buf + 44 >> 2] = tempI64[1];
  4737. HEAP32[buf + 48 >> 2] = 4096;
  4738. HEAP32[buf + 52 >> 2] = stat.blocks;
  4739. HEAP32[buf + 56 >> 2] = stat.atime.getTime() / 1e3 | 0;
  4740. HEAP32[buf + 60 >> 2] = 0;
  4741. HEAP32[buf + 64 >> 2] = stat.mtime.getTime() / 1e3 | 0;
  4742. HEAP32[buf + 68 >> 2] = 0;
  4743. HEAP32[buf + 72 >> 2] = stat.ctime.getTime() / 1e3 | 0;
  4744. HEAP32[buf + 76 >> 2] = 0;
  4745. tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min( + Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~ + Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)],
  4746. HEAP32[buf + 80 >> 2] = tempI64[0],
  4747. HEAP32[buf + 84 >> 2] = tempI64[1];
  4748. return 0
  4749. },
  4750. doMsync: function(addr, stream, len, flags) {
  4751. var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));
  4752. FS.msync(stream, buffer, 0, len, flags)
  4753. },
  4754. doMkdir: function(path, mode) {
  4755. path = PATH.normalize(path);
  4756. if (path[path.length - 1] === "/") path = path.substr(0, path.length - 1);
  4757. FS.mkdir(path, mode, 0);
  4758. return 0
  4759. },
  4760. doMknod: function(path, mode, dev) {
  4761. switch (mode & 61440) {
  4762. case 32768:
  4763. case 8192:
  4764. case 24576:
  4765. case 4096:
  4766. case 49152:
  4767. break;
  4768. default:
  4769. return - 28
  4770. }
  4771. FS.mknod(path, mode, dev);
  4772. return 0
  4773. },
  4774. doReadlink: function(path, buf, bufsize) {
  4775. if (bufsize <= 0) return - 28;
  4776. var ret = FS.readlink(path);
  4777. var len = Math.min(bufsize, lengthBytesUTF8(ret));
  4778. var endChar = HEAP8[buf + len];
  4779. stringToUTF8(ret, buf, bufsize + 1);
  4780. HEAP8[buf + len] = endChar;
  4781. return len
  4782. },
  4783. doAccess: function(path, amode) {
  4784. if (amode & ~7) {
  4785. return - 28
  4786. }
  4787. var node;
  4788. var lookup = FS.lookupPath(path, {
  4789. follow: true
  4790. });
  4791. node = lookup.node;
  4792. if (!node) {
  4793. return - 44
  4794. }
  4795. var perms = "";
  4796. if (amode & 4) perms += "r";
  4797. if (amode & 2) perms += "w";
  4798. if (amode & 1) perms += "x";
  4799. if (perms && FS.nodePermissions(node, perms)) {
  4800. return - 2
  4801. }
  4802. return 0
  4803. },
  4804. doDup: function(path, flags, suggestFD) {
  4805. var suggest = FS.getStream(suggestFD);
  4806. if (suggest) FS.close(suggest);
  4807. return FS.open(path, flags, 0, suggestFD, suggestFD).fd
  4808. },
  4809. doReadv: function(stream, iov, iovcnt, offset) {
  4810. var ret = 0;
  4811. for (var i = 0; i < iovcnt; i++) {
  4812. var ptr = HEAP32[iov + i * 8 >> 2];
  4813. var len = HEAP32[iov + (i * 8 + 4) >> 2];
  4814. var curr = FS.read(stream, HEAP8, ptr, len, offset);
  4815. if (curr < 0) return - 1;
  4816. ret += curr;
  4817. if (curr < len) break
  4818. }
  4819. return ret
  4820. },
  4821. doWritev: function(stream, iov, iovcnt, offset) {
  4822. var ret = 0;
  4823. for (var i = 0; i < iovcnt; i++) {
  4824. var ptr = HEAP32[iov + i * 8 >> 2];
  4825. var len = HEAP32[iov + (i * 8 + 4) >> 2];
  4826. var curr = FS.write(stream, HEAP8, ptr, len, offset);
  4827. if (curr < 0) return - 1;
  4828. ret += curr
  4829. }
  4830. return ret
  4831. },
  4832. varargs: 0,
  4833. get: function(varargs) {
  4834. SYSCALLS.varargs += 4;
  4835. var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];
  4836. return ret
  4837. },
  4838. getStr: function() {
  4839. var ret = UTF8ToString(SYSCALLS.get());
  4840. return ret
  4841. },
  4842. getStreamFromFD: function(fd) {
  4843. if (fd === undefined) fd = SYSCALLS.get();
  4844. var stream = FS.getStream(fd);
  4845. if (!stream) throw new FS.ErrnoError(8);
  4846. return stream
  4847. },
  4848. get64: function() {
  4849. var low = SYSCALLS.get(),
  4850. high = SYSCALLS.get();
  4851. if (low >= 0) assert(high === 0);
  4852. else assert(high === -1);
  4853. return low
  4854. },
  4855. getZero: function() {
  4856. assert(SYSCALLS.get() === 0)
  4857. }
  4858. };
  4859. function ___syscall221(which, varargs) {
  4860. if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(1, 1, which, varargs);
  4861. SYSCALLS.varargs = varargs;
  4862. try {
  4863. var stream = SYSCALLS.getStreamFromFD(),
  4864. cmd = SYSCALLS.get();
  4865. switch (cmd) {
  4866. case 0:
  4867. {
  4868. var arg = SYSCALLS.get();
  4869. if (arg < 0) {
  4870. return - 28
  4871. }
  4872. var newStream;
  4873. newStream = FS.open(stream.path, stream.flags, 0, arg);
  4874. return newStream.fd
  4875. }
  4876. case 1:
  4877. case 2:
  4878. return 0;
  4879. case 3:
  4880. return stream.flags;
  4881. case 4:
  4882. {
  4883. var arg = SYSCALLS.get();
  4884. stream.flags |= arg;
  4885. return 0
  4886. }
  4887. case 12:
  4888. {
  4889. var arg = SYSCALLS.get();
  4890. var offset = 0;
  4891. HEAP16[arg + offset >> 1] = 2;
  4892. return 0
  4893. }
  4894. case 13:
  4895. case 14:
  4896. return 0;
  4897. case 16:
  4898. case 8:
  4899. return - 28;
  4900. case 9:
  4901. ___setErrNo(28);
  4902. return - 1;
  4903. default:
  4904. {
  4905. return - 28
  4906. }
  4907. }
  4908. } catch(e) {
  4909. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  4910. return - e.errno
  4911. }
  4912. }
  4913. function ___syscall3(which, varargs) {
  4914. if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(2, 1, which, varargs);
  4915. SYSCALLS.varargs = varargs;
  4916. try {
  4917. var stream = SYSCALLS.getStreamFromFD(),
  4918. buf = SYSCALLS.get(),
  4919. count = SYSCALLS.get();
  4920. return FS.read(stream, HEAP8, buf, count)
  4921. } catch(e) {
  4922. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  4923. return - e.errno
  4924. }
  4925. }
  4926. function ___syscall5(which, varargs) {
  4927. if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(3, 1, which, varargs);
  4928. SYSCALLS.varargs = varargs;
  4929. try {
  4930. var pathname = SYSCALLS.getStr(),
  4931. flags = SYSCALLS.get(),
  4932. mode = SYSCALLS.get();
  4933. var stream = FS.open(pathname, flags, mode);
  4934. return stream.fd
  4935. } catch(e) {
  4936. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  4937. return - e.errno
  4938. }
  4939. }
  4940. function ___unlock() {}
  4941. function _fd_close(fd) {
  4942. if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(4, 1, fd);
  4943. try {
  4944. var stream = SYSCALLS.getStreamFromFD(fd);
  4945. FS.close(stream);
  4946. return 0
  4947. } catch(e) {
  4948. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  4949. return e.errno
  4950. }
  4951. }
  4952. function ___wasi_fd_close() {
  4953. return _fd_close.apply(null, arguments)
  4954. }
  4955. function _fd_fdstat_get(fd, pbuf) {
  4956. if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(5, 1, fd, pbuf);
  4957. try {
  4958. var stream = SYSCALLS.getStreamFromFD(fd);
  4959. var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4;
  4960. HEAP8[pbuf >> 0] = type;
  4961. return 0
  4962. } catch(e) {
  4963. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  4964. return e.errno
  4965. }
  4966. }
  4967. function ___wasi_fd_fdstat_get() {
  4968. return _fd_fdstat_get.apply(null, arguments)
  4969. }
  4970. function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
  4971. if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(6, 1, fd, offset_low, offset_high, whence, newOffset);
  4972. try {
  4973. var stream = SYSCALLS.getStreamFromFD(fd);
  4974. var HIGH_OFFSET = 4294967296;
  4975. var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0);
  4976. var DOUBLE_LIMIT = 9007199254740992;
  4977. if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) {
  4978. return - 61
  4979. }
  4980. FS.llseek(stream, offset, whence);
  4981. tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min( + Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~ + Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)],
  4982. HEAP32[newOffset >> 2] = tempI64[0],
  4983. HEAP32[newOffset + 4 >> 2] = tempI64[1];
  4984. if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;
  4985. return 0
  4986. } catch(e) {
  4987. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  4988. return e.errno
  4989. }
  4990. }
  4991. function ___wasi_fd_seek() {
  4992. return _fd_seek.apply(null, arguments)
  4993. }
  4994. function _fd_write(fd, iov, iovcnt, pnum) {
  4995. if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(7, 1, fd, iov, iovcnt, pnum);
  4996. try {
  4997. var stream = SYSCALLS.getStreamFromFD(fd);
  4998. var num = SYSCALLS.doWritev(stream, iov, iovcnt);
  4999. HEAP32[pnum >> 2] = num;
  5000. return 0
  5001. } catch(e) {
  5002. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  5003. return e.errno
  5004. }
  5005. }
  5006. function ___wasi_fd_write() {
  5007. return _fd_write.apply(null, arguments)
  5008. }
  5009. function __emscripten_fetch_free(id) {
  5010. delete Fetch.xhrs[id - 1]
  5011. }
  5012. var _fetch_work_queue;
  5013. if (ENVIRONMENT_IS_PTHREAD) _fetch_work_queue = PthreadWorkerInit._fetch_work_queue;
  5014. else PthreadWorkerInit._fetch_work_queue = _fetch_work_queue = 1388432;
  5015. function __emscripten_get_fetch_work_queue() {
  5016. return _fetch_work_queue
  5017. }
  5018. function _abort() {
  5019. abort()
  5020. }
  5021. function _clock() {
  5022. if (_clock.start === undefined) _clock.start = Date.now();
  5023. return (Date.now() - _clock.start) * (1e6 / 1e3) | 0
  5024. }
  5025. function _emscripten_futex_wait(addr, val, timeout) {
  5026. if (addr <= 0 || addr > HEAP8.length || addr & 3 != 0) return - 28;
  5027. if (ENVIRONMENT_IS_WORKER) {
  5028. var ret = Atomics.wait(HEAP32, addr >> 2, val, timeout);
  5029. if (ret === "timed-out") return - 73;
  5030. if (ret === "not-equal") return - 6;
  5031. if (ret === "ok") return 0;
  5032. throw "Atomics.wait returned an unexpected value " + ret
  5033. } else {
  5034. var loadedVal = Atomics.load(HEAP32, addr >> 2);
  5035. if (val != loadedVal) return - 6;
  5036. var tNow = performance.now();
  5037. var tEnd = tNow + timeout;
  5038. Atomics.store(HEAP32, __main_thread_futex_wait_address >> 2, addr);
  5039. var ourWaitAddress = addr;
  5040. while (addr == ourWaitAddress) {
  5041. tNow = performance.now();
  5042. if (tNow > tEnd) {
  5043. return - 73
  5044. }
  5045. _emscripten_main_thread_process_queued_calls();
  5046. addr = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2)
  5047. }
  5048. return 0
  5049. }
  5050. }
  5051. function _emscripten_get_heap_size() {
  5052. return HEAP8.length
  5053. }
  5054. function _emscripten_has_threading_support() {
  5055. return typeof SharedArrayBuffer !== "undefined"
  5056. }
  5057. function _emscripten_proxy_to_main_thread_js(index, sync) {
  5058. var numCallArgs = arguments.length - 2;
  5059. if (numCallArgs > 20 - 1) throw "emscripten_proxy_to_main_thread_js: Too many arguments " + numCallArgs + " to proxied function idx=" + index + ", maximum supported is " + (20 - 1) + "!";
  5060. var stack = stackSave();
  5061. var args = stackAlloc(numCallArgs * 8);
  5062. var b = args >> 3;
  5063. for (var i = 0; i < numCallArgs; i++) {
  5064. HEAPF64[b + i] = arguments[2 + i]
  5065. }
  5066. var ret = _emscripten_run_in_main_runtime_thread_js(index, numCallArgs, args, sync);
  5067. stackRestore(stack);
  5068. return ret
  5069. }
  5070. var _emscripten_receive_on_main_thread_js_callArgs = [];
  5071. function _emscripten_receive_on_main_thread_js(index, numCallArgs, args) {
  5072. _emscripten_receive_on_main_thread_js_callArgs.length = numCallArgs;
  5073. var b = args >> 3;
  5074. for (var i = 0; i < numCallArgs; i++) {
  5075. _emscripten_receive_on_main_thread_js_callArgs[i] = HEAPF64[b + i]
  5076. }
  5077. var isEmAsmConst = index < 0;
  5078. var func = !isEmAsmConst ? proxiedFunctionTable[index] : ASM_CONSTS[ - index - 1];
  5079. assert(func.length == numCallArgs, "Call args mismatch in emscripten_receive_on_main_thread_js");
  5080. return func.apply(null, _emscripten_receive_on_main_thread_js_callArgs)
  5081. }
  5082. function abortOnCannotGrowMemory(requestedSize) {
  5083. abort("Cannot enlarge memory arrays to size " + requestedSize + " bytes (OOM). Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value " + HEAP8.length + ", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")
  5084. }
  5085. function _emscripten_resize_heap(requestedSize) {
  5086. abortOnCannotGrowMemory(requestedSize)
  5087. }
  5088. var JSEvents = {
  5089. keyEvent: 0,
  5090. mouseEvent: 0,
  5091. wheelEvent: 0,
  5092. uiEvent: 0,
  5093. focusEvent: 0,
  5094. deviceOrientationEvent: 0,
  5095. deviceMotionEvent: 0,
  5096. fullscreenChangeEvent: 0,
  5097. pointerlockChangeEvent: 0,
  5098. visibilityChangeEvent: 0,
  5099. touchEvent: 0,
  5100. previousFullscreenElement: null,
  5101. previousScreenX: null,
  5102. previousScreenY: null,
  5103. removeEventListenersRegistered: false,
  5104. removeAllEventListeners: function() {
  5105. for (var i = JSEvents.eventHandlers.length - 1; i >= 0; --i) {
  5106. JSEvents._removeHandler(i)
  5107. }
  5108. JSEvents.eventHandlers = [];
  5109. JSEvents.deferredCalls = []
  5110. },
  5111. registerRemoveEventListeners: function() {
  5112. if (!JSEvents.removeEventListenersRegistered) {
  5113. __ATEXIT__.push(JSEvents.removeAllEventListeners);
  5114. JSEvents.removeEventListenersRegistered = true
  5115. }
  5116. },
  5117. deferredCalls: [],
  5118. deferCall: function(targetFunction, precedence, argsList) {
  5119. function arraysHaveEqualContent(arrA, arrB) {
  5120. if (arrA.length != arrB.length) return false;
  5121. for (var i in arrA) {
  5122. if (arrA[i] != arrB[i]) return false
  5123. }
  5124. return true
  5125. }
  5126. for (var i in JSEvents.deferredCalls) {
  5127. var call = JSEvents.deferredCalls[i];
  5128. if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) {
  5129. return
  5130. }
  5131. }
  5132. JSEvents.deferredCalls.push({
  5133. targetFunction: targetFunction,
  5134. precedence: precedence,
  5135. argsList: argsList
  5136. });
  5137. JSEvents.deferredCalls.sort(function(x, y) {
  5138. return x.precedence < y.precedence
  5139. })
  5140. },
  5141. removeDeferredCalls: function(targetFunction) {
  5142. for (var i = 0; i < JSEvents.deferredCalls.length; ++i) {
  5143. if (JSEvents.deferredCalls[i].targetFunction == targetFunction) {
  5144. JSEvents.deferredCalls.splice(i, 1); --i
  5145. }
  5146. }
  5147. },
  5148. canPerformEventHandlerRequests: function() {
  5149. return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls
  5150. },
  5151. runDeferredCalls: function() {
  5152. if (!JSEvents.canPerformEventHandlerRequests()) {
  5153. return
  5154. }
  5155. for (var i = 0; i < JSEvents.deferredCalls.length; ++i) {
  5156. var call = JSEvents.deferredCalls[i];
  5157. JSEvents.deferredCalls.splice(i, 1); --i;
  5158. call.targetFunction.apply(this, call.argsList)
  5159. }
  5160. },
  5161. inEventHandler: 0,
  5162. currentEventHandler: null,
  5163. eventHandlers: [],
  5164. isInternetExplorer: function() {
  5165. return navigator.userAgent.indexOf("MSIE") !== -1 || navigator.appVersion.indexOf("Trident/") > 0
  5166. },
  5167. removeAllHandlersOnTarget: function(target, eventTypeString) {
  5168. for (var i = 0; i < JSEvents.eventHandlers.length; ++i) {
  5169. if (JSEvents.eventHandlers[i].target == target && (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i].eventTypeString)) {
  5170. JSEvents._removeHandler(i--)
  5171. }
  5172. }
  5173. },
  5174. _removeHandler: function(i) {
  5175. var h = JSEvents.eventHandlers[i];
  5176. h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture);
  5177. JSEvents.eventHandlers.splice(i, 1)
  5178. },
  5179. registerOrRemoveHandler: function(eventHandler) {
  5180. var jsEventHandler = function jsEventHandler(event) {++JSEvents.inEventHandler;
  5181. JSEvents.currentEventHandler = eventHandler;
  5182. JSEvents.runDeferredCalls();
  5183. eventHandler.handlerFunc(event);
  5184. JSEvents.runDeferredCalls(); --JSEvents.inEventHandler
  5185. };
  5186. if (eventHandler.callbackfunc) {
  5187. eventHandler.eventListenerFunc = jsEventHandler;
  5188. eventHandler.target.addEventListener(eventHandler.eventTypeString, jsEventHandler, eventHandler.useCapture);
  5189. JSEvents.eventHandlers.push(eventHandler);
  5190. JSEvents.registerRemoveEventListeners()
  5191. } else {
  5192. for (var i = 0; i < JSEvents.eventHandlers.length; ++i) {
  5193. if (JSEvents.eventHandlers[i].target == eventHandler.target && JSEvents.eventHandlers[i].eventTypeString == eventHandler.eventTypeString) {
  5194. JSEvents._removeHandler(i--)
  5195. }
  5196. }
  5197. }
  5198. },
  5199. queueEventHandlerOnThread_iiii: function(targetThread, eventHandlerFunc, eventTypeId, eventData, userData) {
  5200. var stackTop = stackSave();
  5201. var varargs = stackAlloc(12);
  5202. HEAP32[varargs >> 2] = eventTypeId;
  5203. HEAP32[varargs + 4 >> 2] = eventData;
  5204. HEAP32[varargs + 8 >> 2] = userData;
  5205. _emscripten_async_queue_on_thread_(targetThread, 637534208, eventHandlerFunc, eventData, varargs);
  5206. stackRestore(stackTop)
  5207. },
  5208. getTargetThreadForEventCallback: function(targetThread) {
  5209. switch (targetThread) {
  5210. case 1:
  5211. return 0;
  5212. case 2:
  5213. return PThread.currentProxiedOperationCallerThread;
  5214. default:
  5215. return targetThread
  5216. }
  5217. },
  5218. getBoundingClientRectOrZeros: function(target) {
  5219. return target.getBoundingClientRect ? target.getBoundingClientRect() : {
  5220. left: 0,
  5221. top: 0
  5222. }
  5223. },
  5224. pageScrollPos: function() {
  5225. if (pageXOffset > 0 || pageYOffset > 0) {
  5226. return [pageXOffset, pageYOffset]
  5227. }
  5228. if (typeof document.documentElement.scrollLeft !== "undefined" || typeof document.documentElement.scrollTop !== "undefined") {
  5229. return [document.documentElement.scrollLeft, document.documentElement.scrollTop]
  5230. }
  5231. return [document.body.scrollLeft | 0, document.body.scrollTop | 0]
  5232. },
  5233. getNodeNameForTarget: function(target) {
  5234. if (!target) return "";
  5235. if (target == window) return "#window";
  5236. if (target == screen) return "#screen";
  5237. return target && target.nodeName ? target.nodeName: ""
  5238. },
  5239. tick: function() {
  5240. if (window["performance"] && window["performance"]["now"]) return window["performance"]["now"]();
  5241. else return Date.now()
  5242. },
  5243. fullscreenEnabled: function() {
  5244. return document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled || document.msFullscreenEnabled
  5245. }
  5246. };
  5247. function stringToNewUTF8(jsString) {
  5248. var length = lengthBytesUTF8(jsString) + 1;
  5249. var cString = _malloc(length);
  5250. stringToUTF8(jsString, cString, length);
  5251. return cString
  5252. }
  5253. function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread, targetCanvas, width, height) {
  5254. var stackTop = stackSave();
  5255. var varargs = stackAlloc(12);
  5256. var targetCanvasPtr = 0;
  5257. if (targetCanvas) {
  5258. targetCanvasPtr = stringToNewUTF8(targetCanvas)
  5259. }
  5260. HEAP32[varargs >> 2] = targetCanvasPtr;
  5261. HEAP32[varargs + 4 >> 2] = width;
  5262. HEAP32[varargs + 8 >> 2] = height;
  5263. _emscripten_async_queue_on_thread_(targetThread, 657457152, 0, targetCanvasPtr, varargs);
  5264. stackRestore(stackTop)
  5265. }
  5266. function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread, targetCanvas, width, height) {
  5267. targetCanvas = targetCanvas ? UTF8ToString(targetCanvas) : "";
  5268. _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread, targetCanvas, width, height)
  5269. }
  5270. var __specialEventTargets = [0, typeof document !== "undefined" ? document: 0, typeof window !== "undefined" ? window: 0];
  5271. function __findEventTarget(target) {
  5272. warnOnce("Rules for selecting event targets in HTML5 API are changing: instead of using document.getElementById() that only can refer to elements by their DOM ID, new event target selection mechanism uses the more flexible function document.querySelector() that can look up element names, classes, and complex CSS selectors. Build with -s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1 to change to the new lookup rules. See https://github.com/emscripten-core/emscripten/pull/7977 for more details.");
  5273. try {
  5274. if (!target) return window;
  5275. if (typeof target === "number") target = __specialEventTargets[target] || UTF8ToString(target);
  5276. if (target === "#window") return window;
  5277. else if (target === "#document") return document;
  5278. else if (target === "#screen") return screen;
  5279. else if (target === "#canvas") return Module["canvas"];
  5280. return typeof target === "string" ? document.getElementById(target) : target
  5281. } catch(e) {
  5282. return null
  5283. }
  5284. }
  5285. function __findCanvasEventTarget(target) {
  5286. if (typeof target === "number") target = UTF8ToString(target);
  5287. if (!target || target === "#canvas") {
  5288. if (typeof GL !== "undefined" && GL.offscreenCanvases["canvas"]) return GL.offscreenCanvases["canvas"];
  5289. return Module["canvas"]
  5290. }
  5291. if (typeof GL !== "undefined" && GL.offscreenCanvases[target]) return GL.offscreenCanvases[target];
  5292. return __findEventTarget(target)
  5293. }
  5294. function _emscripten_set_canvas_element_size_calling_thread(target, width, height) {
  5295. var canvas = __findCanvasEventTarget(target);
  5296. if (!canvas) return - 4;
  5297. if (canvas.canvasSharedPtr) {
  5298. HEAP32[canvas.canvasSharedPtr >> 2] = width;
  5299. HEAP32[canvas.canvasSharedPtr + 4 >> 2] = height
  5300. }
  5301. if (canvas.offscreenCanvas || !canvas.controlTransferredOffscreen) {
  5302. if (canvas.offscreenCanvas) canvas = canvas.offscreenCanvas;
  5303. var autoResizeViewport = false;
  5304. if (canvas.GLctxObject && canvas.GLctxObject.GLctx) {
  5305. var prevViewport = canvas.GLctxObject.GLctx.getParameter(canvas.GLctxObject.GLctx.VIEWPORT);
  5306. autoResizeViewport = prevViewport[0] === 0 && prevViewport[1] === 0 && prevViewport[2] === canvas.width && prevViewport[3] === canvas.height
  5307. }
  5308. canvas.width = width;
  5309. canvas.height = height;
  5310. if (autoResizeViewport) {
  5311. canvas.GLctxObject.GLctx.viewport(0, 0, width, height)
  5312. }
  5313. } else if (canvas.canvasSharedPtr) {
  5314. var targetThread = HEAP32[canvas.canvasSharedPtr + 8 >> 2];
  5315. _emscripten_set_offscreencanvas_size_on_target_thread(targetThread, target, width, height);
  5316. return 1
  5317. } else {
  5318. return - 4
  5319. }
  5320. return 0
  5321. }
  5322. function _emscripten_set_canvas_element_size_main_thread(target, width, height) {
  5323. if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(8, 1, target, width, height);
  5324. return _emscripten_set_canvas_element_size_calling_thread(target, width, height)
  5325. }
  5326. function _emscripten_set_canvas_element_size(target, width, height) {
  5327. var canvas = __findCanvasEventTarget(target);
  5328. if (canvas) {
  5329. return _emscripten_set_canvas_element_size_calling_thread(target, width, height)
  5330. } else {
  5331. return _emscripten_set_canvas_element_size_main_thread(target, width, height)
  5332. }
  5333. }
  5334. var Fetch = {
  5335. xhrs: [],
  5336. setu64: function(addr, val) {
  5337. HEAPU32[addr >> 2] = val;
  5338. HEAPU32[addr + 4 >> 2] = val / 4294967296 | 0
  5339. },
  5340. openDatabase: function(dbname, dbversion, onsuccess, onerror) {
  5341. try {
  5342. var openRequest = indexedDB.open(dbname, dbversion)
  5343. } catch(e) {
  5344. return onerror(e)
  5345. }
  5346. openRequest.onupgradeneeded = function(event) {
  5347. var db = event.target.result;
  5348. if (db.objectStoreNames.contains("FILES")) {
  5349. db.deleteObjectStore("FILES")
  5350. }
  5351. db.createObjectStore("FILES")
  5352. };
  5353. openRequest.onsuccess = function(event) {
  5354. onsuccess(event.target.result)
  5355. };
  5356. openRequest.onerror = function(error) {
  5357. onerror(error)
  5358. }
  5359. },
  5360. initFetchWorker: function() {
  5361. var stackSize = 128 * 1024;
  5362. var stack = allocate(stackSize >> 2, "i32*", ALLOC_DYNAMIC);
  5363. Fetch.worker.postMessage({
  5364. cmd: "init",
  5365. DYNAMICTOP_PTR: DYNAMICTOP_PTR,
  5366. STACKTOP: stack,
  5367. STACK_MAX: stack + stackSize,
  5368. queuePtr: _fetch_work_queue,
  5369. buffer: HEAPU8.buffer
  5370. })
  5371. },
  5372. staticInit: function() {
  5373. var isMainThread = typeof ENVIRONMENT_IS_FETCH_WORKER === "undefined" && !ENVIRONMENT_IS_PTHREAD;
  5374. var onsuccess = function(db) {
  5375. Fetch.dbInstance = db;
  5376. if (isMainThread) {
  5377. Fetch.initFetchWorker();
  5378. removeRunDependency("library_fetch_init")
  5379. }
  5380. };
  5381. var onerror = function() {
  5382. Fetch.dbInstance = false;
  5383. if (isMainThread) {
  5384. Fetch.initFetchWorker();
  5385. removeRunDependency("library_fetch_init")
  5386. }
  5387. };
  5388. Fetch.openDatabase("emscripten_filesystem", 1, onsuccess, onerror);
  5389. if (isMainThread) {
  5390. addRunDependency("library_fetch_init");
  5391. var fetchJs = locateFile("missile-v20220507.fetch.js");
  5392. Fetch.worker = new Worker(fetchJs);
  5393. Fetch.worker.onmessage = function(e) {
  5394. out("fetch-worker sent a message: " + e.filename + ":" + e.lineno + ": " + e.message)
  5395. };
  5396. Fetch.worker.onerror = function(e) {
  5397. err("fetch-worker sent an error! " + e.filename + ":" + e.lineno + ": " + e.message)
  5398. }
  5399. }
  5400. }
  5401. };
  5402. function __emscripten_fetch_xhr(fetch, onsuccess, onerror, onprogress, onreadystatechange) {
  5403. var url = HEAPU32[fetch + 8 >> 2];
  5404. if (!url) {
  5405. onerror(fetch, 0, "no url specified!");
  5406. return
  5407. }
  5408. var url_ = UTF8ToString(url);
  5409. var fetch_attr = fetch + 112;
  5410. var requestMethod = UTF8ToString(fetch_attr);
  5411. if (!requestMethod) requestMethod = "GET";
  5412. var userData = HEAPU32[fetch_attr + 32 >> 2];
  5413. var fetchAttributes = HEAPU32[fetch_attr + 52 >> 2];
  5414. var timeoutMsecs = HEAPU32[fetch_attr + 56 >> 2];
  5415. var withCredentials = !!HEAPU32[fetch_attr + 60 >> 2];
  5416. var destinationPath = HEAPU32[fetch_attr + 64 >> 2];
  5417. var userName = HEAPU32[fetch_attr + 68 >> 2];
  5418. var password = HEAPU32[fetch_attr + 72 >> 2];
  5419. var requestHeaders = HEAPU32[fetch_attr + 76 >> 2];
  5420. var overriddenMimeType = HEAPU32[fetch_attr + 80 >> 2];
  5421. var dataPtr = HEAPU32[fetch_attr + 84 >> 2];
  5422. var dataLength = HEAPU32[fetch_attr + 88 >> 2];
  5423. var fetchAttrLoadToMemory = !!(fetchAttributes & 1);
  5424. var fetchAttrStreamData = !!(fetchAttributes & 2);
  5425. var fetchAttrPersistFile = !!(fetchAttributes & 4);
  5426. var fetchAttrAppend = !!(fetchAttributes & 8);
  5427. var fetchAttrReplace = !!(fetchAttributes & 16);
  5428. var fetchAttrSynchronous = !!(fetchAttributes & 64);
  5429. var fetchAttrWaitable = !!(fetchAttributes & 128);
  5430. var userNameStr = userName ? UTF8ToString(userName) : undefined;
  5431. var passwordStr = password ? UTF8ToString(password) : undefined;
  5432. var overriddenMimeTypeStr = overriddenMimeType ? UTF8ToString(overriddenMimeType) : undefined;
  5433. var xhr = new XMLHttpRequest;
  5434. xhr.withCredentials = withCredentials;
  5435. xhr.open(requestMethod, url_, !fetchAttrSynchronous, userNameStr, passwordStr);
  5436. if (!fetchAttrSynchronous) xhr.timeout = timeoutMsecs;
  5437. xhr.url_ = url_;
  5438. assert(!fetchAttrStreamData, "streaming uses moz-chunked-arraybuffer which is no longer supported; TODO: rewrite using fetch()");
  5439. xhr.responseType = "arraybuffer";
  5440. if (overriddenMimeType) {
  5441. xhr.overrideMimeType(overriddenMimeTypeStr)
  5442. }
  5443. if (requestHeaders) {
  5444. for (;;) {
  5445. var key = HEAPU32[requestHeaders >> 2];
  5446. if (!key) break;
  5447. var value = HEAPU32[requestHeaders + 4 >> 2];
  5448. if (!value) break;
  5449. requestHeaders += 8;
  5450. var keyStr = UTF8ToString(key);
  5451. var valueStr = UTF8ToString(value);
  5452. xhr.setRequestHeader(keyStr, valueStr)
  5453. }
  5454. }
  5455. Fetch.xhrs.push(xhr);
  5456. var id = Fetch.xhrs.length;
  5457. HEAPU32[fetch + 0 >> 2] = id;
  5458. var data = dataPtr && dataLength ? HEAPU8.slice(dataPtr, dataPtr + dataLength) : null;
  5459. xhr.onload = function(e) {
  5460. var len = xhr.response ? xhr.response.byteLength: 0;
  5461. var ptr = 0;
  5462. var ptrLen = 0;
  5463. if (fetchAttrLoadToMemory && !fetchAttrStreamData) {
  5464. ptrLen = len;
  5465. ptr = _malloc(ptrLen);
  5466. HEAPU8.set(new Uint8Array(xhr.response), ptr)
  5467. }
  5468. HEAPU32[fetch + 12 >> 2] = ptr;
  5469. Fetch.setu64(fetch + 16, ptrLen);
  5470. Fetch.setu64(fetch + 24, 0);
  5471. if (len) {
  5472. Fetch.setu64(fetch + 32, len)
  5473. }
  5474. HEAPU16[fetch + 40 >> 1] = xhr.readyState;
  5475. if (xhr.readyState === 4 && xhr.status === 0) {
  5476. if (len > 0) xhr.status = 200;
  5477. else xhr.status = 404
  5478. }
  5479. HEAPU16[fetch + 42 >> 1] = xhr.status;
  5480. if (xhr.statusText) stringToUTF8(xhr.statusText, fetch + 44, 64);
  5481. if (xhr.status >= 200 && xhr.status < 300) {
  5482. if (onsuccess) onsuccess(fetch, xhr, e)
  5483. } else {
  5484. if (onerror) onerror(fetch, xhr, e)
  5485. }
  5486. };
  5487. xhr.onerror = function(e) {
  5488. var status = xhr.status;
  5489. if (xhr.readyState === 4 && status === 0) status = 404;
  5490. HEAPU32[fetch + 12 >> 2] = 0;
  5491. Fetch.setu64(fetch + 16, 0);
  5492. Fetch.setu64(fetch + 24, 0);
  5493. Fetch.setu64(fetch + 32, 0);
  5494. HEAPU16[fetch + 40 >> 1] = xhr.readyState;
  5495. HEAPU16[fetch + 42 >> 1] = status;
  5496. if (onerror) onerror(fetch, xhr, e)
  5497. };
  5498. xhr.ontimeout = function(e) {
  5499. if (onerror) onerror(fetch, xhr, e)
  5500. };
  5501. xhr.onprogress = function(e) {
  5502. var ptrLen = fetchAttrLoadToMemory && fetchAttrStreamData && xhr.response ? xhr.response.byteLength: 0;
  5503. var ptr = 0;
  5504. if (fetchAttrLoadToMemory && fetchAttrStreamData) {
  5505. ptr = _malloc(ptrLen);
  5506. HEAPU8.set(new Uint8Array(xhr.response), ptr)
  5507. }
  5508. HEAPU32[fetch + 12 >> 2] = ptr;
  5509. Fetch.setu64(fetch + 16, ptrLen);
  5510. Fetch.setu64(fetch + 24, e.loaded - ptrLen);
  5511. Fetch.setu64(fetch + 32, e.total);
  5512. HEAPU16[fetch + 40 >> 1] = xhr.readyState;
  5513. if (xhr.readyState >= 3 && xhr.status === 0 && e.loaded > 0) xhr.status = 200;
  5514. HEAPU16[fetch + 42 >> 1] = xhr.status;
  5515. if (xhr.statusText) stringToUTF8(xhr.statusText, fetch + 44, 64);
  5516. if (onprogress) onprogress(fetch, xhr, e)
  5517. };
  5518. xhr.onreadystatechange = function(e) {
  5519. HEAPU16[fetch + 40 >> 1] = xhr.readyState;
  5520. if (xhr.readyState >= 2) {
  5521. HEAPU16[fetch + 42 >> 1] = xhr.status
  5522. }
  5523. if (onreadystatechange) onreadystatechange(fetch, xhr, e)
  5524. };
  5525. try {
  5526. xhr.send(data)
  5527. } catch(e) {
  5528. if (onerror) onerror(fetch, xhr, e)
  5529. }
  5530. }
  5531. function __emscripten_fetch_cache_data(db, fetch, data, onsuccess, onerror) {
  5532. if (!db) {
  5533. onerror(fetch, 0, "IndexedDB not available!");
  5534. return
  5535. }
  5536. var fetch_attr = fetch + 112;
  5537. var destinationPath = HEAPU32[fetch_attr + 64 >> 2];
  5538. if (!destinationPath) destinationPath = HEAPU32[fetch + 8 >> 2];
  5539. var destinationPathStr = UTF8ToString(destinationPath);
  5540. try {
  5541. var transaction = db.transaction(["FILES"], "readwrite");
  5542. var packages = transaction.objectStore("FILES");
  5543. var putRequest = packages.put(data, destinationPathStr);
  5544. putRequest.onsuccess = function(event) {
  5545. HEAPU16[fetch + 40 >> 1] = 4;
  5546. HEAPU16[fetch + 42 >> 1] = 200;
  5547. stringToUTF8("OK", fetch + 44, 64);
  5548. onsuccess(fetch, 0, destinationPathStr)
  5549. };
  5550. putRequest.onerror = function(error) {
  5551. HEAPU16[fetch + 40 >> 1] = 4;
  5552. HEAPU16[fetch + 42 >> 1] = 413;
  5553. stringToUTF8("Payload Too Large", fetch + 44, 64);
  5554. onerror(fetch, 0, error)
  5555. }
  5556. } catch(e) {
  5557. onerror(fetch, 0, e)
  5558. }
  5559. }
  5560. function __emscripten_fetch_load_cached_data(db, fetch, onsuccess, onerror) {
  5561. if (!db) {
  5562. onerror(fetch, 0, "IndexedDB not available!");
  5563. return
  5564. }
  5565. var fetch_attr = fetch + 112;
  5566. var path = HEAPU32[fetch_attr + 64 >> 2];
  5567. if (!path) path = HEAPU32[fetch + 8 >> 2];
  5568. var pathStr = UTF8ToString(path);
  5569. try {
  5570. var transaction = db.transaction(["FILES"], "readonly");
  5571. var packages = transaction.objectStore("FILES");
  5572. var getRequest = packages.get(pathStr);
  5573. getRequest.onsuccess = function(event) {
  5574. if (event.target.result) {
  5575. var value = event.target.result;
  5576. var len = value.byteLength || value.length;
  5577. var ptr = _malloc(len);
  5578. HEAPU8.set(new Uint8Array(value), ptr);
  5579. HEAPU32[fetch + 12 >> 2] = ptr;
  5580. Fetch.setu64(fetch + 16, len);
  5581. Fetch.setu64(fetch + 24, 0);
  5582. Fetch.setu64(fetch + 32, len);
  5583. HEAPU16[fetch + 40 >> 1] = 4;
  5584. HEAPU16[fetch + 42 >> 1] = 200;
  5585. stringToUTF8("OK", fetch + 44, 64);
  5586. onsuccess(fetch, 0, value)
  5587. } else {
  5588. HEAPU16[fetch + 40 >> 1] = 4;
  5589. HEAPU16[fetch + 42 >> 1] = 404;
  5590. stringToUTF8("Not Found", fetch + 44, 64);
  5591. onerror(fetch, 0, "no data")
  5592. }
  5593. };
  5594. getRequest.onerror = function(error) {
  5595. HEAPU16[fetch + 40 >> 1] = 4;
  5596. HEAPU16[fetch + 42 >> 1] = 404;
  5597. stringToUTF8("Not Found", fetch + 44, 64);
  5598. onerror(fetch, 0, error)
  5599. }
  5600. } catch(e) {
  5601. onerror(fetch, 0, e)
  5602. }
  5603. }
  5604. function __emscripten_fetch_delete_cached_data(db, fetch, onsuccess, onerror) {
  5605. if (!db) {
  5606. onerror(fetch, 0, "IndexedDB not available!");
  5607. return
  5608. }
  5609. var fetch_attr = fetch + 112;
  5610. var path = HEAPU32[fetch_attr + 64 >> 2];
  5611. if (!path) path = HEAPU32[fetch + 8 >> 2];
  5612. var pathStr = UTF8ToString(path);
  5613. try {
  5614. var transaction = db.transaction(["FILES"], "readwrite");
  5615. var packages = transaction.objectStore("FILES");
  5616. var request = packages.delete(pathStr);
  5617. request.onsuccess = function(event) {
  5618. var value = event.target.result;
  5619. HEAPU32[fetch + 12 >> 2] = 0;
  5620. Fetch.setu64(fetch + 16, 0);
  5621. Fetch.setu64(fetch + 24, 0);
  5622. Fetch.setu64(fetch + 32, 0);
  5623. HEAPU16[fetch + 40 >> 1] = 4;
  5624. HEAPU16[fetch + 42 >> 1] = 200;
  5625. stringToUTF8("OK", fetch + 44, 64);
  5626. onsuccess(fetch, 0, value)
  5627. };
  5628. request.onerror = function(error) {
  5629. HEAPU16[fetch + 40 >> 1] = 4;
  5630. HEAPU16[fetch + 42 >> 1] = 404;
  5631. stringToUTF8("Not Found", fetch + 44, 64);
  5632. onerror(fetch, 0, error)
  5633. }
  5634. } catch(e) {
  5635. onerror(fetch, 0, e)
  5636. }
  5637. }
  5638. function _emscripten_start_fetch(fetch, successcb, errorcb, progresscb, readystatechangecb) {
  5639. if (typeof noExitRuntime !== "undefined") noExitRuntime = true;
  5640. var fetch_attr = fetch + 112;
  5641. var requestMethod = UTF8ToString(fetch_attr);
  5642. var onsuccess = HEAPU32[fetch_attr + 36 >> 2];
  5643. var onerror = HEAPU32[fetch_attr + 40 >> 2];
  5644. var onprogress = HEAPU32[fetch_attr + 44 >> 2];
  5645. var onreadystatechange = HEAPU32[fetch_attr + 48 >> 2];
  5646. var fetchAttributes = HEAPU32[fetch_attr + 52 >> 2];
  5647. var fetchAttrLoadToMemory = !!(fetchAttributes & 1);
  5648. var fetchAttrStreamData = !!(fetchAttributes & 2);
  5649. var fetchAttrPersistFile = !!(fetchAttributes & 4);
  5650. var fetchAttrNoDownload = !!(fetchAttributes & 32);
  5651. var fetchAttrAppend = !!(fetchAttributes & 8);
  5652. var fetchAttrReplace = !!(fetchAttributes & 16);
  5653. var reportSuccess = function(fetch, xhr, e) {
  5654. if (onsuccess) dynCall_vi(onsuccess, fetch);
  5655. else if (successcb) successcb(fetch)
  5656. };
  5657. var reportProgress = function(fetch, xhr, e) {
  5658. if (onprogress) dynCall_vi(onprogress, fetch);
  5659. else if (progresscb) progresscb(fetch)
  5660. };
  5661. var reportError = function(fetch, xhr, e) {
  5662. if (onerror) dynCall_vi(onerror, fetch);
  5663. else if (errorcb) errorcb(fetch)
  5664. };
  5665. var reportReadyStateChange = function(fetch, xhr, e) {
  5666. if (onreadystatechange) dynCall_vi(onreadystatechange, fetch);
  5667. else if (readystatechangecb) readystatechangecb(fetch)
  5668. };
  5669. var performUncachedXhr = function(fetch, xhr, e) {
  5670. __emscripten_fetch_xhr(fetch, reportSuccess, reportError, reportProgress, reportReadyStateChange)
  5671. };
  5672. var cacheResultAndReportSuccess = function(fetch, xhr, e) {
  5673. var storeSuccess = function(fetch, xhr, e) {
  5674. if (onsuccess) dynCall_vi(onsuccess, fetch);
  5675. else if (successcb) successcb(fetch)
  5676. };
  5677. var storeError = function(fetch, xhr, e) {
  5678. if (onsuccess) dynCall_vi(onsuccess, fetch);
  5679. else if (successcb) successcb(fetch)
  5680. };
  5681. __emscripten_fetch_cache_data(Fetch.dbInstance, fetch, xhr.response, storeSuccess, storeError)
  5682. };
  5683. var performCachedXhr = function(fetch, xhr, e) {
  5684. __emscripten_fetch_xhr(fetch, cacheResultAndReportSuccess, reportError, reportProgress, reportReadyStateChange)
  5685. };
  5686. if (requestMethod === "EM_IDB_STORE") {
  5687. var ptr = HEAPU32[fetch_attr + 84 >> 2];
  5688. __emscripten_fetch_cache_data(Fetch.dbInstance, fetch, HEAPU8.slice(ptr, ptr + HEAPU32[fetch_attr + 88 >> 2]), reportSuccess, reportError)
  5689. } else if (requestMethod === "EM_IDB_DELETE") {
  5690. __emscripten_fetch_delete_cached_data(Fetch.dbInstance, fetch, reportSuccess, reportError)
  5691. } else if (!fetchAttrReplace) {
  5692. __emscripten_fetch_load_cached_data(Fetch.dbInstance, fetch, reportSuccess, fetchAttrNoDownload ? reportError: fetchAttrPersistFile ? performCachedXhr: performUncachedXhr)
  5693. } else if (!fetchAttrNoDownload) {
  5694. __emscripten_fetch_xhr(fetch, fetchAttrPersistFile ? cacheResultAndReportSuccess: reportSuccess, reportError, reportProgress, reportReadyStateChange)
  5695. } else {
  5696. return 0
  5697. }
  5698. return fetch
  5699. }
  5700. function _emscripten_syscall(which, varargs) {
  5701. switch (which) {
  5702. case 221:
  5703. return ___syscall221(which, varargs);
  5704. case 3:
  5705. return ___syscall3(which, varargs);
  5706. case 5:
  5707. return ___syscall5(which, varargs);
  5708. default:
  5709. throw "surprising proxied syscall: " + which
  5710. }
  5711. }
  5712. var GL = {
  5713. counter: 1,
  5714. lastError: 0,
  5715. buffers: [],
  5716. mappedBuffers: {},
  5717. programs: [],
  5718. framebuffers: [],
  5719. renderbuffers: [],
  5720. textures: [],
  5721. uniforms: [],
  5722. shaders: [],
  5723. vaos: [],
  5724. contexts: {},
  5725. currentContext: null,
  5726. offscreenCanvases: {},
  5727. timerQueriesEXT: [],
  5728. programInfos: {},
  5729. stringCache: {},
  5730. unpackAlignment: 4,
  5731. init: function() {
  5732. GL.miniTempBuffer = new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);
  5733. for (var i = 0; i < GL.MINI_TEMP_BUFFER_SIZE; i++) {
  5734. GL.miniTempBufferViews[i] = GL.miniTempBuffer.subarray(0, i + 1)
  5735. }
  5736. },
  5737. recordError: function recordError(errorCode) {
  5738. if (!GL.lastError) {
  5739. GL.lastError = errorCode
  5740. }
  5741. },
  5742. getNewId: function(table) {
  5743. var ret = GL.counter++;
  5744. for (var i = table.length; i < ret; i++) {
  5745. table[i] = null
  5746. }
  5747. return ret
  5748. },
  5749. MINI_TEMP_BUFFER_SIZE: 256,
  5750. miniTempBuffer: null,
  5751. miniTempBufferViews: [0],
  5752. getSource: function(shader, count, string, length) {
  5753. var source = "";
  5754. for (var i = 0; i < count; ++i) {
  5755. var len = length ? HEAP32[length + i * 4 >> 2] : -1;
  5756. source += UTF8ToString(HEAP32[string + i * 4 >> 2], len < 0 ? undefined: len)
  5757. }
  5758. return source
  5759. },
  5760. createContext: function(canvas, webGLContextAttributes) {
  5761. var ctx = canvas.getContext("webgl", webGLContextAttributes) || canvas.getContext("experimental-webgl", webGLContextAttributes);
  5762. if (!ctx) return 0;
  5763. var handle = GL.registerContext(ctx, webGLContextAttributes);
  5764. return handle
  5765. },
  5766. registerContext: function(ctx, webGLContextAttributes) {
  5767. var handle = _malloc(8);
  5768. HEAP32[handle + 4 >> 2] = _pthread_self();
  5769. var context = {
  5770. handle: handle,
  5771. attributes: webGLContextAttributes,
  5772. version: webGLContextAttributes.majorVersion,
  5773. GLctx: ctx
  5774. };
  5775. if (ctx.canvas) ctx.canvas.GLctxObject = context;
  5776. GL.contexts[handle] = context;
  5777. if (typeof webGLContextAttributes.enableExtensionsByDefault === "undefined" || webGLContextAttributes.enableExtensionsByDefault) {
  5778. GL.initExtensions(context)
  5779. }
  5780. return handle
  5781. },
  5782. makeContextCurrent: function(contextHandle) {
  5783. GL.currentContext = GL.contexts[contextHandle];
  5784. Module.ctx = GLctx = GL.currentContext && GL.currentContext.GLctx;
  5785. return ! (contextHandle && !GLctx)
  5786. },
  5787. getContext: function(contextHandle) {
  5788. return GL.contexts[contextHandle]
  5789. },
  5790. deleteContext: function(contextHandle) {
  5791. if (GL.currentContext === GL.contexts[contextHandle]) GL.currentContext = null;
  5792. if (typeof JSEvents === "object") JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);
  5793. if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) GL.contexts[contextHandle].GLctx.canvas.GLctxObject = undefined;
  5794. _free(GL.contexts[contextHandle]);
  5795. GL.contexts[contextHandle] = null
  5796. },
  5797. acquireInstancedArraysExtension: function(ctx) {
  5798. var ext = ctx.getExtension("ANGLE_instanced_arrays");
  5799. if (ext) {
  5800. ctx["vertexAttribDivisor"] = function(index, divisor) {
  5801. ext["vertexAttribDivisorANGLE"](index, divisor)
  5802. };
  5803. ctx["drawArraysInstanced"] = function(mode, first, count, primcount) {
  5804. ext["drawArraysInstancedANGLE"](mode, first, count, primcount)
  5805. };
  5806. ctx["drawElementsInstanced"] = function(mode, count, type, indices, primcount) {
  5807. ext["drawElementsInstancedANGLE"](mode, count, type, indices, primcount)
  5808. }
  5809. }
  5810. },
  5811. acquireVertexArrayObjectExtension: function(ctx) {
  5812. var ext = ctx.getExtension("OES_vertex_array_object");
  5813. if (ext) {
  5814. ctx["createVertexArray"] = function() {
  5815. return ext["createVertexArrayOES"]()
  5816. };
  5817. ctx["deleteVertexArray"] = function(vao) {
  5818. ext["deleteVertexArrayOES"](vao)
  5819. };
  5820. ctx["bindVertexArray"] = function(vao) {
  5821. ext["bindVertexArrayOES"](vao)
  5822. };
  5823. ctx["isVertexArray"] = function(vao) {
  5824. return ext["isVertexArrayOES"](vao)
  5825. }
  5826. }
  5827. },
  5828. acquireDrawBuffersExtension: function(ctx) {
  5829. var ext = ctx.getExtension("WEBGL_draw_buffers");
  5830. if (ext) {
  5831. ctx["drawBuffers"] = function(n, bufs) {
  5832. ext["drawBuffersWEBGL"](n, bufs)
  5833. }
  5834. }
  5835. },
  5836. initExtensions: function(context) {
  5837. if (!context) context = GL.currentContext;
  5838. if (context.initExtensionsDone) return;
  5839. context.initExtensionsDone = true;
  5840. var GLctx = context.GLctx;
  5841. if (context.version < 2) {
  5842. GL.acquireInstancedArraysExtension(GLctx);
  5843. GL.acquireVertexArrayObjectExtension(GLctx);
  5844. GL.acquireDrawBuffersExtension(GLctx)
  5845. }
  5846. GLctx.disjointTimerQueryExt = GLctx.getExtension("EXT_disjoint_timer_query");
  5847. var automaticallyEnabledExtensions = ["OES_texture_float", "OES_texture_half_float", "OES_standard_derivatives", "OES_vertex_array_object", "WEBGL_compressed_texture_s3tc", "WEBGL_depth_texture", "OES_element_index_uint", "EXT_texture_filter_anisotropic", "EXT_frag_depth", "WEBGL_draw_buffers", "ANGLE_instanced_arrays", "OES_texture_float_linear", "OES_texture_half_float_linear", "EXT_blend_minmax", "EXT_shader_texture_lod", "WEBGL_compressed_texture_pvrtc", "EXT_color_buffer_half_float", "WEBGL_color_buffer_float", "EXT_sRGB", "WEBGL_compressed_texture_etc1", "EXT_disjoint_timer_query", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_astc", "EXT_color_buffer_float", "WEBGL_compressed_texture_s3tc_srgb", "EXT_disjoint_timer_query_webgl2"];
  5848. var exts = GLctx.getSupportedExtensions() || [];
  5849. exts.forEach(function(ext) {
  5850. if (automaticallyEnabledExtensions.indexOf(ext) != -1) {
  5851. GLctx.getExtension(ext)
  5852. }
  5853. })
  5854. },
  5855. populateUniformTable: function(program) {
  5856. var p = GL.programs[program];
  5857. var ptable = GL.programInfos[program] = {
  5858. uniforms: {},
  5859. maxUniformLength: 0,
  5860. maxAttributeLength: -1,
  5861. maxUniformBlockNameLength: -1
  5862. };
  5863. var utable = ptable.uniforms;
  5864. var numUniforms = GLctx.getProgramParameter(p, 35718);
  5865. for (var i = 0; i < numUniforms; ++i) {
  5866. var u = GLctx.getActiveUniform(p, i);
  5867. var name = u.name;
  5868. ptable.maxUniformLength = Math.max(ptable.maxUniformLength, name.length + 1);
  5869. if (name.slice( - 1) == "]") {
  5870. name = name.slice(0, name.lastIndexOf("["))
  5871. }
  5872. var loc = GLctx.getUniformLocation(p, name);
  5873. if (loc) {
  5874. var id = GL.getNewId(GL.uniforms);
  5875. utable[name] = [u.size, id];
  5876. GL.uniforms[id] = loc;
  5877. for (var j = 1; j < u.size; ++j) {
  5878. var n = name + "[" + j + "]";
  5879. loc = GLctx.getUniformLocation(p, n);
  5880. id = GL.getNewId(GL.uniforms);
  5881. GL.uniforms[id] = loc
  5882. }
  5883. }
  5884. }
  5885. }
  5886. };
  5887. var __emscripten_webgl_power_preferences = ["default", "low-power", "high-performance"];
  5888. function _emscripten_webgl_do_create_context(target, attributes) {
  5889. assert(attributes);
  5890. var contextAttributes = {};
  5891. var a = attributes >> 2;
  5892. contextAttributes["alpha"] = !!HEAP32[a + (0 >> 2)];
  5893. contextAttributes["depth"] = !!HEAP32[a + (4 >> 2)];
  5894. contextAttributes["stencil"] = !!HEAP32[a + (8 >> 2)];
  5895. contextAttributes["antialias"] = !!HEAP32[a + (12 >> 2)];
  5896. contextAttributes["premultipliedAlpha"] = !!HEAP32[a + (16 >> 2)];
  5897. contextAttributes["preserveDrawingBuffer"] = !!HEAP32[a + (20 >> 2)];
  5898. var powerPreference = HEAP32[a + (24 >> 2)];
  5899. contextAttributes["powerPreference"] = __emscripten_webgl_power_preferences[powerPreference];
  5900. contextAttributes["failIfMajorPerformanceCaveat"] = !!HEAP32[a + (28 >> 2)];
  5901. contextAttributes.majorVersion = HEAP32[a + (32 >> 2)];
  5902. contextAttributes.minorVersion = HEAP32[a + (36 >> 2)];
  5903. contextAttributes.enableExtensionsByDefault = HEAP32[a + (40 >> 2)];
  5904. contextAttributes.explicitSwapControl = HEAP32[a + (44 >> 2)];
  5905. contextAttributes.proxyContextToMainThread = HEAP32[a + (48 >> 2)];
  5906. contextAttributes.renderViaOffscreenBackBuffer = HEAP32[a + (52 >> 2)];
  5907. var canvas = __findCanvasEventTarget(target);
  5908. if (!canvas) {
  5909. return 0
  5910. }
  5911. if (contextAttributes.explicitSwapControl) {
  5912. return 0
  5913. }
  5914. var contextHandle = GL.createContext(canvas, contextAttributes);
  5915. return contextHandle
  5916. }
  5917. function _emscripten_webgl_create_context(a0, a1) {
  5918. return _emscripten_webgl_do_create_context(a0, a1)
  5919. }
  5920. var _fabs = Math_abs;
  5921. function _getenv(name) {
  5922. if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(9, 1, name);
  5923. if (name === 0) return 0;
  5924. name = UTF8ToString(name);
  5925. if (!ENV.hasOwnProperty(name)) return 0;
  5926. if (_getenv.ret) _free(_getenv.ret);
  5927. _getenv.ret = allocateUTF8(ENV[name]);
  5928. return _getenv.ret
  5929. }
  5930. function _gettimeofday(ptr) {
  5931. var now = Date.now();
  5932. HEAP32[ptr >> 2] = now / 1e3 | 0;
  5933. HEAP32[ptr + 4 >> 2] = now % 1e3 * 1e3 | 0;
  5934. return 0
  5935. }
  5936. var ___tm_timezone;
  5937. if (ENVIRONMENT_IS_PTHREAD) ___tm_timezone = PthreadWorkerInit.___tm_timezone;
  5938. else PthreadWorkerInit.___tm_timezone = ___tm_timezone = (stringToUTF8("GMT", 1388336, 4), 1388336);
  5939. function _gmtime_r(time, tmPtr) {
  5940. var date = new Date(HEAP32[time >> 2] * 1e3);
  5941. HEAP32[tmPtr >> 2] = date.getUTCSeconds();
  5942. HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();
  5943. HEAP32[tmPtr + 8 >> 2] = date.getUTCHours();
  5944. HEAP32[tmPtr + 12 >> 2] = date.getUTCDate();
  5945. HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth();
  5946. HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900;
  5947. HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();
  5948. HEAP32[tmPtr + 36 >> 2] = 0;
  5949. HEAP32[tmPtr + 32 >> 2] = 0;
  5950. var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);
  5951. var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;
  5952. HEAP32[tmPtr + 28 >> 2] = yday;
  5953. HEAP32[tmPtr + 40 >> 2] = ___tm_timezone;
  5954. return tmPtr
  5955. }
  5956. function _llvm_exp2_f32(x) {
  5957. return Math.pow(2, x)
  5958. }
  5959. function _llvm_exp2_f64(a0) {
  5960. return _llvm_exp2_f32(a0)
  5961. }
  5962. function _llvm_log2_f32(x) {
  5963. return Math.log(x) / Math.LN2
  5964. }
  5965. function _llvm_stackrestore(p) {
  5966. var self = _llvm_stacksave;
  5967. var ret = self.LLVM_SAVEDSTACKS[p];
  5968. self.LLVM_SAVEDSTACKS.splice(p, 1);
  5969. stackRestore(ret)
  5970. }
  5971. function _llvm_stacksave() {
  5972. var self = _llvm_stacksave;
  5973. if (!self.LLVM_SAVEDSTACKS) {
  5974. self.LLVM_SAVEDSTACKS = []
  5975. }
  5976. self.LLVM_SAVEDSTACKS.push(stackSave());
  5977. return self.LLVM_SAVEDSTACKS.length - 1
  5978. }
  5979. var _llvm_trunc_f64 = Math_trunc;
  5980. function _tzset() {
  5981. if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(10, 1);
  5982. if (_tzset.called) return;
  5983. _tzset.called = true;
  5984. HEAP32[__get_timezone() >> 2] = (new Date).getTimezoneOffset() * 60;
  5985. var currentYear = (new Date).getFullYear();
  5986. var winter = new Date(currentYear, 0, 1);
  5987. var summer = new Date(currentYear, 6, 1);
  5988. HEAP32[__get_daylight() >> 2] = Number(winter.getTimezoneOffset() != summer.getTimezoneOffset());
  5989. function extractZone(date) {
  5990. var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/);
  5991. return match ? match[1] : "GMT"
  5992. }
  5993. var winterName = extractZone(winter);
  5994. var summerName = extractZone(summer);
  5995. var winterNamePtr = allocate(intArrayFromString(winterName), "i8", ALLOC_NORMAL);
  5996. var summerNamePtr = allocate(intArrayFromString(summerName), "i8", ALLOC_NORMAL);
  5997. if (summer.getTimezoneOffset() < winter.getTimezoneOffset()) {
  5998. HEAP32[__get_tzname() >> 2] = winterNamePtr;
  5999. HEAP32[__get_tzname() + 4 >> 2] = summerNamePtr
  6000. } else {
  6001. HEAP32[__get_tzname() >> 2] = summerNamePtr;
  6002. HEAP32[__get_tzname() + 4 >> 2] = winterNamePtr
  6003. }
  6004. }
  6005. function _localtime_r(time, tmPtr) {
  6006. _tzset();
  6007. var date = new Date(HEAP32[time >> 2] * 1e3);
  6008. HEAP32[tmPtr >> 2] = date.getSeconds();
  6009. HEAP32[tmPtr + 4 >> 2] = date.getMinutes();
  6010. HEAP32[tmPtr + 8 >> 2] = date.getHours();
  6011. HEAP32[tmPtr + 12 >> 2] = date.getDate();
  6012. HEAP32[tmPtr + 16 >> 2] = date.getMonth();
  6013. HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;
  6014. HEAP32[tmPtr + 24 >> 2] = date.getDay();
  6015. var start = new Date(date.getFullYear(), 0, 1);
  6016. var yday = (date.getTime() - start.getTime()) / (1e3 * 60 * 60 * 24) | 0;
  6017. HEAP32[tmPtr + 28 >> 2] = yday;
  6018. HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);
  6019. var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();
  6020. var winterOffset = start.getTimezoneOffset();
  6021. var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;
  6022. HEAP32[tmPtr + 32 >> 2] = dst;
  6023. var zonePtr = HEAP32[__get_tzname() + (dst ? 4 : 0) >> 2];
  6024. HEAP32[tmPtr + 40 >> 2] = zonePtr;
  6025. return tmPtr
  6026. }
  6027. function _emscripten_memcpy_big(dest, src, num) {
  6028. HEAPU8.set(HEAPU8.subarray(src, src + num), dest)
  6029. }
  6030. function _pthread_cleanup_pop(execute) {
  6031. var routine = PThread.exitHandlers.pop();
  6032. if (execute) routine()
  6033. }
  6034. function _pthread_cleanup_push(routine, arg) {
  6035. if (PThread.exitHandlers === null) {
  6036. PThread.exitHandlers = [];
  6037. if (!ENVIRONMENT_IS_PTHREAD) {
  6038. __ATEXIT__.push(function() {
  6039. PThread.runExitHandlers()
  6040. })
  6041. }
  6042. }
  6043. PThread.exitHandlers.push(function() {
  6044. dynCall_vi(routine, arg)
  6045. })
  6046. }
  6047. function __spawn_thread(threadParams) {
  6048. if (ENVIRONMENT_IS_PTHREAD) throw "Internal Error! _spawn_thread() can only ever be called from main application thread!";
  6049. var worker = PThread.getNewWorker();
  6050. if (worker.pthread !== undefined) throw "Internal error!";
  6051. if (!threadParams.pthread_ptr) throw "Internal error, no pthread ptr!";
  6052. PThread.runningWorkers.push(worker);
  6053. var tlsMemory = _malloc(128 * 4);
  6054. for (var i = 0; i < 128; ++i) {
  6055. HEAP32[tlsMemory + i * 4 >> 2] = 0
  6056. }
  6057. var stackHigh = threadParams.stackBase + threadParams.stackSize;
  6058. var pthread = PThread.pthreads[threadParams.pthread_ptr] = {
  6059. worker: worker,
  6060. stackBase: threadParams.stackBase,
  6061. stackSize: threadParams.stackSize,
  6062. allocatedOwnStack: threadParams.allocatedOwnStack,
  6063. thread: threadParams.pthread_ptr,
  6064. threadInfoStruct: threadParams.pthread_ptr
  6065. };
  6066. Atomics.store(HEAPU32, pthread.threadInfoStruct + 0 >> 2, 0);
  6067. Atomics.store(HEAPU32, pthread.threadInfoStruct + 4 >> 2, 0);
  6068. Atomics.store(HEAPU32, pthread.threadInfoStruct + 20 >> 2, 0);
  6069. Atomics.store(HEAPU32, pthread.threadInfoStruct + 80 >> 2, threadParams.detached);
  6070. Atomics.store(HEAPU32, pthread.threadInfoStruct + 116 >> 2, tlsMemory);
  6071. Atomics.store(HEAPU32, pthread.threadInfoStruct + 60 >> 2, 0);
  6072. Atomics.store(HEAPU32, pthread.threadInfoStruct + 52 >> 2, pthread.threadInfoStruct);
  6073. Atomics.store(HEAPU32, pthread.threadInfoStruct + 56 >> 2, PROCINFO.pid);
  6074. Atomics.store(HEAPU32, pthread.threadInfoStruct + 120 >> 2, threadParams.stackSize);
  6075. Atomics.store(HEAPU32, pthread.threadInfoStruct + 96 >> 2, threadParams.stackSize);
  6076. Atomics.store(HEAPU32, pthread.threadInfoStruct + 92 >> 2, stackHigh);
  6077. Atomics.store(HEAPU32, pthread.threadInfoStruct + 120 + 8 >> 2, stackHigh);
  6078. Atomics.store(HEAPU32, pthread.threadInfoStruct + 120 + 12 >> 2, threadParams.detached);
  6079. Atomics.store(HEAPU32, pthread.threadInfoStruct + 120 + 20 >> 2, threadParams.schedPolicy);
  6080. Atomics.store(HEAPU32, pthread.threadInfoStruct + 120 + 24 >> 2, threadParams.schedPrio);
  6081. var global_libc = _emscripten_get_global_libc();
  6082. var global_locale = global_libc + 40;
  6083. Atomics.store(HEAPU32, pthread.threadInfoStruct + 188 >> 2, global_locale);
  6084. worker.pthread = pthread;
  6085. var msg = {
  6086. cmd: "run",
  6087. start_routine: threadParams.startRoutine,
  6088. arg: threadParams.arg,
  6089. threadInfoStruct: threadParams.pthread_ptr,
  6090. selfThreadId: threadParams.pthread_ptr,
  6091. parentThreadId: threadParams.parent_pthread_ptr,
  6092. stackBase: threadParams.stackBase,
  6093. stackSize: threadParams.stackSize
  6094. };
  6095. worker.runPthread = function() {
  6096. msg.time = performance.now();
  6097. worker.postMessage(msg, threadParams.transferList)
  6098. };
  6099. if (worker.loaded) {
  6100. worker.runPthread();
  6101. delete worker.runPthread
  6102. }
  6103. }
  6104. function _pthread_getschedparam(thread, policy, schedparam) {
  6105. if (!policy && !schedparam) return ERRNO_CODES.EINVAL;
  6106. if (!thread) {
  6107. err("pthread_getschedparam called with a null thread pointer!");
  6108. return ERRNO_CODES.ESRCH
  6109. }
  6110. var self = HEAP32[thread + 24 >> 2];
  6111. if (self !== thread) {
  6112. err("pthread_getschedparam attempted on thread " + thread + ", which does not point to a valid thread, or does not exist anymore!");
  6113. return ERRNO_CODES.ESRCH
  6114. }
  6115. var schedPolicy = Atomics.load(HEAPU32, thread + 120 + 20 >> 2);
  6116. var schedPrio = Atomics.load(HEAPU32, thread + 120 + 24 >> 2);
  6117. if (policy) HEAP32[policy >> 2] = schedPolicy;
  6118. if (schedparam) HEAP32[schedparam >> 2] = schedPrio;
  6119. return 0
  6120. }
  6121. function _pthread_create(pthread_ptr, attr, start_routine, arg) {
  6122. if (typeof SharedArrayBuffer === "undefined") {
  6123. err("Current environment does not support SharedArrayBuffer, pthreads are not available!");
  6124. return 6
  6125. }
  6126. if (!pthread_ptr) {
  6127. err("pthread_create called with a null thread pointer!");
  6128. return 28
  6129. }
  6130. var transferList = [];
  6131. var error = 0;
  6132. if (ENVIRONMENT_IS_PTHREAD && (transferList.length === 0 || error)) {
  6133. return _emscripten_sync_run_in_main_thread_4(687865856, pthread_ptr, attr, start_routine, arg)
  6134. }
  6135. if (error) return error;
  6136. var stackSize = 0;
  6137. var stackBase = 0;
  6138. var detached = 0;
  6139. var schedPolicy = 0;
  6140. var schedPrio = 0;
  6141. if (attr) {
  6142. stackSize = HEAP32[attr >> 2];
  6143. stackSize += 81920;
  6144. stackBase = HEAP32[attr + 8 >> 2];
  6145. detached = HEAP32[attr + 12 >> 2] !== 0;
  6146. var inheritSched = HEAP32[attr + 16 >> 2] === 0;
  6147. if (inheritSched) {
  6148. var prevSchedPolicy = HEAP32[attr + 20 >> 2];
  6149. var prevSchedPrio = HEAP32[attr + 24 >> 2];
  6150. var parentThreadPtr = PThread.currentProxiedOperationCallerThread ? PThread.currentProxiedOperationCallerThread: _pthread_self();
  6151. _pthread_getschedparam(parentThreadPtr, attr + 20, attr + 24);
  6152. schedPolicy = HEAP32[attr + 20 >> 2];
  6153. schedPrio = HEAP32[attr + 24 >> 2];
  6154. HEAP32[attr + 20 >> 2] = prevSchedPolicy;
  6155. HEAP32[attr + 24 >> 2] = prevSchedPrio
  6156. } else {
  6157. schedPolicy = HEAP32[attr + 20 >> 2];
  6158. schedPrio = HEAP32[attr + 24 >> 2]
  6159. }
  6160. } else {
  6161. stackSize = 2097152
  6162. }
  6163. var allocatedOwnStack = stackBase == 0;
  6164. if (allocatedOwnStack) {
  6165. stackBase = _memalign(16, stackSize)
  6166. } else {
  6167. stackBase -= stackSize;
  6168. assert(stackBase > 0)
  6169. }
  6170. var threadInfoStruct = _malloc(244);
  6171. for (var i = 0; i < 244 >> 2; ++i) HEAPU32[(threadInfoStruct >> 2) + i] = 0;
  6172. HEAP32[pthread_ptr >> 2] = threadInfoStruct;
  6173. HEAP32[threadInfoStruct + 24 >> 2] = threadInfoStruct;
  6174. var headPtr = threadInfoStruct + 168;
  6175. HEAP32[headPtr >> 2] = headPtr;
  6176. var threadParams = {
  6177. stackBase: stackBase,
  6178. stackSize: stackSize,
  6179. allocatedOwnStack: allocatedOwnStack,
  6180. schedPolicy: schedPolicy,
  6181. schedPrio: schedPrio,
  6182. detached: detached,
  6183. startRoutine: start_routine,
  6184. pthread_ptr: threadInfoStruct,
  6185. parent_pthread_ptr: _pthread_self(),
  6186. arg: arg,
  6187. transferList: transferList
  6188. };
  6189. if (ENVIRONMENT_IS_PTHREAD) {
  6190. threadParams.cmd = "spawnThread";
  6191. postMessage(threadParams, transferList)
  6192. } else {
  6193. __spawn_thread(threadParams)
  6194. }
  6195. return 0
  6196. }
  6197. function __cleanup_thread(pthread_ptr) {
  6198. if (ENVIRONMENT_IS_PTHREAD) throw "Internal Error! _cleanup_thread() can only ever be called from main application thread!";
  6199. if (!pthread_ptr) throw "Internal Error! Null pthread_ptr in _cleanup_thread!";
  6200. HEAP32[pthread_ptr + 24 >> 2] = 0;
  6201. var pthread = PThread.pthreads[pthread_ptr];
  6202. if (pthread) {
  6203. var worker = pthread.worker;
  6204. PThread.returnWorkerToPool(worker)
  6205. }
  6206. }
  6207. function __pthread_testcancel_js() {
  6208. if (!ENVIRONMENT_IS_PTHREAD) return;
  6209. if (!threadInfoStruct) return;
  6210. var cancelDisabled = Atomics.load(HEAPU32, threadInfoStruct + 72 >> 2);
  6211. if (cancelDisabled) return;
  6212. var canceled = Atomics.load(HEAPU32, threadInfoStruct + 0 >> 2);
  6213. if (canceled == 2) throw "Canceled!"
  6214. }
  6215. function _pthread_join(thread, status) {
  6216. if (!thread) {
  6217. err("pthread_join attempted on a null thread pointer!");
  6218. return ERRNO_CODES.ESRCH
  6219. }
  6220. if (ENVIRONMENT_IS_PTHREAD && selfThreadId == thread) {
  6221. err("PThread " + thread + " is attempting to join to itself!");
  6222. return ERRNO_CODES.EDEADLK
  6223. } else if (!ENVIRONMENT_IS_PTHREAD && PThread.mainThreadBlock == thread) {
  6224. err("Main thread " + thread + " is attempting to join to itself!");
  6225. return ERRNO_CODES.EDEADLK
  6226. }
  6227. var self = HEAP32[thread + 24 >> 2];
  6228. if (self !== thread) {
  6229. err("pthread_join attempted on thread " + thread + ", which does not point to a valid thread, or does not exist anymore!");
  6230. return ERRNO_CODES.ESRCH
  6231. }
  6232. var detached = Atomics.load(HEAPU32, thread + 80 >> 2);
  6233. if (detached) {
  6234. err("Attempted to join thread " + thread + ", which was already detached!");
  6235. return ERRNO_CODES.EINVAL
  6236. }
  6237. for (;;) {
  6238. var threadStatus = Atomics.load(HEAPU32, thread + 0 >> 2);
  6239. if (threadStatus == 1) {
  6240. var threadExitCode = Atomics.load(HEAPU32, thread + 4 >> 2);
  6241. if (status) HEAP32[status >> 2] = threadExitCode;
  6242. Atomics.store(HEAPU32, thread + 80 >> 2, 1);
  6243. if (!ENVIRONMENT_IS_PTHREAD) __cleanup_thread(thread);
  6244. else postMessage({
  6245. cmd: "cleanupThread",
  6246. thread: thread
  6247. });
  6248. return 0
  6249. }
  6250. __pthread_testcancel_js();
  6251. if (!ENVIRONMENT_IS_PTHREAD) _emscripten_main_thread_process_queued_calls();
  6252. _emscripten_futex_wait(thread + 0, threadStatus, ENVIRONMENT_IS_PTHREAD ? 100 : 1)
  6253. }
  6254. }
  6255. function __isLeapYear(year) {
  6256. return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)
  6257. }
  6258. function __arraySum(array, index) {
  6259. var sum = 0;
  6260. for (var i = 0; i <= index; sum += array[i++]);
  6261. return sum
  6262. }
  6263. var __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  6264. var __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  6265. function __addDays(date, days) {
  6266. var newDate = new Date(date.getTime());
  6267. while (days > 0) {
  6268. var leap = __isLeapYear(newDate.getFullYear());
  6269. var currentMonth = newDate.getMonth();
  6270. var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP: __MONTH_DAYS_REGULAR)[currentMonth];
  6271. if (days > daysInCurrentMonth - newDate.getDate()) {
  6272. days -= daysInCurrentMonth - newDate.getDate() + 1;
  6273. newDate.setDate(1);
  6274. if (currentMonth < 11) {
  6275. newDate.setMonth(currentMonth + 1)
  6276. } else {
  6277. newDate.setMonth(0);
  6278. newDate.setFullYear(newDate.getFullYear() + 1)
  6279. }
  6280. } else {
  6281. newDate.setDate(newDate.getDate() + days);
  6282. return newDate
  6283. }
  6284. }
  6285. return newDate
  6286. }
  6287. function _strftime(s, maxsize, format, tm) {
  6288. var tm_zone = HEAP32[tm + 40 >> 2];
  6289. var date = {
  6290. tm_sec: HEAP32[tm >> 2],
  6291. tm_min: HEAP32[tm + 4 >> 2],
  6292. tm_hour: HEAP32[tm + 8 >> 2],
  6293. tm_mday: HEAP32[tm + 12 >> 2],
  6294. tm_mon: HEAP32[tm + 16 >> 2],
  6295. tm_year: HEAP32[tm + 20 >> 2],
  6296. tm_wday: HEAP32[tm + 24 >> 2],
  6297. tm_yday: HEAP32[tm + 28 >> 2],
  6298. tm_isdst: HEAP32[tm + 32 >> 2],
  6299. tm_gmtoff: HEAP32[tm + 36 >> 2],
  6300. tm_zone: tm_zone ? UTF8ToString(tm_zone) : ""
  6301. };
  6302. var pattern = UTF8ToString(format);
  6303. var EXPANSION_RULES_1 = {
  6304. "%c": "%a %b %d %H:%M:%S %Y",
  6305. "%D": "%m/%d/%y",
  6306. "%F": "%Y-%m-%d",
  6307. "%h": "%b",
  6308. "%r": "%I:%M:%S %p",
  6309. "%R": "%H:%M",
  6310. "%T": "%H:%M:%S",
  6311. "%x": "%m/%d/%y",
  6312. "%X": "%H:%M:%S",
  6313. "%Ec": "%c",
  6314. "%EC": "%C",
  6315. "%Ex": "%m/%d/%y",
  6316. "%EX": "%H:%M:%S",
  6317. "%Ey": "%y",
  6318. "%EY": "%Y",
  6319. "%Od": "%d",
  6320. "%Oe": "%e",
  6321. "%OH": "%H",
  6322. "%OI": "%I",
  6323. "%Om": "%m",
  6324. "%OM": "%M",
  6325. "%OS": "%S",
  6326. "%Ou": "%u",
  6327. "%OU": "%U",
  6328. "%OV": "%V",
  6329. "%Ow": "%w",
  6330. "%OW": "%W",
  6331. "%Oy": "%y"
  6332. };
  6333. for (var rule in EXPANSION_RULES_1) {
  6334. pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule])
  6335. }
  6336. var WEEKDAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
  6337. var MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
  6338. function leadingSomething(value, digits, character) {
  6339. var str = typeof value === "number" ? value.toString() : value || "";
  6340. while (str.length < digits) {
  6341. str = character[0] + str
  6342. }
  6343. return str
  6344. }
  6345. function leadingNulls(value, digits) {
  6346. return leadingSomething(value, digits, "0")
  6347. }
  6348. function compareByDay(date1, date2) {
  6349. function sgn(value) {
  6350. return value < 0 ? -1 : value > 0 ? 1 : 0
  6351. }
  6352. var compare;
  6353. if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {
  6354. if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {
  6355. compare = sgn(date1.getDate() - date2.getDate())
  6356. }
  6357. }
  6358. return compare
  6359. }
  6360. function getFirstWeekStartDate(janFourth) {
  6361. switch (janFourth.getDay()) {
  6362. case 0:
  6363. return new Date(janFourth.getFullYear() - 1, 11, 29);
  6364. case 1:
  6365. return janFourth;
  6366. case 2:
  6367. return new Date(janFourth.getFullYear(), 0, 3);
  6368. case 3:
  6369. return new Date(janFourth.getFullYear(), 0, 2);
  6370. case 4:
  6371. return new Date(janFourth.getFullYear(), 0, 1);
  6372. case 5:
  6373. return new Date(janFourth.getFullYear() - 1, 11, 31);
  6374. case 6:
  6375. return new Date(janFourth.getFullYear() - 1, 11, 30)
  6376. }
  6377. }
  6378. function getWeekBasedYear(date) {
  6379. var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);
  6380. var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);
  6381. var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);
  6382. var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
  6383. var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
  6384. if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {
  6385. if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {
  6386. return thisDate.getFullYear() + 1
  6387. } else {
  6388. return thisDate.getFullYear()
  6389. }
  6390. } else {
  6391. return thisDate.getFullYear() - 1
  6392. }
  6393. }
  6394. var EXPANSION_RULES_2 = {
  6395. "%a": function(date) {
  6396. return WEEKDAYS[date.tm_wday].substring(0, 3)
  6397. },
  6398. "%A": function(date) {
  6399. return WEEKDAYS[date.tm_wday]
  6400. },
  6401. "%b": function(date) {
  6402. return MONTHS[date.tm_mon].substring(0, 3)
  6403. },
  6404. "%B": function(date) {
  6405. return MONTHS[date.tm_mon]
  6406. },
  6407. "%C": function(date) {
  6408. var year = date.tm_year + 1900;
  6409. return leadingNulls(year / 100 | 0, 2)
  6410. },
  6411. "%d": function(date) {
  6412. return leadingNulls(date.tm_mday, 2)
  6413. },
  6414. "%e": function(date) {
  6415. return leadingSomething(date.tm_mday, 2, " ")
  6416. },
  6417. "%g": function(date) {
  6418. return getWeekBasedYear(date).toString().substring(2)
  6419. },
  6420. "%G": function(date) {
  6421. return getWeekBasedYear(date)
  6422. },
  6423. "%H": function(date) {
  6424. return leadingNulls(date.tm_hour, 2)
  6425. },
  6426. "%I": function(date) {
  6427. var twelveHour = date.tm_hour;
  6428. if (twelveHour == 0) twelveHour = 12;
  6429. else if (twelveHour > 12) twelveHour -= 12;
  6430. return leadingNulls(twelveHour, 2)
  6431. },
  6432. "%j": function(date) {
  6433. return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP: __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3)
  6434. },
  6435. "%m": function(date) {
  6436. return leadingNulls(date.tm_mon + 1, 2)
  6437. },
  6438. "%M": function(date) {
  6439. return leadingNulls(date.tm_min, 2)
  6440. },
  6441. "%n": function() {
  6442. return "\n"
  6443. },
  6444. "%p": function(date) {
  6445. if (date.tm_hour >= 0 && date.tm_hour < 12) {
  6446. return "AM"
  6447. } else {
  6448. return "PM"
  6449. }
  6450. },
  6451. "%S": function(date) {
  6452. return leadingNulls(date.tm_sec, 2)
  6453. },
  6454. "%t": function() {
  6455. return "\t"
  6456. },
  6457. "%u": function(date) {
  6458. return date.tm_wday || 7
  6459. },
  6460. "%U": function(date) {
  6461. var janFirst = new Date(date.tm_year + 1900, 0, 1);
  6462. var firstSunday = janFirst.getDay() === 0 ? janFirst: __addDays(janFirst, 7 - janFirst.getDay());
  6463. var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);
  6464. if (compareByDay(firstSunday, endDate) < 0) {
  6465. var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP: __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31;
  6466. var firstSundayUntilEndJanuary = 31 - firstSunday.getDate();
  6467. var days = firstSundayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate();
  6468. return leadingNulls(Math.ceil(days / 7), 2)
  6469. }
  6470. return compareByDay(firstSunday, janFirst) === 0 ? "01": "00"
  6471. },
  6472. "%V": function(date) {
  6473. var janFourthThisYear = new Date(date.tm_year + 1900, 0, 4);
  6474. var janFourthNextYear = new Date(date.tm_year + 1901, 0, 4);
  6475. var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
  6476. var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
  6477. var endDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);
  6478. if (compareByDay(endDate, firstWeekStartThisYear) < 0) {
  6479. return "53"
  6480. }
  6481. if (compareByDay(firstWeekStartNextYear, endDate) <= 0) {
  6482. return "01"
  6483. }
  6484. var daysDifference;
  6485. if (firstWeekStartThisYear.getFullYear() < date.tm_year + 1900) {
  6486. daysDifference = date.tm_yday + 32 - firstWeekStartThisYear.getDate()
  6487. } else {
  6488. daysDifference = date.tm_yday + 1 - firstWeekStartThisYear.getDate()
  6489. }
  6490. return leadingNulls(Math.ceil(daysDifference / 7), 2)
  6491. },
  6492. "%w": function(date) {
  6493. return date.tm_wday
  6494. },
  6495. "%W": function(date) {
  6496. var janFirst = new Date(date.tm_year, 0, 1);
  6497. var firstMonday = janFirst.getDay() === 1 ? janFirst: __addDays(janFirst, janFirst.getDay() === 0 ? 1 : 7 - janFirst.getDay() + 1);
  6498. var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);
  6499. if (compareByDay(firstMonday, endDate) < 0) {
  6500. var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP: __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31;
  6501. var firstMondayUntilEndJanuary = 31 - firstMonday.getDate();
  6502. var days = firstMondayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate();
  6503. return leadingNulls(Math.ceil(days / 7), 2)
  6504. }
  6505. return compareByDay(firstMonday, janFirst) === 0 ? "01": "00"
  6506. },
  6507. "%y": function(date) {
  6508. return (date.tm_year + 1900).toString().substring(2)
  6509. },
  6510. "%Y": function(date) {
  6511. return date.tm_year + 1900
  6512. },
  6513. "%z": function(date) {
  6514. var off = date.tm_gmtoff;
  6515. var ahead = off >= 0;
  6516. off = Math.abs(off) / 60;
  6517. off = off / 60 * 100 + off % 60;
  6518. return (ahead ? "+": "-") + String("0000" + off).slice( - 4)
  6519. },
  6520. "%Z": function(date) {
  6521. return date.tm_zone
  6522. },
  6523. "%%": function() {
  6524. return "%"
  6525. }
  6526. };
  6527. for (var rule in EXPANSION_RULES_2) {
  6528. if (pattern.indexOf(rule) >= 0) {
  6529. pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date))
  6530. }
  6531. }
  6532. var bytes = intArrayFromString(pattern, false);
  6533. if (bytes.length > maxsize) {
  6534. return 0
  6535. }
  6536. writeArrayToMemory(bytes, s);
  6537. return bytes.length - 1
  6538. }
  6539. function _sysconf(name) {
  6540. if (ENVIRONMENT_IS_PTHREAD) return _emscripten_proxy_to_main_thread_js(11, 1, name);
  6541. switch (name) {
  6542. case 30:
  6543. return PAGE_SIZE;
  6544. case 85:
  6545. var maxHeapSize = 2 * 1024 * 1024 * 1024 - 65536;
  6546. maxHeapSize = HEAPU8.length;
  6547. return maxHeapSize / PAGE_SIZE;
  6548. case 132:
  6549. case 133:
  6550. case 12:
  6551. case 137:
  6552. case 138:
  6553. case 15:
  6554. case 235:
  6555. case 16:
  6556. case 17:
  6557. case 18:
  6558. case 19:
  6559. case 20:
  6560. case 149:
  6561. case 13:
  6562. case 10:
  6563. case 236:
  6564. case 153:
  6565. case 9:
  6566. case 21:
  6567. case 22:
  6568. case 159:
  6569. case 154:
  6570. case 14:
  6571. case 77:
  6572. case 78:
  6573. case 139:
  6574. case 80:
  6575. case 81:
  6576. case 82:
  6577. case 68:
  6578. case 67:
  6579. case 164:
  6580. case 11:
  6581. case 29:
  6582. case 47:
  6583. case 48:
  6584. case 95:
  6585. case 52:
  6586. case 51:
  6587. case 46:
  6588. return 200809;
  6589. case 79:
  6590. return 0;
  6591. case 27:
  6592. case 246:
  6593. case 127:
  6594. case 128:
  6595. case 23:
  6596. case 24:
  6597. case 160:
  6598. case 161:
  6599. case 181:
  6600. case 182:
  6601. case 242:
  6602. case 183:
  6603. case 184:
  6604. case 243:
  6605. case 244:
  6606. case 245:
  6607. case 165:
  6608. case 178:
  6609. case 179:
  6610. case 49:
  6611. case 50:
  6612. case 168:
  6613. case 169:
  6614. case 175:
  6615. case 170:
  6616. case 171:
  6617. case 172:
  6618. case 97:
  6619. case 76:
  6620. case 32:
  6621. case 173:
  6622. case 35:
  6623. return - 1;
  6624. case 176:
  6625. case 177:
  6626. case 7:
  6627. case 155:
  6628. case 8:
  6629. case 157:
  6630. case 125:
  6631. case 126:
  6632. case 92:
  6633. case 93:
  6634. case 129:
  6635. case 130:
  6636. case 131:
  6637. case 94:
  6638. case 91:
  6639. return 1;
  6640. case 74:
  6641. case 60:
  6642. case 69:
  6643. case 70:
  6644. case 4:
  6645. return 1024;
  6646. case 31:
  6647. case 42:
  6648. case 72:
  6649. return 32;
  6650. case 87:
  6651. case 26:
  6652. case 33:
  6653. return 2147483647;
  6654. case 34:
  6655. case 1:
  6656. return 47839;
  6657. case 38:
  6658. case 36:
  6659. return 99;
  6660. case 43:
  6661. case 37:
  6662. return 2048;
  6663. case 0:
  6664. return 2097152;
  6665. case 3:
  6666. return 65536;
  6667. case 28:
  6668. return 32768;
  6669. case 44:
  6670. return 32767;
  6671. case 75:
  6672. return 16384;
  6673. case 39:
  6674. return 1e3;
  6675. case 89:
  6676. return 700;
  6677. case 71:
  6678. return 256;
  6679. case 40:
  6680. return 255;
  6681. case 2:
  6682. return 100;
  6683. case 180:
  6684. return 64;
  6685. case 25:
  6686. return 20;
  6687. case 5:
  6688. return 16;
  6689. case 6:
  6690. return 6;
  6691. case 73:
  6692. return 4;
  6693. case 84:
  6694. {
  6695. if (typeof navigator === "object") return navigator["hardwareConcurrency"] || 1;
  6696. return 1
  6697. }
  6698. }
  6699. ___setErrNo(28);
  6700. return - 1
  6701. }
  6702. function _time(ptr) {
  6703. var ret = Date.now() / 1e3 | 0;
  6704. if (ptr) {
  6705. HEAP32[ptr >> 2] = ret
  6706. }
  6707. return ret
  6708. }
  6709. if (!ENVIRONMENT_IS_PTHREAD) PThread.initMainThreadBlock();
  6710. if (ENVIRONMENT_IS_NODE) {
  6711. _emscripten_get_now = function _emscripten_get_now_actual() {
  6712. var t = process["hrtime"]();
  6713. return t[0] * 1e3 + t[1] / 1e6
  6714. }
  6715. } else if (ENVIRONMENT_IS_PTHREAD) {
  6716. _emscripten_get_now = function() {
  6717. return performance["now"]() - __performance_now_clock_drift
  6718. }
  6719. } else if (typeof dateNow !== "undefined") {
  6720. _emscripten_get_now = dateNow
  6721. } else if (typeof performance === "object" && performance && typeof performance["now"] === "function") {
  6722. _emscripten_get_now = function() {
  6723. return performance["now"]()
  6724. }
  6725. } else {
  6726. _emscripten_get_now = Date.now
  6727. }
  6728. FS.staticInit();
  6729. if (ENVIRONMENT_HAS_NODE) {
  6730. var fs = require("fs");
  6731. var NODEJS_PATH = require("path");
  6732. NODEFS.staticInit()
  6733. }
  6734. if (!ENVIRONMENT_IS_PTHREAD) Fetch.staticInit();
  6735. var GLctx;
  6736. GL.init();
  6737. var proxiedFunctionTable = [null, ___syscall221, ___syscall3, ___syscall5, _fd_close, _fd_fdstat_get, _fd_seek, _fd_write, _emscripten_set_canvas_element_size_main_thread, _getenv, _tzset, _sysconf];
  6738. function intArrayFromString(stringy, dontAddNull, length) {
  6739. var len = length > 0 ? length: lengthBytesUTF8(stringy) + 1;
  6740. var u8array = new Array(len);
  6741. var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);
  6742. if (dontAddNull) u8array.length = numBytesWritten;
  6743. return u8array
  6744. }
  6745. var debug_table_dd = [0, "jsCall_dd_0", "jsCall_dd_1", "jsCall_dd_2", "jsCall_dd_3", "jsCall_dd_4", "jsCall_dd_5", "jsCall_dd_6", "jsCall_dd_7", "jsCall_dd_8", "jsCall_dd_9", "jsCall_dd_10", "jsCall_dd_11", "jsCall_dd_12", "jsCall_dd_13", "jsCall_dd_14", "jsCall_dd_15", "jsCall_dd_16", "jsCall_dd_17", "jsCall_dd_18", "jsCall_dd_19", "jsCall_dd_20", "jsCall_dd_21", "jsCall_dd_22", "jsCall_dd_23", "jsCall_dd_24", "jsCall_dd_25", "jsCall_dd_26", "jsCall_dd_27", "jsCall_dd_28", "jsCall_dd_29", "jsCall_dd_30", "jsCall_dd_31", "jsCall_dd_32", "jsCall_dd_33", "jsCall_dd_34", "_sinh", "_cosh", "_tanh", "_sin", "_cos", "_tan", "_atan", "_asin", "_acos", "_exp", "_log", "_fabs", "_etime", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6746. var debug_table_did = [0, "jsCall_did_0", "jsCall_did_1", "jsCall_did_2", "jsCall_did_3", "jsCall_did_4", "jsCall_did_5", "jsCall_did_6", "jsCall_did_7", "jsCall_did_8", "jsCall_did_9", "jsCall_did_10", "jsCall_did_11", "jsCall_did_12", "jsCall_did_13", "jsCall_did_14", "jsCall_did_15", "jsCall_did_16", "jsCall_did_17", "jsCall_did_18", "jsCall_did_19", "jsCall_did_20", "jsCall_did_21", "jsCall_did_22", "jsCall_did_23", "jsCall_did_24", "jsCall_did_25", "jsCall_did_26", "jsCall_did_27", "jsCall_did_28", "jsCall_did_29", "jsCall_did_30", "jsCall_did_31", "jsCall_did_32", "jsCall_did_33", "jsCall_did_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6747. var debug_table_didd = [0, "jsCall_didd_0", "jsCall_didd_1", "jsCall_didd_2", "jsCall_didd_3", "jsCall_didd_4", "jsCall_didd_5", "jsCall_didd_6", "jsCall_didd_7", "jsCall_didd_8", "jsCall_didd_9", "jsCall_didd_10", "jsCall_didd_11", "jsCall_didd_12", "jsCall_didd_13", "jsCall_didd_14", "jsCall_didd_15", "jsCall_didd_16", "jsCall_didd_17", "jsCall_didd_18", "jsCall_didd_19", "jsCall_didd_20", "jsCall_didd_21", "jsCall_didd_22", "jsCall_didd_23", "jsCall_didd_24", "jsCall_didd_25", "jsCall_didd_26", "jsCall_didd_27", "jsCall_didd_28", "jsCall_didd_29", "jsCall_didd_30", "jsCall_didd_31", "jsCall_didd_32", "jsCall_didd_33", "jsCall_didd_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6748. var debug_table_fii = [0, "jsCall_fii_0", "jsCall_fii_1", "jsCall_fii_2", "jsCall_fii_3", "jsCall_fii_4", "jsCall_fii_5", "jsCall_fii_6", "jsCall_fii_7", "jsCall_fii_8", "jsCall_fii_9", "jsCall_fii_10", "jsCall_fii_11", "jsCall_fii_12", "jsCall_fii_13", "jsCall_fii_14", "jsCall_fii_15", "jsCall_fii_16", "jsCall_fii_17", "jsCall_fii_18", "jsCall_fii_19", "jsCall_fii_20", "jsCall_fii_21", "jsCall_fii_22", "jsCall_fii_23", "jsCall_fii_24", "jsCall_fii_25", "jsCall_fii_26", "jsCall_fii_27", "jsCall_fii_28", "jsCall_fii_29", "jsCall_fii_30", "jsCall_fii_31", "jsCall_fii_32", "jsCall_fii_33", "jsCall_fii_34", "_sbr_sum_square_c", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6749. var debug_table_fiii = [0, "jsCall_fiii_0", "jsCall_fiii_1", "jsCall_fiii_2", "jsCall_fiii_3", "jsCall_fiii_4", "jsCall_fiii_5", "jsCall_fiii_6", "jsCall_fiii_7", "jsCall_fiii_8", "jsCall_fiii_9", "jsCall_fiii_10", "jsCall_fiii_11", "jsCall_fiii_12", "jsCall_fiii_13", "jsCall_fiii_14", "jsCall_fiii_15", "jsCall_fiii_16", "jsCall_fiii_17", "jsCall_fiii_18", "jsCall_fiii_19", "jsCall_fiii_20", "jsCall_fiii_21", "jsCall_fiii_22", "jsCall_fiii_23", "jsCall_fiii_24", "jsCall_fiii_25", "jsCall_fiii_26", "jsCall_fiii_27", "jsCall_fiii_28", "jsCall_fiii_29", "jsCall_fiii_30", "jsCall_fiii_31", "jsCall_fiii_32", "jsCall_fiii_33", "jsCall_fiii_34", "_avpriv_scalarproduct_float_c", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6750. var debug_table_i = [0, "jsCall_i_0", "jsCall_i_1", "jsCall_i_2", "jsCall_i_3", "jsCall_i_4", "jsCall_i_5", "jsCall_i_6", "jsCall_i_7", "jsCall_i_8", "jsCall_i_9", "jsCall_i_10", "jsCall_i_11", "jsCall_i_12", "jsCall_i_13", "jsCall_i_14", "jsCall_i_15", "jsCall_i_16", "jsCall_i_17", "jsCall_i_18", "jsCall_i_19", "jsCall_i_20", "jsCall_i_21", "jsCall_i_22", "jsCall_i_23", "jsCall_i_24", "jsCall_i_25", "jsCall_i_26", "jsCall_i_27", "jsCall_i_28", "jsCall_i_29", "jsCall_i_30", "jsCall_i_31", "jsCall_i_32", "jsCall_i_33", "jsCall_i_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6751. var debug_table_ii = [0, "jsCall_ii_0", "jsCall_ii_1", "jsCall_ii_2", "jsCall_ii_3", "jsCall_ii_4", "jsCall_ii_5", "jsCall_ii_6", "jsCall_ii_7", "jsCall_ii_8", "jsCall_ii_9", "jsCall_ii_10", "jsCall_ii_11", "jsCall_ii_12", "jsCall_ii_13", "jsCall_ii_14", "jsCall_ii_15", "jsCall_ii_16", "jsCall_ii_17", "jsCall_ii_18", "jsCall_ii_19", "jsCall_ii_20", "jsCall_ii_21", "jsCall_ii_22", "jsCall_ii_23", "jsCall_ii_24", "jsCall_ii_25", "jsCall_ii_26", "jsCall_ii_27", "jsCall_ii_28", "jsCall_ii_29", "jsCall_ii_30", "jsCall_ii_31", "jsCall_ii_32", "jsCall_ii_33", "jsCall_ii_34", "_avi_probe", "_avi_read_header", "_avi_read_close", "_av_default_item_name", "_ff_avio_child_class_next", "_flv_probe", "_flv_read_header", "_flv_read_close", "_live_flv_probe", "_h264_probe", "_ff_raw_video_read_header", "_hevc_probe", "_mpeg4video_probe", "_matroska_probe", "_matroska_read_header", "_matroska_read_close", "_mov_probe", "_mov_read_header", "_mov_read_close", "_mp3_read_probe", "_mp3_read_header", "_mpegps_probe", "_mpegps_read_header", "_mpegts_probe", "_mpegts_read_header", "_mpegts_read_close", "_mpegvideo_probe", "_format_to_name", "_format_child_class_next", "_get_category", "_pcm_read_header", "_urlcontext_to_name", "_ff_urlcontext_child_class_next", "_sws_context_to_name", "_ff_bsf_child_class_next", "_hevc_mp4toannexb_init", "_hevc_init_thread_copy", "_hevc_decode_init", "_hevc_decode_free", "_decode_init", "_context_to_name", "_codec_child_class_next", "_get_category_2837", "_pcm_decode_init", "_pcm_decode_close", "_aac_decode_init", "_aac_decode_close", "_init", "___stdio_close", "___emscripten_stdout_close", "_myThread", "_releaseSniffStreamFunc", "_hflv_releaseFunc", "_hflv_getBufferLength", "_initializeDecoderFunc", "__getFrame", "_closeVideoFunc", "_releaseFunc", "_initializeDemuxerFunc", "_getPacketFunc", "_releaseDemuxerFunc", "_io_short_seek", "_avio_rb16", "_avio_rl16", "_av_buffer_allocz", "_frame_worker_thread", "_av_buffer_alloc", "_thread_worker", "___emscripten_thread_main", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6752. var debug_table_iid = [0, "jsCall_iid_0", "jsCall_iid_1", "jsCall_iid_2", "jsCall_iid_3", "jsCall_iid_4", "jsCall_iid_5", "jsCall_iid_6", "jsCall_iid_7", "jsCall_iid_8", "jsCall_iid_9", "jsCall_iid_10", "jsCall_iid_11", "jsCall_iid_12", "jsCall_iid_13", "jsCall_iid_14", "jsCall_iid_15", "jsCall_iid_16", "jsCall_iid_17", "jsCall_iid_18", "jsCall_iid_19", "jsCall_iid_20", "jsCall_iid_21", "jsCall_iid_22", "jsCall_iid_23", "jsCall_iid_24", "jsCall_iid_25", "jsCall_iid_26", "jsCall_iid_27", "jsCall_iid_28", "jsCall_iid_29", "jsCall_iid_30", "jsCall_iid_31", "jsCall_iid_32", "jsCall_iid_33", "jsCall_iid_34", "_seekBufferFunc", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6753. var debug_table_iidiiii = [0, "jsCall_iidiiii_0", "jsCall_iidiiii_1", "jsCall_iidiiii_2", "jsCall_iidiiii_3", "jsCall_iidiiii_4", "jsCall_iidiiii_5", "jsCall_iidiiii_6", "jsCall_iidiiii_7", "jsCall_iidiiii_8", "jsCall_iidiiii_9", "jsCall_iidiiii_10", "jsCall_iidiiii_11", "jsCall_iidiiii_12", "jsCall_iidiiii_13", "jsCall_iidiiii_14", "jsCall_iidiiii_15", "jsCall_iidiiii_16", "jsCall_iidiiii_17", "jsCall_iidiiii_18", "jsCall_iidiiii_19", "jsCall_iidiiii_20", "jsCall_iidiiii_21", "jsCall_iidiiii_22", "jsCall_iidiiii_23", "jsCall_iidiiii_24", "jsCall_iidiiii_25", "jsCall_iidiiii_26", "jsCall_iidiiii_27", "jsCall_iidiiii_28", "jsCall_iidiiii_29", "jsCall_iidiiii_30", "jsCall_iidiiii_31", "jsCall_iidiiii_32", "jsCall_iidiiii_33", "jsCall_iidiiii_34", "_fmt_fp", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6754. var debug_table_iii = [0, "jsCall_iii_0", "jsCall_iii_1", "jsCall_iii_2", "jsCall_iii_3", "jsCall_iii_4", "jsCall_iii_5", "jsCall_iii_6", "jsCall_iii_7", "jsCall_iii_8", "jsCall_iii_9", "jsCall_iii_10", "jsCall_iii_11", "jsCall_iii_12", "jsCall_iii_13", "jsCall_iii_14", "jsCall_iii_15", "jsCall_iii_16", "jsCall_iii_17", "jsCall_iii_18", "jsCall_iii_19", "jsCall_iii_20", "jsCall_iii_21", "jsCall_iii_22", "jsCall_iii_23", "jsCall_iii_24", "jsCall_iii_25", "jsCall_iii_26", "jsCall_iii_27", "jsCall_iii_28", "jsCall_iii_29", "jsCall_iii_30", "jsCall_iii_31", "jsCall_iii_32", "jsCall_iii_33", "jsCall_iii_34", "_avi_read_packet", "_ff_avio_child_next", "_flv_read_packet", "_ff_raw_read_partial_packet", "_matroska_read_packet", "_mov_read_packet", "_mp3_read_packet", "_mpegps_read_packet", "_mpegts_read_packet", "_mpegts_raw_read_packet", "_format_child_next", "_ff_pcm_read_packet", "_urlcontext_child_next", "_bsf_child_next", "_hevc_mp4toannexb_filter", "_hevc_update_thread_context", "_null_filter", "_codec_child_next", "_initSniffStreamFunc", "_hflv_initFunc", "_hflv_getPacketFunc", "_io_read_pause", "_descriptor_compare", "_hls_decode_entry", "_avcodec_default_get_format", "_ff_startcode_find_candidate_c", "_color_table_compare", 0];
  6755. var debug_table_iiii = [0, "jsCall_iiii_0", "jsCall_iiii_1", "jsCall_iiii_2", "jsCall_iiii_3", "jsCall_iiii_4", "jsCall_iiii_5", "jsCall_iiii_6", "jsCall_iiii_7", "jsCall_iiii_8", "jsCall_iiii_9", "jsCall_iiii_10", "jsCall_iiii_11", "jsCall_iiii_12", "jsCall_iiii_13", "jsCall_iiii_14", "jsCall_iiii_15", "jsCall_iiii_16", "jsCall_iiii_17", "jsCall_iiii_18", "jsCall_iiii_19", "jsCall_iiii_20", "jsCall_iiii_21", "jsCall_iiii_22", "jsCall_iiii_23", "jsCall_iiii_24", "jsCall_iiii_25", "jsCall_iiii_26", "jsCall_iiii_27", "jsCall_iiii_28", "jsCall_iiii_29", "jsCall_iiii_30", "jsCall_iiii_31", "jsCall_iiii_32", "jsCall_iiii_33", "jsCall_iiii_34", "_mov_read_aclr", "_mov_read_avid", "_mov_read_ares", "_mov_read_avss", "_mov_read_av1c", "_mov_read_chpl", "_mov_read_stco", "_mov_read_colr", "_mov_read_ctts", "_mov_read_default", "_mov_read_dpxe", "_mov_read_dref", "_mov_read_elst", "_mov_read_enda", "_mov_read_fiel", "_mov_read_adrm", "_mov_read_ftyp", "_mov_read_glbl", "_mov_read_hdlr", "_mov_read_ilst", "_mov_read_jp2h", "_mov_read_mdat", "_mov_read_mdhd", "_mov_read_meta", "_mov_read_moof", "_mov_read_moov", "_mov_read_mvhd", "_mov_read_svq3", "_mov_read_alac", "_mov_read_pasp", "_mov_read_sidx", "_mov_read_stps", "_mov_read_strf", "_mov_read_stsc", "_mov_read_stsd", "_mov_read_stss", "_mov_read_stsz", "_mov_read_stts", "_mov_read_tkhd", "_mov_read_tfdt", "_mov_read_tfhd", "_mov_read_trak", "_mov_read_tmcd", "_mov_read_chap", "_mov_read_trex", "_mov_read_trun", "_mov_read_wave", "_mov_read_esds", "_mov_read_dac3", "_mov_read_dec3", "_mov_read_ddts", "_mov_read_wide", "_mov_read_wfex", "_mov_read_cmov", "_mov_read_chan", "_mov_read_dvc1", "_mov_read_sbgp", "_mov_read_uuid", "_mov_read_targa_y216", "_mov_read_free", "_mov_read_custom", "_mov_read_frma", "_mov_read_senc", "_mov_read_saiz", "_mov_read_saio", "_mov_read_pssh", "_mov_read_schm", "_mov_read_tenc", "_mov_read_dfla", "_mov_read_st3d", "_mov_read_sv3d", "_mov_read_dops", "_mov_read_smdm", "_mov_read_coll", "_mov_read_vpcc", "_mov_read_mdcv", "_mov_read_clli", "_h264_split", "_hevc_split", "___stdio_write", "_sn_write", "_read_stream_live", "_read_stream_vod", "_getSniffStreamPacketFunc", "_hflv_read_stream_live", "_setCodecTypeFunc", "_read_packet", "_io_write_packet", "_io_read_packet", "_dyn_buf_write", "_mov_read_keys", "_mov_read_udta_string", "_ff_crcA001_update", "_avcodec_default_get_buffer2", "_do_read", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6756. var debug_table_iiiii = [0, "jsCall_iiiii_0", "jsCall_iiiii_1", "jsCall_iiiii_2", "jsCall_iiiii_3", "jsCall_iiiii_4", "jsCall_iiiii_5", "jsCall_iiiii_6", "jsCall_iiiii_7", "jsCall_iiiii_8", "jsCall_iiiii_9", "jsCall_iiiii_10", "jsCall_iiiii_11", "jsCall_iiiii_12", "jsCall_iiiii_13", "jsCall_iiiii_14", "jsCall_iiiii_15", "jsCall_iiiii_16", "jsCall_iiiii_17", "jsCall_iiiii_18", "jsCall_iiiii_19", "jsCall_iiiii_20", "jsCall_iiiii_21", "jsCall_iiiii_22", "jsCall_iiiii_23", "jsCall_iiiii_24", "jsCall_iiiii_25", "jsCall_iiiii_26", "jsCall_iiiii_27", "jsCall_iiiii_28", "jsCall_iiiii_29", "jsCall_iiiii_30", "jsCall_iiiii_31", "jsCall_iiiii_32", "jsCall_iiiii_33", "jsCall_iiiii_34", "_hevc_decode_frame", "_decode_frame", "_pcm_decode_frame", "_aac_decode_frame", "_hflv_pushBufferFunc", "_demuxBoxFunc", "_mov_metadata_int8_no_padding", "_mov_metadata_track_or_disc_number", "_mov_metadata_gnre", "_mov_metadata_int8_bypass_padding", "_lum_planar_vscale", "_chr_planar_vscale", "_any_vscale", "_packed_vscale", "_gamma_convert", "_lum_convert", "_lum_h_scale", "_chr_convert", "_chr_h_scale", "_no_chr_scale", "_hls_decode_entry_wpp", 0, 0, 0, 0, 0, 0, 0];
  6757. var debug_table_iiiiii = [0, "jsCall_iiiiii_0", "jsCall_iiiiii_1", "jsCall_iiiiii_2", "jsCall_iiiiii_3", "jsCall_iiiiii_4", "jsCall_iiiiii_5", "jsCall_iiiiii_6", "jsCall_iiiiii_7", "jsCall_iiiiii_8", "jsCall_iiiiii_9", "jsCall_iiiiii_10", "jsCall_iiiiii_11", "jsCall_iiiiii_12", "jsCall_iiiiii_13", "jsCall_iiiiii_14", "jsCall_iiiiii_15", "jsCall_iiiiii_16", "jsCall_iiiiii_17", "jsCall_iiiiii_18", "jsCall_iiiiii_19", "jsCall_iiiiii_20", "jsCall_iiiiii_21", "jsCall_iiiiii_22", "jsCall_iiiiii_23", "jsCall_iiiiii_24", "jsCall_iiiiii_25", "jsCall_iiiiii_26", "jsCall_iiiiii_27", "jsCall_iiiiii_28", "jsCall_iiiiii_29", "jsCall_iiiiii_30", "jsCall_iiiiii_31", "jsCall_iiiiii_32", "jsCall_iiiiii_33", "jsCall_iiiiii_34", "_pushBufferFunc", "_decodeCodecContextFunc", "_io_open_default", "_avcodec_default_execute2", "_thread_execute2", "_sbr_lf_gen", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6758. var debug_table_iiiiiii = [0, "jsCall_iiiiiii_0", "jsCall_iiiiiii_1", "jsCall_iiiiiii_2", "jsCall_iiiiiii_3", "jsCall_iiiiiii_4", "jsCall_iiiiiii_5", "jsCall_iiiiiii_6", "jsCall_iiiiiii_7", "jsCall_iiiiiii_8", "jsCall_iiiiiii_9", "jsCall_iiiiiii_10", "jsCall_iiiiiii_11", "jsCall_iiiiiii_12", "jsCall_iiiiiii_13", "jsCall_iiiiiii_14", "jsCall_iiiiiii_15", "jsCall_iiiiiii_16", "jsCall_iiiiiii_17", "jsCall_iiiiiii_18", "jsCall_iiiiiii_19", "jsCall_iiiiiii_20", "jsCall_iiiiiii_21", "jsCall_iiiiiii_22", "jsCall_iiiiiii_23", "jsCall_iiiiiii_24", "jsCall_iiiiiii_25", "jsCall_iiiiiii_26", "jsCall_iiiiiii_27", "jsCall_iiiiiii_28", "jsCall_iiiiiii_29", "jsCall_iiiiiii_30", "jsCall_iiiiiii_31", "jsCall_iiiiiii_32", "jsCall_iiiiiii_33", "jsCall_iiiiiii_34", "_h264_parse", "_hevc_parse", "_mpegaudio_parse", "_hflv_decodeVideoFrameFunc", "_avcodec_default_execute", "_thread_execute", "_sbr_x_gen", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6759. var debug_table_iiiiiiii = [0, "jsCall_iiiiiiii_0", "jsCall_iiiiiiii_1", "jsCall_iiiiiiii_2", "jsCall_iiiiiiii_3", "jsCall_iiiiiiii_4", "jsCall_iiiiiiii_5", "jsCall_iiiiiiii_6", "jsCall_iiiiiiii_7", "jsCall_iiiiiiii_8", "jsCall_iiiiiiii_9", "jsCall_iiiiiiii_10", "jsCall_iiiiiiii_11", "jsCall_iiiiiiii_12", "jsCall_iiiiiiii_13", "jsCall_iiiiiiii_14", "jsCall_iiiiiiii_15", "jsCall_iiiiiiii_16", "jsCall_iiiiiiii_17", "jsCall_iiiiiiii_18", "jsCall_iiiiiiii_19", "jsCall_iiiiiiii_20", "jsCall_iiiiiiii_21", "jsCall_iiiiiiii_22", "jsCall_iiiiiiii_23", "jsCall_iiiiiiii_24", "jsCall_iiiiiiii_25", "jsCall_iiiiiiii_26", "jsCall_iiiiiiii_27", "jsCall_iiiiiiii_28", "jsCall_iiiiiiii_29", "jsCall_iiiiiiii_30", "jsCall_iiiiiiii_31", "jsCall_iiiiiiii_32", "jsCall_iiiiiiii_33", "jsCall_iiiiiiii_34", "_decodeVideoFrameFunc", "_hflv_setSniffStreamCodecTypeFunc", "_swscale", "_ff_sws_alphablendaway", "_yuv2rgb_c_32", "_yuva2rgba_c", "_yuv2rgb_c_bgr48", "_yuv2rgb_c_48", "_yuva2argb_c", "_yuv2rgb_c_24_rgb", "_yuv2rgb_c_24_bgr", "_yuv2rgb_c_16_ordered_dither", "_yuv2rgb_c_15_ordered_dither", "_yuv2rgb_c_12_ordered_dither", "_yuv2rgb_c_8_ordered_dither", "_yuv2rgb_c_4_ordered_dither", "_yuv2rgb_c_4b_ordered_dither", "_yuv2rgb_c_1_ordered_dither", "_planarToP01xWrapper", "_planar8ToP01xleWrapper", "_yvu9ToYv12Wrapper", "_bgr24ToYv12Wrapper", "_rgbToRgbWrapper", "_planarRgbToplanarRgbWrapper", "_planarRgbToRgbWrapper", "_planarRgbaToRgbWrapper", "_Rgb16ToPlanarRgb16Wrapper", "_planarRgb16ToRgb16Wrapper", "_rgbToPlanarRgbWrapper", "_bayer_to_rgb24_wrapper", "_bayer_to_yv12_wrapper", "_bswap_16bpc", "_palToRgbWrapper", "_yuv422pToYuy2Wrapper", "_yuv422pToUyvyWrapper", "_uint_y_to_float_y_wrapper", "_float_y_to_uint_y_wrapper", "_planarToYuy2Wrapper", "_planarToUyvyWrapper", "_yuyvToYuv420Wrapper", "_uyvyToYuv420Wrapper", "_yuyvToYuv422Wrapper", "_uyvyToYuv422Wrapper", "_packedCopyWrapper", "_planarCopyWrapper", "_planarToNv12Wrapper", "_planarToNv24Wrapper", "_nv12ToPlanarWrapper", "_nv24ToPlanarWrapper", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6760. var debug_table_iiiiiiiid = [0, "jsCall_iiiiiiiid_0", "jsCall_iiiiiiiid_1", "jsCall_iiiiiiiid_2", "jsCall_iiiiiiiid_3", "jsCall_iiiiiiiid_4", "jsCall_iiiiiiiid_5", "jsCall_iiiiiiiid_6", "jsCall_iiiiiiiid_7", "jsCall_iiiiiiiid_8", "jsCall_iiiiiiiid_9", "jsCall_iiiiiiiid_10", "jsCall_iiiiiiiid_11", "jsCall_iiiiiiiid_12", "jsCall_iiiiiiiid_13", "jsCall_iiiiiiiid_14", "jsCall_iiiiiiiid_15", "jsCall_iiiiiiiid_16", "jsCall_iiiiiiiid_17", "jsCall_iiiiiiiid_18", "jsCall_iiiiiiiid_19", "jsCall_iiiiiiiid_20", "jsCall_iiiiiiiid_21", "jsCall_iiiiiiiid_22", "jsCall_iiiiiiiid_23", "jsCall_iiiiiiiid_24", "jsCall_iiiiiiiid_25", "jsCall_iiiiiiiid_26", "jsCall_iiiiiiiid_27", "jsCall_iiiiiiiid_28", "jsCall_iiiiiiiid_29", "jsCall_iiiiiiiid_30", "jsCall_iiiiiiiid_31", "jsCall_iiiiiiiid_32", "jsCall_iiiiiiiid_33", "jsCall_iiiiiiiid_34", "_setSniffStreamCodecTypeFunc", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6761. var debug_table_iiiiiiiii = [0, "jsCall_iiiiiiiii_0", "jsCall_iiiiiiiii_1", "jsCall_iiiiiiiii_2", "jsCall_iiiiiiiii_3", "jsCall_iiiiiiiii_4", "jsCall_iiiiiiiii_5", "jsCall_iiiiiiiii_6", "jsCall_iiiiiiiii_7", "jsCall_iiiiiiiii_8", "jsCall_iiiiiiiii_9", "jsCall_iiiiiiiii_10", "jsCall_iiiiiiiii_11", "jsCall_iiiiiiiii_12", "jsCall_iiiiiiiii_13", "jsCall_iiiiiiiii_14", "jsCall_iiiiiiiii_15", "jsCall_iiiiiiiii_16", "jsCall_iiiiiiiii_17", "jsCall_iiiiiiiii_18", "jsCall_iiiiiiiii_19", "jsCall_iiiiiiiii_20", "jsCall_iiiiiiiii_21", "jsCall_iiiiiiiii_22", "jsCall_iiiiiiiii_23", "jsCall_iiiiiiiii_24", "jsCall_iiiiiiiii_25", "jsCall_iiiiiiiii_26", "jsCall_iiiiiiiii_27", "jsCall_iiiiiiiii_28", "jsCall_iiiiiiiii_29", "jsCall_iiiiiiiii_30", "jsCall_iiiiiiiii_31", "jsCall_iiiiiiiii_32", "jsCall_iiiiiiiii_33", "jsCall_iiiiiiiii_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6762. var debug_table_iiiiiiiiii = [0, "jsCall_iiiiiiiiii_0", "jsCall_iiiiiiiiii_1", "jsCall_iiiiiiiiii_2", "jsCall_iiiiiiiiii_3", "jsCall_iiiiiiiiii_4", "jsCall_iiiiiiiiii_5", "jsCall_iiiiiiiiii_6", "jsCall_iiiiiiiiii_7", "jsCall_iiiiiiiiii_8", "jsCall_iiiiiiiiii_9", "jsCall_iiiiiiiiii_10", "jsCall_iiiiiiiiii_11", "jsCall_iiiiiiiiii_12", "jsCall_iiiiiiiiii_13", "jsCall_iiiiiiiiii_14", "jsCall_iiiiiiiiii_15", "jsCall_iiiiiiiiii_16", "jsCall_iiiiiiiiii_17", "jsCall_iiiiiiiiii_18", "jsCall_iiiiiiiiii_19", "jsCall_iiiiiiiiii_20", "jsCall_iiiiiiiiii_21", "jsCall_iiiiiiiiii_22", "jsCall_iiiiiiiiii_23", "jsCall_iiiiiiiiii_24", "jsCall_iiiiiiiiii_25", "jsCall_iiiiiiiiii_26", "jsCall_iiiiiiiiii_27", "jsCall_iiiiiiiiii_28", "jsCall_iiiiiiiiii_29", "jsCall_iiiiiiiiii_30", "jsCall_iiiiiiiiii_31", "jsCall_iiiiiiiiii_32", "jsCall_iiiiiiiiii_33", "jsCall_iiiiiiiiii_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6763. var debug_table_iiiiij = [0, "jsCall_iiiiij_0", "jsCall_iiiiij_1", "jsCall_iiiiij_2", "jsCall_iiiiij_3", "jsCall_iiiiij_4", "jsCall_iiiiij_5", "jsCall_iiiiij_6", "jsCall_iiiiij_7", "jsCall_iiiiij_8", "jsCall_iiiiij_9", "jsCall_iiiiij_10", "jsCall_iiiiij_11", "jsCall_iiiiij_12", "jsCall_iiiiij_13", "jsCall_iiiiij_14", "jsCall_iiiiij_15", "jsCall_iiiiij_16", "jsCall_iiiiij_17", "jsCall_iiiiij_18", "jsCall_iiiiij_19", "jsCall_iiiiij_20", "jsCall_iiiiij_21", "jsCall_iiiiij_22", "jsCall_iiiiij_23", "jsCall_iiiiij_24", "jsCall_iiiiij_25", "jsCall_iiiiij_26", "jsCall_iiiiij_27", "jsCall_iiiiij_28", "jsCall_iiiiij_29", "jsCall_iiiiij_30", "jsCall_iiiiij_31", "jsCall_iiiiij_32", "jsCall_iiiiij_33", "jsCall_iiiiij_34", "_mpegts_push_data", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6764. var debug_table_iiiji = [0, "jsCall_iiiji_0", "jsCall_iiiji_1", "jsCall_iiiji_2", "jsCall_iiiji_3", "jsCall_iiiji_4", "jsCall_iiiji_5", "jsCall_iiiji_6", "jsCall_iiiji_7", "jsCall_iiiji_8", "jsCall_iiiji_9", "jsCall_iiiji_10", "jsCall_iiiji_11", "jsCall_iiiji_12", "jsCall_iiiji_13", "jsCall_iiiji_14", "jsCall_iiiji_15", "jsCall_iiiji_16", "jsCall_iiiji_17", "jsCall_iiiji_18", "jsCall_iiiji_19", "jsCall_iiiji_20", "jsCall_iiiji_21", "jsCall_iiiji_22", "jsCall_iiiji_23", "jsCall_iiiji_24", "jsCall_iiiji_25", "jsCall_iiiji_26", "jsCall_iiiji_27", "jsCall_iiiji_28", "jsCall_iiiji_29", "jsCall_iiiji_30", "jsCall_iiiji_31", "jsCall_iiiji_32", "jsCall_iiiji_33", "jsCall_iiiji_34", "_avi_read_seek", "_flv_read_seek", "_matroska_read_seek", "_mov_read_seek", "_mp3_seek", "_ff_pcm_read_seek", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6765. var debug_table_iiijjji = [0, "jsCall_iiijjji_0", "jsCall_iiijjji_1", "jsCall_iiijjji_2", "jsCall_iiijjji_3", "jsCall_iiijjji_4", "jsCall_iiijjji_5", "jsCall_iiijjji_6", "jsCall_iiijjji_7", "jsCall_iiijjji_8", "jsCall_iiijjji_9", "jsCall_iiijjji_10", "jsCall_iiijjji_11", "jsCall_iiijjji_12", "jsCall_iiijjji_13", "jsCall_iiijjji_14", "jsCall_iiijjji_15", "jsCall_iiijjji_16", "jsCall_iiijjji_17", "jsCall_iiijjji_18", "jsCall_iiijjji_19", "jsCall_iiijjji_20", "jsCall_iiijjji_21", "jsCall_iiijjji_22", "jsCall_iiijjji_23", "jsCall_iiijjji_24", "jsCall_iiijjji_25", "jsCall_iiijjji_26", "jsCall_iiijjji_27", "jsCall_iiijjji_28", "jsCall_iiijjji_29", "jsCall_iiijjji_30", "jsCall_iiijjji_31", "jsCall_iiijjji_32", "jsCall_iiijjji_33", "jsCall_iiijjji_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6766. var debug_table_jiiij = [0, "jsCall_jiiij_0", "jsCall_jiiij_1", "jsCall_jiiij_2", "jsCall_jiiij_3", "jsCall_jiiij_4", "jsCall_jiiij_5", "jsCall_jiiij_6", "jsCall_jiiij_7", "jsCall_jiiij_8", "jsCall_jiiij_9", "jsCall_jiiij_10", "jsCall_jiiij_11", "jsCall_jiiij_12", "jsCall_jiiij_13", "jsCall_jiiij_14", "jsCall_jiiij_15", "jsCall_jiiij_16", "jsCall_jiiij_17", "jsCall_jiiij_18", "jsCall_jiiij_19", "jsCall_jiiij_20", "jsCall_jiiij_21", "jsCall_jiiij_22", "jsCall_jiiij_23", "jsCall_jiiij_24", "jsCall_jiiij_25", "jsCall_jiiij_26", "jsCall_jiiij_27", "jsCall_jiiij_28", "jsCall_jiiij_29", "jsCall_jiiij_30", "jsCall_jiiij_31", "jsCall_jiiij_32", "jsCall_jiiij_33", "jsCall_jiiij_34", "_mpegps_read_dts", "_mpegts_get_dts", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6767. var debug_table_jiiji = [0, "jsCall_jiiji_0", "jsCall_jiiji_1", "jsCall_jiiji_2", "jsCall_jiiji_3", "jsCall_jiiji_4", "jsCall_jiiji_5", "jsCall_jiiji_6", "jsCall_jiiji_7", "jsCall_jiiji_8", "jsCall_jiiji_9", "jsCall_jiiji_10", "jsCall_jiiji_11", "jsCall_jiiji_12", "jsCall_jiiji_13", "jsCall_jiiji_14", "jsCall_jiiji_15", "jsCall_jiiji_16", "jsCall_jiiji_17", "jsCall_jiiji_18", "jsCall_jiiji_19", "jsCall_jiiji_20", "jsCall_jiiji_21", "jsCall_jiiji_22", "jsCall_jiiji_23", "jsCall_jiiji_24", "jsCall_jiiji_25", "jsCall_jiiji_26", "jsCall_jiiji_27", "jsCall_jiiji_28", "jsCall_jiiji_29", "jsCall_jiiji_30", "jsCall_jiiji_31", "jsCall_jiiji_32", "jsCall_jiiji_33", "jsCall_jiiji_34", "_io_read_seek", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6768. var debug_table_jiji = [0, "jsCall_jiji_0", "jsCall_jiji_1", "jsCall_jiji_2", "jsCall_jiji_3", "jsCall_jiji_4", "jsCall_jiji_5", "jsCall_jiji_6", "jsCall_jiji_7", "jsCall_jiji_8", "jsCall_jiji_9", "jsCall_jiji_10", "jsCall_jiji_11", "jsCall_jiji_12", "jsCall_jiji_13", "jsCall_jiji_14", "jsCall_jiji_15", "jsCall_jiji_16", "jsCall_jiji_17", "jsCall_jiji_18", "jsCall_jiji_19", "jsCall_jiji_20", "jsCall_jiji_21", "jsCall_jiji_22", "jsCall_jiji_23", "jsCall_jiji_24", "jsCall_jiji_25", "jsCall_jiji_26", "jsCall_jiji_27", "jsCall_jiji_28", "jsCall_jiji_29", "jsCall_jiji_30", "jsCall_jiji_31", "jsCall_jiji_32", "jsCall_jiji_33", "jsCall_jiji_34", "___stdio_seek", "___emscripten_stdout_seek", "_seek_in_buffer", "_io_seek", "_dyn_buf_seek", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6769. var debug_table_v = [0, "jsCall_v_0", "jsCall_v_1", "jsCall_v_2", "jsCall_v_3", "jsCall_v_4", "jsCall_v_5", "jsCall_v_6", "jsCall_v_7", "jsCall_v_8", "jsCall_v_9", "jsCall_v_10", "jsCall_v_11", "jsCall_v_12", "jsCall_v_13", "jsCall_v_14", "jsCall_v_15", "jsCall_v_16", "jsCall_v_17", "jsCall_v_18", "jsCall_v_19", "jsCall_v_20", "jsCall_v_21", "jsCall_v_22", "jsCall_v_23", "jsCall_v_24", "jsCall_v_25", "jsCall_v_26", "jsCall_v_27", "jsCall_v_28", "jsCall_v_29", "jsCall_v_30", "jsCall_v_31", "jsCall_v_32", "jsCall_v_33", "jsCall_v_34", "_init_ff_cos_tabs_16", "_init_ff_cos_tabs_32", "_init_ff_cos_tabs_64", "_init_ff_cos_tabs_128", "_init_ff_cos_tabs_256", "_init_ff_cos_tabs_512", "_init_ff_cos_tabs_1024", "_init_ff_cos_tabs_2048", "_init_ff_cos_tabs_4096", "_init_ff_cos_tabs_8192", "_init_ff_cos_tabs_16384", "_init_ff_cos_tabs_32768", "_init_ff_cos_tabs_65536", "_init_ff_cos_tabs_131072", "_introduce_mine", "_introduceMineFunc", "_av_format_init_next", "_av_codec_init_static", "_av_codec_init_next", "_ff_init_mpadsp_tabs_float", "_ff_init_mpadsp_tabs_fixed", "_aac_static_table_init", "_AV_CRC_8_ATM_init_table_once", "_AV_CRC_8_EBU_init_table_once", "_AV_CRC_16_ANSI_init_table_once", "_AV_CRC_16_CCITT_init_table_once", "_AV_CRC_24_IEEE_init_table_once", "_AV_CRC_32_IEEE_init_table_once", "_AV_CRC_32_IEEE_LE_init_table_once", "_AV_CRC_16_ANSI_LE_init_table_once", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6770. var debug_table_vdiidiiiii = [0, "jsCall_vdiidiiiii_0", "jsCall_vdiidiiiii_1", "jsCall_vdiidiiiii_2", "jsCall_vdiidiiiii_3", "jsCall_vdiidiiiii_4", "jsCall_vdiidiiiii_5", "jsCall_vdiidiiiii_6", "jsCall_vdiidiiiii_7", "jsCall_vdiidiiiii_8", "jsCall_vdiidiiiii_9", "jsCall_vdiidiiiii_10", "jsCall_vdiidiiiii_11", "jsCall_vdiidiiiii_12", "jsCall_vdiidiiiii_13", "jsCall_vdiidiiiii_14", "jsCall_vdiidiiiii_15", "jsCall_vdiidiiiii_16", "jsCall_vdiidiiiii_17", "jsCall_vdiidiiiii_18", "jsCall_vdiidiiiii_19", "jsCall_vdiidiiiii_20", "jsCall_vdiidiiiii_21", "jsCall_vdiidiiiii_22", "jsCall_vdiidiiiii_23", "jsCall_vdiidiiiii_24", "jsCall_vdiidiiiii_25", "jsCall_vdiidiiiii_26", "jsCall_vdiidiiiii_27", "jsCall_vdiidiiiii_28", "jsCall_vdiidiiiii_29", "jsCall_vdiidiiiii_30", "jsCall_vdiidiiiii_31", "jsCall_vdiidiiiii_32", "jsCall_vdiidiiiii_33", "jsCall_vdiidiiiii_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6771. var debug_table_vf = [0, "jsCall_vf_0", "jsCall_vf_1", "jsCall_vf_2", "jsCall_vf_3", "jsCall_vf_4", "jsCall_vf_5", "jsCall_vf_6", "jsCall_vf_7", "jsCall_vf_8", "jsCall_vf_9", "jsCall_vf_10", "jsCall_vf_11", "jsCall_vf_12", "jsCall_vf_13", "jsCall_vf_14", "jsCall_vf_15", "jsCall_vf_16", "jsCall_vf_17", "jsCall_vf_18", "jsCall_vf_19", "jsCall_vf_20", "jsCall_vf_21", "jsCall_vf_22", "jsCall_vf_23", "jsCall_vf_24", "jsCall_vf_25", "jsCall_vf_26", "jsCall_vf_27", "jsCall_vf_28", "jsCall_vf_29", "jsCall_vf_30", "jsCall_vf_31", "jsCall_vf_32", "jsCall_vf_33", "jsCall_vf_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6772. var debug_table_vff = [0, "jsCall_vff_0", "jsCall_vff_1", "jsCall_vff_2", "jsCall_vff_3", "jsCall_vff_4", "jsCall_vff_5", "jsCall_vff_6", "jsCall_vff_7", "jsCall_vff_8", "jsCall_vff_9", "jsCall_vff_10", "jsCall_vff_11", "jsCall_vff_12", "jsCall_vff_13", "jsCall_vff_14", "jsCall_vff_15", "jsCall_vff_16", "jsCall_vff_17", "jsCall_vff_18", "jsCall_vff_19", "jsCall_vff_20", "jsCall_vff_21", "jsCall_vff_22", "jsCall_vff_23", "jsCall_vff_24", "jsCall_vff_25", "jsCall_vff_26", "jsCall_vff_27", "jsCall_vff_28", "jsCall_vff_29", "jsCall_vff_30", "jsCall_vff_31", "jsCall_vff_32", "jsCall_vff_33", "jsCall_vff_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6773. var debug_table_vfff = [0, "jsCall_vfff_0", "jsCall_vfff_1", "jsCall_vfff_2", "jsCall_vfff_3", "jsCall_vfff_4", "jsCall_vfff_5", "jsCall_vfff_6", "jsCall_vfff_7", "jsCall_vfff_8", "jsCall_vfff_9", "jsCall_vfff_10", "jsCall_vfff_11", "jsCall_vfff_12", "jsCall_vfff_13", "jsCall_vfff_14", "jsCall_vfff_15", "jsCall_vfff_16", "jsCall_vfff_17", "jsCall_vfff_18", "jsCall_vfff_19", "jsCall_vfff_20", "jsCall_vfff_21", "jsCall_vfff_22", "jsCall_vfff_23", "jsCall_vfff_24", "jsCall_vfff_25", "jsCall_vfff_26", "jsCall_vfff_27", "jsCall_vfff_28", "jsCall_vfff_29", "jsCall_vfff_30", "jsCall_vfff_31", "jsCall_vfff_32", "jsCall_vfff_33", "jsCall_vfff_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6774. var debug_table_vffff = [0, "jsCall_vffff_0", "jsCall_vffff_1", "jsCall_vffff_2", "jsCall_vffff_3", "jsCall_vffff_4", "jsCall_vffff_5", "jsCall_vffff_6", "jsCall_vffff_7", "jsCall_vffff_8", "jsCall_vffff_9", "jsCall_vffff_10", "jsCall_vffff_11", "jsCall_vffff_12", "jsCall_vffff_13", "jsCall_vffff_14", "jsCall_vffff_15", "jsCall_vffff_16", "jsCall_vffff_17", "jsCall_vffff_18", "jsCall_vffff_19", "jsCall_vffff_20", "jsCall_vffff_21", "jsCall_vffff_22", "jsCall_vffff_23", "jsCall_vffff_24", "jsCall_vffff_25", "jsCall_vffff_26", "jsCall_vffff_27", "jsCall_vffff_28", "jsCall_vffff_29", "jsCall_vffff_30", "jsCall_vffff_31", "jsCall_vffff_32", "jsCall_vffff_33", "jsCall_vffff_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6775. var debug_table_vi = [0, "jsCall_vi_0", "jsCall_vi_1", "jsCall_vi_2", "jsCall_vi_3", "jsCall_vi_4", "jsCall_vi_5", "jsCall_vi_6", "jsCall_vi_7", "jsCall_vi_8", "jsCall_vi_9", "jsCall_vi_10", "jsCall_vi_11", "jsCall_vi_12", "jsCall_vi_13", "jsCall_vi_14", "jsCall_vi_15", "jsCall_vi_16", "jsCall_vi_17", "jsCall_vi_18", "jsCall_vi_19", "jsCall_vi_20", "jsCall_vi_21", "jsCall_vi_22", "jsCall_vi_23", "jsCall_vi_24", "jsCall_vi_25", "jsCall_vi_26", "jsCall_vi_27", "jsCall_vi_28", "jsCall_vi_29", "jsCall_vi_30", "jsCall_vi_31", "jsCall_vi_32", "jsCall_vi_33", "jsCall_vi_34", "_free_geobtag", "_free_apic", "_free_chapter", "_free_priv", "_hevc_decode_flush", "_flush", "_flush_3837", "_fft4", "_fft8", "_fft16", "_fft32", "_fft64", "_fft128", "_fft256", "_fft512", "_fft1024", "_fft2048", "_fft4096", "_fft8192", "_fft16384", "_fft32768", "_fft65536", "_fft131072", "_h264_close", "_hevc_parser_close", "_ff_parse_close", "_logRequest_downloadSucceeded", "_logRequest_downloadFailed", "_downloadSucceeded", "_downloadFailed", "_transform_4x4_luma_9", "_idct_4x4_dc_9", "_idct_8x8_dc_9", "_idct_16x16_dc_9", "_idct_32x32_dc_9", "_transform_4x4_luma_10", "_idct_4x4_dc_10", "_idct_8x8_dc_10", "_idct_16x16_dc_10", "_idct_32x32_dc_10", "_transform_4x4_luma_12", "_idct_4x4_dc_12", "_idct_8x8_dc_12", "_idct_16x16_dc_12", "_idct_32x32_dc_12", "_transform_4x4_luma_8", "_idct_4x4_dc_8", "_idct_8x8_dc_8", "_idct_16x16_dc_8", "_idct_32x32_dc_8", "_main_function", "_sbr_sum64x5_c", "_sbr_neg_odd_64_c", "_sbr_qmf_pre_shuffle_c", "_undo", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6776. var debug_table_vif = [0, "jsCall_vif_0", "jsCall_vif_1", "jsCall_vif_2", "jsCall_vif_3", "jsCall_vif_4", "jsCall_vif_5", "jsCall_vif_6", "jsCall_vif_7", "jsCall_vif_8", "jsCall_vif_9", "jsCall_vif_10", "jsCall_vif_11", "jsCall_vif_12", "jsCall_vif_13", "jsCall_vif_14", "jsCall_vif_15", "jsCall_vif_16", "jsCall_vif_17", "jsCall_vif_18", "jsCall_vif_19", "jsCall_vif_20", "jsCall_vif_21", "jsCall_vif_22", "jsCall_vif_23", "jsCall_vif_24", "jsCall_vif_25", "jsCall_vif_26", "jsCall_vif_27", "jsCall_vif_28", "jsCall_vif_29", "jsCall_vif_30", "jsCall_vif_31", "jsCall_vif_32", "jsCall_vif_33", "jsCall_vif_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6777. var debug_table_viff = [0, "jsCall_viff_0", "jsCall_viff_1", "jsCall_viff_2", "jsCall_viff_3", "jsCall_viff_4", "jsCall_viff_5", "jsCall_viff_6", "jsCall_viff_7", "jsCall_viff_8", "jsCall_viff_9", "jsCall_viff_10", "jsCall_viff_11", "jsCall_viff_12", "jsCall_viff_13", "jsCall_viff_14", "jsCall_viff_15", "jsCall_viff_16", "jsCall_viff_17", "jsCall_viff_18", "jsCall_viff_19", "jsCall_viff_20", "jsCall_viff_21", "jsCall_viff_22", "jsCall_viff_23", "jsCall_viff_24", "jsCall_viff_25", "jsCall_viff_26", "jsCall_viff_27", "jsCall_viff_28", "jsCall_viff_29", "jsCall_viff_30", "jsCall_viff_31", "jsCall_viff_32", "jsCall_viff_33", "jsCall_viff_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6778. var debug_table_vifff = [0, "jsCall_vifff_0", "jsCall_vifff_1", "jsCall_vifff_2", "jsCall_vifff_3", "jsCall_vifff_4", "jsCall_vifff_5", "jsCall_vifff_6", "jsCall_vifff_7", "jsCall_vifff_8", "jsCall_vifff_9", "jsCall_vifff_10", "jsCall_vifff_11", "jsCall_vifff_12", "jsCall_vifff_13", "jsCall_vifff_14", "jsCall_vifff_15", "jsCall_vifff_16", "jsCall_vifff_17", "jsCall_vifff_18", "jsCall_vifff_19", "jsCall_vifff_20", "jsCall_vifff_21", "jsCall_vifff_22", "jsCall_vifff_23", "jsCall_vifff_24", "jsCall_vifff_25", "jsCall_vifff_26", "jsCall_vifff_27", "jsCall_vifff_28", "jsCall_vifff_29", "jsCall_vifff_30", "jsCall_vifff_31", "jsCall_vifff_32", "jsCall_vifff_33", "jsCall_vifff_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6779. var debug_table_viffff = [0, "jsCall_viffff_0", "jsCall_viffff_1", "jsCall_viffff_2", "jsCall_viffff_3", "jsCall_viffff_4", "jsCall_viffff_5", "jsCall_viffff_6", "jsCall_viffff_7", "jsCall_viffff_8", "jsCall_viffff_9", "jsCall_viffff_10", "jsCall_viffff_11", "jsCall_viffff_12", "jsCall_viffff_13", "jsCall_viffff_14", "jsCall_viffff_15", "jsCall_viffff_16", "jsCall_viffff_17", "jsCall_viffff_18", "jsCall_viffff_19", "jsCall_viffff_20", "jsCall_viffff_21", "jsCall_viffff_22", "jsCall_viffff_23", "jsCall_viffff_24", "jsCall_viffff_25", "jsCall_viffff_26", "jsCall_viffff_27", "jsCall_viffff_28", "jsCall_viffff_29", "jsCall_viffff_30", "jsCall_viffff_31", "jsCall_viffff_32", "jsCall_viffff_33", "jsCall_viffff_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6780. var debug_table_vii = [0, "jsCall_vii_0", "jsCall_vii_1", "jsCall_vii_2", "jsCall_vii_3", "jsCall_vii_4", "jsCall_vii_5", "jsCall_vii_6", "jsCall_vii_7", "jsCall_vii_8", "jsCall_vii_9", "jsCall_vii_10", "jsCall_vii_11", "jsCall_vii_12", "jsCall_vii_13", "jsCall_vii_14", "jsCall_vii_15", "jsCall_vii_16", "jsCall_vii_17", "jsCall_vii_18", "jsCall_vii_19", "jsCall_vii_20", "jsCall_vii_21", "jsCall_vii_22", "jsCall_vii_23", "jsCall_vii_24", "jsCall_vii_25", "jsCall_vii_26", "jsCall_vii_27", "jsCall_vii_28", "jsCall_vii_29", "jsCall_vii_30", "jsCall_vii_31", "jsCall_vii_32", "jsCall_vii_33", "jsCall_vii_34", "_io_close_default", "_lumRangeFromJpeg_c", "_lumRangeToJpeg_c", "_lumRangeFromJpeg16_c", "_lumRangeToJpeg16_c", "_decode_data_free", "_dequant_9", "_idct_4x4_9", "_idct_8x8_9", "_idct_16x16_9", "_idct_32x32_9", "_dequant_10", "_idct_4x4_10", "_idct_8x8_10", "_idct_16x16_10", "_idct_32x32_10", "_dequant_12", "_idct_4x4_12", "_idct_8x8_12", "_idct_16x16_12", "_idct_32x32_12", "_dequant_8", "_idct_4x4_8", "_idct_8x8_8", "_idct_16x16_8", "_idct_32x32_8", "_ff_dct32_fixed", "_imdct_and_windowing", "_apply_ltp", "_update_ltp", "_imdct_and_windowing_ld", "_imdct_and_windowing_eld", "_imdct_and_windowing_960", "_ff_dct32_float", "_dct32_func", "_dct_calc_I_c", "_dct_calc_II_c", "_dct_calc_III_c", "_dst_calc_I_c", "_fft_permute_c", "_fft_calc_c", "_ff_h264_chroma_dc_dequant_idct_9_c", "_ff_h264_chroma422_dc_dequant_idct_9_c", "_ff_h264_chroma_dc_dequant_idct_10_c", "_ff_h264_chroma422_dc_dequant_idct_10_c", "_ff_h264_chroma_dc_dequant_idct_12_c", "_ff_h264_chroma422_dc_dequant_idct_12_c", "_ff_h264_chroma_dc_dequant_idct_14_c", "_ff_h264_chroma422_dc_dequant_idct_14_c", "_ff_h264_chroma_dc_dequant_idct_8_c", "_ff_h264_chroma422_dc_dequant_idct_8_c", "_hevc_pps_free", "_rdft_calc_c", "_sbr_qmf_post_shuffle_c", "_sbr_qmf_deint_neg_c", "_sbr_autocorrelate_c", "_av_buffer_default_free", "_pool_release_buffer", "_sha1_transform", "_sha256_transform", "_pop_arg_long_double", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6781. var debug_table_viidi = [0, "jsCall_viidi_0", "jsCall_viidi_1", "jsCall_viidi_2", "jsCall_viidi_3", "jsCall_viidi_4", "jsCall_viidi_5", "jsCall_viidi_6", "jsCall_viidi_7", "jsCall_viidi_8", "jsCall_viidi_9", "jsCall_viidi_10", "jsCall_viidi_11", "jsCall_viidi_12", "jsCall_viidi_13", "jsCall_viidi_14", "jsCall_viidi_15", "jsCall_viidi_16", "jsCall_viidi_17", "jsCall_viidi_18", "jsCall_viidi_19", "jsCall_viidi_20", "jsCall_viidi_21", "jsCall_viidi_22", "jsCall_viidi_23", "jsCall_viidi_24", "jsCall_viidi_25", "jsCall_viidi_26", "jsCall_viidi_27", "jsCall_viidi_28", "jsCall_viidi_29", "jsCall_viidi_30", "jsCall_viidi_31", "jsCall_viidi_32", "jsCall_viidi_33", "jsCall_viidi_34", "_vector_dmac_scalar_c", "_vector_dmul_scalar_c", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6782. var debug_table_viif = [0, "jsCall_viif_0", "jsCall_viif_1", "jsCall_viif_2", "jsCall_viif_3", "jsCall_viif_4", "jsCall_viif_5", "jsCall_viif_6", "jsCall_viif_7", "jsCall_viif_8", "jsCall_viif_9", "jsCall_viif_10", "jsCall_viif_11", "jsCall_viif_12", "jsCall_viif_13", "jsCall_viif_14", "jsCall_viif_15", "jsCall_viif_16", "jsCall_viif_17", "jsCall_viif_18", "jsCall_viif_19", "jsCall_viif_20", "jsCall_viif_21", "jsCall_viif_22", "jsCall_viif_23", "jsCall_viif_24", "jsCall_viif_25", "jsCall_viif_26", "jsCall_viif_27", "jsCall_viif_28", "jsCall_viif_29", "jsCall_viif_30", "jsCall_viif_31", "jsCall_viif_32", "jsCall_viif_33", "jsCall_viif_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6783. var debug_table_viifi = [0, "jsCall_viifi_0", "jsCall_viifi_1", "jsCall_viifi_2", "jsCall_viifi_3", "jsCall_viifi_4", "jsCall_viifi_5", "jsCall_viifi_6", "jsCall_viifi_7", "jsCall_viifi_8", "jsCall_viifi_9", "jsCall_viifi_10", "jsCall_viifi_11", "jsCall_viifi_12", "jsCall_viifi_13", "jsCall_viifi_14", "jsCall_viifi_15", "jsCall_viifi_16", "jsCall_viifi_17", "jsCall_viifi_18", "jsCall_viifi_19", "jsCall_viifi_20", "jsCall_viifi_21", "jsCall_viifi_22", "jsCall_viifi_23", "jsCall_viifi_24", "jsCall_viifi_25", "jsCall_viifi_26", "jsCall_viifi_27", "jsCall_viifi_28", "jsCall_viifi_29", "jsCall_viifi_30", "jsCall_viifi_31", "jsCall_viifi_32", "jsCall_viifi_33", "jsCall_viifi_34", "_vector_fmac_scalar_c", "_vector_fmul_scalar_c", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6784. var debug_table_viii = [0, "jsCall_viii_0", "jsCall_viii_1", "jsCall_viii_2", "jsCall_viii_3", "jsCall_viii_4", "jsCall_viii_5", "jsCall_viii_6", "jsCall_viii_7", "jsCall_viii_8", "jsCall_viii_9", "jsCall_viii_10", "jsCall_viii_11", "jsCall_viii_12", "jsCall_viii_13", "jsCall_viii_14", "jsCall_viii_15", "jsCall_viii_16", "jsCall_viii_17", "jsCall_viii_18", "jsCall_viii_19", "jsCall_viii_20", "jsCall_viii_21", "jsCall_viii_22", "jsCall_viii_23", "jsCall_viii_24", "jsCall_viii_25", "jsCall_viii_26", "jsCall_viii_27", "jsCall_viii_28", "jsCall_viii_29", "jsCall_viii_30", "jsCall_viii_31", "jsCall_viii_32", "jsCall_viii_33", "jsCall_viii_34", "_avcHandleFrame", "_handleFrame", "_sdt_cb", "_pat_cb", "_pmt_cb", "_scte_data_cb", "_m4sl_cb", "_chrRangeFromJpeg_c", "_chrRangeToJpeg_c", "_chrRangeFromJpeg16_c", "_chrRangeToJpeg16_c", "_rgb15to16_c", "_rgb15tobgr24_c", "_rgb15to32_c", "_rgb16tobgr24_c", "_rgb16to32_c", "_rgb16to15_c", "_rgb24tobgr16_c", "_rgb24tobgr15_c", "_rgb24tobgr32_c", "_rgb32to16_c", "_rgb32to15_c", "_rgb32tobgr24_c", "_rgb24to15_c", "_rgb24to16_c", "_rgb24tobgr24_c", "_shuffle_bytes_0321_c", "_shuffle_bytes_2103_c", "_shuffle_bytes_1230_c", "_shuffle_bytes_3012_c", "_shuffle_bytes_3210_c", "_rgb32tobgr16_c", "_rgb32tobgr15_c", "_rgb48tobgr48_bswap", "_rgb48tobgr64_bswap", "_rgb48to64_bswap", "_rgb64to48_bswap", "_rgb48tobgr48_nobswap", "_rgb48tobgr64_nobswap", "_rgb48to64_nobswap", "_rgb64tobgr48_nobswap", "_rgb64tobgr48_bswap", "_rgb64to48_nobswap", "_rgb12to15", "_rgb15to24", "_rgb16to24", "_rgb32to24", "_rgb24to32", "_rgb12tobgr12", "_rgb15tobgr15", "_rgb16tobgr15", "_rgb15tobgr16", "_rgb16tobgr16", "_rgb15tobgr32", "_rgb16tobgr32", "_add_residual4x4_9", "_add_residual8x8_9", "_add_residual16x16_9", "_add_residual32x32_9", "_transform_rdpcm_9", "_add_residual4x4_10", "_add_residual8x8_10", "_add_residual16x16_10", "_add_residual32x32_10", "_transform_rdpcm_10", "_add_residual4x4_12", "_add_residual8x8_12", "_add_residual16x16_12", "_add_residual32x32_12", "_transform_rdpcm_12", "_add_residual4x4_8", "_add_residual8x8_8", "_add_residual16x16_8", "_add_residual32x32_8", "_transform_rdpcm_8", "_just_return", "_bswap_buf", "_bswap16_buf", "_ff_imdct_calc_c", "_ff_imdct_half_c", "_ff_mdct_calc_c", "_ff_h264_add_pixels4_16_c", "_ff_h264_add_pixels4_8_c", "_ff_h264_add_pixels8_16_c", "_ff_h264_add_pixels8_8_c", "_ff_h264_idct_add_9_c", "_ff_h264_idct8_add_9_c", "_ff_h264_idct_dc_add_9_c", "_ff_h264_idct8_dc_add_9_c", "_ff_h264_luma_dc_dequant_idct_9_c", "_ff_h264_idct_add_10_c", "_ff_h264_idct8_add_10_c", "_ff_h264_idct_dc_add_10_c", "_ff_h264_idct8_dc_add_10_c", "_ff_h264_luma_dc_dequant_idct_10_c", "_ff_h264_idct_add_12_c", "_ff_h264_idct8_add_12_c", "_ff_h264_idct_dc_add_12_c", "_ff_h264_idct8_dc_add_12_c", "_ff_h264_luma_dc_dequant_idct_12_c", "_ff_h264_idct_add_14_c", "_ff_h264_idct8_add_14_c", "_ff_h264_idct_dc_add_14_c", "_ff_h264_idct8_dc_add_14_c", "_ff_h264_luma_dc_dequant_idct_14_c", "_ff_h264_idct_add_8_c", "_ff_h264_idct8_add_8_c", "_ff_h264_idct_dc_add_8_c", "_ff_h264_idct8_dc_add_8_c", "_ff_h264_luma_dc_dequant_idct_8_c", "_sbr_qmf_deint_bfly_c", "_ps_add_squares_c", "_butterflies_float_c", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6785. var debug_table_viiii = [0, "jsCall_viiii_0", "jsCall_viiii_1", "jsCall_viiii_2", "jsCall_viiii_3", "jsCall_viiii_4", "jsCall_viiii_5", "jsCall_viiii_6", "jsCall_viiii_7", "jsCall_viiii_8", "jsCall_viiii_9", "jsCall_viiii_10", "jsCall_viiii_11", "jsCall_viiii_12", "jsCall_viiii_13", "jsCall_viiii_14", "jsCall_viiii_15", "jsCall_viiii_16", "jsCall_viiii_17", "jsCall_viiii_18", "jsCall_viiii_19", "jsCall_viiii_20", "jsCall_viiii_21", "jsCall_viiii_22", "jsCall_viiii_23", "jsCall_viiii_24", "jsCall_viiii_25", "jsCall_viiii_26", "jsCall_viiii_27", "jsCall_viiii_28", "jsCall_viiii_29", "jsCall_viiii_30", "jsCall_viiii_31", "jsCall_viiii_32", "jsCall_viiii_33", "jsCall_viiii_34", "_planar_rgb9le_to_y", "_planar_rgb10le_to_a", "_planar_rgb10le_to_y", "_planar_rgb12le_to_a", "_planar_rgb12le_to_y", "_planar_rgb14le_to_y", "_planar_rgb16le_to_a", "_planar_rgb16le_to_y", "_planar_rgb9be_to_y", "_planar_rgb10be_to_a", "_planar_rgb10be_to_y", "_planar_rgb12be_to_a", "_planar_rgb12be_to_y", "_planar_rgb14be_to_y", "_planar_rgb16be_to_a", "_planar_rgb16be_to_y", "_planar_rgb_to_a", "_planar_rgb_to_y", "_gray8aToPacked32", "_gray8aToPacked32_1", "_gray8aToPacked24", "_sws_convertPalette8ToPacked32", "_sws_convertPalette8ToPacked24", "_intra_pred_2_9", "_intra_pred_3_9", "_intra_pred_4_9", "_intra_pred_5_9", "_pred_planar_0_9", "_pred_planar_1_9", "_pred_planar_2_9", "_pred_planar_3_9", "_intra_pred_2_10", "_intra_pred_3_10", "_intra_pred_4_10", "_intra_pred_5_10", "_pred_planar_0_10", "_pred_planar_1_10", "_pred_planar_2_10", "_pred_planar_3_10", "_intra_pred_2_12", "_intra_pred_3_12", "_intra_pred_4_12", "_intra_pred_5_12", "_pred_planar_0_12", "_pred_planar_1_12", "_pred_planar_2_12", "_pred_planar_3_12", "_intra_pred_2_8", "_intra_pred_3_8", "_intra_pred_4_8", "_intra_pred_5_8", "_pred_planar_0_8", "_pred_planar_1_8", "_pred_planar_2_8", "_pred_planar_3_8", "_apply_tns", "_windowing_and_mdct_ltp", "_h264_v_loop_filter_luma_intra_9_c", "_h264_h_loop_filter_luma_intra_9_c", "_h264_h_loop_filter_luma_mbaff_intra_9_c", "_h264_v_loop_filter_chroma_intra_9_c", "_h264_h_loop_filter_chroma_intra_9_c", "_h264_h_loop_filter_chroma422_intra_9_c", "_h264_h_loop_filter_chroma_mbaff_intra_9_c", "_h264_h_loop_filter_chroma422_mbaff_intra_9_c", "_h264_v_loop_filter_luma_intra_10_c", "_h264_h_loop_filter_luma_intra_10_c", "_h264_h_loop_filter_luma_mbaff_intra_10_c", "_h264_v_loop_filter_chroma_intra_10_c", "_h264_h_loop_filter_chroma_intra_10_c", "_h264_h_loop_filter_chroma422_intra_10_c", "_h264_h_loop_filter_chroma_mbaff_intra_10_c", "_h264_h_loop_filter_chroma422_mbaff_intra_10_c", "_h264_v_loop_filter_luma_intra_12_c", "_h264_h_loop_filter_luma_intra_12_c", "_h264_h_loop_filter_luma_mbaff_intra_12_c", "_h264_v_loop_filter_chroma_intra_12_c", "_h264_h_loop_filter_chroma_intra_12_c", "_h264_h_loop_filter_chroma422_intra_12_c", "_h264_h_loop_filter_chroma_mbaff_intra_12_c", "_h264_h_loop_filter_chroma422_mbaff_intra_12_c", "_h264_v_loop_filter_luma_intra_14_c", "_h264_h_loop_filter_luma_intra_14_c", "_h264_h_loop_filter_luma_mbaff_intra_14_c", "_h264_v_loop_filter_chroma_intra_14_c", "_h264_h_loop_filter_chroma_intra_14_c", "_h264_h_loop_filter_chroma422_intra_14_c", "_h264_h_loop_filter_chroma_mbaff_intra_14_c", "_h264_h_loop_filter_chroma422_mbaff_intra_14_c", "_h264_v_loop_filter_luma_intra_8_c", "_h264_h_loop_filter_luma_intra_8_c", "_h264_h_loop_filter_luma_mbaff_intra_8_c", "_h264_v_loop_filter_chroma_intra_8_c", "_h264_h_loop_filter_chroma_intra_8_c", "_h264_h_loop_filter_chroma422_intra_8_c", "_h264_h_loop_filter_chroma_mbaff_intra_8_c", "_h264_h_loop_filter_chroma422_mbaff_intra_8_c", "_fft15_c", "_mdct15", "_imdct15_half", "_ps_mul_pair_single_c", "_ps_hybrid_analysis_ileave_c", "_ps_hybrid_synthesis_deint_c", "_vector_fmul_c", "_vector_dmul_c", "_vector_fmul_reverse_c", "_av_log_default_callback", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6786. var debug_table_viiiid = [0, "jsCall_viiiid_0", "jsCall_viiiid_1", "jsCall_viiiid_2", "jsCall_viiiid_3", "jsCall_viiiid_4", "jsCall_viiiid_5", "jsCall_viiiid_6", "jsCall_viiiid_7", "jsCall_viiiid_8", "jsCall_viiiid_9", "jsCall_viiiid_10", "jsCall_viiiid_11", "jsCall_viiiid_12", "jsCall_viiiid_13", "jsCall_viiiid_14", "jsCall_viiiid_15", "jsCall_viiiid_16", "jsCall_viiiid_17", "jsCall_viiiid_18", "jsCall_viiiid_19", "jsCall_viiiid_20", "jsCall_viiiid_21", "jsCall_viiiid_22", "jsCall_viiiid_23", "jsCall_viiiid_24", "jsCall_viiiid_25", "jsCall_viiiid_26", "jsCall_viiiid_27", "jsCall_viiiid_28", "jsCall_viiiid_29", "jsCall_viiiid_30", "jsCall_viiiid_31", "jsCall_viiiid_32", "jsCall_viiiid_33", "jsCall_viiiid_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6787. var debug_table_viiiifii = [0, "jsCall_viiiifii_0", "jsCall_viiiifii_1", "jsCall_viiiifii_2", "jsCall_viiiifii_3", "jsCall_viiiifii_4", "jsCall_viiiifii_5", "jsCall_viiiifii_6", "jsCall_viiiifii_7", "jsCall_viiiifii_8", "jsCall_viiiifii_9", "jsCall_viiiifii_10", "jsCall_viiiifii_11", "jsCall_viiiifii_12", "jsCall_viiiifii_13", "jsCall_viiiifii_14", "jsCall_viiiifii_15", "jsCall_viiiifii_16", "jsCall_viiiifii_17", "jsCall_viiiifii_18", "jsCall_viiiifii_19", "jsCall_viiiifii_20", "jsCall_viiiifii_21", "jsCall_viiiifii_22", "jsCall_viiiifii_23", "jsCall_viiiifii_24", "jsCall_viiiifii_25", "jsCall_viiiifii_26", "jsCall_viiiifii_27", "jsCall_viiiifii_28", "jsCall_viiiifii_29", "jsCall_viiiifii_30", "jsCall_viiiifii_31", "jsCall_viiiifii_32", "jsCall_viiiifii_33", "jsCall_viiiifii_34", "_sbr_hf_gen_c", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6788. var debug_table_viiiii = [0, "jsCall_viiiii_0", "jsCall_viiiii_1", "jsCall_viiiii_2", "jsCall_viiiii_3", "jsCall_viiiii_4", "jsCall_viiiii_5", "jsCall_viiiii_6", "jsCall_viiiii_7", "jsCall_viiiii_8", "jsCall_viiiii_9", "jsCall_viiiii_10", "jsCall_viiiii_11", "jsCall_viiiii_12", "jsCall_viiiii_13", "jsCall_viiiii_14", "jsCall_viiiii_15", "jsCall_viiiii_16", "jsCall_viiiii_17", "jsCall_viiiii_18", "jsCall_viiiii_19", "jsCall_viiiii_20", "jsCall_viiiii_21", "jsCall_viiiii_22", "jsCall_viiiii_23", "jsCall_viiiii_24", "jsCall_viiiii_25", "jsCall_viiiii_26", "jsCall_viiiii_27", "jsCall_viiiii_28", "jsCall_viiiii_29", "jsCall_viiiii_30", "jsCall_viiiii_31", "jsCall_viiiii_32", "jsCall_viiiii_33", "jsCall_viiiii_34", "_planar_rgb9le_to_uv", "_planar_rgb10le_to_uv", "_planar_rgb12le_to_uv", "_planar_rgb14le_to_uv", "_planar_rgb16le_to_uv", "_planar_rgb9be_to_uv", "_planar_rgb10be_to_uv", "_planar_rgb12be_to_uv", "_planar_rgb14be_to_uv", "_planar_rgb16be_to_uv", "_planar_rgb_to_uv", "_yuv2p010l1_LE_c", "_yuv2p010l1_BE_c", "_yuv2plane1_16LE_c", "_yuv2plane1_16BE_c", "_yuv2plane1_9LE_c", "_yuv2plane1_9BE_c", "_yuv2plane1_10LE_c", "_yuv2plane1_10BE_c", "_yuv2plane1_12LE_c", "_yuv2plane1_12BE_c", "_yuv2plane1_14LE_c", "_yuv2plane1_14BE_c", "_yuv2plane1_floatBE_c", "_yuv2plane1_floatLE_c", "_yuv2plane1_8_c", "_bayer_bggr8_to_rgb24_copy", "_bayer_bggr8_to_rgb24_interpolate", "_bayer_bggr16le_to_rgb24_copy", "_bayer_bggr16le_to_rgb24_interpolate", "_bayer_bggr16be_to_rgb24_copy", "_bayer_bggr16be_to_rgb24_interpolate", "_bayer_rggb8_to_rgb24_copy", "_bayer_rggb8_to_rgb24_interpolate", "_bayer_rggb16le_to_rgb24_copy", "_bayer_rggb16le_to_rgb24_interpolate", "_bayer_rggb16be_to_rgb24_copy", "_bayer_rggb16be_to_rgb24_interpolate", "_bayer_gbrg8_to_rgb24_copy", "_bayer_gbrg8_to_rgb24_interpolate", "_bayer_gbrg16le_to_rgb24_copy", "_bayer_gbrg16le_to_rgb24_interpolate", "_bayer_gbrg16be_to_rgb24_copy", "_bayer_gbrg16be_to_rgb24_interpolate", "_bayer_grbg8_to_rgb24_copy", "_bayer_grbg8_to_rgb24_interpolate", "_bayer_grbg16le_to_rgb24_copy", "_bayer_grbg16le_to_rgb24_interpolate", "_bayer_grbg16be_to_rgb24_copy", "_bayer_grbg16be_to_rgb24_interpolate", "_hevc_h_loop_filter_chroma_9", "_hevc_v_loop_filter_chroma_9", "_hevc_h_loop_filter_chroma_10", "_hevc_v_loop_filter_chroma_10", "_hevc_h_loop_filter_chroma_12", "_hevc_v_loop_filter_chroma_12", "_hevc_h_loop_filter_chroma_8", "_hevc_v_loop_filter_chroma_8", "_ff_mpadsp_apply_window_float", "_ff_mpadsp_apply_window_fixed", "_worker_func", "_sbr_hf_assemble", "_sbr_hf_inverse_filter", "_ff_h264_idct_add16_9_c", "_ff_h264_idct8_add4_9_c", "_ff_h264_idct_add8_9_c", "_ff_h264_idct_add8_422_9_c", "_ff_h264_idct_add16intra_9_c", "_h264_v_loop_filter_luma_9_c", "_h264_h_loop_filter_luma_9_c", "_h264_h_loop_filter_luma_mbaff_9_c", "_h264_v_loop_filter_chroma_9_c", "_h264_h_loop_filter_chroma_9_c", "_h264_h_loop_filter_chroma422_9_c", "_h264_h_loop_filter_chroma_mbaff_9_c", "_h264_h_loop_filter_chroma422_mbaff_9_c", "_ff_h264_idct_add16_10_c", "_ff_h264_idct8_add4_10_c", "_ff_h264_idct_add8_10_c", "_ff_h264_idct_add8_422_10_c", "_ff_h264_idct_add16intra_10_c", "_h264_v_loop_filter_luma_10_c", "_h264_h_loop_filter_luma_10_c", "_h264_h_loop_filter_luma_mbaff_10_c", "_h264_v_loop_filter_chroma_10_c", "_h264_h_loop_filter_chroma_10_c", "_h264_h_loop_filter_chroma422_10_c", "_h264_h_loop_filter_chroma_mbaff_10_c", "_h264_h_loop_filter_chroma422_mbaff_10_c", "_ff_h264_idct_add16_12_c", "_ff_h264_idct8_add4_12_c", "_ff_h264_idct_add8_12_c", "_ff_h264_idct_add8_422_12_c", "_ff_h264_idct_add16intra_12_c", "_h264_v_loop_filter_luma_12_c", "_h264_h_loop_filter_luma_12_c", "_h264_h_loop_filter_luma_mbaff_12_c", "_h264_v_loop_filter_chroma_12_c", "_h264_h_loop_filter_chroma_12_c", "_h264_h_loop_filter_chroma422_12_c", "_h264_h_loop_filter_chroma_mbaff_12_c", "_h264_h_loop_filter_chroma422_mbaff_12_c", "_ff_h264_idct_add16_14_c", "_ff_h264_idct8_add4_14_c", "_ff_h264_idct_add8_14_c", "_ff_h264_idct_add8_422_14_c", "_ff_h264_idct_add16intra_14_c", "_h264_v_loop_filter_luma_14_c", "_h264_h_loop_filter_luma_14_c", "_h264_h_loop_filter_luma_mbaff_14_c", "_h264_v_loop_filter_chroma_14_c", "_h264_h_loop_filter_chroma_14_c", "_h264_h_loop_filter_chroma422_14_c", "_h264_h_loop_filter_chroma_mbaff_14_c", "_h264_h_loop_filter_chroma422_mbaff_14_c", "_ff_h264_idct_add16_8_c", "_ff_h264_idct8_add4_8_c", "_ff_h264_idct_add8_8_c", "_ff_h264_idct_add8_422_8_c", "_ff_h264_idct_add16intra_8_c", "_h264_v_loop_filter_luma_8_c", "_h264_h_loop_filter_luma_8_c", "_h264_h_loop_filter_luma_mbaff_8_c", "_h264_v_loop_filter_chroma_8_c", "_h264_h_loop_filter_chroma_8_c", "_h264_h_loop_filter_chroma422_8_c", "_h264_h_loop_filter_chroma_mbaff_8_c", "_h264_h_loop_filter_chroma422_mbaff_8_c", "_postrotate_c", "_sbr_hf_g_filt_c", "_ps_hybrid_analysis_c", "_ps_stereo_interpolate_c", "_ps_stereo_interpolate_ipdopd_c", "_vector_fmul_window_c", "_vector_fmul_add_c", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6789. var debug_table_viiiiidd = [0, "jsCall_viiiiidd_0", "jsCall_viiiiidd_1", "jsCall_viiiiidd_2", "jsCall_viiiiidd_3", "jsCall_viiiiidd_4", "jsCall_viiiiidd_5", "jsCall_viiiiidd_6", "jsCall_viiiiidd_7", "jsCall_viiiiidd_8", "jsCall_viiiiidd_9", "jsCall_viiiiidd_10", "jsCall_viiiiidd_11", "jsCall_viiiiidd_12", "jsCall_viiiiidd_13", "jsCall_viiiiidd_14", "jsCall_viiiiidd_15", "jsCall_viiiiidd_16", "jsCall_viiiiidd_17", "jsCall_viiiiidd_18", "jsCall_viiiiidd_19", "jsCall_viiiiidd_20", "jsCall_viiiiidd_21", "jsCall_viiiiidd_22", "jsCall_viiiiidd_23", "jsCall_viiiiidd_24", "jsCall_viiiiidd_25", "jsCall_viiiiidd_26", "jsCall_viiiiidd_27", "jsCall_viiiiidd_28", "jsCall_viiiiidd_29", "jsCall_viiiiidd_30", "jsCall_viiiiidd_31", "jsCall_viiiiidd_32", "jsCall_viiiiidd_33", "jsCall_viiiiidd_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6790. var debug_table_viiiiii = [0, "jsCall_viiiiii_0", "jsCall_viiiiii_1", "jsCall_viiiiii_2", "jsCall_viiiiii_3", "jsCall_viiiiii_4", "jsCall_viiiiii_5", "jsCall_viiiiii_6", "jsCall_viiiiii_7", "jsCall_viiiiii_8", "jsCall_viiiiii_9", "jsCall_viiiiii_10", "jsCall_viiiiii_11", "jsCall_viiiiii_12", "jsCall_viiiiii_13", "jsCall_viiiiii_14", "jsCall_viiiiii_15", "jsCall_viiiiii_16", "jsCall_viiiiii_17", "jsCall_viiiiii_18", "jsCall_viiiiii_19", "jsCall_viiiiii_20", "jsCall_viiiiii_21", "jsCall_viiiiii_22", "jsCall_viiiiii_23", "jsCall_viiiiii_24", "jsCall_viiiiii_25", "jsCall_viiiiii_26", "jsCall_viiiiii_27", "jsCall_viiiiii_28", "jsCall_viiiiii_29", "jsCall_viiiiii_30", "jsCall_viiiiii_31", "jsCall_viiiiii_32", "jsCall_viiiiii_33", "jsCall_viiiiii_34", "_read_geobtag", "_read_apic", "_read_chapter", "_read_priv", "_ff_hyscale_fast_c", "_bswap16Y_c", "_read_ya16le_gray_c", "_read_ya16be_gray_c", "_read_ayuv64le_Y_c", "_yuy2ToY_c", "_uyvyToY_c", "_bgr24ToY_c", "_bgr16leToY_c", "_bgr16beToY_c", "_bgr15leToY_c", "_bgr15beToY_c", "_bgr12leToY_c", "_bgr12beToY_c", "_rgb24ToY_c", "_rgb16leToY_c", "_rgb16beToY_c", "_rgb15leToY_c", "_rgb15beToY_c", "_rgb12leToY_c", "_rgb12beToY_c", "_palToY_c", "_monoblack2Y_c", "_monowhite2Y_c", "_bgr32ToY_c", "_bgr321ToY_c", "_rgb32ToY_c", "_rgb321ToY_c", "_rgb48BEToY_c", "_rgb48LEToY_c", "_bgr48BEToY_c", "_bgr48LEToY_c", "_rgb64BEToY_c", "_rgb64LEToY_c", "_bgr64BEToY_c", "_bgr64LEToY_c", "_p010LEToY_c", "_p010BEToY_c", "_grayf32ToY16_c", "_grayf32ToY16_bswap_c", "_rgba64leToA_c", "_rgba64beToA_c", "_rgbaToA_c", "_abgrToA_c", "_read_ya16le_alpha_c", "_read_ya16be_alpha_c", "_read_ayuv64le_A_c", "_palToA_c", "_put_pcm_9", "_hevc_h_loop_filter_luma_9", "_hevc_v_loop_filter_luma_9", "_put_pcm_10", "_hevc_h_loop_filter_luma_10", "_hevc_v_loop_filter_luma_10", "_put_pcm_12", "_hevc_h_loop_filter_luma_12", "_hevc_v_loop_filter_luma_12", "_put_pcm_8", "_hevc_h_loop_filter_luma_8", "_hevc_v_loop_filter_luma_8", "_pred_dc_9", "_pred_angular_0_9", "_pred_angular_1_9", "_pred_angular_2_9", "_pred_angular_3_9", "_pred_dc_10", "_pred_angular_0_10", "_pred_angular_1_10", "_pred_angular_2_10", "_pred_angular_3_10", "_pred_dc_12", "_pred_angular_0_12", "_pred_angular_1_12", "_pred_angular_2_12", "_pred_angular_3_12", "_pred_dc_8", "_pred_angular_0_8", "_pred_angular_1_8", "_pred_angular_2_8", "_pred_angular_3_8", "_ff_imdct36_blocks_float", "_ff_imdct36_blocks_fixed", "_weight_h264_pixels16_9_c", "_weight_h264_pixels8_9_c", "_weight_h264_pixels4_9_c", "_weight_h264_pixels2_9_c", "_weight_h264_pixels16_10_c", "_weight_h264_pixels8_10_c", "_weight_h264_pixels4_10_c", "_weight_h264_pixels2_10_c", "_weight_h264_pixels16_12_c", "_weight_h264_pixels8_12_c", "_weight_h264_pixels4_12_c", "_weight_h264_pixels2_12_c", "_weight_h264_pixels16_14_c", "_weight_h264_pixels8_14_c", "_weight_h264_pixels4_14_c", "_weight_h264_pixels2_14_c", "_weight_h264_pixels16_8_c", "_weight_h264_pixels8_8_c", "_weight_h264_pixels4_8_c", "_weight_h264_pixels2_8_c", "_sbr_hf_apply_noise_0", "_sbr_hf_apply_noise_1", "_sbr_hf_apply_noise_2", "_sbr_hf_apply_noise_3", "_aes_decrypt", "_aes_encrypt", "_image_copy_plane", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6791. var debug_table_viiiiiifi = [0, "jsCall_viiiiiifi_0", "jsCall_viiiiiifi_1", "jsCall_viiiiiifi_2", "jsCall_viiiiiifi_3", "jsCall_viiiiiifi_4", "jsCall_viiiiiifi_5", "jsCall_viiiiiifi_6", "jsCall_viiiiiifi_7", "jsCall_viiiiiifi_8", "jsCall_viiiiiifi_9", "jsCall_viiiiiifi_10", "jsCall_viiiiiifi_11", "jsCall_viiiiiifi_12", "jsCall_viiiiiifi_13", "jsCall_viiiiiifi_14", "jsCall_viiiiiifi_15", "jsCall_viiiiiifi_16", "jsCall_viiiiiifi_17", "jsCall_viiiiiifi_18", "jsCall_viiiiiifi_19", "jsCall_viiiiiifi_20", "jsCall_viiiiiifi_21", "jsCall_viiiiiifi_22", "jsCall_viiiiiifi_23", "jsCall_viiiiiifi_24", "jsCall_viiiiiifi_25", "jsCall_viiiiiifi_26", "jsCall_viiiiiifi_27", "jsCall_viiiiiifi_28", "jsCall_viiiiiifi_29", "jsCall_viiiiiifi_30", "jsCall_viiiiiifi_31", "jsCall_viiiiiifi_32", "jsCall_viiiiiifi_33", "jsCall_viiiiiifi_34", "_ps_decorrelate_c", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6792. var debug_table_viiiiiii = [0, "jsCall_viiiiiii_0", "jsCall_viiiiiii_1", "jsCall_viiiiiii_2", "jsCall_viiiiiii_3", "jsCall_viiiiiii_4", "jsCall_viiiiiii_5", "jsCall_viiiiiii_6", "jsCall_viiiiiii_7", "jsCall_viiiiiii_8", "jsCall_viiiiiii_9", "jsCall_viiiiiii_10", "jsCall_viiiiiii_11", "jsCall_viiiiiii_12", "jsCall_viiiiiii_13", "jsCall_viiiiiii_14", "jsCall_viiiiiii_15", "jsCall_viiiiiii_16", "jsCall_viiiiiii_17", "jsCall_viiiiiii_18", "jsCall_viiiiiii_19", "jsCall_viiiiiii_20", "jsCall_viiiiiii_21", "jsCall_viiiiiii_22", "jsCall_viiiiiii_23", "jsCall_viiiiiii_24", "jsCall_viiiiiii_25", "jsCall_viiiiiii_26", "jsCall_viiiiiii_27", "jsCall_viiiiiii_28", "jsCall_viiiiiii_29", "jsCall_viiiiiii_30", "jsCall_viiiiiii_31", "jsCall_viiiiiii_32", "jsCall_viiiiiii_33", "jsCall_viiiiiii_34", "_hScale8To15_c", "_hScale8To19_c", "_hScale16To19_c", "_hScale16To15_c", "_yuy2ToUV_c", "_yvy2ToUV_c", "_uyvyToUV_c", "_nv12ToUV_c", "_nv21ToUV_c", "_palToUV_c", "_bswap16UV_c", "_read_ayuv64le_UV_c", "_p010LEToUV_c", "_p010BEToUV_c", "_p016LEToUV_c", "_p016BEToUV_c", "_gbr24pToUV_half_c", "_rgb64BEToUV_half_c", "_rgb64LEToUV_half_c", "_bgr64BEToUV_half_c", "_bgr64LEToUV_half_c", "_rgb48BEToUV_half_c", "_rgb48LEToUV_half_c", "_bgr48BEToUV_half_c", "_bgr48LEToUV_half_c", "_bgr32ToUV_half_c", "_bgr321ToUV_half_c", "_bgr24ToUV_half_c", "_bgr16leToUV_half_c", "_bgr16beToUV_half_c", "_bgr15leToUV_half_c", "_bgr15beToUV_half_c", "_bgr12leToUV_half_c", "_bgr12beToUV_half_c", "_rgb32ToUV_half_c", "_rgb321ToUV_half_c", "_rgb24ToUV_half_c", "_rgb16leToUV_half_c", "_rgb16beToUV_half_c", "_rgb15leToUV_half_c", "_rgb15beToUV_half_c", "_rgb12leToUV_half_c", "_rgb12beToUV_half_c", "_rgb64BEToUV_c", "_rgb64LEToUV_c", "_bgr64BEToUV_c", "_bgr64LEToUV_c", "_rgb48BEToUV_c", "_rgb48LEToUV_c", "_bgr48BEToUV_c", "_bgr48LEToUV_c", "_bgr32ToUV_c", "_bgr321ToUV_c", "_bgr24ToUV_c", "_bgr16leToUV_c", "_bgr16beToUV_c", "_bgr15leToUV_c", "_bgr15beToUV_c", "_bgr12leToUV_c", "_bgr12beToUV_c", "_rgb32ToUV_c", "_rgb321ToUV_c", "_rgb24ToUV_c", "_rgb16leToUV_c", "_rgb16beToUV_c", "_rgb15leToUV_c", "_rgb15beToUV_c", "_rgb12leToUV_c", "_rgb12beToUV_c", "_yuv2p010lX_LE_c", "_yuv2p010lX_BE_c", "_yuv2p010cX_c", "_yuv2planeX_16LE_c", "_yuv2planeX_16BE_c", "_yuv2p016cX_c", "_yuv2planeX_9LE_c", "_yuv2planeX_9BE_c", "_yuv2planeX_10LE_c", "_yuv2planeX_10BE_c", "_yuv2planeX_12LE_c", "_yuv2planeX_12BE_c", "_yuv2planeX_14LE_c", "_yuv2planeX_14BE_c", "_yuv2planeX_floatBE_c", "_yuv2planeX_floatLE_c", "_yuv2planeX_8_c", "_yuv2nv12cX_c", "_sao_edge_filter_9", "_put_hevc_pel_pixels_9", "_put_hevc_qpel_h_9", "_put_hevc_qpel_v_9", "_put_hevc_qpel_hv_9", "_put_hevc_epel_h_9", "_put_hevc_epel_v_9", "_put_hevc_epel_hv_9", "_sao_edge_filter_10", "_put_hevc_pel_pixels_10", "_put_hevc_qpel_h_10", "_put_hevc_qpel_v_10", "_put_hevc_qpel_hv_10", "_put_hevc_epel_h_10", "_put_hevc_epel_v_10", "_put_hevc_epel_hv_10", "_sao_edge_filter_12", "_put_hevc_pel_pixels_12", "_put_hevc_qpel_h_12", "_put_hevc_qpel_v_12", "_put_hevc_qpel_hv_12", "_put_hevc_epel_h_12", "_put_hevc_epel_v_12", "_put_hevc_epel_hv_12", "_sao_edge_filter_8", "_put_hevc_pel_pixels_8", "_put_hevc_qpel_h_8", "_put_hevc_qpel_v_8", "_put_hevc_qpel_hv_8", "_put_hevc_epel_h_8", "_put_hevc_epel_v_8", "_put_hevc_epel_hv_8", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6793. var debug_table_viiiiiiii = [0, "jsCall_viiiiiiii_0", "jsCall_viiiiiiii_1", "jsCall_viiiiiiii_2", "jsCall_viiiiiiii_3", "jsCall_viiiiiiii_4", "jsCall_viiiiiiii_5", "jsCall_viiiiiiii_6", "jsCall_viiiiiiii_7", "jsCall_viiiiiiii_8", "jsCall_viiiiiiii_9", "jsCall_viiiiiiii_10", "jsCall_viiiiiiii_11", "jsCall_viiiiiiii_12", "jsCall_viiiiiiii_13", "jsCall_viiiiiiii_14", "jsCall_viiiiiiii_15", "jsCall_viiiiiiii_16", "jsCall_viiiiiiii_17", "jsCall_viiiiiiii_18", "jsCall_viiiiiiii_19", "jsCall_viiiiiiii_20", "jsCall_viiiiiiii_21", "jsCall_viiiiiiii_22", "jsCall_viiiiiiii_23", "jsCall_viiiiiiii_24", "jsCall_viiiiiiii_25", "jsCall_viiiiiiii_26", "jsCall_viiiiiiii_27", "jsCall_viiiiiiii_28", "jsCall_viiiiiiii_29", "jsCall_viiiiiiii_30", "jsCall_viiiiiiii_31", "jsCall_viiiiiiii_32", "jsCall_viiiiiiii_33", "jsCall_viiiiiiii_34", "_ff_hcscale_fast_c", "_bayer_bggr8_to_yv12_copy", "_bayer_bggr8_to_yv12_interpolate", "_bayer_bggr16le_to_yv12_copy", "_bayer_bggr16le_to_yv12_interpolate", "_bayer_bggr16be_to_yv12_copy", "_bayer_bggr16be_to_yv12_interpolate", "_bayer_rggb8_to_yv12_copy", "_bayer_rggb8_to_yv12_interpolate", "_bayer_rggb16le_to_yv12_copy", "_bayer_rggb16le_to_yv12_interpolate", "_bayer_rggb16be_to_yv12_copy", "_bayer_rggb16be_to_yv12_interpolate", "_bayer_gbrg8_to_yv12_copy", "_bayer_gbrg8_to_yv12_interpolate", "_bayer_gbrg16le_to_yv12_copy", "_bayer_gbrg16le_to_yv12_interpolate", "_bayer_gbrg16be_to_yv12_copy", "_bayer_gbrg16be_to_yv12_interpolate", "_bayer_grbg8_to_yv12_copy", "_bayer_grbg8_to_yv12_interpolate", "_bayer_grbg16le_to_yv12_copy", "_bayer_grbg16le_to_yv12_interpolate", "_bayer_grbg16be_to_yv12_copy", "_bayer_grbg16be_to_yv12_interpolate", "_sao_band_filter_9", "_put_hevc_pel_uni_pixels_9", "_put_hevc_qpel_uni_h_9", "_put_hevc_qpel_uni_v_9", "_put_hevc_qpel_uni_hv_9", "_put_hevc_epel_uni_h_9", "_put_hevc_epel_uni_v_9", "_put_hevc_epel_uni_hv_9", "_sao_band_filter_10", "_put_hevc_pel_uni_pixels_10", "_put_hevc_qpel_uni_h_10", "_put_hevc_qpel_uni_v_10", "_put_hevc_qpel_uni_hv_10", "_put_hevc_epel_uni_h_10", "_put_hevc_epel_uni_v_10", "_put_hevc_epel_uni_hv_10", "_sao_band_filter_12", "_put_hevc_pel_uni_pixels_12", "_put_hevc_qpel_uni_h_12", "_put_hevc_qpel_uni_v_12", "_put_hevc_qpel_uni_hv_12", "_put_hevc_epel_uni_h_12", "_put_hevc_epel_uni_v_12", "_put_hevc_epel_uni_hv_12", "_sao_band_filter_8", "_put_hevc_pel_uni_pixels_8", "_put_hevc_qpel_uni_h_8", "_put_hevc_qpel_uni_v_8", "_put_hevc_qpel_uni_hv_8", "_put_hevc_epel_uni_h_8", "_put_hevc_epel_uni_v_8", "_put_hevc_epel_uni_hv_8", "_biweight_h264_pixels16_9_c", "_biweight_h264_pixels8_9_c", "_biweight_h264_pixels4_9_c", "_biweight_h264_pixels2_9_c", "_biweight_h264_pixels16_10_c", "_biweight_h264_pixels8_10_c", "_biweight_h264_pixels4_10_c", "_biweight_h264_pixels2_10_c", "_biweight_h264_pixels16_12_c", "_biweight_h264_pixels8_12_c", "_biweight_h264_pixels4_12_c", "_biweight_h264_pixels2_12_c", "_biweight_h264_pixels16_14_c", "_biweight_h264_pixels8_14_c", "_biweight_h264_pixels4_14_c", "_biweight_h264_pixels2_14_c", "_biweight_h264_pixels16_8_c", "_biweight_h264_pixels8_8_c", "_biweight_h264_pixels4_8_c", "_biweight_h264_pixels2_8_c", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6794. var debug_table_viiiiiiiid = [0, "jsCall_viiiiiiiid_0", "jsCall_viiiiiiiid_1", "jsCall_viiiiiiiid_2", "jsCall_viiiiiiiid_3", "jsCall_viiiiiiiid_4", "jsCall_viiiiiiiid_5", "jsCall_viiiiiiiid_6", "jsCall_viiiiiiiid_7", "jsCall_viiiiiiiid_8", "jsCall_viiiiiiiid_9", "jsCall_viiiiiiiid_10", "jsCall_viiiiiiiid_11", "jsCall_viiiiiiiid_12", "jsCall_viiiiiiiid_13", "jsCall_viiiiiiiid_14", "jsCall_viiiiiiiid_15", "jsCall_viiiiiiiid_16", "jsCall_viiiiiiiid_17", "jsCall_viiiiiiiid_18", "jsCall_viiiiiiiid_19", "jsCall_viiiiiiiid_20", "jsCall_viiiiiiiid_21", "jsCall_viiiiiiiid_22", "jsCall_viiiiiiiid_23", "jsCall_viiiiiiiid_24", "jsCall_viiiiiiiid_25", "jsCall_viiiiiiiid_26", "jsCall_viiiiiiiid_27", "jsCall_viiiiiiiid_28", "jsCall_viiiiiiiid_29", "jsCall_viiiiiiiid_30", "jsCall_viiiiiiiid_31", "jsCall_viiiiiiiid_32", "jsCall_viiiiiiiid_33", "jsCall_viiiiiiiid_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6795. var debug_table_viiiiiiiidi = [0, "jsCall_viiiiiiiidi_0", "jsCall_viiiiiiiidi_1", "jsCall_viiiiiiiidi_2", "jsCall_viiiiiiiidi_3", "jsCall_viiiiiiiidi_4", "jsCall_viiiiiiiidi_5", "jsCall_viiiiiiiidi_6", "jsCall_viiiiiiiidi_7", "jsCall_viiiiiiiidi_8", "jsCall_viiiiiiiidi_9", "jsCall_viiiiiiiidi_10", "jsCall_viiiiiiiidi_11", "jsCall_viiiiiiiidi_12", "jsCall_viiiiiiiidi_13", "jsCall_viiiiiiiidi_14", "jsCall_viiiiiiiidi_15", "jsCall_viiiiiiiidi_16", "jsCall_viiiiiiiidi_17", "jsCall_viiiiiiiidi_18", "jsCall_viiiiiiiidi_19", "jsCall_viiiiiiiidi_20", "jsCall_viiiiiiiidi_21", "jsCall_viiiiiiiidi_22", "jsCall_viiiiiiiidi_23", "jsCall_viiiiiiiidi_24", "jsCall_viiiiiiiidi_25", "jsCall_viiiiiiiidi_26", "jsCall_viiiiiiiidi_27", "jsCall_viiiiiiiidi_28", "jsCall_viiiiiiiidi_29", "jsCall_viiiiiiiidi_30", "jsCall_viiiiiiiidi_31", "jsCall_viiiiiiiidi_32", "jsCall_viiiiiiiidi_33", "jsCall_viiiiiiiidi_34", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6796. var debug_table_viiiiiiiii = [0, "jsCall_viiiiiiiii_0", "jsCall_viiiiiiiii_1", "jsCall_viiiiiiiii_2", "jsCall_viiiiiiiii_3", "jsCall_viiiiiiiii_4", "jsCall_viiiiiiiii_5", "jsCall_viiiiiiiii_6", "jsCall_viiiiiiiii_7", "jsCall_viiiiiiiii_8", "jsCall_viiiiiiiii_9", "jsCall_viiiiiiiii_10", "jsCall_viiiiiiiii_11", "jsCall_viiiiiiiii_12", "jsCall_viiiiiiiii_13", "jsCall_viiiiiiiii_14", "jsCall_viiiiiiiii_15", "jsCall_viiiiiiiii_16", "jsCall_viiiiiiiii_17", "jsCall_viiiiiiiii_18", "jsCall_viiiiiiiii_19", "jsCall_viiiiiiiii_20", "jsCall_viiiiiiiii_21", "jsCall_viiiiiiiii_22", "jsCall_viiiiiiiii_23", "jsCall_viiiiiiiii_24", "jsCall_viiiiiiiii_25", "jsCall_viiiiiiiii_26", "jsCall_viiiiiiiii_27", "jsCall_viiiiiiiii_28", "jsCall_viiiiiiiii_29", "jsCall_viiiiiiiii_30", "jsCall_viiiiiiiii_31", "jsCall_viiiiiiiii_32", "jsCall_viiiiiiiii_33", "jsCall_viiiiiiiii_34", "_yuv2rgba32_full_1_c", "_yuv2rgbx32_full_1_c", "_yuv2argb32_full_1_c", "_yuv2xrgb32_full_1_c", "_yuv2bgra32_full_1_c", "_yuv2bgrx32_full_1_c", "_yuv2abgr32_full_1_c", "_yuv2xbgr32_full_1_c", "_yuv2rgba64le_full_1_c", "_yuv2rgbx64le_full_1_c", "_yuv2rgba64be_full_1_c", "_yuv2rgbx64be_full_1_c", "_yuv2bgra64le_full_1_c", "_yuv2bgrx64le_full_1_c", "_yuv2bgra64be_full_1_c", "_yuv2bgrx64be_full_1_c", "_yuv2rgb24_full_1_c", "_yuv2bgr24_full_1_c", "_yuv2rgb48le_full_1_c", "_yuv2bgr48le_full_1_c", "_yuv2rgb48be_full_1_c", "_yuv2bgr48be_full_1_c", "_yuv2bgr4_byte_full_1_c", "_yuv2rgb4_byte_full_1_c", "_yuv2bgr8_full_1_c", "_yuv2rgb8_full_1_c", "_yuv2rgbx64le_1_c", "_yuv2rgba64le_1_c", "_yuv2rgbx64be_1_c", "_yuv2rgba64be_1_c", "_yuv2bgrx64le_1_c", "_yuv2bgra64le_1_c", "_yuv2bgrx64be_1_c", "_yuv2bgra64be_1_c", "_yuv2rgba32_1_c", "_yuv2rgbx32_1_c", "_yuv2rgba32_1_1_c", "_yuv2rgbx32_1_1_c", "_yuv2rgb16_1_c", "_yuv2rgb15_1_c", "_yuv2rgb12_1_c", "_yuv2rgb8_1_c", "_yuv2rgb4_1_c", "_yuv2rgb4b_1_c", "_yuv2rgb48le_1_c", "_yuv2rgb48be_1_c", "_yuv2bgr48le_1_c", "_yuv2bgr48be_1_c", "_yuv2rgb24_1_c", "_yuv2bgr24_1_c", "_yuv2monowhite_1_c", "_yuv2monoblack_1_c", "_yuv2yuyv422_1_c", "_yuv2yvyu422_1_c", "_yuv2uyvy422_1_c", "_yuv2ya8_1_c", "_yuv2ya16le_1_c", "_yuv2ya16be_1_c", "_yuy2toyv12_c", "_put_hevc_pel_bi_pixels_9", "_put_hevc_qpel_bi_h_9", "_put_hevc_qpel_bi_v_9", "_put_hevc_qpel_bi_hv_9", "_put_hevc_epel_bi_h_9", "_put_hevc_epel_bi_v_9", "_put_hevc_epel_bi_hv_9", "_put_hevc_pel_bi_pixels_10", "_put_hevc_qpel_bi_h_10", "_put_hevc_qpel_bi_v_10", "_put_hevc_qpel_bi_hv_10", "_put_hevc_epel_bi_h_10", "_put_hevc_epel_bi_v_10", "_put_hevc_epel_bi_hv_10", "_put_hevc_pel_bi_pixels_12", "_put_hevc_qpel_bi_h_12", "_put_hevc_qpel_bi_v_12", "_put_hevc_qpel_bi_hv_12", "_put_hevc_epel_bi_h_12", "_put_hevc_epel_bi_v_12", "_put_hevc_epel_bi_hv_12", "_put_hevc_pel_bi_pixels_8", "_put_hevc_qpel_bi_h_8", "_put_hevc_qpel_bi_v_8", "_put_hevc_qpel_bi_hv_8", "_put_hevc_epel_bi_h_8", "_put_hevc_epel_bi_v_8", "_put_hevc_epel_bi_hv_8", 0, 0, 0, 0, 0];
  6797. var debug_table_viiiiiiiiii = [0, "jsCall_viiiiiiiiii_0", "jsCall_viiiiiiiiii_1", "jsCall_viiiiiiiiii_2", "jsCall_viiiiiiiiii_3", "jsCall_viiiiiiiiii_4", "jsCall_viiiiiiiiii_5", "jsCall_viiiiiiiiii_6", "jsCall_viiiiiiiiii_7", "jsCall_viiiiiiiiii_8", "jsCall_viiiiiiiiii_9", "jsCall_viiiiiiiiii_10", "jsCall_viiiiiiiiii_11", "jsCall_viiiiiiiiii_12", "jsCall_viiiiiiiiii_13", "jsCall_viiiiiiiiii_14", "jsCall_viiiiiiiiii_15", "jsCall_viiiiiiiiii_16", "jsCall_viiiiiiiiii_17", "jsCall_viiiiiiiiii_18", "jsCall_viiiiiiiiii_19", "jsCall_viiiiiiiiii_20", "jsCall_viiiiiiiiii_21", "jsCall_viiiiiiiiii_22", "jsCall_viiiiiiiiii_23", "jsCall_viiiiiiiiii_24", "jsCall_viiiiiiiiii_25", "jsCall_viiiiiiiiii_26", "jsCall_viiiiiiiiii_27", "jsCall_viiiiiiiiii_28", "jsCall_viiiiiiiiii_29", "jsCall_viiiiiiiiii_30", "jsCall_viiiiiiiiii_31", "jsCall_viiiiiiiiii_32", "jsCall_viiiiiiiiii_33", "jsCall_viiiiiiiiii_34", "_yuv2rgba32_full_2_c", "_yuv2rgbx32_full_2_c", "_yuv2argb32_full_2_c", "_yuv2xrgb32_full_2_c", "_yuv2bgra32_full_2_c", "_yuv2bgrx32_full_2_c", "_yuv2abgr32_full_2_c", "_yuv2xbgr32_full_2_c", "_yuv2rgba64le_full_2_c", "_yuv2rgbx64le_full_2_c", "_yuv2rgba64be_full_2_c", "_yuv2rgbx64be_full_2_c", "_yuv2bgra64le_full_2_c", "_yuv2bgrx64le_full_2_c", "_yuv2bgra64be_full_2_c", "_yuv2bgrx64be_full_2_c", "_yuv2rgb24_full_2_c", "_yuv2bgr24_full_2_c", "_yuv2rgb48le_full_2_c", "_yuv2bgr48le_full_2_c", "_yuv2rgb48be_full_2_c", "_yuv2bgr48be_full_2_c", "_yuv2bgr4_byte_full_2_c", "_yuv2rgb4_byte_full_2_c", "_yuv2bgr8_full_2_c", "_yuv2rgb8_full_2_c", "_yuv2rgbx64le_2_c", "_yuv2rgba64le_2_c", "_yuv2rgbx64be_2_c", "_yuv2rgba64be_2_c", "_yuv2bgrx64le_2_c", "_yuv2bgra64le_2_c", "_yuv2bgrx64be_2_c", "_yuv2bgra64be_2_c", "_yuv2rgba32_2_c", "_yuv2rgbx32_2_c", "_yuv2rgba32_1_2_c", "_yuv2rgbx32_1_2_c", "_yuv2rgb16_2_c", "_yuv2rgb15_2_c", "_yuv2rgb12_2_c", "_yuv2rgb8_2_c", "_yuv2rgb4_2_c", "_yuv2rgb4b_2_c", "_yuv2rgb48le_2_c", "_yuv2rgb48be_2_c", "_yuv2bgr48le_2_c", "_yuv2bgr48be_2_c", "_yuv2rgb24_2_c", "_yuv2bgr24_2_c", "_yuv2monowhite_2_c", "_yuv2monoblack_2_c", "_yuv2yuyv422_2_c", "_yuv2yvyu422_2_c", "_yuv2uyvy422_2_c", "_yuv2ya8_2_c", "_yuv2ya16le_2_c", "_yuv2ya16be_2_c", "_vu9_to_vu12_c", "_yvu9_to_yuy2_c", "_ff_emulated_edge_mc_8", "_ff_emulated_edge_mc_16", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6798. var debug_table_viiiiiiiiiii = [0, "jsCall_viiiiiiiiiii_0", "jsCall_viiiiiiiiiii_1", "jsCall_viiiiiiiiiii_2", "jsCall_viiiiiiiiiii_3", "jsCall_viiiiiiiiiii_4", "jsCall_viiiiiiiiiii_5", "jsCall_viiiiiiiiiii_6", "jsCall_viiiiiiiiiii_7", "jsCall_viiiiiiiiiii_8", "jsCall_viiiiiiiiiii_9", "jsCall_viiiiiiiiiii_10", "jsCall_viiiiiiiiiii_11", "jsCall_viiiiiiiiiii_12", "jsCall_viiiiiiiiiii_13", "jsCall_viiiiiiiiiii_14", "jsCall_viiiiiiiiiii_15", "jsCall_viiiiiiiiiii_16", "jsCall_viiiiiiiiiii_17", "jsCall_viiiiiiiiiii_18", "jsCall_viiiiiiiiiii_19", "jsCall_viiiiiiiiiii_20", "jsCall_viiiiiiiiiii_21", "jsCall_viiiiiiiiiii_22", "jsCall_viiiiiiiiiii_23", "jsCall_viiiiiiiiiii_24", "jsCall_viiiiiiiiiii_25", "jsCall_viiiiiiiiiii_26", "jsCall_viiiiiiiiiii_27", "jsCall_viiiiiiiiiii_28", "jsCall_viiiiiiiiiii_29", "jsCall_viiiiiiiiiii_30", "jsCall_viiiiiiiiiii_31", "jsCall_viiiiiiiiiii_32", "jsCall_viiiiiiiiiii_33", "jsCall_viiiiiiiiiii_34", "_put_hevc_pel_uni_w_pixels_9", "_put_hevc_qpel_uni_w_h_9", "_put_hevc_qpel_uni_w_v_9", "_put_hevc_qpel_uni_w_hv_9", "_put_hevc_epel_uni_w_h_9", "_put_hevc_epel_uni_w_v_9", "_put_hevc_epel_uni_w_hv_9", "_put_hevc_pel_uni_w_pixels_10", "_put_hevc_qpel_uni_w_h_10", "_put_hevc_qpel_uni_w_v_10", "_put_hevc_qpel_uni_w_hv_10", "_put_hevc_epel_uni_w_h_10", "_put_hevc_epel_uni_w_v_10", "_put_hevc_epel_uni_w_hv_10", "_put_hevc_pel_uni_w_pixels_12", "_put_hevc_qpel_uni_w_h_12", "_put_hevc_qpel_uni_w_v_12", "_put_hevc_qpel_uni_w_hv_12", "_put_hevc_epel_uni_w_h_12", "_put_hevc_epel_uni_w_v_12", "_put_hevc_epel_uni_w_hv_12", "_put_hevc_pel_uni_w_pixels_8", "_put_hevc_qpel_uni_w_h_8", "_put_hevc_qpel_uni_w_v_8", "_put_hevc_qpel_uni_w_hv_8", "_put_hevc_epel_uni_w_h_8", "_put_hevc_epel_uni_w_v_8", "_put_hevc_epel_uni_w_hv_8"];
  6799. var debug_table_viiiiiiiiiiii = [0, "jsCall_viiiiiiiiiiii_0", "jsCall_viiiiiiiiiiii_1", "jsCall_viiiiiiiiiiii_2", "jsCall_viiiiiiiiiiii_3", "jsCall_viiiiiiiiiiii_4", "jsCall_viiiiiiiiiiii_5", "jsCall_viiiiiiiiiiii_6", "jsCall_viiiiiiiiiiii_7", "jsCall_viiiiiiiiiiii_8", "jsCall_viiiiiiiiiiii_9", "jsCall_viiiiiiiiiiii_10", "jsCall_viiiiiiiiiiii_11", "jsCall_viiiiiiiiiiii_12", "jsCall_viiiiiiiiiiii_13", "jsCall_viiiiiiiiiiii_14", "jsCall_viiiiiiiiiiii_15", "jsCall_viiiiiiiiiiii_16", "jsCall_viiiiiiiiiiii_17", "jsCall_viiiiiiiiiiii_18", "jsCall_viiiiiiiiiiii_19", "jsCall_viiiiiiiiiiii_20", "jsCall_viiiiiiiiiiii_21", "jsCall_viiiiiiiiiiii_22", "jsCall_viiiiiiiiiiii_23", "jsCall_viiiiiiiiiiii_24", "jsCall_viiiiiiiiiiii_25", "jsCall_viiiiiiiiiiii_26", "jsCall_viiiiiiiiiiii_27", "jsCall_viiiiiiiiiiii_28", "jsCall_viiiiiiiiiiii_29", "jsCall_viiiiiiiiiiii_30", "jsCall_viiiiiiiiiiii_31", "jsCall_viiiiiiiiiiii_32", "jsCall_viiiiiiiiiiii_33", "jsCall_viiiiiiiiiiii_34", "_yuv2rgba32_full_X_c", "_yuv2rgbx32_full_X_c", "_yuv2argb32_full_X_c", "_yuv2xrgb32_full_X_c", "_yuv2bgra32_full_X_c", "_yuv2bgrx32_full_X_c", "_yuv2abgr32_full_X_c", "_yuv2xbgr32_full_X_c", "_yuv2rgba64le_full_X_c", "_yuv2rgbx64le_full_X_c", "_yuv2rgba64be_full_X_c", "_yuv2rgbx64be_full_X_c", "_yuv2bgra64le_full_X_c", "_yuv2bgrx64le_full_X_c", "_yuv2bgra64be_full_X_c", "_yuv2bgrx64be_full_X_c", "_yuv2rgb24_full_X_c", "_yuv2bgr24_full_X_c", "_yuv2rgb48le_full_X_c", "_yuv2bgr48le_full_X_c", "_yuv2rgb48be_full_X_c", "_yuv2bgr48be_full_X_c", "_yuv2bgr4_byte_full_X_c", "_yuv2rgb4_byte_full_X_c", "_yuv2bgr8_full_X_c", "_yuv2rgb8_full_X_c", "_yuv2gbrp_full_X_c", "_yuv2gbrp16_full_X_c", "_yuv2rgbx64le_X_c", "_yuv2rgba64le_X_c", "_yuv2rgbx64be_X_c", "_yuv2rgba64be_X_c", "_yuv2bgrx64le_X_c", "_yuv2bgra64le_X_c", "_yuv2bgrx64be_X_c", "_yuv2bgra64be_X_c", "_yuv2rgba32_X_c", "_yuv2rgbx32_X_c", "_yuv2rgba32_1_X_c", "_yuv2rgbx32_1_X_c", "_yuv2rgb16_X_c", "_yuv2rgb15_X_c", "_yuv2rgb12_X_c", "_yuv2rgb8_X_c", "_yuv2rgb4_X_c", "_yuv2rgb4b_X_c", "_yuv2rgb48le_X_c", "_yuv2rgb48be_X_c", "_yuv2bgr48le_X_c", "_yuv2bgr48be_X_c", "_yuv2rgb24_X_c", "_yuv2bgr24_X_c", "_yuv2monowhite_X_c", "_yuv2ayuv64le_X_c", "_yuv2monoblack_X_c", "_yuv2yuyv422_X_c", "_yuv2yvyu422_X_c", "_yuv2uyvy422_X_c", "_yuv2ya8_X_c", "_yuv2ya16le_X_c", "_yuv2ya16be_X_c", "_sao_edge_restore_0_9", "_sao_edge_restore_1_9", "_sao_edge_restore_0_10", "_sao_edge_restore_1_10", "_sao_edge_restore_0_12", "_sao_edge_restore_1_12", "_sao_edge_restore_0_8", "_sao_edge_restore_1_8", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  6800. var debug_table_viiiiiiiiiiiiii = [0, "jsCall_viiiiiiiiiiiiii_0", "jsCall_viiiiiiiiiiiiii_1", "jsCall_viiiiiiiiiiiiii_2", "jsCall_viiiiiiiiiiiiii_3", "jsCall_viiiiiiiiiiiiii_4", "jsCall_viiiiiiiiiiiiii_5", "jsCall_viiiiiiiiiiiiii_6", "jsCall_viiiiiiiiiiiiii_7", "jsCall_viiiiiiiiiiiiii_8", "jsCall_viiiiiiiiiiiiii_9", "jsCall_viiiiiiiiiiiiii_10", "jsCall_viiiiiiiiiiiiii_11", "jsCall_viiiiiiiiiiiiii_12", "jsCall_viiiiiiiiiiiiii_13", "jsCall_viiiiiiiiiiiiii_14", "jsCall_viiiiiiiiiiiiii_15", "jsCall_viiiiiiiiiiiiii_16", "jsCall_viiiiiiiiiiiiii_17", "jsCall_viiiiiiiiiiiiii_18", "jsCall_viiiiiiiiiiiiii_19", "jsCall_viiiiiiiiiiiiii_20", "jsCall_viiiiiiiiiiiiii_21", "jsCall_viiiiiiiiiiiiii_22", "jsCall_viiiiiiiiiiiiii_23", "jsCall_viiiiiiiiiiiiii_24", "jsCall_viiiiiiiiiiiiii_25", "jsCall_viiiiiiiiiiiiii_26", "jsCall_viiiiiiiiiiiiii_27", "jsCall_viiiiiiiiiiiiii_28", "jsCall_viiiiiiiiiiiiii_29", "jsCall_viiiiiiiiiiiiii_30", "jsCall_viiiiiiiiiiiiii_31", "jsCall_viiiiiiiiiiiiii_32", "jsCall_viiiiiiiiiiiiii_33", "jsCall_viiiiiiiiiiiiii_34", "_put_hevc_pel_bi_w_pixels_9", "_put_hevc_qpel_bi_w_h_9", "_put_hevc_qpel_bi_w_v_9", "_put_hevc_qpel_bi_w_hv_9", "_put_hevc_epel_bi_w_h_9", "_put_hevc_epel_bi_w_v_9", "_put_hevc_epel_bi_w_hv_9", "_put_hevc_pel_bi_w_pixels_10", "_put_hevc_qpel_bi_w_h_10", "_put_hevc_qpel_bi_w_v_10", "_put_hevc_qpel_bi_w_hv_10", "_put_hevc_epel_bi_w_h_10", "_put_hevc_epel_bi_w_v_10", "_put_hevc_epel_bi_w_hv_10", "_put_hevc_pel_bi_w_pixels_12", "_put_hevc_qpel_bi_w_h_12", "_put_hevc_qpel_bi_w_v_12", "_put_hevc_qpel_bi_w_hv_12", "_put_hevc_epel_bi_w_h_12", "_put_hevc_epel_bi_w_v_12", "_put_hevc_epel_bi_w_hv_12", "_put_hevc_pel_bi_w_pixels_8", "_put_hevc_qpel_bi_w_h_8", "_put_hevc_qpel_bi_w_v_8", "_put_hevc_qpel_bi_w_hv_8", "_put_hevc_epel_bi_w_h_8", "_put_hevc_epel_bi_w_v_8", "_put_hevc_epel_bi_w_hv_8"];
  6801. var debug_tables = {
  6802. "dd": debug_table_dd,
  6803. "did": debug_table_did,
  6804. "didd": debug_table_didd,
  6805. "fii": debug_table_fii,
  6806. "fiii": debug_table_fiii,
  6807. "i": debug_table_i,
  6808. "ii": debug_table_ii,
  6809. "iid": debug_table_iid,
  6810. "iidiiii": debug_table_iidiiii,
  6811. "iii": debug_table_iii,
  6812. "iiii": debug_table_iiii,
  6813. "iiiii": debug_table_iiiii,
  6814. "iiiiii": debug_table_iiiiii,
  6815. "iiiiiii": debug_table_iiiiiii,
  6816. "iiiiiiii": debug_table_iiiiiiii,
  6817. "iiiiiiiid": debug_table_iiiiiiiid,
  6818. "iiiiiiiii": debug_table_iiiiiiiii,
  6819. "iiiiiiiiii": debug_table_iiiiiiiiii,
  6820. "iiiiij": debug_table_iiiiij,
  6821. "iiiji": debug_table_iiiji,
  6822. "iiijjji": debug_table_iiijjji,
  6823. "jiiij": debug_table_jiiij,
  6824. "jiiji": debug_table_jiiji,
  6825. "jiji": debug_table_jiji,
  6826. "v": debug_table_v,
  6827. "vdiidiiiii": debug_table_vdiidiiiii,
  6828. "vf": debug_table_vf,
  6829. "vff": debug_table_vff,
  6830. "vfff": debug_table_vfff,
  6831. "vffff": debug_table_vffff,
  6832. "vi": debug_table_vi,
  6833. "vif": debug_table_vif,
  6834. "viff": debug_table_viff,
  6835. "vifff": debug_table_vifff,
  6836. "viffff": debug_table_viffff,
  6837. "vii": debug_table_vii,
  6838. "viidi": debug_table_viidi,
  6839. "viif": debug_table_viif,
  6840. "viifi": debug_table_viifi,
  6841. "viii": debug_table_viii,
  6842. "viiii": debug_table_viiii,
  6843. "viiiid": debug_table_viiiid,
  6844. "viiiifii": debug_table_viiiifii,
  6845. "viiiii": debug_table_viiiii,
  6846. "viiiiidd": debug_table_viiiiidd,
  6847. "viiiiii": debug_table_viiiiii,
  6848. "viiiiiifi": debug_table_viiiiiifi,
  6849. "viiiiiii": debug_table_viiiiiii,
  6850. "viiiiiiii": debug_table_viiiiiiii,
  6851. "viiiiiiiid": debug_table_viiiiiiiid,
  6852. "viiiiiiiidi": debug_table_viiiiiiiidi,
  6853. "viiiiiiiii": debug_table_viiiiiiiii,
  6854. "viiiiiiiiii": debug_table_viiiiiiiiii,
  6855. "viiiiiiiiiii": debug_table_viiiiiiiiiii,
  6856. "viiiiiiiiiiii": debug_table_viiiiiiiiiiii,
  6857. "viiiiiiiiiiiiii": debug_table_viiiiiiiiiiiiii
  6858. };
  6859. function nullFunc_dd(x) {
  6860. abortFnPtrError(x, "dd")
  6861. }
  6862. function nullFunc_did(x) {
  6863. abortFnPtrError(x, "did")
  6864. }
  6865. function nullFunc_didd(x) {
  6866. abortFnPtrError(x, "didd")
  6867. }
  6868. function nullFunc_fii(x) {
  6869. abortFnPtrError(x, "fii")
  6870. }
  6871. function nullFunc_fiii(x) {
  6872. abortFnPtrError(x, "fiii")
  6873. }
  6874. function nullFunc_i(x) {
  6875. abortFnPtrError(x, "i")
  6876. }
  6877. function nullFunc_ii(x) {
  6878. abortFnPtrError(x, "ii")
  6879. }
  6880. function nullFunc_iid(x) {
  6881. abortFnPtrError(x, "iid")
  6882. }
  6883. function nullFunc_iidiiii(x) {
  6884. abortFnPtrError(x, "iidiiii")
  6885. }
  6886. function nullFunc_iii(x) {
  6887. abortFnPtrError(x, "iii")
  6888. }
  6889. function nullFunc_iiii(x) {
  6890. abortFnPtrError(x, "iiii")
  6891. }
  6892. function nullFunc_iiiii(x) {
  6893. abortFnPtrError(x, "iiiii")
  6894. }
  6895. function nullFunc_iiiiii(x) {
  6896. abortFnPtrError(x, "iiiiii")
  6897. }
  6898. function nullFunc_iiiiiii(x) {
  6899. abortFnPtrError(x, "iiiiiii")
  6900. }
  6901. function nullFunc_iiiiiiii(x) {
  6902. abortFnPtrError(x, "iiiiiiii")
  6903. }
  6904. function nullFunc_iiiiiiiid(x) {
  6905. abortFnPtrError(x, "iiiiiiiid")
  6906. }
  6907. function nullFunc_iiiiiiiii(x) {
  6908. abortFnPtrError(x, "iiiiiiiii")
  6909. }
  6910. function nullFunc_iiiiiiiiii(x) {
  6911. abortFnPtrError(x, "iiiiiiiiii")
  6912. }
  6913. function nullFunc_iiiiij(x) {
  6914. abortFnPtrError(x, "iiiiij")
  6915. }
  6916. function nullFunc_iiiji(x) {
  6917. abortFnPtrError(x, "iiiji")
  6918. }
  6919. function nullFunc_iiijjji(x) {
  6920. abortFnPtrError(x, "iiijjji")
  6921. }
  6922. function nullFunc_jiiij(x) {
  6923. abortFnPtrError(x, "jiiij")
  6924. }
  6925. function nullFunc_jiiji(x) {
  6926. abortFnPtrError(x, "jiiji")
  6927. }
  6928. function nullFunc_jiji(x) {
  6929. abortFnPtrError(x, "jiji")
  6930. }
  6931. function nullFunc_v(x) {
  6932. abortFnPtrError(x, "v")
  6933. }
  6934. function nullFunc_vdiidiiiii(x) {
  6935. abortFnPtrError(x, "vdiidiiiii")
  6936. }
  6937. function nullFunc_vf(x) {
  6938. abortFnPtrError(x, "vf")
  6939. }
  6940. function nullFunc_vff(x) {
  6941. abortFnPtrError(x, "vff")
  6942. }
  6943. function nullFunc_vfff(x) {
  6944. abortFnPtrError(x, "vfff")
  6945. }
  6946. function nullFunc_vffff(x) {
  6947. abortFnPtrError(x, "vffff")
  6948. }
  6949. function nullFunc_vi(x) {
  6950. abortFnPtrError(x, "vi")
  6951. }
  6952. function nullFunc_vif(x) {
  6953. abortFnPtrError(x, "vif")
  6954. }
  6955. function nullFunc_viff(x) {
  6956. abortFnPtrError(x, "viff")
  6957. }
  6958. function nullFunc_vifff(x) {
  6959. abortFnPtrError(x, "vifff")
  6960. }
  6961. function nullFunc_viffff(x) {
  6962. abortFnPtrError(x, "viffff")
  6963. }
  6964. function nullFunc_vii(x) {
  6965. abortFnPtrError(x, "vii")
  6966. }
  6967. function nullFunc_viidi(x) {
  6968. abortFnPtrError(x, "viidi")
  6969. }
  6970. function nullFunc_viif(x) {
  6971. abortFnPtrError(x, "viif")
  6972. }
  6973. function nullFunc_viifi(x) {
  6974. abortFnPtrError(x, "viifi")
  6975. }
  6976. function nullFunc_viii(x) {
  6977. abortFnPtrError(x, "viii")
  6978. }
  6979. function nullFunc_viiii(x) {
  6980. abortFnPtrError(x, "viiii")
  6981. }
  6982. function nullFunc_viiiid(x) {
  6983. abortFnPtrError(x, "viiiid")
  6984. }
  6985. function nullFunc_viiiifii(x) {
  6986. abortFnPtrError(x, "viiiifii")
  6987. }
  6988. function nullFunc_viiiii(x) {
  6989. abortFnPtrError(x, "viiiii")
  6990. }
  6991. function nullFunc_viiiiidd(x) {
  6992. abortFnPtrError(x, "viiiiidd")
  6993. }
  6994. function nullFunc_viiiiii(x) {
  6995. abortFnPtrError(x, "viiiiii")
  6996. }
  6997. function nullFunc_viiiiiifi(x) {
  6998. abortFnPtrError(x, "viiiiiifi")
  6999. }
  7000. function nullFunc_viiiiiii(x) {
  7001. abortFnPtrError(x, "viiiiiii")
  7002. }
  7003. function nullFunc_viiiiiiii(x) {
  7004. abortFnPtrError(x, "viiiiiiii")
  7005. }
  7006. function nullFunc_viiiiiiiid(x) {
  7007. abortFnPtrError(x, "viiiiiiiid")
  7008. }
  7009. function nullFunc_viiiiiiiidi(x) {
  7010. abortFnPtrError(x, "viiiiiiiidi")
  7011. }
  7012. function nullFunc_viiiiiiiii(x) {
  7013. abortFnPtrError(x, "viiiiiiiii")
  7014. }
  7015. function nullFunc_viiiiiiiiii(x) {
  7016. abortFnPtrError(x, "viiiiiiiiii")
  7017. }
  7018. function nullFunc_viiiiiiiiiii(x) {
  7019. abortFnPtrError(x, "viiiiiiiiiii")
  7020. }
  7021. function nullFunc_viiiiiiiiiiii(x) {
  7022. abortFnPtrError(x, "viiiiiiiiiiii")
  7023. }
  7024. function nullFunc_viiiiiiiiiiiiii(x) {
  7025. abortFnPtrError(x, "viiiiiiiiiiiiii")
  7026. }
  7027. function jsCall_dd(index, a1) {
  7028. return functionPointers[index](a1)
  7029. }
  7030. function jsCall_did(index, a1, a2) {
  7031. return functionPointers[index](a1, a2)
  7032. }
  7033. function jsCall_didd(index, a1, a2, a3) {
  7034. return functionPointers[index](a1, a2, a3)
  7035. }
  7036. function jsCall_fii(index, a1, a2) {
  7037. return functionPointers[index](a1, a2)
  7038. }
  7039. function jsCall_fiii(index, a1, a2, a3) {
  7040. return functionPointers[index](a1, a2, a3)
  7041. }
  7042. function jsCall_i(index) {
  7043. return functionPointers[index]()
  7044. }
  7045. function jsCall_ii(index, a1) {
  7046. return functionPointers[index](a1)
  7047. }
  7048. function jsCall_iid(index, a1, a2) {
  7049. return functionPointers[index](a1, a2)
  7050. }
  7051. function jsCall_iidiiii(index, a1, a2, a3, a4, a5, a6) {
  7052. return functionPointers[index](a1, a2, a3, a4, a5, a6)
  7053. }
  7054. function jsCall_iii(index, a1, a2) {
  7055. return functionPointers[index](a1, a2)
  7056. }
  7057. function jsCall_iiii(index, a1, a2, a3) {
  7058. return functionPointers[index](a1, a2, a3)
  7059. }
  7060. function jsCall_iiiii(index, a1, a2, a3, a4) {
  7061. return functionPointers[index](a1, a2, a3, a4)
  7062. }
  7063. function jsCall_iiiiii(index, a1, a2, a3, a4, a5) {
  7064. return functionPointers[index](a1, a2, a3, a4, a5)
  7065. }
  7066. function jsCall_iiiiiii(index, a1, a2, a3, a4, a5, a6) {
  7067. return functionPointers[index](a1, a2, a3, a4, a5, a6)
  7068. }
  7069. function jsCall_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {
  7070. return functionPointers[index](a1, a2, a3, a4, a5, a6, a7)
  7071. }
  7072. function jsCall_iiiiiiiid(index, a1, a2, a3, a4, a5, a6, a7, a8) {
  7073. return functionPointers[index](a1, a2, a3, a4, a5, a6, a7, a8)
  7074. }
  7075. function jsCall_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
  7076. return functionPointers[index](a1, a2, a3, a4, a5, a6, a7, a8)
  7077. }
  7078. function jsCall_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
  7079. return functionPointers[index](a1, a2, a3, a4, a5, a6, a7, a8, a9)
  7080. }
  7081. function jsCall_iiiiij(index, a1, a2, a3, a4, a5) {
  7082. return functionPointers[index](a1, a2, a3, a4, a5)
  7083. }
  7084. function jsCall_iiiji(index, a1, a2, a3, a4) {
  7085. return functionPointers[index](a1, a2, a3, a4)
  7086. }
  7087. function jsCall_iiijjji(index, a1, a2, a3, a4, a5, a6) {
  7088. return functionPointers[index](a1, a2, a3, a4, a5, a6)
  7089. }
  7090. function jsCall_jiiij(index, a1, a2, a3, a4) {
  7091. return functionPointers[index](a1, a2, a3, a4)
  7092. }
  7093. function jsCall_jiiji(index, a1, a2, a3, a4) {
  7094. return functionPointers[index](a1, a2, a3, a4)
  7095. }
  7096. function jsCall_jiji(index, a1, a2, a3) {
  7097. return functionPointers[index](a1, a2, a3)
  7098. }
  7099. function jsCall_v(index) {
  7100. functionPointers[index]()
  7101. }
  7102. function jsCall_vdiidiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
  7103. functionPointers[index](a1, a2, a3, a4, a5, a6, a7, a8, a9)
  7104. }
  7105. function jsCall_vf(index, a1) {
  7106. functionPointers[index](a1)
  7107. }
  7108. function jsCall_vff(index, a1, a2) {
  7109. functionPointers[index](a1, a2)
  7110. }
  7111. function jsCall_vfff(index, a1, a2, a3) {
  7112. functionPointers[index](a1, a2, a3)
  7113. }
  7114. function jsCall_vffff(index, a1, a2, a3, a4) {
  7115. functionPointers[index](a1, a2, a3, a4)
  7116. }
  7117. function jsCall_vi(index, a1) {
  7118. functionPointers[index](a1)
  7119. }
  7120. function jsCall_vif(index, a1, a2) {
  7121. functionPointers[index](a1, a2)
  7122. }
  7123. function jsCall_viff(index, a1, a2, a3) {
  7124. functionPointers[index](a1, a2, a3)
  7125. }
  7126. function jsCall_vifff(index, a1, a2, a3, a4) {
  7127. functionPointers[index](a1, a2, a3, a4)
  7128. }
  7129. function jsCall_viffff(index, a1, a2, a3, a4, a5) {
  7130. functionPointers[index](a1, a2, a3, a4, a5)
  7131. }
  7132. function jsCall_vii(index, a1, a2) {
  7133. functionPointers[index](a1, a2)
  7134. }
  7135. function jsCall_viidi(index, a1, a2, a3, a4) {
  7136. functionPointers[index](a1, a2, a3, a4)
  7137. }
  7138. function jsCall_viif(index, a1, a2, a3) {
  7139. functionPointers[index](a1, a2, a3)
  7140. }
  7141. function jsCall_viifi(index, a1, a2, a3, a4) {
  7142. functionPointers[index](a1, a2, a3, a4)
  7143. }
  7144. function jsCall_viii(index, a1, a2, a3) {
  7145. functionPointers[index](a1, a2, a3)
  7146. }
  7147. function jsCall_viiii(index, a1, a2, a3, a4) {
  7148. functionPointers[index](a1, a2, a3, a4)
  7149. }
  7150. function jsCall_viiiid(index, a1, a2, a3, a4, a5) {
  7151. functionPointers[index](a1, a2, a3, a4, a5)
  7152. }
  7153. function jsCall_viiiifii(index, a1, a2, a3, a4, a5, a6, a7) {
  7154. functionPointers[index](a1, a2, a3, a4, a5, a6, a7)
  7155. }
  7156. function jsCall_viiiii(index, a1, a2, a3, a4, a5) {
  7157. functionPointers[index](a1, a2, a3, a4, a5)
  7158. }
  7159. function jsCall_viiiiidd(index, a1, a2, a3, a4, a5, a6, a7) {
  7160. functionPointers[index](a1, a2, a3, a4, a5, a6, a7)
  7161. }
  7162. function jsCall_viiiiii(index, a1, a2, a3, a4, a5, a6) {
  7163. functionPointers[index](a1, a2, a3, a4, a5, a6)
  7164. }
  7165. function jsCall_viiiiiifi(index, a1, a2, a3, a4, a5, a6, a7, a8) {
  7166. functionPointers[index](a1, a2, a3, a4, a5, a6, a7, a8)
  7167. }
  7168. function jsCall_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {
  7169. functionPointers[index](a1, a2, a3, a4, a5, a6, a7)
  7170. }
  7171. function jsCall_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
  7172. functionPointers[index](a1, a2, a3, a4, a5, a6, a7, a8)
  7173. }
  7174. function jsCall_viiiiiiiid(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
  7175. functionPointers[index](a1, a2, a3, a4, a5, a6, a7, a8, a9)
  7176. }
  7177. function jsCall_viiiiiiiidi(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
  7178. functionPointers[index](a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
  7179. }
  7180. function jsCall_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
  7181. functionPointers[index](a1, a2, a3, a4, a5, a6, a7, a8, a9)
  7182. }
  7183. function jsCall_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
  7184. functionPointers[index](a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
  7185. }
  7186. function jsCall_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
  7187. functionPointers[index](a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
  7188. }
  7189. function jsCall_viiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {
  7190. functionPointers[index](a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
  7191. }
  7192. function jsCall_viiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) {
  7193. functionPointers[index](a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
  7194. }
  7195. var asmGlobalArg = {};
  7196. var asmLibraryArg = {
  7197. "___assert_fail": ___assert_fail,
  7198. "___buildEnvironment": ___buildEnvironment,
  7199. "___call_main": ___call_main,
  7200. "___lock": ___lock,
  7201. "___syscall221": ___syscall221,
  7202. "___syscall3": ___syscall3,
  7203. "___syscall5": ___syscall5,
  7204. "___unlock": ___unlock,
  7205. "___wasi_fd_close": ___wasi_fd_close,
  7206. "___wasi_fd_fdstat_get": ___wasi_fd_fdstat_get,
  7207. "___wasi_fd_seek": ___wasi_fd_seek,
  7208. "___wasi_fd_write": ___wasi_fd_write,
  7209. "__emscripten_fetch_free": __emscripten_fetch_free,
  7210. "__emscripten_get_fetch_work_queue": __emscripten_get_fetch_work_queue,
  7211. "__memory_base": 1024,
  7212. "__table_base": 0,
  7213. "_abort": _abort,
  7214. "_clock": _clock,
  7215. "_clock_gettime": _clock_gettime,
  7216. "_emscripten_asm_const_i": _emscripten_asm_const_i,
  7217. "_emscripten_asm_const_ii": _emscripten_asm_const_ii,
  7218. "_emscripten_futex_wait": _emscripten_futex_wait,
  7219. "_emscripten_futex_wake": _emscripten_futex_wake,
  7220. "_emscripten_get_heap_size": _emscripten_get_heap_size,
  7221. "_emscripten_get_now": _emscripten_get_now,
  7222. "_emscripten_has_threading_support": _emscripten_has_threading_support,
  7223. "_emscripten_memcpy_big": _emscripten_memcpy_big,
  7224. "_emscripten_receive_on_main_thread_js": _emscripten_receive_on_main_thread_js,
  7225. "_emscripten_resize_heap": _emscripten_resize_heap,
  7226. "_emscripten_set_canvas_element_size": _emscripten_set_canvas_element_size,
  7227. "_emscripten_start_fetch": _emscripten_start_fetch,
  7228. "_emscripten_syscall": _emscripten_syscall,
  7229. "_emscripten_webgl_create_context": _emscripten_webgl_create_context,
  7230. "_fabs": _fabs,
  7231. "_getenv": _getenv,
  7232. "_gettimeofday": _gettimeofday,
  7233. "_gmtime_r": _gmtime_r,
  7234. "_initPthreadsJS": _initPthreadsJS,
  7235. "_llvm_exp2_f64": _llvm_exp2_f64,
  7236. "_llvm_log2_f32": _llvm_log2_f32,
  7237. "_llvm_stackrestore": _llvm_stackrestore,
  7238. "_llvm_stacksave": _llvm_stacksave,
  7239. "_llvm_trunc_f64": _llvm_trunc_f64,
  7240. "_localtime_r": _localtime_r,
  7241. "_pthread_cleanup_pop": _pthread_cleanup_pop,
  7242. "_pthread_cleanup_push": _pthread_cleanup_push,
  7243. "_pthread_create": _pthread_create,
  7244. "_pthread_join": _pthread_join,
  7245. "_strftime": _strftime,
  7246. "_sysconf": _sysconf,
  7247. "_time": _time,
  7248. "abortStackOverflow": abortStackOverflow,
  7249. "getTempRet0": getTempRet0,
  7250. "jsCall_dd": jsCall_dd,
  7251. "jsCall_did": jsCall_did,
  7252. "jsCall_didd": jsCall_didd,
  7253. "jsCall_fii": jsCall_fii,
  7254. "jsCall_fiii": jsCall_fiii,
  7255. "jsCall_i": jsCall_i,
  7256. "jsCall_ii": jsCall_ii,
  7257. "jsCall_iid": jsCall_iid,
  7258. "jsCall_iidiiii": jsCall_iidiiii,
  7259. "jsCall_iii": jsCall_iii,
  7260. "jsCall_iiii": jsCall_iiii,
  7261. "jsCall_iiiii": jsCall_iiiii,
  7262. "jsCall_iiiiii": jsCall_iiiiii,
  7263. "jsCall_iiiiiii": jsCall_iiiiiii,
  7264. "jsCall_iiiiiiii": jsCall_iiiiiiii,
  7265. "jsCall_iiiiiiiid": jsCall_iiiiiiiid,
  7266. "jsCall_iiiiiiiii": jsCall_iiiiiiiii,
  7267. "jsCall_iiiiiiiiii": jsCall_iiiiiiiiii,
  7268. "jsCall_iiiiij": jsCall_iiiiij,
  7269. "jsCall_iiiji": jsCall_iiiji,
  7270. "jsCall_iiijjji": jsCall_iiijjji,
  7271. "jsCall_jiiij": jsCall_jiiij,
  7272. "jsCall_jiiji": jsCall_jiiji,
  7273. "jsCall_jiji": jsCall_jiji,
  7274. "jsCall_v": jsCall_v,
  7275. "jsCall_vdiidiiiii": jsCall_vdiidiiiii,
  7276. "jsCall_vf": jsCall_vf,
  7277. "jsCall_vff": jsCall_vff,
  7278. "jsCall_vfff": jsCall_vfff,
  7279. "jsCall_vffff": jsCall_vffff,
  7280. "jsCall_vi": jsCall_vi,
  7281. "jsCall_vif": jsCall_vif,
  7282. "jsCall_viff": jsCall_viff,
  7283. "jsCall_vifff": jsCall_vifff,
  7284. "jsCall_viffff": jsCall_viffff,
  7285. "jsCall_vii": jsCall_vii,
  7286. "jsCall_viidi": jsCall_viidi,
  7287. "jsCall_viif": jsCall_viif,
  7288. "jsCall_viifi": jsCall_viifi,
  7289. "jsCall_viii": jsCall_viii,
  7290. "jsCall_viiii": jsCall_viiii,
  7291. "jsCall_viiiid": jsCall_viiiid,
  7292. "jsCall_viiiifii": jsCall_viiiifii,
  7293. "jsCall_viiiii": jsCall_viiiii,
  7294. "jsCall_viiiiidd": jsCall_viiiiidd,
  7295. "jsCall_viiiiii": jsCall_viiiiii,
  7296. "jsCall_viiiiiifi": jsCall_viiiiiifi,
  7297. "jsCall_viiiiiii": jsCall_viiiiiii,
  7298. "jsCall_viiiiiiii": jsCall_viiiiiiii,
  7299. "jsCall_viiiiiiiid": jsCall_viiiiiiiid,
  7300. "jsCall_viiiiiiiidi": jsCall_viiiiiiiidi,
  7301. "jsCall_viiiiiiiii": jsCall_viiiiiiiii,
  7302. "jsCall_viiiiiiiiii": jsCall_viiiiiiiiii,
  7303. "jsCall_viiiiiiiiiii": jsCall_viiiiiiiiiii,
  7304. "jsCall_viiiiiiiiiiii": jsCall_viiiiiiiiiiii,
  7305. "jsCall_viiiiiiiiiiiiii": jsCall_viiiiiiiiiiiiii,
  7306. "memory": wasmMemory,
  7307. "nullFunc_dd": nullFunc_dd,
  7308. "nullFunc_did": nullFunc_did,
  7309. "nullFunc_didd": nullFunc_didd,
  7310. "nullFunc_fii": nullFunc_fii,
  7311. "nullFunc_fiii": nullFunc_fiii,
  7312. "nullFunc_i": nullFunc_i,
  7313. "nullFunc_ii": nullFunc_ii,
  7314. "nullFunc_iid": nullFunc_iid,
  7315. "nullFunc_iidiiii": nullFunc_iidiiii,
  7316. "nullFunc_iii": nullFunc_iii,
  7317. "nullFunc_iiii": nullFunc_iiii,
  7318. "nullFunc_iiiii": nullFunc_iiiii,
  7319. "nullFunc_iiiiii": nullFunc_iiiiii,
  7320. "nullFunc_iiiiiii": nullFunc_iiiiiii,
  7321. "nullFunc_iiiiiiii": nullFunc_iiiiiiii,
  7322. "nullFunc_iiiiiiiid": nullFunc_iiiiiiiid,
  7323. "nullFunc_iiiiiiiii": nullFunc_iiiiiiiii,
  7324. "nullFunc_iiiiiiiiii": nullFunc_iiiiiiiiii,
  7325. "nullFunc_iiiiij": nullFunc_iiiiij,
  7326. "nullFunc_iiiji": nullFunc_iiiji,
  7327. "nullFunc_iiijjji": nullFunc_iiijjji,
  7328. "nullFunc_jiiij": nullFunc_jiiij,
  7329. "nullFunc_jiiji": nullFunc_jiiji,
  7330. "nullFunc_jiji": nullFunc_jiji,
  7331. "nullFunc_v": nullFunc_v,
  7332. "nullFunc_vdiidiiiii": nullFunc_vdiidiiiii,
  7333. "nullFunc_vf": nullFunc_vf,
  7334. "nullFunc_vff": nullFunc_vff,
  7335. "nullFunc_vfff": nullFunc_vfff,
  7336. "nullFunc_vffff": nullFunc_vffff,
  7337. "nullFunc_vi": nullFunc_vi,
  7338. "nullFunc_vif": nullFunc_vif,
  7339. "nullFunc_viff": nullFunc_viff,
  7340. "nullFunc_vifff": nullFunc_vifff,
  7341. "nullFunc_viffff": nullFunc_viffff,
  7342. "nullFunc_vii": nullFunc_vii,
  7343. "nullFunc_viidi": nullFunc_viidi,
  7344. "nullFunc_viif": nullFunc_viif,
  7345. "nullFunc_viifi": nullFunc_viifi,
  7346. "nullFunc_viii": nullFunc_viii,
  7347. "nullFunc_viiii": nullFunc_viiii,
  7348. "nullFunc_viiiid": nullFunc_viiiid,
  7349. "nullFunc_viiiifii": nullFunc_viiiifii,
  7350. "nullFunc_viiiii": nullFunc_viiiii,
  7351. "nullFunc_viiiiidd": nullFunc_viiiiidd,
  7352. "nullFunc_viiiiii": nullFunc_viiiiii,
  7353. "nullFunc_viiiiiifi": nullFunc_viiiiiifi,
  7354. "nullFunc_viiiiiii": nullFunc_viiiiiii,
  7355. "nullFunc_viiiiiiii": nullFunc_viiiiiiii,
  7356. "nullFunc_viiiiiiiid": nullFunc_viiiiiiiid,
  7357. "nullFunc_viiiiiiiidi": nullFunc_viiiiiiiidi,
  7358. "nullFunc_viiiiiiiii": nullFunc_viiiiiiiii,
  7359. "nullFunc_viiiiiiiiii": nullFunc_viiiiiiiiii,
  7360. "nullFunc_viiiiiiiiiii": nullFunc_viiiiiiiiiii,
  7361. "nullFunc_viiiiiiiiiiii": nullFunc_viiiiiiiiiiii,
  7362. "nullFunc_viiiiiiiiiiiiii": nullFunc_viiiiiiiiiiiiii,
  7363. "setTempRet0": setTempRet0,
  7364. "table": wasmTable
  7365. };
  7366. var asm = Module["asm"](asmGlobalArg, asmLibraryArg, buffer);
  7367. Module["asm"] = asm;
  7368. var _AVSniffHttpFlvInit = Module["_AVSniffHttpFlvInit"] = function() {
  7369. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7370. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7371. return Module["asm"]["_AVSniffHttpFlvInit"].apply(null, arguments)
  7372. };
  7373. var _AVSniffStreamInit = Module["_AVSniffStreamInit"] = function() {
  7374. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7375. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7376. return Module["asm"]["_AVSniffStreamInit"].apply(null, arguments)
  7377. };
  7378. var ___em_js__initPthreadsJS = Module["___em_js__initPthreadsJS"] = function() {
  7379. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7380. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7381. return Module["asm"]["___em_js__initPthreadsJS"].apply(null, arguments)
  7382. };
  7383. var ___emscripten_pthread_data_constructor = Module["___emscripten_pthread_data_constructor"] = function() {
  7384. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7385. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7386. return Module["asm"]["___emscripten_pthread_data_constructor"].apply(null, arguments)
  7387. };
  7388. var ___errno_location = Module["___errno_location"] = function() {
  7389. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7390. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7391. return Module["asm"]["___errno_location"].apply(null, arguments)
  7392. };
  7393. var ___pthread_tsd_run_dtors = Module["___pthread_tsd_run_dtors"] = function() {
  7394. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7395. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7396. return Module["asm"]["___pthread_tsd_run_dtors"].apply(null, arguments)
  7397. };
  7398. var __emscripten_atomic_fetch_and_add_u64 = Module["__emscripten_atomic_fetch_and_add_u64"] = function() {
  7399. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7400. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7401. return Module["asm"]["__emscripten_atomic_fetch_and_add_u64"].apply(null, arguments)
  7402. };
  7403. var __emscripten_atomic_fetch_and_and_u64 = Module["__emscripten_atomic_fetch_and_and_u64"] = function() {
  7404. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7405. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7406. return Module["asm"]["__emscripten_atomic_fetch_and_and_u64"].apply(null, arguments)
  7407. };
  7408. var __emscripten_atomic_fetch_and_or_u64 = Module["__emscripten_atomic_fetch_and_or_u64"] = function() {
  7409. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7410. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7411. return Module["asm"]["__emscripten_atomic_fetch_and_or_u64"].apply(null, arguments)
  7412. };
  7413. var __emscripten_atomic_fetch_and_sub_u64 = Module["__emscripten_atomic_fetch_and_sub_u64"] = function() {
  7414. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7415. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7416. return Module["asm"]["__emscripten_atomic_fetch_and_sub_u64"].apply(null, arguments)
  7417. };
  7418. var __emscripten_atomic_fetch_and_xor_u64 = Module["__emscripten_atomic_fetch_and_xor_u64"] = function() {
  7419. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7420. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7421. return Module["asm"]["__emscripten_atomic_fetch_and_xor_u64"].apply(null, arguments)
  7422. };
  7423. var __get_daylight = Module["__get_daylight"] = function() {
  7424. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7425. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7426. return Module["asm"]["__get_daylight"].apply(null, arguments)
  7427. };
  7428. var __get_timezone = Module["__get_timezone"] = function() {
  7429. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7430. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7431. return Module["asm"]["__get_timezone"].apply(null, arguments)
  7432. };
  7433. var __get_tzname = Module["__get_tzname"] = function() {
  7434. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7435. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7436. return Module["asm"]["__get_tzname"].apply(null, arguments)
  7437. };
  7438. var __register_pthread_ptr = Module["__register_pthread_ptr"] = function() {
  7439. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7440. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7441. return Module["asm"]["__register_pthread_ptr"].apply(null, arguments)
  7442. };
  7443. var _closeVideo = Module["_closeVideo"] = function() {
  7444. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7445. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7446. return Module["asm"]["_closeVideo"].apply(null, arguments)
  7447. };
  7448. var _decodeCodecContext = Module["_decodeCodecContext"] = function() {
  7449. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7450. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7451. return Module["asm"]["_decodeCodecContext"].apply(null, arguments)
  7452. };
  7453. var _decodeHttpFlvVideoFrame = Module["_decodeHttpFlvVideoFrame"] = function() {
  7454. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7455. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7456. return Module["asm"]["_decodeHttpFlvVideoFrame"].apply(null, arguments)
  7457. };
  7458. var _decodeVideoFrame = Module["_decodeVideoFrame"] = function() {
  7459. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7460. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7461. return Module["asm"]["_decodeVideoFrame"].apply(null, arguments)
  7462. };
  7463. var _demuxBox = Module["_demuxBox"] = function() {
  7464. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7465. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7466. return Module["asm"]["_demuxBox"].apply(null, arguments)
  7467. };
  7468. var _emscripten_async_queue_call_on_thread = Module["_emscripten_async_queue_call_on_thread"] = function() {
  7469. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7470. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7471. return Module["asm"]["_emscripten_async_queue_call_on_thread"].apply(null, arguments)
  7472. };
  7473. var _emscripten_async_queue_on_thread_ = Module["_emscripten_async_queue_on_thread_"] = function() {
  7474. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7475. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7476. return Module["asm"]["_emscripten_async_queue_on_thread_"].apply(null, arguments)
  7477. };
  7478. var _emscripten_async_run_in_main_thread = Module["_emscripten_async_run_in_main_thread"] = function() {
  7479. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7480. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7481. return Module["asm"]["_emscripten_async_run_in_main_thread"].apply(null, arguments)
  7482. };
  7483. var _emscripten_atomic_add_u64 = Module["_emscripten_atomic_add_u64"] = function() {
  7484. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7485. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7486. return Module["asm"]["_emscripten_atomic_add_u64"].apply(null, arguments)
  7487. };
  7488. var _emscripten_atomic_and_u64 = Module["_emscripten_atomic_and_u64"] = function() {
  7489. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7490. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7491. return Module["asm"]["_emscripten_atomic_and_u64"].apply(null, arguments)
  7492. };
  7493. var _emscripten_atomic_cas_u64 = Module["_emscripten_atomic_cas_u64"] = function() {
  7494. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7495. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7496. return Module["asm"]["_emscripten_atomic_cas_u64"].apply(null, arguments)
  7497. };
  7498. var _emscripten_atomic_exchange_u64 = Module["_emscripten_atomic_exchange_u64"] = function() {
  7499. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7500. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7501. return Module["asm"]["_emscripten_atomic_exchange_u64"].apply(null, arguments)
  7502. };
  7503. var _emscripten_atomic_load_f32 = Module["_emscripten_atomic_load_f32"] = function() {
  7504. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7505. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7506. return Module["asm"]["_emscripten_atomic_load_f32"].apply(null, arguments)
  7507. };
  7508. var _emscripten_atomic_load_f64 = Module["_emscripten_atomic_load_f64"] = function() {
  7509. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7510. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7511. return Module["asm"]["_emscripten_atomic_load_f64"].apply(null, arguments)
  7512. };
  7513. var _emscripten_atomic_load_u64 = Module["_emscripten_atomic_load_u64"] = function() {
  7514. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7515. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7516. return Module["asm"]["_emscripten_atomic_load_u64"].apply(null, arguments)
  7517. };
  7518. var _emscripten_atomic_or_u64 = Module["_emscripten_atomic_or_u64"] = function() {
  7519. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7520. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7521. return Module["asm"]["_emscripten_atomic_or_u64"].apply(null, arguments)
  7522. };
  7523. var _emscripten_atomic_store_f32 = Module["_emscripten_atomic_store_f32"] = function() {
  7524. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7525. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7526. return Module["asm"]["_emscripten_atomic_store_f32"].apply(null, arguments)
  7527. };
  7528. var _emscripten_atomic_store_f64 = Module["_emscripten_atomic_store_f64"] = function() {
  7529. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7530. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7531. return Module["asm"]["_emscripten_atomic_store_f64"].apply(null, arguments)
  7532. };
  7533. var _emscripten_atomic_store_u64 = Module["_emscripten_atomic_store_u64"] = function() {
  7534. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7535. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7536. return Module["asm"]["_emscripten_atomic_store_u64"].apply(null, arguments)
  7537. };
  7538. var _emscripten_atomic_sub_u64 = Module["_emscripten_atomic_sub_u64"] = function() {
  7539. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7540. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7541. return Module["asm"]["_emscripten_atomic_sub_u64"].apply(null, arguments)
  7542. };
  7543. var _emscripten_atomic_xor_u64 = Module["_emscripten_atomic_xor_u64"] = function() {
  7544. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7545. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7546. return Module["asm"]["_emscripten_atomic_xor_u64"].apply(null, arguments)
  7547. };
  7548. var _emscripten_current_thread_process_queued_calls = Module["_emscripten_current_thread_process_queued_calls"] = function() {
  7549. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7550. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7551. return Module["asm"]["_emscripten_current_thread_process_queued_calls"].apply(null, arguments)
  7552. };
  7553. var _emscripten_get_global_libc = Module["_emscripten_get_global_libc"] = function() {
  7554. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7555. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7556. return Module["asm"]["_emscripten_get_global_libc"].apply(null, arguments)
  7557. };
  7558. var _emscripten_main_browser_thread_id = Module["_emscripten_main_browser_thread_id"] = function() {
  7559. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7560. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7561. return Module["asm"]["_emscripten_main_browser_thread_id"].apply(null, arguments)
  7562. };
  7563. var _emscripten_main_thread_process_queued_calls = Module["_emscripten_main_thread_process_queued_calls"] = function() {
  7564. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7565. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7566. return Module["asm"]["_emscripten_main_thread_process_queued_calls"].apply(null, arguments)
  7567. };
  7568. var _emscripten_register_main_browser_thread_id = Module["_emscripten_register_main_browser_thread_id"] = function() {
  7569. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7570. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7571. return Module["asm"]["_emscripten_register_main_browser_thread_id"].apply(null, arguments)
  7572. };
  7573. var _emscripten_run_in_main_runtime_thread_js = Module["_emscripten_run_in_main_runtime_thread_js"] = function() {
  7574. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7575. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7576. return Module["asm"]["_emscripten_run_in_main_runtime_thread_js"].apply(null, arguments)
  7577. };
  7578. var _emscripten_sync_run_in_main_thread = Module["_emscripten_sync_run_in_main_thread"] = function() {
  7579. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7580. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7581. return Module["asm"]["_emscripten_sync_run_in_main_thread"].apply(null, arguments)
  7582. };
  7583. var _emscripten_sync_run_in_main_thread_0 = Module["_emscripten_sync_run_in_main_thread_0"] = function() {
  7584. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7585. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7586. return Module["asm"]["_emscripten_sync_run_in_main_thread_0"].apply(null, arguments)
  7587. };
  7588. var _emscripten_sync_run_in_main_thread_1 = Module["_emscripten_sync_run_in_main_thread_1"] = function() {
  7589. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7590. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7591. return Module["asm"]["_emscripten_sync_run_in_main_thread_1"].apply(null, arguments)
  7592. };
  7593. var _emscripten_sync_run_in_main_thread_2 = Module["_emscripten_sync_run_in_main_thread_2"] = function() {
  7594. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7595. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7596. return Module["asm"]["_emscripten_sync_run_in_main_thread_2"].apply(null, arguments)
  7597. };
  7598. var _emscripten_sync_run_in_main_thread_3 = Module["_emscripten_sync_run_in_main_thread_3"] = function() {
  7599. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7600. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7601. return Module["asm"]["_emscripten_sync_run_in_main_thread_3"].apply(null, arguments)
  7602. };
  7603. var _emscripten_sync_run_in_main_thread_4 = Module["_emscripten_sync_run_in_main_thread_4"] = function() {
  7604. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7605. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7606. return Module["asm"]["_emscripten_sync_run_in_main_thread_4"].apply(null, arguments)
  7607. };
  7608. var _emscripten_sync_run_in_main_thread_5 = Module["_emscripten_sync_run_in_main_thread_5"] = function() {
  7609. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7610. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7611. return Module["asm"]["_emscripten_sync_run_in_main_thread_5"].apply(null, arguments)
  7612. };
  7613. var _emscripten_sync_run_in_main_thread_6 = Module["_emscripten_sync_run_in_main_thread_6"] = function() {
  7614. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7615. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7616. return Module["asm"]["_emscripten_sync_run_in_main_thread_6"].apply(null, arguments)
  7617. };
  7618. var _emscripten_sync_run_in_main_thread_7 = Module["_emscripten_sync_run_in_main_thread_7"] = function() {
  7619. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7620. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7621. return Module["asm"]["_emscripten_sync_run_in_main_thread_7"].apply(null, arguments)
  7622. };
  7623. var _emscripten_sync_run_in_main_thread_xprintf_varargs = Module["_emscripten_sync_run_in_main_thread_xprintf_varargs"] = function() {
  7624. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7625. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7626. return Module["asm"]["_emscripten_sync_run_in_main_thread_xprintf_varargs"].apply(null, arguments)
  7627. };
  7628. var _exitMissile = Module["_exitMissile"] = function() {
  7629. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7630. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7631. return Module["asm"]["_exitMissile"].apply(null, arguments)
  7632. };
  7633. var _exitTsMissile = Module["_exitTsMissile"] = function() {
  7634. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7635. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7636. return Module["asm"]["_exitTsMissile"].apply(null, arguments)
  7637. };
  7638. var _fflush = Module["_fflush"] = function() {
  7639. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7640. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7641. return Module["asm"]["_fflush"].apply(null, arguments)
  7642. };
  7643. var _free = Module["_free"] = function() {
  7644. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7645. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7646. return Module["asm"]["_free"].apply(null, arguments)
  7647. };
  7648. var _getAudioCodecID = Module["_getAudioCodecID"] = function() {
  7649. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7650. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7651. return Module["asm"]["_getAudioCodecID"].apply(null, arguments)
  7652. };
  7653. var _getBufferLengthApi = Module["_getBufferLengthApi"] = function() {
  7654. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7655. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7656. return Module["asm"]["_getBufferLengthApi"].apply(null, arguments)
  7657. };
  7658. var _getExtensionInfo = Module["_getExtensionInfo"] = function() {
  7659. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7660. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7661. return Module["asm"]["_getExtensionInfo"].apply(null, arguments)
  7662. };
  7663. var _getMediaInfo = Module["_getMediaInfo"] = function() {
  7664. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7665. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7666. return Module["asm"]["_getMediaInfo"].apply(null, arguments)
  7667. };
  7668. var _getPPS = Module["_getPPS"] = function() {
  7669. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7670. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7671. return Module["asm"]["_getPPS"].apply(null, arguments)
  7672. };
  7673. var _getPPSLen = Module["_getPPSLen"] = function() {
  7674. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7675. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7676. return Module["asm"]["_getPPSLen"].apply(null, arguments)
  7677. };
  7678. var _getPacket = Module["_getPacket"] = function() {
  7679. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7680. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7681. return Module["asm"]["_getPacket"].apply(null, arguments)
  7682. };
  7683. var _getSEI = Module["_getSEI"] = function() {
  7684. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7685. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7686. return Module["asm"]["_getSEI"].apply(null, arguments)
  7687. };
  7688. var _getSEILen = Module["_getSEILen"] = function() {
  7689. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7690. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7691. return Module["asm"]["_getSEILen"].apply(null, arguments)
  7692. };
  7693. var _getSPS = Module["_getSPS"] = function() {
  7694. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7695. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7696. return Module["asm"]["_getSPS"].apply(null, arguments)
  7697. };
  7698. var _getSPSLen = Module["_getSPSLen"] = function() {
  7699. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7700. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7701. return Module["asm"]["_getSPSLen"].apply(null, arguments)
  7702. };
  7703. var _getSniffHttpFlvPkg = Module["_getSniffHttpFlvPkg"] = function() {
  7704. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7705. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7706. return Module["asm"]["_getSniffHttpFlvPkg"].apply(null, arguments)
  7707. };
  7708. var _getSniffHttpFlvPkgNoCheckProbe = Module["_getSniffHttpFlvPkgNoCheckProbe"] = function() {
  7709. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7710. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7711. return Module["asm"]["_getSniffHttpFlvPkgNoCheckProbe"].apply(null, arguments)
  7712. };
  7713. var _getSniffStreamPkg = Module["_getSniffStreamPkg"] = function() {
  7714. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7715. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7716. return Module["asm"]["_getSniffStreamPkg"].apply(null, arguments)
  7717. };
  7718. var _getSniffStreamPkgNoCheckProbe = Module["_getSniffStreamPkgNoCheckProbe"] = function() {
  7719. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7720. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7721. return Module["asm"]["_getSniffStreamPkgNoCheckProbe"].apply(null, arguments)
  7722. };
  7723. var _getVLC = Module["_getVLC"] = function() {
  7724. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7725. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7726. return Module["asm"]["_getVLC"].apply(null, arguments)
  7727. };
  7728. var _getVLCLen = Module["_getVLCLen"] = function() {
  7729. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7730. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7731. return Module["asm"]["_getVLCLen"].apply(null, arguments)
  7732. };
  7733. var _getVPS = Module["_getVPS"] = function() {
  7734. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7735. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7736. return Module["asm"]["_getVPS"].apply(null, arguments)
  7737. };
  7738. var _getVPSLen = Module["_getVPSLen"] = function() {
  7739. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7740. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7741. return Module["asm"]["_getVPSLen"].apply(null, arguments)
  7742. };
  7743. var _getVideoCodecID = Module["_getVideoCodecID"] = function() {
  7744. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7745. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7746. return Module["asm"]["_getVideoCodecID"].apply(null, arguments)
  7747. };
  7748. var _initMissile = Module["_initMissile"] = function() {
  7749. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7750. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7751. return Module["asm"]["_initMissile"].apply(null, arguments)
  7752. };
  7753. var _initTsMissile = Module["_initTsMissile"] = function() {
  7754. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7755. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7756. return Module["asm"]["_initTsMissile"].apply(null, arguments)
  7757. };
  7758. var _initializeDecoder = Module["_initializeDecoder"] = function() {
  7759. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7760. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7761. return Module["asm"]["_initializeDecoder"].apply(null, arguments)
  7762. };
  7763. var _initializeDemuxer = Module["_initializeDemuxer"] = function() {
  7764. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7765. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7766. return Module["asm"]["_initializeDemuxer"].apply(null, arguments)
  7767. };
  7768. var _initializeSniffHttpFlvModule = Module["_initializeSniffHttpFlvModule"] = function() {
  7769. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7770. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7771. return Module["asm"]["_initializeSniffHttpFlvModule"].apply(null, arguments)
  7772. };
  7773. var _initializeSniffHttpFlvModuleWithAOpt = Module["_initializeSniffHttpFlvModuleWithAOpt"] = function() {
  7774. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7775. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7776. return Module["asm"]["_initializeSniffHttpFlvModuleWithAOpt"].apply(null, arguments)
  7777. };
  7778. var _initializeSniffStreamModule = Module["_initializeSniffStreamModule"] = function() {
  7779. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7780. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7781. return Module["asm"]["_initializeSniffStreamModule"].apply(null, arguments)
  7782. };
  7783. var _initializeSniffStreamModuleWithAOpt = Module["_initializeSniffStreamModuleWithAOpt"] = function() {
  7784. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7785. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7786. return Module["asm"]["_initializeSniffStreamModuleWithAOpt"].apply(null, arguments)
  7787. };
  7788. var _main = Module["_main"] = function() {
  7789. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7790. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7791. return Module["asm"]["_main"].apply(null, arguments)
  7792. };
  7793. var _malloc = Module["_malloc"] = function() {
  7794. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7795. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7796. return Module["asm"]["_malloc"].apply(null, arguments)
  7797. };
  7798. var _memalign = Module["_memalign"] = function() {
  7799. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7800. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7801. return Module["asm"]["_memalign"].apply(null, arguments)
  7802. };
  7803. var _proxy_main = Module["_proxy_main"] = function() {
  7804. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7805. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7806. return Module["asm"]["_proxy_main"].apply(null, arguments)
  7807. };
  7808. var _pthread_self = Module["_pthread_self"] = function() {
  7809. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7810. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7811. return Module["asm"]["_pthread_self"].apply(null, arguments)
  7812. };
  7813. var _pushSniffHttpFlvData = Module["_pushSniffHttpFlvData"] = function() {
  7814. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7815. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7816. return Module["asm"]["_pushSniffHttpFlvData"].apply(null, arguments)
  7817. };
  7818. var _pushSniffStreamData = Module["_pushSniffStreamData"] = function() {
  7819. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7820. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7821. return Module["asm"]["_pushSniffStreamData"].apply(null, arguments)
  7822. };
  7823. var _registerPlayer = Module["_registerPlayer"] = function() {
  7824. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7825. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7826. return Module["asm"]["_registerPlayer"].apply(null, arguments)
  7827. };
  7828. var _release = Module["_release"] = function() {
  7829. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7830. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7831. return Module["asm"]["_release"].apply(null, arguments)
  7832. };
  7833. var _releaseHttpFLV = Module["_releaseHttpFLV"] = function() {
  7834. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7835. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7836. return Module["asm"]["_releaseHttpFLV"].apply(null, arguments)
  7837. };
  7838. var _releaseSniffHttpFlv = Module["_releaseSniffHttpFlv"] = function() {
  7839. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7840. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7841. return Module["asm"]["_releaseSniffHttpFlv"].apply(null, arguments)
  7842. };
  7843. var _releaseSniffStream = Module["_releaseSniffStream"] = function() {
  7844. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7845. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7846. return Module["asm"]["_releaseSniffStream"].apply(null, arguments)
  7847. };
  7848. var _setCodecType = Module["_setCodecType"] = function() {
  7849. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7850. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7851. return Module["asm"]["_setCodecType"].apply(null, arguments)
  7852. };
  7853. var establishStackSpace = Module["establishStackSpace"] = function() {
  7854. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7855. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7856. return Module["asm"]["establishStackSpace"].apply(null, arguments)
  7857. };
  7858. var globalCtors = Module["globalCtors"] = function() {
  7859. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7860. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7861. return Module["asm"]["globalCtors"].apply(null, arguments)
  7862. };
  7863. var stackAlloc = Module["stackAlloc"] = function() {
  7864. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7865. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7866. return Module["asm"]["stackAlloc"].apply(null, arguments)
  7867. };
  7868. var stackRestore = Module["stackRestore"] = function() {
  7869. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7870. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7871. return Module["asm"]["stackRestore"].apply(null, arguments)
  7872. };
  7873. var stackSave = Module["stackSave"] = function() {
  7874. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7875. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7876. return Module["asm"]["stackSave"].apply(null, arguments)
  7877. };
  7878. var dynCall_ii = Module["dynCall_ii"] = function() {
  7879. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7880. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7881. return Module["asm"]["dynCall_ii"].apply(null, arguments)
  7882. };
  7883. var dynCall_v = Module["dynCall_v"] = function() {
  7884. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7885. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7886. return Module["asm"]["dynCall_v"].apply(null, arguments)
  7887. };
  7888. var dynCall_vi = Module["dynCall_vi"] = function() {
  7889. assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)");
  7890. assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");
  7891. return Module["asm"]["dynCall_vi"].apply(null, arguments)
  7892. };
  7893. Module["asm"] = asm;
  7894. if (!Object.getOwnPropertyDescriptor(Module, "intArrayFromString")) Module["intArrayFromString"] = function() {
  7895. abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7896. };
  7897. if (!Object.getOwnPropertyDescriptor(Module, "intArrayToString")) Module["intArrayToString"] = function() {
  7898. abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7899. };
  7900. Module["ccall"] = ccall;
  7901. Module["cwrap"] = cwrap;
  7902. if (!Object.getOwnPropertyDescriptor(Module, "setValue")) Module["setValue"] = function() {
  7903. abort("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7904. };
  7905. if (!Object.getOwnPropertyDescriptor(Module, "getValue")) Module["getValue"] = function() {
  7906. abort("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7907. };
  7908. if (!Object.getOwnPropertyDescriptor(Module, "allocate")) Module["allocate"] = function() {
  7909. abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7910. };
  7911. if (!Object.getOwnPropertyDescriptor(Module, "getMemory")) Module["getMemory"] = function() {
  7912. abort("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")
  7913. };
  7914. if (!Object.getOwnPropertyDescriptor(Module, "AsciiToString")) Module["AsciiToString"] = function() {
  7915. abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7916. };
  7917. if (!Object.getOwnPropertyDescriptor(Module, "stringToAscii")) Module["stringToAscii"] = function() {
  7918. abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7919. };
  7920. if (!Object.getOwnPropertyDescriptor(Module, "UTF8ArrayToString")) Module["UTF8ArrayToString"] = function() {
  7921. abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7922. };
  7923. if (!Object.getOwnPropertyDescriptor(Module, "UTF8ToString")) Module["UTF8ToString"] = function() {
  7924. abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7925. };
  7926. if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8Array")) Module["stringToUTF8Array"] = function() {
  7927. abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7928. };
  7929. if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8")) Module["stringToUTF8"] = function() {
  7930. abort("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7931. };
  7932. if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF8")) Module["lengthBytesUTF8"] = function() {
  7933. abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7934. };
  7935. if (!Object.getOwnPropertyDescriptor(Module, "UTF16ToString")) Module["UTF16ToString"] = function() {
  7936. abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7937. };
  7938. if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF16")) Module["stringToUTF16"] = function() {
  7939. abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7940. };
  7941. if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF16")) Module["lengthBytesUTF16"] = function() {
  7942. abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7943. };
  7944. if (!Object.getOwnPropertyDescriptor(Module, "UTF32ToString")) Module["UTF32ToString"] = function() {
  7945. abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7946. };
  7947. if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF32")) Module["stringToUTF32"] = function() {
  7948. abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7949. };
  7950. if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF32")) Module["lengthBytesUTF32"] = function() {
  7951. abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7952. };
  7953. if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8")) Module["allocateUTF8"] = function() {
  7954. abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7955. };
  7956. if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = function() {
  7957. abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7958. };
  7959. if (!Object.getOwnPropertyDescriptor(Module, "addOnPreRun")) Module["addOnPreRun"] = function() {
  7960. abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7961. };
  7962. if (!Object.getOwnPropertyDescriptor(Module, "addOnInit")) Module["addOnInit"] = function() {
  7963. abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7964. };
  7965. if (!Object.getOwnPropertyDescriptor(Module, "addOnPreMain")) Module["addOnPreMain"] = function() {
  7966. abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7967. };
  7968. if (!Object.getOwnPropertyDescriptor(Module, "addOnExit")) Module["addOnExit"] = function() {
  7969. abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7970. };
  7971. if (!Object.getOwnPropertyDescriptor(Module, "addOnPostRun")) Module["addOnPostRun"] = function() {
  7972. abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7973. };
  7974. if (!Object.getOwnPropertyDescriptor(Module, "writeStringToMemory")) Module["writeStringToMemory"] = function() {
  7975. abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7976. };
  7977. if (!Object.getOwnPropertyDescriptor(Module, "writeArrayToMemory")) Module["writeArrayToMemory"] = function() {
  7978. abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7979. };
  7980. if (!Object.getOwnPropertyDescriptor(Module, "writeAsciiToMemory")) Module["writeAsciiToMemory"] = function() {
  7981. abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7982. };
  7983. if (!Object.getOwnPropertyDescriptor(Module, "addRunDependency")) Module["addRunDependency"] = function() {
  7984. abort("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")
  7985. };
  7986. if (!Object.getOwnPropertyDescriptor(Module, "removeRunDependency")) Module["removeRunDependency"] = function() {
  7987. abort("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")
  7988. };
  7989. if (!Object.getOwnPropertyDescriptor(Module, "ENV")) Module["ENV"] = function() {
  7990. abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7991. };
  7992. if (!Object.getOwnPropertyDescriptor(Module, "FS")) Module["FS"] = function() {
  7993. abort("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  7994. };
  7995. if (!Object.getOwnPropertyDescriptor(Module, "FS_createFolder")) Module["FS_createFolder"] = function() {
  7996. abort("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")
  7997. };
  7998. if (!Object.getOwnPropertyDescriptor(Module, "FS_createPath")) Module["FS_createPath"] = function() {
  7999. abort("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")
  8000. };
  8001. if (!Object.getOwnPropertyDescriptor(Module, "FS_createDataFile")) Module["FS_createDataFile"] = function() {
  8002. abort("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")
  8003. };
  8004. if (!Object.getOwnPropertyDescriptor(Module, "FS_createPreloadedFile")) Module["FS_createPreloadedFile"] = function() {
  8005. abort("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")
  8006. };
  8007. if (!Object.getOwnPropertyDescriptor(Module, "FS_createLazyFile")) Module["FS_createLazyFile"] = function() {
  8008. abort("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")
  8009. };
  8010. if (!Object.getOwnPropertyDescriptor(Module, "FS_createLink")) Module["FS_createLink"] = function() {
  8011. abort("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")
  8012. };
  8013. if (!Object.getOwnPropertyDescriptor(Module, "FS_createDevice")) Module["FS_createDevice"] = function() {
  8014. abort("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")
  8015. };
  8016. if (!Object.getOwnPropertyDescriptor(Module, "FS_unlink")) Module["FS_unlink"] = function() {
  8017. abort("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")
  8018. };
  8019. if (!Object.getOwnPropertyDescriptor(Module, "GL")) Module["GL"] = function() {
  8020. abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8021. };
  8022. if (!Object.getOwnPropertyDescriptor(Module, "dynamicAlloc")) Module["dynamicAlloc"] = function() {
  8023. abort("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8024. };
  8025. if (!Object.getOwnPropertyDescriptor(Module, "loadDynamicLibrary")) Module["loadDynamicLibrary"] = function() {
  8026. abort("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8027. };
  8028. if (!Object.getOwnPropertyDescriptor(Module, "loadWebAssemblyModule")) Module["loadWebAssemblyModule"] = function() {
  8029. abort("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8030. };
  8031. if (!Object.getOwnPropertyDescriptor(Module, "getLEB")) Module["getLEB"] = function() {
  8032. abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8033. };
  8034. if (!Object.getOwnPropertyDescriptor(Module, "getFunctionTables")) Module["getFunctionTables"] = function() {
  8035. abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8036. };
  8037. if (!Object.getOwnPropertyDescriptor(Module, "alignFunctionTables")) Module["alignFunctionTables"] = function() {
  8038. abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8039. };
  8040. if (!Object.getOwnPropertyDescriptor(Module, "registerFunctions")) Module["registerFunctions"] = function() {
  8041. abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8042. };
  8043. Module["addFunction"] = addFunction;
  8044. Module["removeFunction"] = removeFunction;
  8045. if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = function() {
  8046. abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8047. };
  8048. if (!Object.getOwnPropertyDescriptor(Module, "prettyPrint")) Module["prettyPrint"] = function() {
  8049. abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8050. };
  8051. if (!Object.getOwnPropertyDescriptor(Module, "makeBigInt")) Module["makeBigInt"] = function() {
  8052. abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8053. };
  8054. if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = function() {
  8055. abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8056. };
  8057. if (!Object.getOwnPropertyDescriptor(Module, "getCompilerSetting")) Module["getCompilerSetting"] = function() {
  8058. abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8059. };
  8060. if (!Object.getOwnPropertyDescriptor(Module, "stackSave")) Module["stackSave"] = function() {
  8061. abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8062. };
  8063. if (!Object.getOwnPropertyDescriptor(Module, "stackRestore")) Module["stackRestore"] = function() {
  8064. abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8065. };
  8066. if (!Object.getOwnPropertyDescriptor(Module, "stackAlloc")) Module["stackAlloc"] = function() {
  8067. abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8068. };
  8069. Module["establishStackSpace"] = establishStackSpace;
  8070. if (!Object.getOwnPropertyDescriptor(Module, "print")) Module["print"] = function() {
  8071. abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8072. };
  8073. if (!Object.getOwnPropertyDescriptor(Module, "printErr")) Module["printErr"] = function() {
  8074. abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8075. };
  8076. if (!Object.getOwnPropertyDescriptor(Module, "getTempRet0")) Module["getTempRet0"] = function() {
  8077. abort("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8078. };
  8079. if (!Object.getOwnPropertyDescriptor(Module, "setTempRet0")) Module["setTempRet0"] = function() {
  8080. abort("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8081. };
  8082. if (!Object.getOwnPropertyDescriptor(Module, "callMain")) Module["callMain"] = function() {
  8083. abort("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8084. };
  8085. if (!Object.getOwnPropertyDescriptor(Module, "abort")) Module["abort"] = function() {
  8086. abort("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8087. };
  8088. if (!Object.getOwnPropertyDescriptor(Module, "Pointer_stringify")) Module["Pointer_stringify"] = function() {
  8089. abort("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8090. };
  8091. if (!Object.getOwnPropertyDescriptor(Module, "warnOnce")) Module["warnOnce"] = function() {
  8092. abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8093. };
  8094. Module["dynCall_ii"] = dynCall_ii;
  8095. if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NORMAL")) Object.defineProperty(Module, "ALLOC_NORMAL", {
  8096. configurable: true,
  8097. get: function() {
  8098. abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8099. }
  8100. });
  8101. if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_STACK")) Object.defineProperty(Module, "ALLOC_STACK", {
  8102. configurable: true,
  8103. get: function() {
  8104. abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8105. }
  8106. });
  8107. if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_DYNAMIC")) Object.defineProperty(Module, "ALLOC_DYNAMIC", {
  8108. configurable: true,
  8109. get: function() {
  8110. abort("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8111. }
  8112. });
  8113. if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NONE")) Object.defineProperty(Module, "ALLOC_NONE", {
  8114. configurable: true,
  8115. get: function() {
  8116. abort("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")
  8117. }
  8118. });
  8119. if (!Object.getOwnPropertyDescriptor(Module, "calledRun")) Object.defineProperty(Module, "calledRun", {
  8120. configurable: true,
  8121. get: function() {
  8122. abort("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")
  8123. }
  8124. });
  8125. if (memoryInitializer && !ENVIRONMENT_IS_PTHREAD) {
  8126. if (!isDataURI(memoryInitializer)) {
  8127. memoryInitializer = locateFile(memoryInitializer)
  8128. }
  8129. if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
  8130. var data = readBinary(memoryInitializer);
  8131. HEAPU8.set(data, GLOBAL_BASE)
  8132. } else {
  8133. addRunDependency("memory initializer");
  8134. var applyMemoryInitializer = function(data) {
  8135. if (data.byteLength) data = new Uint8Array(data);
  8136. for (var i = 0; i < data.length; i++) {
  8137. assert(HEAPU8[GLOBAL_BASE + i] === 0, "area for memory initializer should not have been touched before it's loaded")
  8138. }
  8139. HEAPU8.set(data, GLOBAL_BASE);
  8140. if (Module["memoryInitializerRequest"]) delete Module["memoryInitializerRequest"].response;
  8141. removeRunDependency("memory initializer")
  8142. };
  8143. var doBrowserLoad = function() {
  8144. readAsync(memoryInitializer, applyMemoryInitializer,
  8145. function() {
  8146. throw "could not load memory initializer " + memoryInitializer
  8147. })
  8148. };
  8149. if (Module["memoryInitializerRequest"]) {
  8150. var useRequest = function() {
  8151. var request = Module["memoryInitializerRequest"];
  8152. var response = request.response;
  8153. if (request.status !== 200 && request.status !== 0) {
  8154. console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: " + request.status + ", retrying " + memoryInitializer);
  8155. doBrowserLoad();
  8156. return
  8157. }
  8158. applyMemoryInitializer(response)
  8159. };
  8160. if (Module["memoryInitializerRequest"].response) {
  8161. setTimeout(useRequest, 0)
  8162. } else {
  8163. Module["memoryInitializerRequest"].addEventListener("load", useRequest)
  8164. }
  8165. } else {
  8166. doBrowserLoad()
  8167. }
  8168. }
  8169. }
  8170. var calledRun;
  8171. function ExitStatus(status) {
  8172. this.name = "ExitStatus";
  8173. this.message = "Program terminated with exit(" + status + ")";
  8174. this.status = status
  8175. }
  8176. var calledMain = false;
  8177. dependenciesFulfilled = function runCaller() {
  8178. if (!calledRun) run();
  8179. if (!calledRun) dependenciesFulfilled = runCaller
  8180. };
  8181. function callMain(args) {
  8182. assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])');
  8183. assert(__ATPRERUN__.length == 0, "cannot call main when preRun functions remain to be called");
  8184. args = args || [];
  8185. var argc = args.length + 1;
  8186. var argv = stackAlloc((argc + 1) * 4);
  8187. HEAP32[argv >> 2] = allocateUTF8OnStack(thisProgram);
  8188. for (var i = 1; i < argc; i++) {
  8189. HEAP32[(argv >> 2) + i] = allocateUTF8OnStack(args[i - 1])
  8190. }
  8191. HEAP32[(argv >> 2) + argc] = 0;
  8192. try {
  8193. var ret = Module["_main"](argc, argv);
  8194. exit(ret, true)
  8195. } catch(e) {
  8196. if (e instanceof ExitStatus) {
  8197. return
  8198. } else if (e == "SimulateInfiniteLoop") {
  8199. noExitRuntime = true;
  8200. return
  8201. } else {
  8202. var toLog = e;
  8203. if (e && typeof e === "object" && e.stack) {
  8204. toLog = [e, e.stack]
  8205. }
  8206. err("exception thrown: " + toLog);
  8207. quit_(1, e)
  8208. }
  8209. } finally {
  8210. calledMain = true
  8211. }
  8212. }
  8213. function run(args) {
  8214. args = args || arguments_;
  8215. if (runDependencies > 0) {
  8216. return
  8217. }
  8218. writeStackCookie();
  8219. preRun();
  8220. if (runDependencies > 0) return;
  8221. function doRun() {
  8222. if (calledRun) return;
  8223. calledRun = true;
  8224. if (ABORT) return;
  8225. initRuntime();
  8226. preMain();
  8227. if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"]();
  8228. if (shouldRunNow) callMain(args);
  8229. postRun()
  8230. }
  8231. if (Module["setStatus"]) {
  8232. Module["setStatus"]("Running...");
  8233. setTimeout(function() {
  8234. setTimeout(function() {
  8235. Module["setStatus"]("")
  8236. },
  8237. 1);
  8238. doRun()
  8239. },
  8240. 1)
  8241. } else {
  8242. doRun()
  8243. }
  8244. checkStackCookie()
  8245. }
  8246. Module["run"] = run;
  8247. function checkUnflushedContent() {
  8248. var print = out;
  8249. var printErr = err;
  8250. var has = false;
  8251. out = err = function(x) {
  8252. has = true
  8253. };
  8254. try {
  8255. var flush = Module["_fflush"];
  8256. if (flush) flush(0); ["stdout", "stderr"].forEach(function(name) {
  8257. var info = FS.analyzePath("/dev/" + name);
  8258. if (!info) return;
  8259. var stream = info.object;
  8260. var rdev = stream.rdev;
  8261. var tty = TTY.ttys[rdev];
  8262. if (tty && tty.output && tty.output.length) {
  8263. has = true
  8264. }
  8265. })
  8266. } catch(e) {}
  8267. out = print;
  8268. err = printErr;
  8269. if (has) {
  8270. warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.")
  8271. }
  8272. }
  8273. function exit(status, implicit) {
  8274. checkUnflushedContent();
  8275. if (implicit && noExitRuntime && status === 0) {
  8276. return
  8277. }
  8278. if (noExitRuntime) {
  8279. if (!implicit) {
  8280. err("exit(" + status + ") called, but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)")
  8281. }
  8282. } else {
  8283. PThread.terminateAllThreads();
  8284. ABORT = true;
  8285. EXITSTATUS = status;
  8286. exitRuntime();
  8287. if (Module["onExit"]) Module["onExit"](status)
  8288. }
  8289. quit_(status, new ExitStatus(status))
  8290. }
  8291. if (Module["preInit"]) {
  8292. if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];
  8293. while (Module["preInit"].length > 0) {
  8294. Module["preInit"].pop()()
  8295. }
  8296. }
  8297. var shouldRunNow = true;
  8298. if (Module["noInitialRun"]) shouldRunNow = false;
  8299. if (!ENVIRONMENT_IS_PTHREAD) noExitRuntime = true;
  8300. if (!ENVIRONMENT_IS_PTHREAD) run();