EptZstandardDecoderWorker.js 3.0 MB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376
  1. window = { };
  2. document = { };
  3. (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
  4. 'use strict';window.ZstdCodec=require('./lib/zstd-codec.js');window.ZstdStream=require('./lib/zstd-stream.js');
  5. },{"./lib/zstd-codec.js":7,"./lib/zstd-stream.js":8}],2:[function(require,module,exports){
  6. "use strict";exports.DEFAULT_COMPRESSION_LEVEL=3;exports.STREAMING_DEFAULT_BUFFER_SIZE=512*1024;
  7. },{}],3:[function(require,module,exports){
  8. (function (Buffer){
  9. 'use strict';var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var ArrayBufferHelper=function(){function ArrayBufferHelper(){_classCallCheck(this,ArrayBufferHelper);}_createClass(ArrayBufferHelper,null,[{key:'transfer',value:function transfer(old_buffer,new_capacity){var bytes=new Uint8Array(new ArrayBuffer(new_capacity));bytes.set(new Uint8Array(old_buffer.slice(0,new_capacity)));return bytes.buffer;}}]);return ArrayBufferHelper;}();var getClassName=function getClassName(obj){if(!obj||(typeof obj==='undefined'?'undefined':_typeof(obj))!='object')return null;// Object.prototype.toString returns '[object ClassName]',
  10. // remove prefix '[object ' and suffix ']'
  11. return Object.prototype.toString.call(obj).slice('[object '.length,-1);};var isUint8Array=function isUint8Array(obj){return getClassName(obj)=='Uint8Array';};var isString=function isString(obj){return typeof obj=='string'||getClassName(obj)=='String';};var toTypedArray=function toTypedArray(chunk,encoding,string_decoder){if(isString(chunk)){chunk=string_decoder(encoding);}if(isUint8Array(chunk)){// NOTE: Buffer is recognized as Uint8Array object.
  12. return chunk;}else if(getClassName(chunk)=='ArrayBuffer'){return new Uint8Array(chunk);}else if(Array.isArray(chunk)){return new Uint8Array(chunk);}return null;};// NOTE: only available on Node.js environment
  13. var fromTypedArrayToBuffer=function fromTypedArrayToBuffer(typedArray){return Buffer.from(typedArray.buffer);};exports.ArrayBufferHelper=ArrayBufferHelper;exports.getClassName=getClassName;exports.isUint8Array=isUint8Array;exports.isString=isString;exports.toTypedArray=toTypedArray;exports.fromTypedArrayToBuffer=fromTypedArrayToBuffer;
  14. }).call(this,require("buffer").Buffer)
  15. },{"buffer":54}],4:[function(require,module,exports){
  16. "use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};// REF: https://stackoverflow.com/a/47880734
  17. var wasmSupported=function(){try{if((typeof WebAssembly==="undefined"?"undefined":_typeof(WebAssembly))==="object"&&typeof WebAssembly.instantiate==="function"){var module=new WebAssembly.Module(Uint8Array.of(0x0,0x61,0x73,0x6d,0x01,0x00,0x00,0x00));if(module instanceof WebAssembly.Module)return new WebAssembly.Instance(module)instanceof WebAssembly.Instance;}}catch(e){}return false;}();exports.run=function(f){var Module={};Module.onRuntimeInitialized=function(){f(Module);};if(wasmSupported){require('./zstd-codec-binding-wasm.js')(Module);}else{require('./zstd-codec-binding.js')(Module);}};
  18. },{"./zstd-codec-binding-wasm.js":5,"./zstd-codec-binding.js":6}],5:[function(require,module,exports){
  19. (function (process,Buffer,__dirname){
  20. 'use strict';var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};var Module=function(){var _scriptDir=typeof document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return function(Module){Module=Module||{};var Module;if(!Module)Module=typeof Module!=='undefined'?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key];}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=function(status,toThrow){throw toThrow;};Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=(typeof window==='undefined'?'undefined':_typeof(window))==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=(typeof process==='undefined'?'undefined':_typeof(process))==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory);}else{return scriptDirectory+path;}}if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+"/";var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename);}return binary?ret:ret.toString();};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret);}assert(ret.buffer);return ret;};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/");}Module["arguments"]=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex;}});process["on"]("unhandledRejection",function(reason,p){process["exit"](1);});Module["quit"]=function(status){process["exit"](status);};Module["inspect"]=function(){return"[Emscripten Module object]";};}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data);}return read(f);};}Module["readBinary"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data;}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f));}data=read(f,"binary");assert((typeof data==='undefined'?'undefined':_typeof(data))==="object");return data;};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs;}else if(typeof arguments!="undefined"){Module["arguments"]=arguments;}if(typeof quit==="function"){Module["quit"]=function(status){quit(status);};}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WEB){if(document.currentScript){scriptDirectory=document.currentScript.src;}}else{scriptDirectory=self.location.href;}if(_scriptDir){scriptDirectory=_scriptDir;}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.split("/").slice(0,-1).join("/")+"/";}else{scriptDirectory="";}Module["read"]=function shell_read(url){try{var xhr=new XMLHttpRequest();xhr.open("GET",url,false);xhr.send(null);return xhr.responseText;}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data);}throw err;}};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){try{var xhr=new XMLHttpRequest();xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response);}catch(err){var data=tryParseAsDataURI(url);if(data){return data;}throw err;}};}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest();xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return;}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return;}onerror();};xhr.onerror=onerror;xhr.send(null);};Module["setWindowTitle"]=function(title){document.title=title;};}else{}var out=Module["print"]||(typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null);var err=Module["printErr"]||(typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key];}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret;}function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0;}}return ret;}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret;}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4;}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8;}else{return 0;}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text);}}var asm2wasmImports={"f64-rem":function f64Rem(x,y){return x%y;},"debugger":function _debugger(){debugger;}};var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args));}else{return Module["dynCall_"+sig].call(null,ptr);}}var GLOBAL_BASE=1024;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text);}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func;}var JSfuncs={"stackSave":function stackSave(){_stackSave();},"stackRestore":function stackRestore(){_stackRestore();},"arrayToC":function arrayToC(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret;},"stringToC":function stringToC(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len);}return ret;}};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(ident,returnType,argTypes,args,opts){function convertReturnValue(ret){if(returnType==="string")return Pointer_stringify(ret);if(returnType==="boolean")return Boolean(ret);return ret;}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=_stackSave();cArgs[i]=converter(args[i]);}else{cArgs[i]=args[i];}}}var ret=func.apply(null,cArgs);ret=convertReturnValue(ret);if(stack!==0)_stackRestore(stack);return ret;}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":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)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type);}}var ALLOC_STATIC=2;var ALLOC_NONE=4;function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break;}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK;}return ret;}return UTF8ToString(ptr);}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr]){++endPtr;}if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr));}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue;}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue;}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2;}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3;}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4;}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5;}}}if(u0<65536){str+=String.fromCharCode(u0);}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023);}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr);}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023;}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u;}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63;}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}}outU8Array[outIdx]=0;return outIdx-startIdx;}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len;}else if(u<=2047){len+=2;}else if(u<=65535){len+=3;}else if(u<=2097151){len+=4;}else if(u<=67108863){len+=5;}else{len+=6;}}return len;}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"]||Module["__cxa_demangle"];assert(__cxa_demangle_func);try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(HEAP32[status>>2]===0&&ret){return Pointer_stringify(ret);}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret);}return func;}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]";});}function jsStackTrace(){var err=new Error();if(!err.stack){try{throw new Error(0);}catch(e){err=e;}if(!err.stack){return"(no stack trace available)";}}return err.stack.toString();}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js);}var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple;}return x;}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf;}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer);}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (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 ");}function enlargeMemory(){abortOnCannotGrowMemory();}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY<TOTAL_STACK)err("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+TOTAL_MEMORY+"! (TOTAL_STACK="+TOTAL_STACK+")");if(Module["buffer"]){buffer=Module["buffer"];}else{if((typeof WebAssembly==='undefined'?'undefined':_typeof(WebAssembly))==="object"&&typeof WebAssembly.Memory==="function"){Module["wasmMemory"]=new WebAssembly.Memory({"initial":TOTAL_MEMORY/WASM_PAGE_SIZE,"maximum":TOTAL_MEMORY/WASM_PAGE_SIZE});buffer=Module["wasmMemory"].buffer;}else{buffer=new ArrayBuffer(TOTAL_MEMORY);}Module["buffer"]=buffer;}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY;}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue;}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func);}else{Module["dynCall_vi"](func,callback.arg);}}else{func(callback.arg===undefined?null:callback.arg);}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift());}}callRuntimeCallbacks(__ATPRERUN__);}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__);}function preMain(){callRuntimeCallbacks(__ATMAIN__);}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true;}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift());}}callRuntimeCallbacks(__ATPOSTRUN__);}function addOnPreRun(cb){__ATPRERUN__.unshift(cb);}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb);}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer);}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i);}if(!dontAddNull)HEAP8[buffer>>0]=0;}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id;}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies);}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies);}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null;}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback();}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0;}function integrateWasmJS(){var wasmTextFile="";var wasmBinaryFile="data:application/octet-stream;base64,AGFzbQEAAAABxQMzYAF/AGAAAX9gAn9/AGADf39/AGABfwF/YAN/f38Bf2AAAGACf38Bf2AEf39/fwF/YAV/f39/fwF/YAZ/f39/f38Bf2AEf39/fwBgBn9/f39/fwBgBX9/f39/AGANf39/f39/f39/f39/fwBgCH9/f39/f39/AGADf39/AXxgB39/f39/f38Bf2ABfwF+YAF+AX5gAn5+AX5gAn9+AX9gAn9+AGANf39/f39/f39/f39/fwF/YAh/f39/f39/fwF/YAx/f39/f39/f39/f38Bf2AEf39+fwBgAn5/AX9gBX9/fn9/AX9gBn9/f39/fgF/YAN/f34Bf2AFf39/f34Bf2ALf39/f39/f39/f38Bf2AHf39/f39/fwBgBX9/f35/AX9gCX9/f39/f39/fwF/YAp/f39/f39/f39/AX9gEH9/f39/f39/f39/f39/f38Bf2AEfn9/fgF+YAJ/fwF+YAN+f38Bf2AFf35/f38AYAd/fn9/f39/AX5gCH9/f39/f35/AX9gBn9/f39+fwF/YAR/f39+AX9gB39/f39/f34Bf2AJf39/f39/f39/AGACfn4Bf2AGf3x/f39/AX9gAnx/AXwC9Ak0A2VudgZtZW1vcnkCAYACgAIDZW52BXRhYmxlAXABnAOcAwNlbnYJdGFibGVCYXNlA38AA2Vudg5EWU5BTUlDVE9QX1BUUgN/AANlbnYIU1RBQ0tUT1ADfwADZW52CVNUQUNLX01BWAN/AANlbnYFYWJvcnQAAANlbnYNZW5sYXJnZU1lbW9yeQABA2Vudg5nZXRUb3RhbE1lbW9yeQABA2VudhdhYm9ydE9uQ2Fubm90R3Jvd01lbW9yeQABA2VudhlfX19jeGFfYWxsb2NhdGVfZXhjZXB0aW9uAAQDZW52DF9fX2N4YV90aHJvdwADA2VudgdfX19sb2NrAAADZW52C19fX3NldEVyck5vAAADZW52DV9fX3N5c2NhbGwxNDAABwNlbnYNX19fc3lzY2FsbDE0NQAHA2Vudg1fX19zeXNjYWxsMTQ2AAcDZW52DV9fX3N5c2NhbGwyMjEABwNlbnYLX19fc3lzY2FsbDUABwNlbnYMX19fc3lzY2FsbDU0AAcDZW52C19fX3N5c2NhbGw2AAcDZW52CV9fX3VubG9jawAAA2VudhZfX2VtYmluZF9yZWdpc3Rlcl9ib29sAA0DZW52F19fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzAA4DZW52I19fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yAAwDZW52IF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uAA8DZW52F19fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsAAIDZW52F19fZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0AAMDZW52Gl9fZW1iaW5kX3JlZ2lzdGVyX2Z1bmN0aW9uAAwDZW52GV9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIADQNlbnYdX19lbWJpbmRfcmVnaXN0ZXJfbWVtb3J5X3ZpZXcAAwNlbnYcX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZwACA2Vudh1fX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZwADA2VudhZfX2VtYmluZF9yZWdpc3Rlcl92b2lkAAIDZW52Cl9fZW12YWxfYXMAEANlbnYMX19lbXZhbF9jYWxsAAgDZW52GF9fZW12YWxfY2FsbF92b2lkX21ldGhvZAALA2Vudg5fX2VtdmFsX2RlY3JlZgAAA2VudhlfX2VtdmFsX2dldF9tZXRob2RfY2FsbGVyAAcDZW52G19fZW12YWxfZ2V0X21vZHVsZV9wcm9wZXJ0eQAEA2VudhRfX2VtdmFsX2dldF9wcm9wZXJ0eQAHA2Vudg5fX2VtdmFsX2luY3JlZgAAA2VudgtfX2VtdmFsX25ldwAIA2VudhNfX2VtdmFsX25ld19jc3RyaW5nAAQDZW52F19fZW12YWxfcnVuX2Rlc3RydWN0b3JzAAADZW52El9fZW12YWxfdGFrZV92YWx1ZQAHA2VudgZfYWJvcnQABgNlbnYWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwAFA2VudhRfcHRocmVhZF9nZXRzcGVjaWZpYwAEA2VudhNfcHRocmVhZF9rZXlfY3JlYXRlAAcDZW52DV9wdGhyZWFkX29uY2UABwNlbnYUX3B0aHJlYWRfc2V0c3BlY2lmaWMABwPmB+QHBAEAAgIAAQYCAgQCBwIEBwcFBwcEBwUHBwAAAwMABAIAAgcEBAIHBAQCBwQEAgcEBAIHBAQCBwQCAwMFAwQAAQQDCwcFCAADBwQAAAUEBwQAAQUJCAQAAQgFBAEGBwcIBQgABAICBwQIAAQCBwQDAAQCBwQCAAQCBwQAAAcHAgQCBwcEBwQCBwcEBQcHAAQHBAIHBwQHBAIHBwQFBwcEBAkEBAQRCgQICQUDBAcHBwcCBwcEEhITBBIUFBUFBRIHBwIKBwkKCAkKCQgHBQkJBwkKBQMDAAACBAMDAgIWFgICBAUICQgKAwUKCQoCAhcYBQUZGQQBBAAEBBoaBwUKBwoACREICgUFAwMFCwoFBQkEBwcHBwcbGxsbBwgAAAAEBxwdHgISBRQHBx8CAAQEGSAHCgoKCgoKCgoKCgoKCgoKCgMHBwgLBQgFDQ0AAwIFBwgHBwcJCQoNESERGAkJCgkRIgoJAwAYCQMjGAQkCSUICAcIAwsJJicoGwUbCCkqCwsCBQIDAyssAxoJBRgYCgkFAi0RCgEEBC4dLQceBwgIBQcJAgoJBAoJBBgJDy8KCQoJGAcKGAoYAAQBBAQHBAQEBAQEBAcHBQQFCCcnBQUFBAcEEgQHBwcFBAcHBwcFBQcEBQggAwwCCgQREREDGAIRERgEBAoHBQkFCAgEBQUFCAERAREBEQUCCQUJBQkRBQMEAhgEAgQjBwgJBAkJCQkJCAgHCQkFCQUJEQgJBQkPLwICCQQFBQUEBwIFCQUJBQkRBQIYCAgJCAgFCREICQUJCQQFAwUFAgkFBQkFCSMFAwQCGAcJCAQICAkJCAgFCREPLwgJBAUJCQkEBQMFAQkRBAMFBQkFCRgFAwQCGAQJCAgICAUJCREPLwgJBQkJBQkIBAQJCQkJBwcKAQQECQUFBAcEMAUICQQIBAUBBQEFAQUEBQQBCQkJCQQJBAkECQkECQIGAAQEAAcHBwIEBQUEAQUFBQcEBAUHBQcHCAgFCQMEAygbGw0HMTIFBwUEBQcHBwQHBAEEBAAEBwQEBAQGAQIFDA0LBQsLDQgMDQsGAAUFBQwNCwsMDQgCAgILAAAEBQAAAwMEBQIPAwAFBQUFBQIFBwICBQUDAgUFAwUFBQIFAwICAgIFBQUFBwMFAAMLBQUICAUFBQUFBQUFBQUFBQUFBQUFBQUFAgUCAwUFBQUFBQUFBQICAgACAgIDAggFAwwCAgUAAAsCAAcHCAIFBQUCBQUFBwIAAgIFCwIAAAIIAAAAAAIAAgACBQAHBAUEBgQFBQUFBAcFCAkKEQIDCw0MIQEEBwUICQoGAAIDCw0MBh8GfwEjAQt/ASMCC38BIwMLfwFBAAt/AUEAC38BQQALB94EJRhfX0dMT0JBTF9fc3ViX0lfYmluZF9jcHAAgwYfX19HTE9CQUxfX3N1Yl9JX3pzdGRfYmluZGluZ19jYwCKARBfX19jeGFfY2FuX2NhdGNoAO8HD19fX2N4YV9kZW1hbmdsZQDZBhZfX19jeGFfaXNfcG9pbnRlcl90eXBlAPAHEV9fX2Vycm5vX2xvY2F0aW9uAJAGDl9fX2dldFR5cGVOYW1lAIUGBV9mcmVlAIcGD19sbHZtX2Jzd2FwX2kzMgDyBw5fbGx2bV9jdGx6X2k2NADzBwdfbWFsbG9jAIYGB19tZW1jcHkA9AcIX21lbW1vdmUA9QcHX21lbXNldAD2BwVfc2JyawD3BwlkeW5DYWxsX2kAbgpkeW5DYWxsX2lpAPgHC2R5bkNhbGxfaWlpAPkHDGR5bkNhbGxfaWlpaQD6Bw1keW5DYWxsX2lpaWlpAPsHDmR5bkNhbGxfaWlpaWlpAPwHD2R5bkNhbGxfaWlpaWlpaQD9BwlkeW5DYWxsX3YAdApkeW5DYWxsX3ZpAP4HC2R5bkNhbGxfdmlpAP8HDGR5bkNhbGxfdmlpaQCACA1keW5DYWxsX3ZpaWlpAIEIDmR5bkNhbGxfdmlpaWlpAIIID2R5bkNhbGxfdmlpaWlpaQCDCBNlc3RhYmxpc2hTdGFja1NwYWNlADELZ2V0VGVtcFJldDAANAtydW5Qb3N0U2V0cwDxBwtzZXRUZW1wUmV0MAAzCHNldFRocmV3ADIKc3RhY2tBbGxvYwAuDHN0YWNrUmVzdG9yZQAwCXN0YWNrU2F2ZQAvCbcFAQAjAAucA4QIf4UBiQFthAiECIQIhQhMUVJVVllaXV5hYmWRAZUBmAGbAZ4BoQGkAacBrQGxAbMBtwG+AcIBxAHIAYwGvQZ3ezx9boMBbogBbkJrbjjGA9wFhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhghQVFhcYGSUAZoBoAGmAa8BsAG1AbYBwAHBAcYBxwHoBHY6fIsBjAE9PkBBcUNFRnGGCIYIhgiGCIYIhgiGCIYIhgiGCIYIhgiGCIYIhgiGCIYIhgiGCIYIhgiG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ACAEJAUgAA8LIARBEWohASAEQRBqIQIgAygCACAFKAIANgIMIAMoAgAgAygCACgCDEEEajYCEAJAIAAoAgBBBE8EQCADKAIAIAUoAgAgACgCAGpBfGo2AgggAygCACgCCBDhASECIAMoAgAgAjYCACABIAUoAgAgACgCAEEBa2osAAA6AAAgAS0AAAR/QQggAS0AABDUAWsFQQALIQIgAygCACACNgIEIAEtAABFBEAgBkF/NgIAIAYoAgAhACAEJAUgAA8LBSADKAIAIAMoAgAoAgw2AgggAygCACADKAIAKAIMLQAANgIAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAEECaw4GBQQDAgEABgsgAygCACIBIAEoAgAgBSgCAC0ABkEQdGo2AgAMBgsMBQsMBQsMBQsMBQsMBQsMBQsgAygCACIBIAEoAgAgBSgCAC0ABUEIdGo2AgALIAMoAgAiASABKAIAIAUoAgAtAARqNgIACyADKAIAIgEgASgCACAFKAIALQADQRh0ajYCAAsgAygCACIBIAEoAgAgBSgCAC0AAkEQdGo2AgALIAMoAgAiASABKAIAIAUoAgAtAAFBCHRqNgIACyACIAUoAgAgACgCAEEBa2osAAA6AAAgAi0AAAR/QQggAi0AABDUAWsFQQALIQEgAygCACABNgIEIAItAAAEQCADKAIAQQRqIgEgASgCAEEEIAAoAgBrQQN0ajYCAAwCCyAGQWw2AgAgBigCACEAIAQkBSAADwsLIAYgACgCADYCACAGKAIAIQAgBCQFIAALhQEBAn8jBSEDIwVBIGokBSADQRBqIgQgADYCACADQQxqIgAgATYCACADQQhqIgEgAjYCACADQQRqIgIgASgCADYCACADIAIoAgA2AgAgACgCACADKAIALwEAENwBIQIgBCgCACACNgIAIAAoAgAQ2QEaIAQoAgAgASgCAEEEajYCBCADJAULvQMBBn8jBSEDIwVBEGokBSADQQxqIQIgA0EIaiIBIAA2AgAgASgCACgCBEEgSwRAIAJBAzYCACACKAIAIQAgAyQFIAAPCyABKAIAIQUgASgCACgCCCABKAIAKAIQTwRAIAEoAgBBCGoiACAAKAIAIAUoAgRBA3ZrNgIAIAEoAgBBBGoiACAAKAIAQQdxNgIAIAEoAgAoAggQ4QEhACABKAIAIAA2AgAgAkEANgIAIAIoAgAhACADJAUgAA8LIANBBGohBCADIQAgASgCACgCBCEGIAUoAgggASgCACgCDEcEQCAEIAZBA3Y2AgAgAEEANgIAIAEoAgAoAgggBCgCAGsgASgCACgCDEkEQCAEIAEoAgAoAgggASgCACgCDGs2AgAgAEEBNgIACyABKAIAQQhqIgUgBSgCACAEKAIAazYCACABKAIAQQRqIgUgBSgCACAEKAIAQQN0azYCACABKAIAKAIIEOEBIQQgASgCACAENgIAIAIgACgCADYCACACKAIAIQAgAyQFIAAPCyAGQSBJBH8gAkEBNgIAIAIoAgAhACADJAUgAAUgAkECNgIAIAIoAgAhACADJAUgAAsLmAEBBH8jBSECIwVBIGokBSACQQxqIgMgADYCACACQQhqIgQgATYCACACQRBqIgAgAygCACgCBCADKAIAKAIAQQJ0aigBADYBACACQQRqIgEgAC0AAzYCACACQRRqIgUgACwAAjoAACACIAQoAgAgASgCABDfATYCACADKAIAIAAvAQAgAigCAGo2AgAgBSwAACEAIAIkBSAAC5gBAQR/IwUhAiMFQSBqJAUgAkEMaiIDIAA2AgAgAkEIaiIEIAE2AgAgAkEQaiIAIAMoAgAoAgQgAygCACgCAEECdGooAQA2AQAgAkEEaiIBIAAtAAM2AgAgAkEUaiIFIAAsAAI6AAAgAiAEKAIAIAEoAgAQ3AE2AgAgAygCACAALwEAIAIoAgBqNgIAIAUsAAAhACACJAUgAAtTAQJ/IwUhAiMFQRBqJAUgAkEIaiIDIAA2AgAgAkEEaiIAIAE2AgAgAiADKAIAIAAoAgAQ3QE2AgAgAygCACAAKAIAEN4BIAIoAgAhACACJAUgAAtZAQJ/IwUhAiMFQRBqJAUgAkEIaiIDIAA2AgAgAkEEaiIAIAE2AgAgAkEfNgIAIAMoAgAoAgAgAygCACgCBEEfcXRBAXZBHyAAKAIAa0EfcXYhACACJAUgAAs+AQJ/IwUhAiMFQRBqJAUgAkEEaiIDIAA2AgAgAiABNgIAIAMoAgBBBGoiACAAKAIAIAIoAgBqNgIAIAIkBQtTAQJ/IwUhAiMFQRBqJAUgAkEIaiIDIAA2AgAgAkEEaiIAIAE2AgAgAiADKAIAIAAoAgAQ4AE2AgAgAygCACAAKAIAEN4BIAIoAgAhACACJAUgAAtWAQJ/IwUhAiMFQRBqJAUgAkEIaiIDIAA2AgAgAkEEaiIAIAE2AgAgAkEfNgIAIAMoAgAoAgAgAygCACgCBEEfcXRBICAAKAIAa0EfcXYhACACJAUgAAs3AQJ/IwUhASMFQRBqJAUgASAANgIAIAFBBGoiAiABKAIAIgAQzwE2AgAgAigCACEAIAEkBSAAC2YCA38BfiMFIQIjBUEQaiQFIAIiAUEIaiIDIAA2AgBBkOUALQAAQQBHIQAgAygCABDjASEEIAAEfiABIAQ3AwAgASkDACEEIAIkBSAEBSABIAQQ5AE3AwAgASkDACEEIAIkBSAECwsoAgF/AX4jBSEBIwVBEGokBSABIAA2AgAgASgCACkAACECIAEkBSACC6IBAQF/IwUhASMFQRBqJAUgASAANwMAIAEpAwBCOIZCgICAgICAgIB/gyABKQMAQiiGQoCAgICAgMD/AIOEIAEpAwBCGIZCgICAgIDgP4OEIAEpAwBCCIZCgICAgPAfg4QgASkDAEIIiEKAgID4D4OEIAEpAwBCGIhCgID8B4OEIAEpAwBCKIhCgP4Dg4QgASkDAEI4iEL/AYOEIQAgASQFIAALNQECfyMFIQEjBUEQaiQFIAFBBGoiAiAANgIAIAEgAigCACgAADYAACABKAIAIQAgASQFIAALNwICfwF+IwUhASMFQRBqJAUgAUEIaiICIAA2AgAgASACKAIAKQAANwAAIAEpAwAhAyABJAUgAwt2AQJ/IwUhAyMFQRBqJAUgA0EIaiICIAA3AwAgAyABNwMAIAIgAikDACADKQMAQs/W077Sx6vZQn58NwMAIAIgAikDAEIfhiACKQMAQiGIhDcDACACIAIpAwBCh5Wvr5i23puef343AwAgAikDACEAIAMkBSAAC3ABAn8jBSECIwVBEGokBSACQQhqIgMgADcDACACIAE3AwAgAkIAIAIpAwAQ5wE3AwAgAyADKQMAIAIpAwCFNwMAIAMgAykDAEKHla+vmLbem55/fkLj3MqV/M7y9YV/fDcDACADKQMAIQAgAiQFIAALywIBAn8jBSECIwVB8ABqJAUgAkHgAGoiAyAANgIAIAJB2ABqIgAgATcDACACQgA3AwAgAkIANwMIIAJCADcDECACQgA3AxggAkIANwMgIAJCADcDKCACQgA3AzAgAkIANwM4IAJBQGtCADcDACACQgA3A0ggAiAAKQMAQoeVr6+Ytt6bnn98Qs/W077Sx6vZQnw3AwggAiAAKQMAQs/W077Sx6vZQnw3AxAgAiAAKQMAQgB8NwMYIAIgACkDAEKHla+vmLbem55/fTcDICADKAIAIgAgAikDADcDACAAIAIpAwg3AwggACACKQMQNwMQIAAgAikDGDcDGCAAIAIpAyA3AyAgACACKQMoNwMoIAAgAikDMDcDMCAAIAIpAzg3AzggAEFAayACQUBrKQMANwMAIAAgAikDSDcDSCAAIAIpA1A3A1AgAiQFQQALSQECfyMFIQMjBUEQaiQFIANBCGoiBCAANgIAIANBBGoiACABNgIAIAMgAjYCACAEKAIAIgEgACgCACADKAIAEPQHGiADJAUgAQvcJQJ8fwJ+IwUhAyMFQeAEaiQFIANBuAFqIRogA0HQBGohLCADQcwEaiEtIANByARqIS4gA0HEBGohLyADQcAEaiEwIANBsAFqIRsgA0G8BGohMSADQbgEaiEyIANBtARqITMgA0GwBGohNCADQawEaiE1IANBqAFqIRwgA0GoBGohNiADQaQEaiE3IANBoARqITggA0GcBGohOSADQZgEaiE6IANBoAFqIR0gA0GUBGohOyADQZAEaiE8IANBjARqIT0gA0GIBGohPiADQYQEaiE/IANBmAFqIR4gA0GABGohQCADQfwDaiFBIANB+ANqIUIgA0H0A2ohQyADQfADaiFEIANBkAFqIR8gA0HsA2ohRSADQegDaiFGIANB5ANqIUcgA0HgA2ohSCADQdwDaiFJIANBiAFqISAgA0HYA2ohSiADQdQDaiFLIANB0ANqIUwgA0HMA2ohTSADQcgDaiFOIANBgAFqISEgA0HEA2ohTyADQcADaiFQIANBvANqIVEgA0G4A2ohUiADQbQDaiFTIANBsANqISIgA0GsA2ohBCADQagDaiEOIANBpANqIQogA0GgA2ohCCADQZwDaiEGIANBmANqIQsgA0GUA2ohVCADQfgAaiEPIANB8ABqIRAgA0HoAGohESADQeAAaiESIANB2ABqISMgA0GQA2ohVSADQYwDaiFWIANBiANqIVcgA0GEA2ohWCADQYADaiFZIANB0ABqISQgA0H8AmohWiADQfgCaiFbIANB9AJqIVwgA0HwAmohXSADQewCaiFeIANByABqISUgA0HoAmohXyADQeQCaiFgIANB4AJqIWEgA0HcAmohYiADQdgCaiFjIANBQGshJiADQdQCaiFkIANB0AJqIWUgA0HMAmohZiADQcgCaiFnIANBxAJqIWggA0E4aiEnIANBwAJqIWkgA0G8AmohaiADQbgCaiFrIANBtAJqIWwgA0GwAmohbSADQTBqISggA0GsAmohbiADQagCaiFvIANBpAJqIXAgA0GgAmohcSADQZwCaiFyIANBKGohKSADQZgCaiFzIANBlAJqIXQgA0GQAmohdSADQYwCaiF2IANBiAJqIXcgA0EgaiEqIANBhAJqIXggA0GAAmoheSADQfwBaiF6IANB+AFqIXsgA0H0AWohfCADQfABaiErIANB7AFqIQUgA0HoAWohEyADQeQBaiEMIANB4AFqIQkgA0HcAWohByADQdgBaiENIANB1AFqIX0gA0EYaiEUIANBEGohFSADQQhqIRYgAyEXIANB0AFqIRggA0HMAWoiGSAANgIAIANByAFqIn4gATYCACADQcQBaiIBIAI2AgAgA0HAAWoiAEGA5QAsAAA2AgAgGSgCACEZIH4oAgAhAiABKAIAIQEgACgCAEEBRgR/IAUgGTYCACATIAI2AgAgDCABNgIAIAlBATYCACAHIBMoAgA2AgAgDSAHKAIAIAwoAgBqNgIAIAUoAgAiACAAKQMAIAwoAgCtfDcDACAFKAIAIQAgBSgCACgCSCAMKAIAakEgSQRAIABBKGogBSgCACgCSGogEygCACAMKAIAEOoBGiAFKAIAQcgAaiIAIAAoAgAgDCgCAGo2AgAgK0EANgIABSAAKAJIBEAgBSgCAEEoaiAFKAIAKAJIaiATKAIAQSAgBSgCACgCSGsQ6gEaIAUoAgApAwghgAEgCSgCACEAIHsgBSgCAEEoajYCACB8IAA2AgAgfCgCACEAIHggeygCADYCACB5IAA2AgAgekEBNgIAIHkoAgBBAUYhASB4KAIAIQAgeigCAEEBRgRAIAAQ5gEhfyABRQRAIH8Q5AEhfwsgKiB/NwMABSAAKQMAIX8gAUUEQCB/EOQBIX8LICogfzcDAAsggAEgKikDABDnASF/IAUoAgAgfzcDCCAFKAIAKQMQIYABIAkoAgAhACB2IAUoAgBBMGo2AgAgdyAANgIAIHcoAgAhACBzIHYoAgA2AgAgdCAANgIAIHVBATYCACB0KAIAQQFGIQEgcygCACEAIHUoAgBBAUYEQCAAEOYBIX8gAUUEQCB/EOQBIX8LICkgfzcDAAUgACkDACF/IAFFBEAgfxDkASF/CyApIH83AwALIIABICkpAwAQ5wEhfyAFKAIAIH83AxAgBSgCACkDGCGAASAJKAIAIQAgcSAFKAIAQThqNgIAIHIgADYCACByKAIAIQAgbiBxKAIANgIAIG8gADYCACBwQQE2AgAgbygCAEEBRiEBIG4oAgAhACBwKAIAQQFGBEAgABDmASF/IAFFBEAgfxDkASF/CyAoIH83AwAFIAApAwAhfyABRQRAIH8Q5AEhfwsgKCB/NwMACyCAASAoKQMAEOcBIX8gBSgCACB/NwMYIAUoAgApAyAhgAEgCSgCACEAIGwgBSgCAEFAazYCACBtIAA2AgAgbSgCACEAIGkgbCgCADYCACBqIAA2AgAga0EBNgIAIGooAgBBAUYhASBpKAIAIQAgaygCAEEBRgRAIAAQ5gEhfyABRQRAIH8Q5AEhfwsgJyB/NwMABSAAKQMAIX8gAUUEQCB/EOQBIX8LICcgfzcDAAsggAEgJykDABDnASF/IAUoAgAgfzcDICAHIAcoAgBBICAFKAIAKAJIa2o2AgAgBSgCAEEANgJICyAHKAIAQSBqIA0oAgBNBEAgfSANKAIAQWBqNgIAIBQgBSgCACkDCDcDACAVIAUoAgApAxA3AwAgFiAFKAIAKQMYNwMAIBcgBSgCACkDIDcDAANAIBQpAwAhgAEgCSgCACEAIGcgBygCADYCACBoIAA2AgAgaCgCACEAIGQgZygCADYCACBlIAA2AgAgZkEBNgIAIGUoAgBBAUYhASBkKAIAIQAgZigCAEEBRgRAIAAQ5gEhfyABRQRAIH8Q5AEhfwsgJiB/NwMABSAAKQMAIX8gAUUEQCB/EOQBIX8LICYgfzcDAAsgFCCAASAmKQMAEOcBNwMAIAcgBygCAEEIajYCACAVKQMAIYABIAkoAgAhACBiIAcoAgA2AgAgYyAANgIAIGMoAgAhACBfIGIoAgA2AgAgYCAANgIAIGFBATYCACBgKAIAQQFGIQEgXygCACEAIGEoAgBBAUYEQCAAEOYBIX8gAUUEQCB/EOQBIX8LICUgfzcDAAUgACkDACF/IAFFBEAgfxDkASF/CyAlIH83AwALIBUggAEgJSkDABDnATcDACAHIAcoAgBBCGo2AgAgFikDACGAASAJKAIAIQAgXSAHKAIANgIAIF4gADYCACBeKAIAIQAgWiBdKAIANgIAIFsgADYCACBcQQE2AgAgWygCAEEBRiEBIFooAgAhACBcKAIAQQFGBEAgABDmASF/IAFFBEAgfxDkASF/CyAkIH83AwAFIAApAwAhfyABRQRAIH8Q5AEhfwsgJCB/NwMACyAWIIABICQpAwAQ5wE3AwAgByAHKAIAQQhqNgIAIBcpAwAhgAEgCSgCACEAIFggBygCADYCACBZIAA2AgAgWSgCACEAIFUgWCgCADYCACBWIAA2AgAgV0EBNgIAIFYoAgBBAUYhASBVKAIAIQAgVygCAEEBRgRAIAAQ5gEhfyABRQRAIH8Q5AEhfwsgIyB/NwMABSAAKQMAIX8gAUUEQCB/EOQBIX8LICMgfzcDAAsgFyCAASAjKQMAEOcBNwMAIAcgBygCAEEIajYCACAHKAIAIH0oAgBNDQALIAUoAgAgFCkDADcDCCAFKAIAIBUpAwA3AxAgBSgCACAWKQMANwMYIAUoAgAgFykDADcDIAsgBygCACANKAIASQRAIAUoAgBBKGogBygCACANKAIAIAcoAgBrEOoBGiAFKAIAIA0oAgAgBygCAGs2AkgLICtBADYCAAsgGCArKAIANgIAIBgoAgAhACADJAUgAAUgBCAZNgIAIA4gAjYCACAKIAE2AgAgCEEANgIAIAYgDigCADYCACALIAYoAgAgCigCAGo2AgAgBCgCACIAIAApAwAgCigCAK18NwMAIAQoAgAhACAEKAIAKAJIIAooAgBqQSBJBEAgAEEoaiAEKAIAKAJIaiAOKAIAIAooAgAQ6gEaIAQoAgBByABqIgAgACgCACAKKAIAajYCACAiQQA2AgAFIAAoAkgEQCAEKAIAQShqIAQoAgAoAkhqIA4oAgBBICAEKAIAKAJIaxDqARogBCgCACkDCCGAASAIKAIAIQAgUiAEKAIAQShqNgIAIFMgADYCACBTKAIAIQAgTyBSKAIANgIAIFAgADYCACBRQQE2AgAgUCgCAEEBRiEBIE8oAgAhACBRKAIAQQFGBEAgABDmASF/IAFFBEAgfxDkASF/CyAhIH83AwAFIAApAwAhfyABRQRAIH8Q5AEhfwsgISB/NwMACyCAASAhKQMAEOcBIX8gBCgCACB/NwMIIAQoAgApAxAhgAEgCCgCACEAIE0gBCgCAEEwajYCACBOIAA2AgAgTigCACEAIEogTSgCADYCACBLIAA2AgAgTEEBNgIAIEsoAgBBAUYhASBKKAIAIQAgTCgCAEEBRgRAIAAQ5gEhfyABRQRAIH8Q5AEhfwsgICB/NwMABSAAKQMAIX8gAUUEQCB/EOQBIX8LICAgfzcDAAsggAEgICkDABDnASF/IAQoAgAgfzcDECAEKAIAKQMYIYABIAgoAgAhACBIIAQoAgBBOGo2AgAgSSAANgIAIEkoAgAhACBFIEgoAgA2AgAgRiAANgIAIEdBATYCACBGKAIAQQFGIQEgRSgCACEAIEcoAgBBAUYEQCAAEOYBIX8gAUUEQCB/EOQBIX8LIB8gfzcDAAUgACkDACF/IAFFBEAgfxDkASF/CyAfIH83AwALIIABIB8pAwAQ5wEhfyAEKAIAIH83AxggBCgCACkDICGAASAIKAIAIQAgQyAEKAIAQUBrNgIAIEQgADYCACBEKAIAIQAgQCBDKAIANgIAIEEgADYCACBCQQE2AgAgQSgCAEEBRiEBIEAoAgAhACBCKAIAQQFGBEAgABDmASF/IAFFBEAgfxDkASF/CyAeIH83AwAFIAApAwAhfyABRQRAIH8Q5AEhfwsgHiB/NwMACyCAASAeKQMAEOcBIX8gBCgCACB/NwMgIAYgBigCAEEgIAQoAgAoAkhrajYCACAEKAIAQQA2AkgLIAYoAgBBIGogCygCAE0EQCBUIAsoAgBBYGo2AgAgDyAEKAIAKQMINwMAIBAgBCgCACkDEDcDACARIAQoAgApAxg3AwAgEiAEKAIAKQMgNwMAA0AgDykDACGAASAIKAIAIQAgPiAGKAIANgIAID8gADYCACA/KAIAIQAgOyA+KAIANgIAIDwgADYCACA9QQE2AgAgPCgCAEEBRiEBIDsoAgAhACA9KAIAQQFGBEAgABDmASF/IAFFBEAgfxDkASF/CyAdIH83AwAFIAApAwAhfyABRQRAIH8Q5AEhfwsgHSB/NwMACyAPIIABIB0pAwAQ5wE3AwAgBiAGKAIAQQhqNgIAIBApAwAhgAEgCCgCACEAIDkgBigCADYCACA6IAA2AgAgOigCACEAIDYgOSgCADYCACA3IAA2AgAgOEEBNgIAIDcoAgBBAUYhASA2KAIAIQAgOCgCAEEBRgRAIAAQ5gEhfyABRQRAIH8Q5AEhfwsgHCB/NwMABSAAKQMAIX8gAUUEQCB/EOQBIX8LIBwgfzcDAAsgECCAASAcKQMAEOcBNwMAIAYgBigCAEEIajYCACARKQMAIYABIAgoAgAhACA0IAYoAgA2AgAgNSAANgIAIDUoAgAhACAxIDQoAgA2AgAgMiAANgIAIDNBATYCACAyKAIAQQFGIQEgMSgCACEAIDMoAgBBAUYEQCAAEOYBIX8gAUUEQCB/EOQBIX8LIBsgfzcDAAUgACkDACF/IAFFBEAgfxDkASF/CyAbIH83AwALIBEggAEgGykDABDnATcDACAGIAYoAgBBCGo2AgAgEikDACGAASAIKAIAIQAgLyAGKAIANgIAIDAgADYCACAwKAIAIQAgLCAvKAIANgIAIC0gADYCACAuQQE2AgAgLSgCAEEBRiEBICwoAgAhACAuKAIAQQFGBEAgABDmASF/IAFFBEAgfxDkASF/CyAaIH83AwAFIAApAwAhfyABRQRAIH8Q5AEhfwsgGiB/NwMACyASIIABIBopAwAQ5wE3AwAgBiAGKAIAQQhqNgIAIAYoAgAgVCgCAE0NAAsgBCgCACAPKQMANwMIIAQoAgAgECkDADcDECAEKAIAIBEpAwA3AxggBCgCACASKQMANwMgCyAGKAIAIAsoAgBJBEAgBCgCAEEoaiAGKAIAIAsoAgAgBigCAGsQ6gEaIAQoAgAgCygCACAGKAIAazYCSAsgIkEANgIACyAYICIoAgA2AgAgGCgCACEAIAMkBSAACwuaEwIvfwF+IwUhASMFQYACaiQFIAFB9AFqIRQgAUHwAWohGiABQewBaiEbIAFB6AFqIRwgAUHkAWohHSABQeABaiEeIAFB8ABqIRUgAUHcAWohHyABQdgBaiEgIAFB1AFqISEgAUHQAWohIiABQcwBaiEjIAFByAFqIQcgAUHEAWohFiABQcABaiEFIAFBvAFqIQkgAUHoAGohAiABQeAAaiEKIAFB2ABqIQsgAUHQAGohDCABQcgAaiENIAFBQGshJCABQbgBaiEXIAFBtAFqISUgAUGwAWohJiABQawBaiEnIAFBqAFqISggAUGkAWohKSABQThqIRggAUGgAWohKiABQZwBaiErIAFBmAFqISwgAUGUAWohLSABQZABaiEuIAFBjAFqIQggAUGIAWohGSABQYQBaiEGIAFBgAFqIQ4gAUEwaiEDIAFBKGohDyABQSBqIRAgAUEYaiERIAFBEGohEiABQQhqIS8gASETIAFB/ABqIgQgADYCACABQfgAaiIAQYDlACwAADYCACAEKAIAIQQgACgCAEEBRgR+IAggBDYCACAZQQE2AgAgBiAIKAIAQShqNgIAIA4gCCgCAEEoaiAIKAIAKAJIajYCACAIKAIAIQAgCCgCACkDAEIgWgRAIA8gACkDCDcDACAQIAgoAgApAxA3AwAgESAIKAIAKQMYNwMAIBIgCCgCACkDIDcDACADIA8pAwBCAYYgDykDAEI/iIQgECkDAEIHhiAQKQMAQjmIhHwgESkDAEIMhiARKQMAQjSIhHwgEikDAEIShiASKQMAQi6IhHw3AwAgAyADKQMAIA8pAwAQ6AE3AwAgAyADKQMAIBApAwAQ6AE3AwAgAyADKQMAIBEpAwAQ6AE3AwAgAyADKQMAIBIpAwAQ6AE3AwAFIAMgACkDGELFz9my8eW66id8NwMACyADIAMpAwAgCCgCACkDAHw3AwADQAJAIAYoAgAhBCAGKAIAQQhqIA4oAgBLDQAgGSgCACEAIC0gBDYCACAuIAA2AgAgLigCACEAICogLSgCADYCACArIAA2AgAgLEEBNgIAICsoAgBBAUYhBCAqKAIAIQAgLCgCAEEBRgRAIAAQ5gEhMCAERQRAIDAQ5AEhMAsgGCAwNwMABSAAKQMAITAgBEUEQCAwEOQBITALIBggMDcDAAsgL0IAIBgpAwAQ5wE3AwAgAyADKQMAIC8pAwCFNwMAIAMgAykDAEIbhiADKQMAQiWIhEKHla+vmLbem55/fkLj3MqV/M7y9YV/fDcDACAGIAYoAgBBCGo2AgAMAQsLIARBBGogDigCAE0EQCAZKAIAIQAgKCAGKAIANgIAICkgADYCACApKAIAIQAgJSAoKAIANgIAICYgADYCACAnQQE2AgAgJigCAEEBRiEEICUoAgAhACAnKAIAQQFGBEAgABDlASEAIARFBEAgABDRASEACyAXIAA2AgAFIAAoAgAhACAERQRAIAAQ0QEhAAsgFyAANgIACyADIAMpAwAgFygCAK1Ch5Wvr5i23puef36FNwMAIAMgAykDAEIXhiADKQMAQimIhELP1tO+0ser2UJ+Qvnz3fGZ9pmrFnw3AwAgBiAGKAIAQQRqNgIACwNAIAYoAgAgDigCAEkEQCADIAMpAwAgBigCAC0AAK1Cxc/ZsvHluuonfoU3AwAgAyADKQMAQguGIAMpAwBCNYiEQoeVr6+Ytt6bnn9+NwMAIAYgBigCAEEBajYCAAwBCwsgAyADKQMAIAMpAwBCIYiFNwMAIAMgAykDAELP1tO+0ser2UJ+NwMAIAMgAykDACADKQMAQh2IhTcDACADIAMpAwBC+fPd8Zn2masWfjcDACADIAMpAwAgAykDAEIgiIU3AwAgEyADKQMANwMAIBMpAwAhMCABJAUgMAUgByAENgIAIBZBADYCACAFIAcoAgBBKGo2AgAgCSAHKAIAQShqIAcoAgAoAkhqNgIAIAcoAgAhACAHKAIAKQMAQiBaBEAgCiAAKQMINwMAIAsgBygCACkDEDcDACAMIAcoAgApAxg3AwAgDSAHKAIAKQMgNwMAIAIgCikDAEIBhiAKKQMAQj+IhCALKQMAQgeGIAspAwBCOYiEfCAMKQMAQgyGIAwpAwBCNIiEfCANKQMAQhKGIA0pAwBCLoiEfDcDACACIAIpAwAgCikDABDoATcDACACIAIpAwAgCykDABDoATcDACACIAIpAwAgDCkDABDoATcDACACIAIpAwAgDSkDABDoATcDAAUgAiAAKQMYQsXP2bLx5brqJ3w3AwALIAIgAikDACAHKAIAKQMAfDcDAANAAkAgBSgCACEEIAUoAgBBCGogCSgCAEsNACAWKAIAIQAgIiAENgIAICMgADYCACAjKAIAIQAgHyAiKAIANgIAICAgADYCACAhQQE2AgAgICgCAEEBRiEEIB8oAgAhACAhKAIAQQFGBEAgABDmASEwIARFBEAgMBDkASEwCyAVIDA3AwAFIAApAwAhMCAERQRAIDAQ5AEhMAsgFSAwNwMACyAkQgAgFSkDABDnATcDACACIAIpAwAgJCkDAIU3AwAgAiACKQMAQhuGIAIpAwBCJYiEQoeVr6+Ytt6bnn9+QuPcypX8zvL1hX98NwMAIAUgBSgCAEEIajYCAAwBCwsgBEEEaiAJKAIATQRAIBYoAgAhACAdIAUoAgA2AgAgHiAANgIAIB4oAgAhACAaIB0oAgA2AgAgGyAANgIAIBxBATYCACAbKAIAQQFGIQQgGigCACEAIBwoAgBBAUYEQCAAEOUBIQAgBEUEQCAAENEBIQALIBQgADYCAAUgACgCACEAIARFBEAgABDRASEACyAUIAA2AgALIAIgAikDACAUKAIArUKHla+vmLbem55/foU3AwAgAiACKQMAQheGIAIpAwBCKYiEQs/W077Sx6vZQn5C+fPd8Zn2masWfDcDACAFIAUoAgBBBGo2AgALA0AgBSgCACAJKAIASQRAIAIgAikDACAFKAIALQAArULFz9my8eW66id+hTcDACACIAIpAwBCC4YgAikDAEI1iIRCh5Wvr5i23puef343AwAgBSAFKAIAQQFqNgIADAELCyACIAIpAwAgAikDAEIhiIU3AwAgAiACKQMAQs/W077Sx6vZQn43AwAgAiACKQMAIAIpAwBCHYiFNwMAIAIgAikDAEL5893xmfaZqxZ+NwMAIAIgAikDACACKQMAQiCIhTcDACATIAIpAwA3AwAgEykDACEwIAEkBSAwCwttAQN/IwUhAiMFQRBqJAUgAkEEaiEDIAIiBCAANgIAIAEoAgAEfyADIAEoAgggBCgCACABKAIAQT9xQcgAahEHADYCACADKAIAIQAgAiQFIAAFIAMgBCgCABCGBjYCACADKAIAIQAgAiQFIAALC5ABAQR/IwUhAiMFQRBqJAUgAkEIaiEDIAIhBCACQQRqIgUgADYCACABKAIABH8gBCABKAIIIAUoAgAgASgCAEE/cUHIAGoRBwA2AgAgBCgCAEEAIAUoAgAQ9gcaIAMgBCgCADYCACADKAIAIQAgAiQFIAAFIANBASAFKAIAEIgGNgIAIAMoAgAhACACJAUgAAsLWAECfyMFIQIjBUEQaiQFIAIiAyAANgIAIAIoAgBFBEAgAiQFDwsgASgCBARAIAEoAgggAygCACABKAIEQR9xQeQCahECACACJAUFIAMoAgAQhwYgAiQFCwvLCgEOfyMFIQYjBUHwCGokBSAGQeQIaiEKIAZBtAhqIQ0gBkGwCGohCyAGQawIaiERIAZBqAhqIQggBkHgCGoiDiAANgIAIAZB3AhqIgcgATYCACAGQdgIaiIPIAI2AgAgBkHUCGoiCSADNgIAIAZB0AhqIgEgBDYCACAGQcwIaiIDIAU2AgAgBkHICGoiAkEBIAko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AgAoAhBLBEAgASgCACABKAIAKAIQNgIMCyABKAIAQQRqIgMgAygCAEEHcTYCACABKAIAIgEgASgCACAAKAIAQQN0djYCACACJAULRgECfyMFIQIjBUEQaiQFIAJBBGoiAyAANgIAIAIgATYCACADKAIAIAIoAgAoAgAgAigCACgCDBCIAiADKAIAEIQCIAIkBQuLAQEDfyMFIQIjBUEQaiQFIAJBBGohAyACIgEgADYCACABKAIAQQFBARCHAiABKAIAEIQCIAEoAgAoAgwgASgCACgCEE8EfyADQQA2AgAgAygCACEAIAIkBSAABSADIAEoAgAoAgwgASgCACgCCGsgASgCACgCBEEAS2o2AgAgAygCACEAIAIkBSAACwtoAQJ/IwUhAyMFQRBqJAUgA0EIaiIEIAA2AgAgA0EEaiIAIAE2AgAgAyACNgIAIAQoAgAiASABKAIAIAAoAgAgBCgCACgCBHRyNgIAIAQoAgBBBGoiACAAKAIAIAMoAgBqNgIAIAMkBQt4AQJ/IwUhAyMFQRBqJAUgA0EIaiIEIAA2AgAgA0EEaiIAIAE2AgAgAyACNgIAIAQoAgAiASABKAIAIAAoAgAgAygCAEECdEHgHWooAgBxIAQoAgAoAgR0cjYCACAEKAIAQQRqIgAgACgCACADKAIAajYCACADJAULNwECfyMFIQIjBUEQaiQFIAJBBGoiAyAANgIAIAIgATYCACADKAIAIgMgAigCACIBEIoCIAIkBQtUAQJ/IwUhAiMFQRBqJAUgAkEEaiIDIAA2AgAgAiABNgIAIAMoAgAhAyACKAIAIQFBkOUALQAABEAgAyABEI0CIAIkBQUgAyABENEBEI0CIAIkBQsLVAECfyMFIQIjBUEQaiQFIAJBCGoiAyAANgIAIAIgATcDACADKAIAIQMgAikDACEBQZDlAC0AAARAIAMgARCMAiACJAUFIAMgARDkARCMAiACJAULCzMBAn8jBSECIwVBEGokBSACQQhqIgMgADYCACACIAE3AwAgAygCACACKQMANwAAIAIkBQszAQJ/IwUhAiMFQRBqJAUgAkEEaiIDIAA2AgAgAiABNgIAIAMoAgAgAigCADYAACACJAULuAEBBH8jBSECIwVBIGokBSACQRBqIgMgADYCACACQQxqIgQgATYCACACQQhqIgEgBCgCADYCACACQQRqIgUgASgCADYCACACIgAgASgCABCPAkH//wNxNgIAIAMoAgBBASACKAIAdDYCACADKAIAIAUoAgBBBGo2AgQgAygCACAEKAIAIgRBBGogAigCAAR/QQEgACgCAEEBa3QFQQELIgFBAnRqNgIIIAMoAgAgACgCADYCDCACJAULJgEBfyMFIQEjBUEQaiQFIAEgADYCACABKAIALgAAIQAgASQFIAALSgECfyMFIQMjBUEQaiQFIANBCGoiBCAANgIAIANBBGoiACABNgIAIAMgAjYCACAEKAIAIAAoAgAgAygCAEEBEPgBIQAgAyQFIAAL+gUBCX8jBSEEIwVB0ANqJAUgBEHEA2ohBSAEQcADaiIHIAA2AgAgBEG8A2oiACABNgIAIARBuANqIgogAjYCACAEQbQDaiICIAM2AgAgBEGwA2oiCSAHKAIANgIAIARBrANqIgEgCSgCADYCACAEQagDaiILIAkoAgAgACgCAGo2AgAgBEGkA2oiA0EMNgIAIARBoANqIgdBBjYCACACKAIAQQFNBEAgBUEANgIAIAUoAgAhACAEJAUgAA8LIARBnANqIgAgBEEgaiIIIAMgCigCACACKAIAEPQBNgIAIAAoAgAQzQFBAEchDCAAKAIAIQYgDARAIAUgBjYCACAFKAIAIQAgBCQFIAAPCyAGIAIoAgBGBEAgBUEBNgIAIAUoAgAhACAEJAUgAA8LIAAoAgBBAUYEQCAFQQA2AgAgBSgCACEAIAQkBSAADwsgByAHKAIAIAIoAgAgAygCABD6ATYCACAEQZgDaiIGIAQiACAHKAIAIAggAigCACADKAIAEPsBNgIAIAYoAgAQzQEEQCAFIAYoAgA2AgAgBSgCACEAIAQkBSAADwsgBEGUA2oiBiABKAIAIAsoAgAgASgCAGsgACADKAIAIAcoAgAQ8gE2AgAgBigCABDNAUEARyEIIAYoAgAhBiAIBEAgBSAGNgIAIAUoAgAhACAEJAUgAA8LIAEgASgCACAGajYCACAEQZADaiIGIARBoAFqIgggACADKAIAIAcoAgAgBEHgAGpBwAAQ8AE2AgAgBigCABDNAQRAIAUgBigCADYCACAFKAIAIQAgBCQFIAAPCyAEQYwDaiIAIAEoAgAgCygCACABKAIAayAKKAIAIAIoAgAgCBD+ATYCACAAKAIAEM0BQQBHIQMgACgCACECIAMEQCAFIAI2AgAgBSgCACEAIAQkBSAADwsgAgR/IAEgASgCACAAKAIAajYCACAFIAEoAgAgCSgCAGs2AgAgBSgCACEAIAQkBSAABSAFQQA2AgAgBSgCACEAIAQkBSAACwulBQEGfyMFIQUjBUHAAmokBSAFQaACaiEGIAVBnAJqIgcgADYCACAFQZgCaiIJIAE2AgAgBUGUAmoiCiACNgIAIAVBkAJqIgIgAzYCACAFQYwCaiIIIAQ2AgAgBUGIAmoiBCAHKAIANgIAIAIoAgBB/wFLBEAgBkFSNgIAIAYoAgAhACAFJAUgAA8LIAUhACAFQYACaiEDIAVBpAJqIgdBADoAACAFQYQCaiIBQQE2AgADQCABKAIAIAgoAgBBAWpJBEAgByABKAIAaiAIKAIAQQFqIAEoAgBrOgAAIAEgASgCAEEBajYCAAwBCwsgAUEANgIAA0AgASgCACACKAIASQRAIAAgASgCAGogByAKKAIAIAEoAgBBAnRqLQACaiwAADoAACABIAEoAgBBAWo2AgAMAQsLIAMgBCgCAEEBaiAJKAIAQQFrIAAgAigCABCRAjYCACADKAIAEM0BQQBHIQcgAygCACEIIAcEQCAGIAg2AgAgBigCACEAIAUkBSAADwsgCEEBSyADKAIAIAIoAgBBAm5JcQRAIAQoAgAgAygCADoAACAGIAMoAgBBAWo2AgAgBigCACEAIAUkBSAADwsgAigCAEGAAUsEQCAGQX82AgAgBigCACEAIAUkBSAADwsgAigCAEEBakECbkEBaiAJKAIASwRAIAZBun82AgAgBigCACEAIAUkBSAADwsgBCgCACACKAIAQf8AajoAACAAIAIoAgBqQQA6AAAgAUEANgIAA0AgASgCACACKAIASQRAIAQoAgAgASgCAEECbkEBamogACABKAIAai0AAEEEdCAAIAEoAgBBAWpqLQAAajoAACABIAEoAgBBAmo2AgAMAQsLIAYgAigCAEEBakECbkEBajYCACAGKAIAIQAgBSQFIAALmAcBEH8jBSEEIwVB0ANqJAUgBEG8A2ohBSAEQbgDaiIMIAA2AgAgBEG0A2oiDyABNgIAIARBsANqIgAgAjYCACAEQawDaiIGIAM2AgAgBEGoA2oiAUEANgIAIARBpANqIgJBADYCACAEQaADaiINIARB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akEAQfwHIAMoAgBBAnRrEPYHGiANQQhqIgggBygCACARKAIAIAEoAgBBgAhqIAMoAgAgACgCABCSAjYCACAIKAIAEM0BBEAgDiAIKAIANgIAIA4oAgAhACANJAUgAA8LIA1BBGohCyANIQACQCAEKAIABEAgBCgCACgCAARAIAsgBSgCACABKAIAIAMoAgAQnwI2AgAgACABKAIAQYAIaiABKAIAIAMoAgAQnwI2AgAgCygCACAIKAIAIAAoAgBqSwRAIAgoAgBBDGogAigCAEkNAwsgDiAGKAIAIAcoAgAgCigCACAPKAIAIAIoAgAgECgCACAFKAIAIAkoAgAQnQI2AgAgDigCACEAIA0kBSAADwsLCyAIKAIAQQxqIAIoAgBPBEAgDkEANgIAIA4oAgAhACANJAUgAA8LIAcgBygCACAIKAIAajYCACAEKAIABEAgBCgCAEEANgIACyAFKAIABEAgBSgCACABKAIAQYAIakGACBD0BxoLIA4gBigCACAHKAIAIAooAgAgDygCACACKAIAIBAoAgAgASgCAEGACGogCSgCABCdAjYCACAOKAIAIQAgDSQFIAAL+gIBBX8jBSEIIwVBMGokBSAIQSBqIgogADYCACAIQRxqIgkgATYCACAIQRhqIgEgAjYCACAIQRRqIgsgAzYCACAIQRBqIgIgBDYCACAIQQxqIgwgBTYCACAIQQhqIgUgBjYCACAIQQRqIgYgBzYCACAJKAIAIQAgASgCACAJKAIAayEBIAsoAgAhAyACKAIAIQQgBSgCACEFIAYoAgAhBiAMKAIABH8gACABIAMgBCAFIAYQlwIFIAAgASADIAQgBSAGEJkCCyEDIAhBJGohASAIIgAgAzYCACAIKAIAEM0BQQBHIQQgCCgCACEDIAQEQCABIAM2AgAgASgCACEAIAgkBSAADwsgA0UEQCABQQA2AgAgASgCACEAIAgkBSAADwsgCSAJKAIAIAAoAgBqNgIAIAkoAgAgCigCAGsgAigCAEEBa08EfyABQQA2AgAgASgCACEAIAgkBSAABSABIAkoAgAgCigCAGs2AgAgASgCACEAIAgkBSAACwutAQEDfyMFIQMjBUEgaiQFIANBEGoiBCAANgIAIANBDGoiBSABNgIAIANBCGoiASACNgIAIANBBGoiAkEANgIAIAMiAEEANgIAA0Ag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AiQFIAALnRIBBH8jBSEGIwVBIGokBSAGQRBqIQQgBiIFQQxqIgMgADYCACAFQQhqIgAgATYCACAFQQRqIgEgAjYCAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAQQprDsMIABYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAQIDBAUGBwgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWERITFBUWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgoLDBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWDg8QFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWCRYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFg0WCyABKAIAQQFLBEAgBEFYNgIADBcFIAMoAgAgASgCADYCACAEIAMoAgAoAgA2AgAMFwsACyAFIAEoAgA2AgAgBSgCAEEWSgRAIAVBFjYCAAsgBSgCAARAIAMoAgAgBSgCAEEASDYCMCADKAIAIAUoAgA2AiwLIAMoAgAoAixBAE4EQCAEIAMoAgAoAiw2AgAMFgUgBEEANgIADBYLAAsgASgCAEEASwRAIAEoAgBBCkkgASgCAEEeS3IEQCAEQVY2AgAMFgsLIAMoAgAgASgCADYCBCAEIAMoAgAoAgQ2AgAMFAsgASgCAEEASwRAIAEoAgBBBkkgASgCAEEeS3IEQCAEQVY2AgAMFQsLIAMoAgAgASgCADYCDCAEIAMoAgAoAgw2AgAMEwsgASgCAEEASwRAIAEoAgBBBkkgASgCAEEdS3IEQCAEQVY2AgAMFAsLIAMoAgAgASgCADYCCCAEIAMoAgAoAgg2AgAMEgsgASgCAEEASwRAIAEoAgBBAUkgASgCAEEdS3IEQCAEQVY2AgAMEwsLIAMoAgAgASgCADYCECAEIAEoAgA2AgAMEQsgASgCAEEASwRAIAEoAgBBA0kgASgCAEEHS3IEQCAEQVY2AgAMEgsLIAMoAgAgASgCADYCFCAEIAMoAgAoAhQ2AgAMEAsgAygCACABKAIANgIYIAQgAygCACgCGDYCAAwPCyABKAIAQQBLBEAgASgCAEEBSSABKAIAQQhLcgRAIARBVjYCAAwQCwsgAygCACABKAIANgIc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BiQFIAALC8kBAQN/IwUhAyMFQSBqJAUgA0EQaiEEIANBDGoiBSAANgIAIANBCGoiACABNgIAIANBBGoiASACNgIAIAAoAgAgASgCAEkEQCAEQWI2AgAgBCgCACEAIAMkBSAADwsgAyIAQQA2AgACQAJAA0AgACgCACABKAIASw0CIAUoAgAgACgCAEEBdGouAQBFDQEgACAAKAIAQQFqNgIADAALAAsgBEFiNgIAIAQoAgAhACADJAUgAA8LIARBADYCACAEKAIAIQAgAyQFIAALogMBBH8jBSEEIwVBIGokBSAEQQhqIQUgBEEcaiIDIAA2AgAgBEEYaiIGIAE2AgAgBEEUaiIBIAI2AgAgBEEQaiIAIAYoAgA2AgAgBEEMaiICQQE2AgAgBigCACADKAIAKAIARwRAIAUgAygCACgCACADKAIAKAIEazYCACADKAIAIAMoAgAoAgw2AhAgAygCACAFKAIANgIMIAMoAgAgAygCACgCBDYCCCADKAIAIAAoAgAgBSgCAGs2AgQgAygCACgCDCADKAIAKAIQa0EISQRAIAMoAgAgAygCACgCDDYCEAsgAkEANgIACyADKAIAIAAoAgAgASgCAGo2AgAgACgCACABKAIAaiADKAIAKAIIIAMoAgAoAhBqSyAAKAIAIAMoAgAoAgggAygCACgCDGpJcUUEQCACKAIAIQAgBCQFIAAPCyAEQQRqIgUgACgCACABKAIAaiADKAIAKAIIazYCACAEIAUoAgAgAygCACgCDEoEfyADKAIAKAIMBSAFKAIACyIANgIAIAMoAgAgBCgCADYCECACKAIAIQAgBCQFIAAL9wIBCX8jBSEDIwVBQGskBSADQQhqIQkgA0EEaiEEIAMhByADQTBqIgggADYCACADQSxqIgAgATYCACADQShqIgUgAjYCACADQSRqIgogCCgCACgCJDYCACADQSBqIgIgACgCACgCCDYCACADQRxqIgEgACgCACgCEDYCACADQRhqIgsgCCgCACgCBDYCACADQRRqIgYgCygCACAIKAIAKAIYajYCACADQRBqIgAgBSgCAEF4ajYCACADQQM2AgwDQCAGKAIAQQJqIAAoAgBNBEAgCSAGKAIAIAsoAgBrNgIAIARBADYCAANAIAYoAgAhBSAEKAIAQQNJBEAgByAFIAQoAgBqIAIoAgAgASgCABC7AjYCAAJAAkAgBCgCAEUNACAKKAIAIAcoAgBBAnRqKAIARQ0ADAELIAooAgAgBygCAEECdGogCSgCACAEKAIAajYCAAsgBCAEKAIAQQFqNgIADAELCyAGIAVBA2o2AgAMAQsLIAMkBQvjAwEMfyMFIQMjBUFAayQFIANBDGohCCADQQhqIQQgA0EEaiEKIAMhCSADQTxqIgYgADYCACADQThqIgAgATYCACADQTRqIgcgAjYCACADQTBqIgsgBigCACgCJDYCACADQSxqIg0gACgCACgCCDYCACADQShqIg4gACgCACgCEDYCACADQSRqIgIgBigCACgCLDYCACADQSBqIgEgACgCACgCBDYCACADQRxqIgwgBigCACgCBDYCACADQRhqIgUgDCgCACAGKAIAKAIYajYCACADQRRqIgAgBygCAEF4ajYCACADQQM2AhADQCAFKAIAQQJqIAAoAgBNBEAgCCAFKAIAIAwoAgBrNgIAIARBADYCAANAAkAgBSgCACEHIAQoAgBBA08NACAKIAcgBCgCAGogASgCACAOKAIAELsCNgIAIAkgBSgCACAEKAIAaiANKAIAQQgQuwI2AgAgBCgCAEUEQCACKAIAIAooAgBBAnRqIAgoAgAgBCgCAGo2AgALAkACQCAEKAIARQ0AIAsoAgAgCSgCAEECdGooAgBFDQAMAQsgCygCACAJKAIAQQJ0aiAIKAIAIAQoAgBqNgIACyAEIAQoAgBBAWo2AgAMAQsLIAUgB0EDajYCAAwBCwsgAyQFC1ABAn8jBSEDIwVBEGokBSADQQhqIgQgADYCACADQQRqIgAgATYCACADIAI2AgAgBCgCACAAKAIAIAMoAgAgACgCACgCEBDJAiEAIAMkBSAAC7cCAQZ/IwUhBCMFQUBrJAUgBEEMaiIFIAA2AgAgBEEIaiIAIAE2AgAgBEEEaiIBIAI2AgAgBCADNgIAIAAoAgAhAiABKAIAIQEgBCgCACEDIAAoAgAoAhAhBiAEQTBqIgAgBSgCADYCACAEQSxqIgUgAjYCACAEQShqIgcgATYCACAEQSRqIgggAzYCACAEQSBqIgkgBjYCACAEQRxqIgZBADYCACAEQRhqIgIgACgCACgCBDYCACAEQRRqIgMgBygCACACKAIAazYCACAEQRBqIgEgACgCACgCGDYCAANAIAEo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IAQ2AgAgDEEYaiIEIAU2AgAgDEEUaiIFIAY2AgAgDEEQaiIGIAc2AgAgDEEMaiIHIAg2AgAgDEEIaiIIIAk2AgAgDEEEaiIJIAo2AgAgDCALNgIAIAwoAgAEfyANIA4oAgAgACgCACABKAIAIAIoAgAgAygCACAEKAIAIAUoAgAgBigCACAHKAIAIAgoAgAgCSgCABDeAjYCACANKAIAIQAgDCQFIAAFIA0gDigCACAAKAIAIAEoAgAgAigCACADKAIAIAQoAgAgBSgCACAGKAIAIAcoAgAgCCgCACAJKAIAEN4CNgIAIA0oAgAhACAMJAUgAAsLlwsBCn8jBSELIwVB0AFqJAUgC0HAAWohDSALQShqIgwgADYCACALQSRqIgAgATYCACALQSBqIgEgAjYCACALQRxqIgIgAzYCACALQRhqIgMgBDYCACALQRRqIgQgBTYCACALQRBqIgUgBjYCACALQQxqIgYgBzYCACALQQhqIgcgCDYCACALQQRqIgggCTYCACALIAo2AgAgACgCACEAIAEoAgAhASACKAIAIQIgAygCACEDIAQoAgAhBCAFKAIAIQUgBigCACEGIAcoAgAhByAIKAIAIQ4gCygCACEPIAtBvAFqIhAgDCgCADYCACALQbgBaiIMIAA2AgAgC0G0AWoiESABNgIAIAtBsAFqIgkgAjYCACALQawBaiICIAM2AgAgC0GoAWoiCCAENgIAIAtBpAFqIgQgBTYCACALQaABaiIKIAY2AgAgC0GcAWoiAyAHNgIAIAtBmAFqIgEgDjYCACALQZQBaiISIA82AgAgC0HMAGoiBSALQYABaiIAIBAoAgAgDCgCABCAAjYCACAFKAIAEM0BBEAgDUG6fzYCACANKAIAIQAgCyQFIAAPCyALQfAAaiITIBEoAgAgCSgCACABKAIAQQFrai0AABCBAiALQeAAaiIRIAIoAgAgCCgCACABKAIAQQFrai0AABCBAiALQdAAaiIUIAQoAgAgCigCACABKAIAQQFrai0AABCBAiAAIAMoAgAgASgCAEEDdGpBfGovAQAgCigCACABKAIAQQFrai0AAEECdEGwNGooAgAQiAIgABCEAiAAIAMoAgAgASgCAEEDdGpBfmovAQAgCSgCACABKAIAQQFrai0AAEECdEHANWooAgAQiAIgABCEAiALQcgAaiECIAtBxABqIQQgEigCAARAIAIgCCgCACABKAIAQQFrai0AADYCACAEIAIoAgAgAigCAEEYSQR/IAIoAgAFQRgLazYCACAEKAIABEAgACADKAIAIAEoAgBBAWtBA3RqKAIAIAQoAgAQiAIgABCEAgsgACADKAIAIAEoAgBBAWtBA3RqKAIAIAQoAgB2IAIoAgAgBCgCAGsQiAIFIAAgAygCACABKAIAQQFrQQN0aigCACAIKAIAIAEoAgBBAWtqLQAAEIgCCyALQcYBaiEMIAtBxQFqIQ4gC0HEAWohDyALQTxqIQUgC0E4aiEEIAtBNGohBiALQTBqIQcgC0EsaiEQIAAQhAIgC0FAayICIAEoAgBBAms2AgADQCACKAIAIAEoAgBJBEAgDCAKKAIAIAIoAgBqLAAAOgAAIA4gCCgCACACKAIAaiwAADoAACAPIAkoAgAgAigCAGosAAA6AAAgBSAMLQAAQQJ0QbA0aigCADYCACAEIA4tAAA2AgAgBiAPLQAAQQJ0QcA1aigCADYCACAAIBEgDi0AABCCAiAAIBMgDy0AABCCAiAAEIQCIAAgFCAMLQAAEIICIAAQhAIgACADKAIAIAIoAgBBA3RqLwEEIAUoAgAQiAIgBSgCACAGKAIAakEYSwRAIAAQhAILIAAgAygCACACKAIAQQN0ai8BBiAGKAIAEIgCIAAQhAIgEigCAARAIAcgBCgCACAEKAIAQRhJBH8gBCgCAAVBGAtrNgIAIAcoAgAEQCAAIAMoAgAgAigCAEEDdGooAgAgBygCABCIAiAAEIQCCyAAIAMoAgAgAigCAEEDdGooAgAgBygCAHYgBCgCACAHKAIAaxCIAgUgACADKAIAIAIoAgBBA3RqKAIAIAQoAgAQiAILIAAQhAIgAiACKAIAQX9qNgIADAELCyAAIBMQhQIgACAREIUCIAAgFBCFAiAQIAAQhgI2AgAgECgCAAR/IA0gECgCADYCACANKAIAIQAgCyQFIAAFIA1Bun82AgAgDSgCACEAIAskBSAACwtFAQJ/IwUhAiMFQRBqJAUgAkEEaiIDIAA2AgAgAiABNgIAIAIoAgBBAEdBJGxB4B5qIAMoAgBBAnRqKAIAIQAgAiQFIAALnDIBeX8jBSEGIwVBgARqJAUgBkH0A2ohPCAGQfADaiE9IAZB7ANqISwgBkHoA2ohbyAGQeQDaiFwIAZB4ANqIS0gBkHcA2ohcSAGQdgDaiEuIAZB1ANqISQgBkHQA2ohHCAGQcwDaiE+IAZByANqIQcgBkHEA2ohEyAGQcADaiFWIAZBvANqIT8gBkG4A2ohJSAGQbQDaiFAIAZBsANqIQsgBkGsA2ohDyAGQagDaiEvIAZBpANqIVcgBkGgA2ohHSAGQZwDaiFYIAZBmANqIUEgBkGUA2ohWSAGQZADaiEXIAZBjANqIVogBkGIA2ohWyAGQYQDaiFyIAZBgANqIUIgBkH8AmohQyAGQfgCaiEwIAZB9AJqIXMgBkHwAmohdCAGQewCaiExIAZB6AJqIXUgBkHkAmohMiAGQeACaiEmIAZB3AJqIR4gBkHYAmohRCAGQdQCaiEIIAZB0AJqIRQgBkHMAmohXCAGQcgCaiFFIAZBxAJqIScgBkHAAmohRiAGQbwCaiEMIAZBuAJqIRAgBkG0AmohMyAGQbACaiFdIAZBrAJqIR8gBkGoAmohXiAGQaQCaiFHIAZBoAJqIV8gBkGcAmohGCAGQZgCaiFgIAZBlAJqIWEgBkGQAmohdiAGQYwCaiFIIAZBiAJqIUkgBkGEAmohNCAGQYACaiF3IAZB/AFqIXggBkH4AWohNSAGQfQBaiF5IAZB8AFqITYgBkHsAWohKCAGQegBaiEgIAZB5AFqIUogBkHgAWohCSAGQdwBaiEVIAZB2AFqIWIgBkHUAWohSyAGQdABaiEpIAZBzAFqIUwgBkHIAWohDSAGQcQBaiERIAZBwAFqITcgBkG8AWohYyAGQbgBaiEhIAZBtAFqIWQgBkGwAWohTSAGQawBaiFlIAZBqAFqIRkgBkGkAWohZiAGQaABaiFnIAZBnAFqIXogBkGYAWohTiAGQZQBaiFPIAZBkAFqITggBkGMAWoheyAGQYgBaiF8IAZBhAFqITkgBkGAAWohfSAGQfwAaiE6IAZB+ABqISogBkH0AGohIiAGQfAAaiFQIAZB7ABqIQogBkHoAGohFiAGQeQAaiFoIAZB4ABqIVEgBkHcAGohKyAGQdgAaiFSIAZB1ABqIQ4gBkHQAGohEiAGQcwAaiE7IAZByABqIWkgBkHEAGohIyAGQUBrIWogBkE8aiFTIAZBOGohayAGQTRqIRogBkEwaiFsIAZBLGohbSAGQShqIX4gBkEkaiEbIAZBIGoi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IFIoAgBJBEAgaiAKKAIAIDkoAgAgOigCABC7AjYCACBTIAooAgAgIigCAGs2AgAgayAqKAIAIGooAgBBAnRqKAIANgIAIBogIigCACBrKAIAajYCACAqKAIAIGooAgBBAnRqIFMoAgA2AgACQCAOKAIAQQBLIAooAgBBAWogDigCAGsQ0AEgCigCAEEBahDQAUZxBEAgIyAKKAIAQQVqIAooAgBBBWogDigCAGsgKygCABC8AkEEajYCACAKIAooAgBBAWo2AgAgTygCACAKKAIAIBYoAgBrIBYoAgBBACAjKAIAQQNrEPkCBSBrKAIAIGgoAgBLBEAgGigCABDQASAKKAIAENABRgRAICMgCigCAEEEaiAaKAIAQQRqICsoAgAQvAJBBGo2AgAgbCAKKAIAIBooAgBrNgIAA0ACQCAKKAIAIBYoAgBLIBooAgAgUSgCAEtxRQ0AIAooAgBBf2otAAAgGigCAEF/ai0AAEcNACAKIAooAgBBf2o2AgAgGiAaKAIAQX9qNgIAICMgIygCAEEBajYCAAwBCwsgEiAOKAIANgIAIA4gbCgCADYCACBPKAIAIAooAgAgFigCAGsgFigCACBsKAIAQQJqICMoAgBBA2sQ+QIMAwsLIAogCigCACAKKAIAIBYoAgBrQQh1IH0oAgBqajYCAAwDCwsgCiAKKAIAICMoAgBqNgIAIBYgCigCADYCAAJAIAooAgAgUigCAE0EQCBTKAIAQQJqIQAgKigCACAiKAIAIFMoAgBqQQJqIDkoAgAgOigCABC7AkECdGogADYCACAKKAIAQX5qICIoAgBrIQAgKigCACAKKAIAQX5qIDkoAgAgOigCABC7AkECdGogADYCAANAIAooAgAgUigCAEsNAiASKAIAQQBLIAooAgAQ0AEgCigCACASKAIAaxDQAUZxRQ0CIG0gCigCAEEEaiAKKAIAQQRqIBIoAgBrICsoAgAQvAJBBGo2AgAgfiASKAIANgIAIBIgDigCADYCACAOIH4oAgA2AgAgCigCACAiKAIAayEAICooAgAgCigCACA5KAIAIDooAgAQuwJBAnRqIAA2AgAgTygCAEEAIBYoAgBBACBtKAIAQQNrEPkCIAogCigCACBtKAIAajYCACAWIAooAgA2AgAMAAsACwsMAQsLIA4oAgAhACA7KAIAIQEgOCgCACAO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ai0AAEcNAyAHIAcoAgBBf2o2AgAgIiAiKAIAQX9qNgIAIA0gDSgCAEEBajYCAAwACwALCyAHIAcoAgAgBygCACALKAIAa0EIdUEBamo2AgAMAwsgFyAMKAIANgIAIAwgSigCADYCACBgKAIAIAcoAgAgCygCAGsgCygCACBKKAIAQQJqIA0oAgBBA2sQ+QILIAcgBygCACANKAIAajYCACALIAcoAgA2AgACQCAHKAIAIGIoAgBNBEAgNygCAEECaiEAIDUoAgAgGygCACA3KAIAakECaiBHKAIAIEYoAgAQuwJBAnRqIAA2AgAgHygCACAbKAIAIDcoAgBqQQJqIDQoAgBBCBC7AkECdGogADYCACAHKAIAQX5qIBsoAgBrIQAgNSgCACAHKAIAQX5qIEcoAgAgRigCABC7AkECdGogADYCACAfKAIAIAcoAgBBfmogNCgCAEEIELsCQQJ0aiAANgIAA0AgBygCACBiKAIASw0CIBcoAgBBAEsgBygCABDQASAHKAIAIBcoAgBrENABRnFFDQIgdiAHKAIAQQRqIAcoAgBBBGogFygCAGsgICgCABC8AkEEajYCACCUASAXKAIANgIAIBcgDCgCADYCACAMIJQBKAIANgIAIAcoAgAgGygCAGshACA1KAIAIAcoAgAgRygCACBGKAIAELsCQQJ0aiAANgIAIAcoAgAgGygCAGshACAfKAIAIAcoAgAgNCgCAEEIELsCQQJ0aiAANgIAIGAoAgBBACALKAIAQQAgdigCAEEDaxD5AiAHIAcoAgAgdigCAGo2AgAgCyAHKAIANgIADAALAAsLDAELCyAMKAIAIQAgSSgCACEBIEUoAgAgDCgCAAR/IAAFIAELNgIAIBcoAgAhACBJKAIAIQEgRSgCACAXKAIABH8gAAUgAQs2AgQgMyAgKAIAIAsoAgBrNgIAIDMoAgAhACAGJAUgAA8LIG0oAgAhBCABKAIAIQEgACgCACEAIAIoAgAhAiADKAIAIQMgUiBsKAIANgIAIGYgBDYCACBTIAE2AgAggAEgADYCACCYASACNgIAIJkBIAM2AgAgVEEFNgIAICkgUigCACgCJDYCACA8IIABKAIAKAIINgIAID0gUigCACgCLDYCACBVIIABKAIAKAIENgIAIB0gUigCACgCBDYCACBnIJgBKAIANgIAIAkgZygC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BE8EQCAcKAIAIB0oAgBKBEAgASAPKAIANgIAIAIgDigCADYCACADIAAoAgA2AgAMAgsLIBQoAgBBAkcNAiAAKAIAIA0oAgBPDQIgACAAKAIAQQFqNgIAAkAgAigCAARAIAcoAgBBAEsgACgCABDQASAAKAIAIAcoAgBrENABRnEEQCAQIAAoAgBBBGogACgCAEEEaiAHKAIAayAEKAIAELwCQQRqNgIAIB4gECgCAEECdDYCACAfIAEoAgBBAnQgAigCAEEBahDUAWtBAWo2AgAgECgCAEEETwRAIB4oAgAgHygCAEwNAyABIBAoAgA2AgAgAkEANgIAIAMgACgCADYCAAsLCwsgEUH/wdcvNgIAIBIgCigCACATKAIAIAAoAgAgBCgCACARIBYoAgBBB3FBuAFqEQkANgIAICAgEigCAEECdCARKAIAQQFqENQBazYCACAhIAEoAgBBAnQgAigCAEEBahDUAWtBB2o2AgAgEigCAEEESQ0CICAoAgAgISgCAEwNAiABIBIoAgA2AgAgAiARKAIANgIAIAMgACgCADYCAAwACwALCyACKAIABEADQAJAIAMoAgAgBSgCAEsgAygCACACKAIAQQJrayAVKAIAS3FFDQAgAygCAEF/ai0AACADKAIAIAIoAgBrLQABRw0AIAMgAygCAEF/ajYCACABIAEoAgBBAWo2AgAMAQsLIAggBygCADYCACAHIAIoAgBBAms2AgALCyAiIAMoAgAgBSgCAGs2AgAgGSgCACAiKAIAIAUoAgAgAigCACABKAIAQQNrEPkCIAAgAygCACABKAIAaiIjNgIAIAUgIzYCAANAAkAgACgCACANKAIATSAIKAIAQQBLcUUNACAAKAIAENABIAAoAgAgCCgCAGsQ0AFHDQAgASAAKAIAQQRqIAAoAgBBBGogCCgCAGsgBCgCABC8AkEEajYCACACIAgoAgA2AgAgCCAHKAIANgIAIAcgAigCADYCACAZKAIAQQAgBSgCAEEAIAEoAgBBA2sQ+QIgACAAKAIAIAEoAgBqNgIAIAUgACgCADYCAAwBCwsMAQsLIAcoAgAhACAMKAIAIQEgCygCACAHKAIABH8gAAUgAQs2AgAgCCgCACEAIAwoAgAhASALKAIAIAgoAgAEfyAABSABCzYCBCAEKAIAIAUoAgBrIQAgBiQFIAALjREB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IRwgBkHoD2ohkQIgBkHkD2ohugMgBkHgD2ohnQEgBkHcD2ohkgIgBkHYD2ohkwIgBkHUD2oh2QEgBkHQD2ohUyAGQcwPaiGUAiAGQcgPaiGVAiAGQcQPaiHsAiAGQcAPaiGWAiAGQbwPaiHaASAGQbgPaiHbASAGQbQPaiGXAiAGQbAPaiG7AyAGQawPaiEvIAZBqA9qIe0CIAZBpA9qIWogBkGgD2ohvAMgBkGcD2ohayAGQZgPaiGeASAGQZQPaiHuAiAGQZAPaiFUIAZBjA9qIe8CIAZBiA9qIWwgBkGED2ohbSAGQYAPaiG9AyAGQfwOaiG+AyAGQfgOaiHcASAGQfQOaiECIAZB8A5qIZ8BIAZB7A5qIZgCIAZB6A5qIUMgBkHkDmohoAEgBkHgDmohFCAGQdwOaiFEIAZB2A5qIZkCIAZB1A5qIb8DIAZB0A5qIZoCIAZBzA5qIW4gBkHIDmohwAMgBkHEDmohoQEgBkHADmoh8AIgBkG8DmohogEgBkG4DmohKCAGQbQOaiHBAyAGQbAOaiE6IAZBrA5qIfECIAZBqA5qIfICIAZBpA5qIR0gBkGgDmohmwIgBkGcDmohwgMgBkGYDmohowEgBkGUDmohnAIgBkGQDmohnQIgBkGMDmoh3QEgBkGIDmohVSAGQYQOaiGeAiAGQYAOaiGfAiAGQfwNaiHzAiAGQfgNaiGgAiAGQfQNaiHeASAGQfANaiHfASAGQewNaiGhAiAGQegNaiHDAyAGQeQNaiEwIAZB4A1qIfQCIAZB3A1qIW8gBkHYDWohxAMgBkHUDWohcCAGQdANaiGkASAGQcwNaiH1AiAGQcgNaiFWIAZBxA1qIfYCIAZBwA1qIXEgBkG8DWohciAGQbgNaiHFAyAGQbQNaiHGAyAGQbANaiHgASAGQawNaiEDIAZBqA1qIaUBIAZBpA1qIaICIAZBoA1qIUUgBkGcDWohpgEgBkGYDWohFSAGQZQNaiFGIAZBkA1qIaMCIAZBjA1qIccDIAZBiA1qIaQCIAZBhA1qIXMgBkGADWohyAMgBkH8DGohpwEgBkH4DGoh9wIgBkH0DGohqAEgBkHwDGohKSAGQewMaiHJAyAGQegMaiE7IAZB5AxqIfgCIAZB4AxqIfkCIAZB3AxqIR4gBkHYDGohpQIgBkHUDGohygMgBkHQDGohqQEg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NgIAIJIBKAIAIKADKAIASyAaKAIAIJIBKAIAaiBQKAIARnIEQCBPKAIAIC4oAgBBAWo2Ahgg1AJBATYCAAwFCwsLCwsgoQMoAgAgogMoAgBBAnRqIC4oAgA2AgACQAJAAkADQAJAIKQDIKQDKAIAIgdBf2o2AgAgB0UNACAjKAIAINwCKAIATQ0AIP4BINcCKAIAICMoAgAgzQEoAgBxQQN0ajYCACDYAigCACEHINkCKAIAIQggDyDYAigCACDZAigCAEkEfyAHBSAICzYCAAJAAkAg1QIoAgBFDQAgIygCACAPKAIAaiBiKAIATw0AIM8BIPsBKAIAICMoAgBqNgIAIBooAgAgDygCAGogzwEoAgAgDygCAGogUCgCACDaAigCACDbAigCABC9AiEHIA8gDygCACAHajYCACAjKAIAIA8oAgBqIGIoAgBPBEAgzwEgzAEoAgAgIygCAGo2AgALDAELIM8BIMwBKAIAICMoAgBqNgIAIBooAgAgDygCAGogzwEoAgAgDygCAGogUCgCABC8AiEHIA8gDygCACAHajYCAAsgDygCACCPASgCAEsEQCAPKAIAIN0CKAIAICMoAgBrSwRAIN0CICMoAgAgDygCAGo2AgALII8BIA8oAgA2AgAgjgEoAgAgNigCAEEDdGogLigCACAjKAIAa0ECajYCACCOASgCACA2KAIAQQN0aiAPKAIANgIEIDYgNigCAEEBajYCACAPKAIAQYAgSw0BIBooAgAgDygCAGogUCgCAEYNAQsgIygCACEHIM8BKAIAIA8oAgBqLQAAIBooAgAgDygCAGotAABIBEAg/AEoAgAgBzYCACDYAiAPKAIANgIAICMoAgAgowMoAgBNDQMg/AEg/gEoAgBBBGo2AgAgIyD+ASgCACgCBDYCAAUg/QEoAgAgBzYCACDZAiAPKAIANgIAICMoAgAgowMoAgBNDQQg/QEg/gEoAgA2AgAgIyD+ASgCACgCADYCAAsMAQsLDAILIPwBIPsDNgIADAELIP0BIPsDNgIACyD9ASgCAEEANgIAIPwBKAIAQQA2AgAgTygCACDdAigCAEEIazYCGCDUAiA2KAIANgIACyDQASDUAigCADYCAAwECyCTASgCACEHIJQBKAIAIQgg0QEoAgAhCSDSASgCACEKIIECKAIAIQwgggIoAgAhECCDAigCACERIIQCKAIAIRIgSSBkKAIANgIAILgBIAc2AgAgFyAINgIAIEogCTYCACC3AiAKNgIAIN8DIAw2AgAguAIgEDYCACB/IBE2AgAg4AMgEjYCACC5AUEGNgIAIIsDILgBKAIAKAIUQf8fSQR/ILgBKAIAKAIUBUH/HwsiBzYCACC6ASBJKAIAKAIENgIAICsgFygCACC6ASgCAGs2AgAg4QMguAEoAgAoAgg2AgAgPSC5ASgCAEEDRgR/QQMFQQQLNgIAIIwDIEkoAgAoAiQ2AgAgjQMgFygCACDhAygCACC5ASgCABC7AjYCACAgIIwDKAIAII0DKAIAQQJ0aigCADYCACC5AiBJKAIAKAIsNgIAIOIDILgBKAIAKAIEQQFrNgIAILsBQQEg4gMoAgB0QQFrNgIAILoCQQA2AgAguwJBADYCACDvASBJKAIAKAIINgIAIFwgSSgCACgCDDYCACC8AiDvASgCACBcKAIAajYCACC9AiC6ASgCACBcKAIAajYCACCOAyC7ASgCACArKAIATwR/QQAFICsoAgAguwEoAgBrCyIHNgIAIL4CIEkoAgAoAhA2AgAg8AEguQIoAgAgKygCACC7ASgCAHFBA3RqNgIAIPEBILkCKAIAICsoAgAguwEoAgBxQQN0akEEajYCACC/AiArKAIAQQlqNgIAIDNBADYCACCPA0EBILgBKAIAKAIMdDYCACCAASDgAygCAEEBazYCACDkAyC4AigCAEEDajYCACCBASC4AigCADYCAAJAAkACQANAIIEBKAIAIOQDKAIATw0CIN8DKAIAIQcgvAEggQEoAgBBA0YEfyAHKAIAQQFrBSAHIIEBKAIAQQJ0aigCAAsiBzYCACCQAyArKAIAILwBKAIAazYCACBdQQA2AgAgvAEoAgBBAWsgKygCACBcKAIAa0kEQCAXKAIAID0oAgAQ8QIgFygCACC8ASgCAGsgPSgCABDxAkYEQCBdIBcoAgAgPSgCAGogFygCACA9KAIAaiC8ASgCAGsgSigCABC8AiA9KAIAajYCAAsFIJEDIO8BKAIAIJADKAIAajYCACC3AigCAARAILwBKAIAQQFrICsoAgAgvgIoAgBrSSBcKAIAQQFrIJADKAIAa0EDT3EEQCAXKAIAID0oAgAQ8QIgkQMoAgAgPSgCABDxAkYEQCBdIBcoAgAgPSgCAGogkQMoAgAgPSgCAGogSigCACC8AigCACC9AigCABC9AiA9KAIAajYCAAsLCwsgXSgCACCAASgCAEsEQCCAASBdKAIANgIAIH8oAgAgMygCAEEDdGoggQEoAgAguAIoAgBrNgIAIH8oAgAgMygCAEEDdGogXSgCADYCBCAzIDMoAgBBAWo2AgAgXSgCACCLAygCAEsgFygCACBdKAIAaiBKKAIARnINAgsggQEggQEoAgBBAWo2AgAMAAsACyC2AiAzKAIANgIADAELILkBKAIAQQNGBEAggAEoAgAguQEoAgBJBEAgggEgSSgCACAXKAIAEPICNgIAIIIBKAIAIL4CKAIASyArKAIAIIIBKAIAa0GAgBBJcQRAAkACQCC3AigCAEUNACCCASgCACBcKAIATw0AIOYDIO8BKAIAIIIBKAIAajYCACCDASAXKAIAIOYDKAIAIEooAgAgvAIoAgAgvQIoAgAQvQI2AgAMAQsg5QMgugEoAgAgggEoAgBqNgIAIIMBIBcoAgAg5QMoAgAgSigCABC8AjYCAAsggwEoAgAguQEoAgBPBEAggAEggwEoAgA2AgAgfygCACArKAIAIIIBKAIAa0ECajYCACB/KAIAIIMBKAIANgIEIDNBATYCACCDASgCACCLAygCAEsgFygCACCDASgCAGogSigCAEZyBEAgSSgCACArKAIAQQFqNgIYILYCQQE2AgAMBQsLCwsLIIwDKAIAII0DKAIAQQJ0aiArKAIANgIAAkACQAJAA0ACQCCPAyCPAygCACIHQX9qNgIAIAdFDQAgICgCACC+AigCAE0NACDyASC5AigCACAgKAIAILsBKAIAcUEDdGo2AgAgugIoAgAhByC7AigCACEIIAsgugIoAgAguwIoAgBJBH8gBwUgCAs2AgACQAJAILcCKAIARQ0AICAoAgAgCygCAGogXCgCAE8NACC9ASDvASgCACAgKAIAajYCACAXKAIAIAsoAgBqIL0BKAIAIAsoAgBqIEooAgAgvAIoAgAgvQIoAgAQvQIhByALIAsoAgAgB2o2AgAgICgCACALKAIAaiBcKAIATwRAIL0BILoBKAIAICAoAgBqNgIACwwBCyC9ASC6ASgCACAgKAIAajYCACAXKAIAIAsoAgBqIL0BKAIAIAsoAgBqIEooAgAQvAIhByALIAsoAgAgB2o2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ASAlKAIAIIUCKAIAazYCAAsLILADIIUCKAIANgIAILEDIN8CKAIANgIAIGYgASgCADYCAANAIOQCIAAoAgAgZigCAEEcbGooAgg2AgAgiwQgACgCACBmKAIAQRxsaigCBDYCACAAKAIAIGYoAgBBHGxqILADKAIANgIIIAAoAgAgZigCAEEcbGogsQMoAgA2AgQgsAMg5AIoAgA2AgAgsQMgiwQoAgA2AgAg5AIoAgAgZigCAE0EQCBmIGYoAgAg5AIoAgBrNgIADAELCyBnQQA2AgADQCBnKAIAICUoAgBJBEAg5QIgJCgCACBSKAIAazYCACDWASAAKAIAIGcoAgBBHGxqKAIINgIAINcBIAAoAgAgZygCAEEcbGooAgQ2AgAg1gEoAgBBAUYEQCAkICQoAgBBAWo2AgAgZyBnKAIAQQFqNgIADAILIGcgZygCACDWASgCAGo2AgAgJCAkKAIAINYBKAIAajYCACDXASgCAEEDTwRAICYoAgAgJigCACgCBDYCCCAmKAIAICYoAgAoAgA2AgQgJigCACDXASgCAEECazYCAAUgigIg1wEoAgAg5QIoAgBFajYCACCKAigCAARAICYoAgAhByCMBCCKAigCAEEDRgR/IAcoAgBBAWsFIAcgigIoAgBBAnRqKAIACyIHNgIAIIoCKAIAQQJPBEAgJigCACAmKAIAKAIENgIICyAmKAIAICYoAgAoAgA2AgQgJigCACCMBCgCADYCAAsLIDgoAgAg5QIoAgAgUigCACDXASgCACDWASgCABD4AiCOBCgCACDlAigCACBSKAIAINcBKAIAINYBKAIAQQNrEPkCIFIgJCgCADYCAAwBCwsgOCgCABD6AgwBCwsgjQIoAgAgUigCAGshACAGJAUgAAuM1gEBiQR/IwUhBiMFQeAQaiQFIAZBFGoiCyAANgIAIAZBEGoiACABNgIAIAZBDGoiASACNgIAIAZBCGoiAiADNgIAIAZBBGoiAyAENgIAIAYgBTYCACAAKAIAIQAgASgCACEBIAIoAgAhAiADKAIAIQMgBigCACEEIAZBsAJqImggCygCADYCACAGQawCaiKOBCAANgIAIAZBqAJqIiYgATYCACAGQaQCaiLYASACNgIAIAZBoAJqIgcgAzYCACAGQZwCaiIIIAQ2AgAgBkGYAmoijAJBAjYCACAGQZQC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IDYoAgBBA3RqIJABKAIAINYCKAIAazYCACCOASgCACA2KAIAQQN0aiBjKAIANgIEIDYgNigCAEEBajYCACBjKAIAIKADKAIASyAaKAIAIGMoAgBqIFAoAgBGcg0CCyCQASCQASgCAEEBajYCAAwACwALINQCIDYoAgA2AgAMAQsgywEoAgBBA0YEQCCPASgCACDLASgCAEkEQCCRASBPKAIAIBooAgAQ8gI2AgAgkQEoAgAg3AIoAgBLIC4oAgAgkQEoAgBrQYCAEElxBEACQAJAINUCKAIARQ0AIJEBKAIAIGIoAgBPDQAg/gMg+wEoAgAgkQEoAgBqNgIAIJIBIBooAgAg/gMoAgAgUCgCACDaAigCACDbAigCABC9AjYCAAwBCyD9AyDMASgCACCRASgCAGo2AgAgkgEgGigCACD9AygCACBQKAIAELwCNgIACyCSASgCACDLASgCAE8EQCCPASCSASgCADYCACCOASgCACAuKAIAIJEBKAIAa0ECajYCACCOASgCACCSASgCADYCBCA2QQE2AgAgkgEoAgAgoAMoAgBLIBooAgAgkgEoAgBqIFAoAgBGcgRAIE8oAgAgLigCAEEBajYCGCDUAkEBNgIADAULCwsLCyChAygCACCiAygCAEECdGogLigCADYCAAJAAkACQANAAkAgpAMgpAMoAgAiB0F/ajYCACAHRQ0AICMoAgAg3AIoAgBNDQAg/gEg1wIoAgAgIygCACDNASgCAHFBA3RqNgIAINgCKAIAIQcg2QIoAgAhCCAPINgCKAIAINkCKAIASQR/IAcFIAgLNgIAAkACQCDVAigCAEUNACAjKAIAIA8oAgBqIGIoAgBPDQAgzwEg+wEoAgAgIygCAGo2AgAgGigCACAPKAIAaiDPASgCACAPKAIAaiBQKAIAINoCKAIAINsCKAIAEL0CIQcgDyAPKAIAIAdqNgIAICMoAgAgDygCAGogYigCAE8EQCDPASDMASgCACAjKAIAajYCAAsMAQsgzwEgzAEoAgAgIygCAGo2AgAgGigCACAPKAIAaiDPASgCACAPKAIAaiBQKAIAELwCIQcgDyAPKAIAIAdqNgIACyAPKAIAII8BKAIASwRAIA8oAgAg3QIoAgAgIygCAGtLBEAg3QIgIygCACAPKAIAajYCAAsgjwEgDygCADYCACCOASgCACA2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KAIASyAXKAIAIIMBKAIAaiBKKAIARnIEQCBJKAIAICsoAgBBAWo2AhggtgJBATYCAAwFCwsLCwsgjAMoAgAgjQMoAgBBAnRqICsoAgA2AgACQAJAAkADQAJAII8DII8DKAIAIgdBf2o2AgAgB0UNACAgKAIAIL4CKAIATQ0AIPIBILkCKAIAICAoAgAguwEoAgBxQQN0ajYCACC6AigCACEHILsCKAIAIQggCyC6AigCACC7AigCAEkEfyAHBSAICzYCAAJAAkAgtwIoAgBFDQAgICgCACALKAIAaiBcKAIATw0AIL0BIO8BKAIAICAoAgBqNgIAIBcoAgAgCygCAGogvQEoAgAgCygCAGogSigCACC8AigCACC9AigCABC9AiEHIAsgCygCACAHajYCACAgKAIAIAsoAgBqIFwoAgBPBEAgvQEgugEoAgAgICgCAGo2AgALDAELIL0BILoBKAIAICAoAgBqNgIAIBcoAgAgCygCAGogvQEoAgAgCygCAGogSigCABC8AiEHIAsgCygCACAHajYCAAsgCygCACCAASgCAEsEQCALKAIAIL8CKAIAICAoAgBrSwRAIL8CICAoAgAgCygCAGo2AgALIIABIAsoAgA2AgAgfygCACAzKAIAQQN0aiArKAIAICAoAgBrQQJqNgIAIH8oAgAgMygCAEEDdGogCygCADYCBCAzIDMoAgBBAWo2AgAgCygCAEGAIEsNASAXKAIAIAsoAgBqIEooAgBGDQELICAoAgAhByC9ASgCACALKAIAai0AACAXKAIAIAsoAgBqLQAASARAIPABKAIAIAc2AgAgugIgCygCADYCACAgKAIAII4DKAIATQ0DIPABIPIBKAIAQQRqNgIAICAg8gEoAgAoAgQ2AgAFIPEBKAIAIAc2AgAguwIgCygCADYCACAgKAIAII4DKAIATQ0EIPEBIPIBKAIANgIAICAg8gEoAgAoAgA2AgALDAELCwwCCyDwASDjAzYCAAwBCyDxASDjAzYCAAsg8QEoAgBBADYCACDwASgCAEEANgIAIEkoAgAgvwIoAgBBCGs2AhggtgIgMygCADYCAAsg0AEgtgIoAgA2AgAMAwsgkwEoAgAhByCUASgCACEIINEBKAIAIQkg0gEoAgAhCiCBAigCACEMIIICKAIAIRAggwIoAgAhESCEAigCACESIEsgZCgCADYCACC+ASAHNgIAIBggCDYCACBMIAk2AgAgwQIgCjYCACDnAyAMNgIAIMICIBA2AgAghAEgETYCACDoAyASNgIAIL8BQQU2AgAgkgMgvgEoAgAoAhRB/x9JBH8gvgEoAgAoAhQFQf8fCyIHNgIAIMABIEsoAgAoAgQ2AgAgLCAYKAIAIMABKAIAazYCACDpAyC+ASgCACgCCDYCACA+IL8BKAIAQQNGBH9BAwVBBAs2AgAgkwMgSygCACgCJDYCACCUAyAYKAIAIOkDKAIAIL8BKAIAELsCNgIAICEgkwMoAgAglAMoAgBBAnRqKAIANgIAIMMCIEsoAgAoAiw2AgAg6gMgvgEoAgAoAgRBAWs2AgAgwQFBASDqAygCAHRBAWs2AgAgxAJBADYCACDFAkEANgIAIPMBIEsoAgAoAgg2AgAgXiBLKAIAKAIMNgIAIMYCIPMBKAIAIF4oAgBqNgIAIMcCIMABKAIAIF4oAgBqNgIAIJUDIMEBKAIAICwoAgBPBH9BAAUgLCgCACDBASgCAGsLIgc2AgAgyAIgSygCACgCEDYCACD0ASDDAigCACAsKAIAIMEBKAIAcUEDdGo2AgAg9QEgwwIoAgAgLCgCACDBASgCAHFBA3RqQQRqNgIAIMkCICwoAgBBCWo2AgAgNEEANgIAIJYDQQEgvgEoAgAoAgx0NgIAIIUBIOgDKAIAQQFrNgIAIOwDIMICKAIAQQNqNgIAIIYBIMICKAIANgIAAkACQAJAA0AghgEoAgAg7AMoAgBPDQIg5wMoAgAhByDCASCGASgCAEEDRgR/IAcoAgBBAWsFIAcghgEoAgBBAnRqKAIACyIHNgIAIJcDICwoAgAgwgEoAgBrNgIAIF9BADYCACDCASgCAEEBayAsKAIAIF4oAgBrSQRAIBgoAgAgPigCABDxAiAYKAIAIMIBKAIAayA+KAIAEPECRgRAIF8gGCgCACA+KAIAaiAYKAIAID4oAgBqIMIBKAIAayBMKAIAELwCID4oAgBqNgIACwUgmAMg8wEoAgAglwMoAgBqNgIAIMECKAIABEAgwgEoAgBBAWsgLCgCACDIAigCAGtJIF4oAgBBAWsglwMoAgBrQQNPcQRAIBgoAgAgPigCABDxAiCYAygCACA+KAIAEPECRgRAIF8gGCgCACA+KAIAaiCYAygCACA+KAIAaiBMKAIAIMYCKAIAIMcCKAIAEL0CID4oAgBqNgIACwsLCyBfKAIAIIUBKAIASwRAIIUBIF8oAgA2AgAghAEoAgAgNCgCAEEDdGoghgEoAgAgwgIoAgBrNgIAIIQBKAIAIDQoAgBBA3RqIF8oAgA2AgQgNCA0KAIAQQFqNgIAIF8oAgAgkgMoAgBLIBgoAgAgXygCAGogTCgCAEZyDQILIIYBIIYBKAIAQQFqNgIADAALAAsgwAIgNCgCADYCAAwBCyC/ASgCAEEDRgRAIIUBKAIAIL8BKAIASQRAIIcBIEsoAgAgGCgCABDyAjYCACCHASgCACDIAigCAEsgLCgCACCHASgCAGtBgIAQSXEEQAJAAkAgwQIoAgBFDQAghwEoAgAgXigCAE8NACDuAyDzASgCACCHASgCAGo2AgAgiAEgGCgCACDuAygCACBMKAIAIMYCKAIAIMcCKAIAEL0CNgIADAELIO0DIMABKAIAIIcBKAIAajYCACCIASAYKAIAIO0DKAIAIEwoAgAQvAI2AgALIIgBKAIAIL8BKAIATwRAIIUBIIgBKAIANgIAIIQBKAIAICwoAgAghwEoAgBrQQJqNgIAIIQBKAIAIIgBKAIANgIEIDRBATYCACCIASgCACCSAygCAEsgGCgCACCIASgCAGogTCgCAEZyBEAgSygCACAsKAIAQQFqNgIYIMACQQE2AgAMBQsLCwsLIJMDKAIAIJQDKAIAQQJ0aiAsKAIANgIAAkACQAJAA0ACQCCWAyCWAygCACIHQX9qNgIAIAdFDQAgISgCACDIAigCAE0NACD2ASDDAigCACAhKAIAIMEBKAIAcUEDdGo2AgAgxAIoAgAhByDFAigCACEIIA0gxAIoAgAgxQIoAgBJBH8gBwUgCAs2AgACQAJAIMECKAIARQ0AICEoAgAgDSgCAGogXigCAE8NACDDASDzASgCACAhKAIAajYCACAYKAIAIA0oAgBqIMMBKAIAIA0oAgBqIEwoAgAgxgIoAgAgxwIoAgAQvQIhByANIA0oAgAgB2o2AgAgISgCACANKAIAaiBeKAIATwRAIMMBIMABKAIAICEoAgBqNgIACwwBCyDDASDAASgCACAhKAIAajYCACAYKAIAIA0oAgBqIMMBKAIAIA0oAgBqIEwoAgAQvAIhByANIA0oAgAgB2o2AgALIA0oAgAghQEoAgBLBEAgDSgCACDJAigCACAhKAIAa0sEQCDJAiAhKAIAIA0oAgBqNgIACyCFASANKAIANgIAIIQBKAIAIDQoAgBBA3RqICwoAgAgISgCAGtBAmo2AgAghAEoAgAgNCgCAEEDdGogDSgCADYCBCA0IDQoAgBBAWo2AgAgDSgCAEGAIEsNASAYKAIAIA0oAgBqIEwoAgBGDQELICEoAgAhByDDASgCACANKAIAai0AACAYKAIAIA0oAgBqLQAASARAIPQBKAIAIAc2AgAgxAIgDSgCADYCACAhKAIAIJUDKAIATQ0DIPQBIPYBKAIAQQRqNgIAICEg9gEoAgAoAgQ2AgAFIPUBKAIAIAc2AgAgxQIgDSgCADYCACAhKAIAIJUDKAIATQ0EIPUBIPYBKAIANgIAICEg9gEoAgAoAgA2AgALDAELCwwCCyD0ASDrAzYCAAwBCyD1ASDrAzYCAAsg9QEoAgBBADYCACD0ASgCAEEANgIAIEsoAgAgyQIoAgBBCGs2AhggwAIgNCgCADYCAAsg0AEgwAIoAgA2AgAMAgsgkwEoAgAhByCUASgCACEIINEBKAIAIQkg0gEoAgAhCiCBAigCACEMIIICKAIAIRAggwIoAgAhESCEAigCACESIE0gZCgCADYCACDEASAHNgIAIBkgCDYCACBOIAk2AgAgywIgCjYCACDvAyAMNgIAIMwCIBA2AgAgiQEgETYCACDwAyASNgIAIMUBQQQ2AgAgmQMgxAEoAgAoAhRB/x9JBH8gxAEoAgAoAhQFQf8fCyIHNgIAIMYBIE0oAgAoAgQ2AgAgLSAZKAIAIMYBKAIAazYCACDxAyDEASgCACgCCDYCACA/IMUBKAIAQQNGBH9BAwVBBAs2AgAgmgMgTSgCACgCJDYCACCbAyAZKAIAIPEDKAIAIMUBKAIAELsCNgIAICIgmgMoAgAgmwMoAgBBAnRqKAIANgIAIM0CIE0oAgAoAiw2AgAg8gMgxAEoAgAoAgRBAWs2AgAgxwFBASDyAygCAHRBAWs2AgAgzgJBADYCACDPAkEANgIAIPcBIE0oAgAoAgg2AgAgYCBNKAIAKAIMNgIAINACIPcBKAIAIGAoAgBqNgIAINECIMYBKAIAIGAoAgBqNgIAIJwDIMcBKAIAIC0oAgBPBH9BAAUgLSgCACDHASgCAGsLIgc2AgAg0gIgTSgCACgCEDYCACD4ASDNAigCACAtKAIAIMcBKAIAcUEDdGo2AgAg+QEgzQIoAgAgLSgCACDHASgCAHFBA3RqQQRqNgIAINMCIC0oAgBBCWo2AgAgNUEANgIAIJ0DQQEgxAEoAgAoAgx0NgIAIIoBIPADKAIAQQFrNgIAIPQDIMwCKAIAQQNqNgIAIIsBIMwCKAIANgIAAkACQAJAA0AgiwEoAgAg9AMoAgBPDQIg7wMoAgAhByDIASCLASgCAEEDRgR/IAcoAgBBAWsFIAcgiwEoAgBBAnRqKAIACyIHNgIAIJ4DIC0oAgAgyAEoAgBrNgIAIGFBADYCACDIASgCAEEBayAtKAIAIGAoAgBrSQRAIBkoAgAgPygCABDxAiAZKAIAIMgBKAIAayA/KAIAEPECRgRAIGEgGSgCACA/KAIAaiAZKAIAID8oAgBqIMgBKAIAayBOKAIAELwCID8oAgBqNgIACwUgnwMg9wEoAgAgngMoAgBqNgIAIMsCKAIABEAgyAEoAgBBAWsgLSgCACDSAigCAGtJIGAoAgBBAWsgngMoAgBrQQNPcQRAIBkoAgAgPygCABDxAiCfAygCACA/KAIAEPECRgRAIGEgGSgCACA/KAIAaiCfAygCACA/KAIAaiBOKAIAINACKAIAINECKAIAEL0CID8oAgBqNgIACwsLCyBhKAIAIIoBKAIASwRAIIoBIGEoAgA2AgAgiQEoAgAgNSgCAEEDdGogiwEoAgAgzAIoAgBrNgIAIIkBKAIAIDUoAgBBA3RqIGEoAgA2AgQgNSA1KAIAQQFqNgIAIGEoAgAgmQMoAgBLIBkoAgAgYSgCAGogTigCAEZyDQILIIsBIIsBKAIAQQFqNgIADAALAAsgygIgNSgCADYCAAwBCyDFASgCAEEDRgRAIIoBKAIAIMUBKAIASQRAIIwBIE0oAgAgGSgCABDyAjYCACCMASgCACDSAigCAEsgLSgCACCMASgCAGtBgIAQSXEEQAJAAkAgywIoAgBFDQAgjAEoAgAgYCgCAE8NACD2AyD3ASgCACCMASgCAGo2AgAgjQEgGSgCACD2AygCACBOKAIAINACKAIAINECKAIAEL0CNgIADAELIPUDIMYBKAIAIIwBKAIAajYCACCNASAZKAIAIPUDKAIAIE4oAgAQvAI2AgALII0BKAIAIMUBKAIATwRAIIoBII0BKAIANgIAIIkBKAIAIC0oAgAgjAEoAgBrQQJqNgIAIIkBKAIAII0BKAIANgIEIDVBATYCACCNASgCACCZAygCAEsgGSgCACCNASgCAGogTigCAEZyBEAgTSgCACAtKAIAQQFqNgIYIMoCQQE2AgAMBQsLCwsLIJoDKAIAIJsDKAIAQQJ0aiAtKAIANgIAAkACQAJAA0ACQCCdAyCdAygCACIHQX9qNgIAIAdFDQAgIigCACDSAigCAE0NACD6ASDNAigCACAiKAIAIMcBKAIAcUEDdGo2AgAgzgIoAgAhByDPAigCACEIIA4gzgIoAgAgzwIoAgBJBH8gBwUgCAs2AgACQAJAIMsCKAIARQ0AICIoAgAgDigCAGogYCgCAE8NACDJASD3ASgCACAiKAIAajYCACAZKAIAIA4oAgBqIMkBKAIAIA4oAgBqIE4oAgAg0AIoAgAg0QIoAgAQvQIhByAOIA4oAgAgB2o2AgAgIigCACAOKAIAaiBgKAIATwRAIMkBIMYBKAIAICIoAgBqNgIACwwBCyDJASDGASgCACAiKAIAajYCACAZKAIAIA4oAgBqIMkBKAIAIA4oAgBqIE4oAgAQvAIhByAOIA4oAgAgB2o2AgALIA4oAgAgigEoAgBLBEAgDigCACDTAigCACAiKAIAa0sEQCDTAiAiKAIAIA4oAgBqNgIACyCKASAOKAIANgIAIIkBKAIAIDUoAgBBA3RqIC0oAgAgIigCAGtBAmo2AgAgiQEoAgAgNSgCAEEDdGogDigCADYCBCA1IDUoAgBBAWo2AgAgDigCAEGAIEsNASAZKAIAIA4oAgBqIE4oAgBGDQELICIoAgAhByDJASgCACAOKAIAai0AACAZKAIAIA4oAgBqLQAASARAIPgBKAIAIAc2AgAgzgIgDigCADYCACAiKAIAIJwDKAIATQ0DIPgBIPoBKAIAQQRqNgIAICIg+gEoAgAoAgQ2AgAFIPkBKAIAIAc2AgAgzwIgDigCADYCACAiKAIAIJwDKAIATQ0EIPkBIPoBKAIANgIAICIg+gEoAgAoAgA2AgALDAELCwwCCyD4ASDzAzYCAAwBCyD5ASDzAzYCAAsg+QEoAgBBADYCACD4ASgCAEEANgIAIE0oAgAg0wIoAgBBCGs2AhggygIgNSgCADYCAAsg0AEgygIoAgA2AgALCyCHAiDQASgCADYCACCHAigCAEUEQCAkICQoAgBBAWo2AgAMAgsg0wFBADYCAANAINMBKAIAQQNJBEAgACgCAEEQaiDTASgCAEECdGogJigCACDTASgCAEECdGooAgA2AgAg0wEg0wEoAgBBAWo2AgAMAQsLIAAoAgBBATYCCCAAKAIAIIYCKAIANgIMIKsDIDcoAgAghwIoAgBBA3RqQXxqKAIANgIAAkAgqwMoAgAgjQQoAgBLBEAghQIgqwMoAgA2AgAg3wIgNygCACCHAigCAEEBa0EDdGooAgA2AgAgAUEANgIAICVBATYCAAUghAQg3gIgUigCACCGAigCACA4KAIAEPMCNgIAIBtBADYCAANAIBsoAgAgiwIoAgBJBEAgACgCACAbKAIAQRxsakEBNgIIIAAoAgAgGygCAEEcbGpBgICAgAQ2AgAgGyAbKAIAQQFqNgIADAELCyDUAUEANgIAA0Ag1AEoAgAghwIoAgBJBEAg4AIgNygCACDUASgCAEEDdGooAgA2AgAghQQgNygCACDUASgCAEEDdGooAgQ2AgAgrAMgJigCACDgAigCACCqAygCABD0AgNAIBsoAgAghQQoAgBNBEAghAQoAgAhByAbKAIAIQggOCgCACEJIIwCKAIAIQog3AMg4AIoAgA2AgAg3QMgCDYCACC1ASAJNgIAIN4DIAo2AgAgtwEg3AMoAgBBAWoQ1AE2AgAgiQMg3QMoAgBBA2s2AgAgtQEoAgAoAjgEQCCIAyCJAygCAEEBahDUAUEQaiC3ASgCAGo2AgAFILYBILcBKAIAILUBKAIAKAI0aiC1ASgCACgCDCC3ASgCAEECdGooAgBBAWoQ1AFrNgIAIN4DKAIAQQJIILcBKAIAQRRPcQRAILYBILYBKAIAILcBKAIAQRNrQQF0ajYCAAsgigMgiQMoAgAQ3AI2AgAgigMoAgBBAnRBwDVqKAIAILUBKAIAKAIwaiC1ASgCACgCCCCKAygCAEECdGooAgBBAWoQ1AFrIQggtgEgtgEoAgAgCGo2AgAgiAMgtgEoAgA2AgALIIYEIAcgiAMoAgBqNgIAIAAoAgAgGygCAEEcbGogGygCADYCCCAAKAIAIBsoAgBBHGxqIOACKAIANgIEIAAoAgAgGygCAEEcbGoghgIoAgA2AgwgACgCACAbKAIAQRxsaiCGBCgCADYCACAAKAIAIBsoAgBBHGxqQRBqIgcgrAMpAgA3AgAgByCsAygCCDYCCCAbIBsoAgBBAWo2AgAMAQsLINQBINQBKAIAQQFqNgIADAELCyAlIBsoAgBBAWs2AgAgAUEBNgIAAkACQANAIAEoAgAgJSgCAEsNAiCIAiAkKAIAIAEoAgBqNgIAIJUBIAAoAgAgASgCAEEcbGpBbGooAgBBAUYEfyAAKAIAIAEoAgBBHGxqQXBqKAIAQQFqBUEBCyIHNgIAIAEoAgAglQEoAgBLBEAg4QIgACgCACABKAIAIJUBKAIAa0EcbGooAgAgiAIoAgAglQEoAgBrIJUBKAIAIDgoAgAQ9QJqNgIABSDhAiDeAiBSKAIAIJUBKAIAIDgoAgAQ9gI2AgALIOECKAIAIAAoAgAgASgCAEEcbGooAgBMBEAgACgCACABKAIAQRxsakEBNgIIIAAoAgAgASgCAEEcbGpBADYCBCAAKAIAIAEoAgBBHGxqIJUBKAIANgIMIAAoAgAgASgCAEEcbGog4QIoAgA2AgAgACgCACABKAIAQRxsakEQaiIHIAAoAgAgASgCAEEcbGpBdGoiCCkCADcCACAHIAgoAgg2AggLAkAgiAIoAgAgswMoAgBNBEAgASgCACAlKAIARg0EIIwCKAIARQRAIAAoAgAgASgCAEEBakEcbGooAgAgACgCACABKAIAQRxsaigCAEwNAgsgrQMgACgCACABKAIAQRxsaigCCEEBRzYCACDVASAAKAIAIAEoAgBBHGxqKAIIQQFGBH8gACgCACABKAIAQRxsaigCDAVBAAsiBzYCACCHBCABKAIAINUBKAIASwR/IAAoAgAgASgCACDVASgCAGtBHGxqKAIABUEACyIHNgIAIIgEIIcEKAIAIIgCKAIAINUBKAIAayDVASgCACA4KAIAEPcCajYCACDYASgCACEHIIgCKAIAIQggjQIoAgAhCSCyAygCACEKIAAoAgAgASgCAEEcbGpBEGohDCCtAygCACEQIDcoAgAhESCLAigCACESIFsgaCgCADYCACB9IAc2AgAgfiAINgIAILMBIAk2AgAgtAEgCjYCACDrASAMNgIAIOwBIBA2AgAg7QEgETYCACDuASASNgIAIIcDIH0oAgAoAhA2AgACQCB+KAIAIFsoAgAoAgQgWygCACgCGGpJBEAgsgFBADYCAAUgfSgCACEHIH4oAgAhCCCzASgCACEJIIcDKAIAIQogtAEoAgAhDCDpASBbKAIANgIAINcDIAc2AgAg2AMgCDYCACDZAyAJNgIAINoDIAo2AgAg2wMgDDYCACCFAyDpASgCACgCBDYCACCGAyDYAygCACCFAygCAGs2AgAg6gEg6QEoAgAoAhg2AgADQCDqASgCACCGAygCAEkEQCDpASgCACDXAygCACCFAygCACDqASgCAGog2QMoAgAg2gMoAgAg2wMoAgAQugIhByDqASDqASgCACAHajYCAAwBCwsg6QEoAgAghgMoAgA2AhgCQAJAAkACQCCHAygCAEEDaw4FAAMCAQEDCyB9KAIAIQcgfigCACEIILMBKAIAIQkgtAEoAgAhCiDrASgCACEMIOwBKAIAIRAg7QEoAgAhESDuASgCACESIEcgWygCADYCACCsASAHNgIAIBYgCDYCACBIIAk2AgAgrQIgCjYCACDPAyAMNgIAIK4CIBA2AgAgeCARNgIAINADIBI2AgAgrQFBAzYCACD+AiCsASgCACgCFEH/H0kEfyCsASgCACgCFAVB/x8LIgc2AgAgrgEgRygCACgCBDYCACAqIBYoAgAgrgEoAgBrNgIAINEDIKwBKAIAKAIINgIAIDwgrQEoAgBBA0YEf0EDBUEECzYCACD/AiBHKAIAKAIkNgIAIIADIBYoAgAg0QMoAgAgrQEoAgAQuwI2AgAgHyD/AigCACCAAygCAEECdGooAgA2AgAgrwIgRygCACgCLDYCACDSAyCsASgCACgCBEEBazYCACCvAUEBINIDKAIAdEEBazYCACCwAkEANgIAILECQQA2AgAg5QEgRygCACgCCDYCACBZIEcoAgAoAgw2AgAgsgIg5QEoAgAgWSgCAGo2AgAgswIgrgEoAgAgWSgCAGo2AgAggQMgrwEoAgAgKigCAE8Ef0EABSAqKAIAIK8BKAIAawsiBzYCACC0AiBHKAIAKAIQNgIAIOYBIK8CKAIAICooAgAgrwEoAgBxQQN0ajYCACDnASCvAigCACAqKAIAIK8BKAIAcUEDdGpBBGo2AgAgtQIgKigCAEEJajYCACAyQQA2AgAgggNBASCsASgCACgCDHQ2AgAgeSDQAygCAEEBazYCACDUAyCuAigCAEEDajYCACB6IK4CKAIANgIA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NgIAAkACQCBRKAIAICUoAgBLDQAgrwMoAgAgACgCACBRKAIAQRxsaigCAEgNACCMAigCAEUNAgwBCwNAICUoAgAgUSgCAEkEQCAAKAIAICUoAgBBAWpBHGxqQYCAgIAENgIAICUgJSgCAEEBajYCAAwBCwsgACgCACBRKAIAQRxsaiCWASgCADYCCCAAKAIAIFEoAgBBHGxqIOMCKAIANgIEIAAoAgAgUSgCAEEcbGog1QEoAgA2AgwgACgCACBRKAIAQRxsaiCvAygCADYCACAAKAIAIFEoAgBBHGxqQRBqIgcgrgMpAgA3AgAgByCuAygCCDYCCAsglgEglgEoAgBBf2o2AgAMAQsLIGUgZSgCAEEBajYCAAwACwALCwsgASABKAIAQQFqNgIADAALAAsghQIg4gIoAgA2AgAg3wIgNygCACCJAigCAEEBa0EDdGooAgA2AgAgJSABKAIAQQFqNgIADAILIIUCIAAoAgAgJSgCAEEcbGooAgg2AgAg3wIgACgCACAlKAIAQRxsaigCBDYCACABICUoAgAghQIoAgBrNgIACwsgsAMghQIoAgA2AgAgsQMg3wIoAgA2AgAgZiABKAIANgIAA0Ag5AIgACgCACBmKAIAQRxsaigCCDYCACCLBCAAKAIAIGYoAgBBHGxqKAIENgIAIAAoAgAgZigCAEEcbGogsAMoAgA2AgggACgCACBmKAIAQRxsaiCxAygCADYCBCCwAyDkAigCADYCACCxAyCLBCgCADYCACDkAigCACBmKAIATQRAIGYgZigCACDkAigCAGs2AgAMAQsLIGdBADYCAANAIGcoAgAgJSgCAEkEQCDlAiAkKAIAIFIoAgBrNgIAINYBIAAoAgAgZygCAEEcbGooAgg2AgAg1wEgACgCACBnKAIAQRxsaigCBDYCACDWASgCAEEBRgRAICQgJCgCAEEBajYCACBnIGcoAgBBAWo2AgAMAgsgZyBnKAIAINYBKAIAajYCACAkICQoAgAg1gEoAgBqNgIAINcBKAIAQQNPBEAgJigCACAmKAIAKAIENgIIICYoAgAgJigCACgCADYCBCAmKAIAINcBKAIAQQJrNgIABSCKAiDXASgCACDlAigCAEVqNgIAIIoCKAIABEAgJigCACEHIIwEIIoCKAIAQQNGBH8gBygCAEEBawUgByCKAigCAEECdGooAgALIgc2AgAgigIoAgBBAk8EQCAmKAIAICYoAgAoAgQ2AggLICYoAgAgJigCACgCADYCBCAmKAIAIIwEKAIANgIACwsgOCgCACDlAigCACBSKAIAINcBKAIAINYBKAIAEPgCII4EKAIAIOUCKAIAIFIoAgAg1wEoAgAg1gEoAgBBA2sQ+QIgUiAkKAIANgIADAELCyA4KAIAEPoCDAELCyCNAigCACBSKAIAayEAIAYkBSAAC5YDAQV/IwUhBiMFQTBqJAUgBkEkaiEHIAZBIGoiCCAANgIAIAZBHGoiCSABNgIAIAZBGGoiASACNgIAIAZBFGoiCiADNgIAIAZBEGoiAiAENgIAIAZBDGoiAyAFNgIAIAZBCGoiBCAKKAIAKAIINgIAIAZBBGoiBSAKKAIAKAIQNgIAIAYiACAKKAIAKAIUNgIAAkACQAJAAkAgBSgCAEEFaw4DAQIAAwsgByAIKAIAIAkoAgAgASgCACACKAIAIAMoAgAgBCgCACAAKAIAQQcQigM2AgAgBygCACEAIAYkBSAADwsgByAIKAIAIAkoAgAgASgCACACKAIAIAMoAgAgBCgCACAAKAIAQQUQigM2AgAgBygCACEAIAYkBSAADwsgByAIKAIAIAkoAgAgASgCACACKAIAIAMoAgAgBCgCACAAKAIAQQYQigM2AgAgBygCACEAIAYkBSAADwsgByAIKAIAIAkoAgAgASgCACACKAIAIAMoAgAgBCgCACAAKAIAQQQQigM2AgAgBygCACEAIAYkBSAAC9wCAQR/IwUhBiMFQSBqJAUgBkEcaiEHIAZBGGoiCCAANgIAIAZBFGoiCSABNgIAIAZBEGoiASACNgIAIAZBDGoiACADNgIAIAZBCGoiAiAENgIAIAZBBGoiAyAFNgIAIAYgACgCACgCEDYCAAJAAkACQAJAIAYoAgBBBWsOAwECAAMLIAcgCCgCACAJKAIAIAEoAgAgACgCACACKAIAIAMoAgBBBxCJAzYCACAHKAIAIQAgBiQFIAAPCyAHIAgoAgAgCSgCACABKAIAIAAoAgAgAigCACADKAIAQQUQiQM2AgAgBygCACEAIAYkBSAADwsgByAIKAIAIAkoAgAgASgCACAAKAIAIAIoAgAgAygCAEEGEIkDNgIAIAcoAgAhACAGJAUgAA8LIAcgCCgCACAJKAIAIAEoAgAgACgCACACKAIAIAMoAgBBBBCJAzYCACAHKAIAIQAgBiQFIAALsBcBOH8jBSEGIwVBoAJqJAUgBkG8AWohDCAGQbgBaiEPIAZBtAFqIQggBkGwAWohCiAGQawBaiELIAZBqAFqIQ4gBkGkAWohECAGQaABaiEqIAZBnAFqISEgBkGYAWohKyAGQZQBaiEiIAZBkAFqISMgBkGMAWohESAGQYgBaiEsIAZBhAFqISQgBkGAAWohLSAGQfwAaiEYIAZB+ABqIS4gBkH0AGohLyAGQfAAaiEZIAZB7ABqIRogBkHoAGohMCAGQeQAaiExIAZB4ABqIRIgBkHcAGohMiAGQdgAaiElIAZB1ABqITMgBkHQAGohGyAGQcwAaiE0IAZByABqITUgBkHEAGohHCAGQUBrIR0gBkE8aiE2IAZBOGohNyAGQTRqIRUgBkEwaiEWIAZBLGohOCAGQShqITkgBkEkaiETIAZBIGohOiAGQRxqISYgBkEYaiE7IAZBFGoiDSAANgIAIAZBEGoiACABNgIAIAZBDGoiASACNgIAIAZBCGoiAiADNgIAIAZBBGoiAyAENgIAIAYgBTYCACAAKAIAIQAgASgCACEBIAIoAgAhAiADKAIAIQQgBigCACEFIAZBkAJqIgMgDSgCADYCACAGQYwCaiI8IAA2AgAgBkGIAmoiHiABNgIAIAZBhAJqIicgAjYCACAGQYACaiIAIAQ2AgAgBkH8AWoiBCAFNgIAIAZB+AFqIgdBADYCACAGQfQBaiIoQQA2AgAgBkHwAWoiASAAKAIANgIAIAZB7AFqIgAgASgCADYCACAGQegBaiIFIAEoAgA2AgAgBkHkAWoiAiABKAIAIAQoAgBqNgIAIAZB4AFqIh8gAigCAEF4ajYCACAGQdwBaiIEIAMoAgAoAgQ2AgAgBkHYAWoiASADKAIAKAIMNgIAIAZB1AFqIhcgAygCACgCEDYCACAGQdABaiIUIAQoAgAgASgCAGo2AgAgBkHMAWoiDSADKAIAKAIINgIAIAZByAFqIiAgDSgCACABKAIAajYCACAGQcQBaiI9IA0oAgAgFygCAGo2AgAgBkHAAWoiKSAHKAIABH9BBwVBBgs2AgAgDCAeKAIAKAIANgIAIA8gHigCACgCBDYCACADKAIAIAMoAgAoAhg2AhwgACAAKAIAIAAoAgAgFCgCAEZqNgIAA0AgACgCACAfKAIASQRAIAhBADYCACAKQQA2AgAgCyAAKAIAQQFqNgIAIA4gACgCACAEKAIAazYCACAQIA4oAgBBAWogDCgCAGs2AgAgDSgCACEHIAQoAgAhCSAqIBAoAgAgASgCAEkEfyAHBSAJCzYCACAhICooAgAgECgCAGo2AgACQAJAIAEoAgBBAWsgECgCAGtBA08gECgCACAXKAIAS3FFDQAgACgCAEEBahDQASAhKAIAENABRw0AICAoAgAhByACKAIAIQkgKyAQKAIAIAEoAgBJBH8gBwUgCQs2AgAgCCAAKAIAQQVqICEoAgBBBGogAigCACArKAIAIBQoAgAQvQJBBGo2AgAgKCgCAA0ADAELICJB/8HXLzYCACAjIAMoAgAgJygCACAAKAIAIAIoAgAgIiApKAIAQQdxQbgBahEJADYCACAjKAIAIAgoAgBLBEAgCCAjKAIANgIAIAsgACgCADYCACAKICIoAgA2AgALIAgoAgBBBEkEQCAAIAAoAgAgACgCACAFKAIAa0EIdUEBamo2AgAMAwsCQCAoKAIAQQFPBEADQCAAKAIAIB8oAgBPDQIgACAAKAIAQQFqNgIAIA4gDigCAEEBajYCACAKKAIABEAgESAOKAIAIAwoAgBrNgIAIA0oAgAhByAEKAIAIQkgLCARKAIAIAEoAgBJBH8gBwUgCQs2AgAgJCAsKAIAIBEoAgBqNgIAIAEoAgBBAWsgESgCAGtBA08gESgCACAXKAIAS3EEQCAAKAIAENABICQoAgAQ0AFGBEAgICgCACEHIAIoAgAhCSAtIBEoAgAgASgCAEkEfyAHBSAJCzYCACAYIAAoAgBBBGogJCgCAEEEaiACKAIAIC0oAgAgFCgCABC9AkEEajYCACAuIBgoAgBBA2w2AgAgLyAIKAIAQQNsIAooAgBBAWoQ1AFrQQFqNgIAIBgoAgBBBE8EQCAuKAIAIC8oAgBKBEAgCCAYKAIANgIAIApBADYCACALIAAoAgA2AgALCwsLCyAZQf/B1y82AgAgGiADKAIAICcoAgAgACgCACACKAIAIBkgKSgCAEEHcUG4AWoRCQA2AgAgMCAaKAIAQQJ0IBkoAgBBAWoQ1AFrNgIAIDEgCCgCAEECdCAKKAIAQQFqENQBa0EEajYCACAaKAIAQQRPBEAgMCgCACAxKAIASgRAIAggGigCADYCACAKIBkoAgA2AgAgCyAAKAIANgIADAILCyAoKAIAQQJHDQIgACgCACAfKAIATw0CIAAgACgCAEEBajYCACAOIA4oAgBBAWo2AgAgCigCAARAIBIgDigCACAMKAIAazYCACANKAIAIQcgBCgCACEJIDIgEigCACABKAIASQR/IAcFIAkLNgIAICUgMigCACASKAIAajYCACABKAIAQQFrIBIoAgBrQQNPIBIoAgAgFygCAEtxBEAgACgCABDQASAlKAIAENABRgRAICAoAgAhByACKAIAIQkgMyASKAIAIAEoAgBJBH8gBwUgCQs2AgAgGyAAKAIAQQRqICUoAgBBBGogAigCACAzKAIAIBQoAgAQvQJBBGo2AgAgNCAbKAIAQQJ0NgIAIDUgCCgCAEECdCAKKAIAQQFqENQBa0EBajYCACAbKAIAQQRPBEAgNCgCACA1KAIASgRAIAggGygCADYCACAKQQA2AgAgCyAAKAIANgIACwsLCwsgHEH/wdcvNgIAIB0gAygCACAnKAIAIAAoAgAgAigCACAcICkoAgBBB3FBuAFqEQkANgIAIDYgHSgCAEECdCAcKAIAQQFqENQBazYCACA3IAgoAgBBAnQgCigCAEEBahDUAWtBB2o2AgAgHSgCAEEESQ0CIDYoAgAgNygCAEwNAiAIIB0oAgA2AgAgCiAcKAIANgIAIAsgACgCADYCAAwACwALCyAKKAIABEAgFSALKAIAIAQoAgBrIAooAgBBAmtrNgIAIA0oAgAgFSgCAGohByAEKAIAIBUoAgBqIQkgFiAVKAIAIAEoAgBJBH8gBwUgCQs2AgAgPSgCACEHIBQoAgAhCSA4IBUoAgAgASgCAEkEfyAHBSAJCzYCAANAAkAgCygCACAFKAIATQ0AIBYoAgAgOCgCAE0NACALKAIAQX9qLQAAIBYoAgBBf2otAABHDQAgCyALKAIAQX9qNgIAIBYgFigCAEF/ajYCACAIIAgoAgBBAWo2AgAMAQsLIA8gDCgCADYCACAMIAooAgBBAms2AgALCyA5IAsoAgAgBSgCAGs2AgAgPCgCACA5KAIAIAUoAgAgCigCACAIKAIAQQNrEPkCIAAgCygCACAIKAIAaiIHNgIAIAUgBzYCAANAAkAgACgCACAfKAIASw0AIBMgACgCACAEKAIAayAPKAIAazYCACANKAIAIQcgBCgCACEJIDogEygCACABKAIASQR/IAcFIAkLNgIAICYgOigCACATKAIAajYCACABKAIAQQFrIBMoAgBrQQNPIBMoAgAgFygCAEtxRQ0AIAAoAgAQ0AEgJigCABDQAUcNACAgKAIAIQcgAigCACEJIDsgEygCACABKAIASQR/IAcFIAkLNgIAIAggACgCAEEEaiAmKAIAQQRqIAIoAgAgOygCACAUKAIAEL0CQQRqNgIAIAogDygCADYCACAPIAwoAgA2AgAgDCAKKAIANgIAIDwoAgBBACAFKAIAQQAgCCgCAEEDaxD5AiAAIAAoAgAgCCgCAGo2AgAgBSAAKAIANgIADAELCwwBCwsgHigCACAMKAIANgIAIB4oAgAgDygCADYCBCACKAIAIAUoAgBrIQAgBiQFIAALsBcBOH8jBSEGIwVBoAJqJAUgBkG8AWohDCAGQbgBaiEPIAZBtAFqIQggBkGwAWohCiAGQawBaiELIAZBqAFqIQ4gBkGkAWohECAGQaABaiEqIAZBnAFqISEgBkGYAWohKyAGQZQBaiEiIAZBkAFqISMgBkGMAWohESAGQYgBaiEsIAZBhAFqISQgBkGAAWohLSAGQfwAaiEYIAZB+ABqIS4gBkH0AGohLyAGQfAAaiEZIAZB7ABqIRogBkHoAGohMCAGQeQAaiExIAZB4ABqIRIgBkHcAGohMiAGQdgAaiElIAZB1ABqITMgBkHQAGohGyAGQcwAaiE0IAZByABqITUgBkHEAGohHCAGQUBrIR0gBkE8aiE2IAZBOGohNyAGQTRqIRUgBkEwaiEWIAZBLGohOCAGQShqITkgBkEkaiETIAZBIGohOiAGQRxqISYgBkEYaiE7IAZBFGoiDSAANgIAIAZBEGoiACABNgIAIAZBDGoiASACNgIAIAZBCGoiAiADNgIAIAZBBGoiAyAENgIAIAYgBTYCACAAKAIAIQAgASgCACEBIAIoAgAhAiADKAIAIQQgBigCACEFIAZBkAJqIgMgDSgCADYCACAGQYwCaiI8IAA2AgAgBkGIAmoiHiABNgIAIAZBhAJqIicgAjYCACAGQYACaiIAIAQ2AgAgBkH8AWoiBCAFNgIAIAZB+AFqIgdBADYCACAGQfQBaiIoQQE2AgAgBkHwAWoiASAAKAIANgIAIAZB7AFqIgAgASgCADYCACAGQegBaiIFIAEoAgA2AgAgBkHkAWoiAiABKAIAIAQoAgBqNgIAIAZB4AFqIh8gAigCAEF4ajYCACAGQdwBaiIEIAMoAgAoAgQ2AgAgBkHYAWoiASADKAIAKAIMNgIAIAZB1AFqIhcgAygCACgCEDYCACAGQdABaiIUIAQoAgAgASgCAGo2AgAgBkHMAWoiDSADKAIAKAIINgIAIAZByAFqIiAgDSgCACABKAIAajYCACAGQcQBaiI9IA0oAgAgFygCAGo2AgAgBkHAAWoiKSAHKAIABH9BBwVBBgs2AgAgDCAeKAIAKAIANgIAIA8gHigCACgCBDYCACADKAIAIAMoAgAoAhg2AhwgACAAKAIAIAAoAgAgFCgCAEZqNgIAA0AgACgCACAfKAIASQRAIAhBADYCACAKQQA2AgAgCyAAKAIAQQFqNgIAIA4gACgCACAEKAIAazYCACAQIA4oAgBBAWogDCgCAGs2AgAgDSgCACEHIAQoAgAhCSAqIBAoAgAgASgCAEkEfyAHBSAJCzYCACAhICooAgAgECgCAGo2AgACQAJAIAEoAgBBAWsgECgCAGtBA08gECgCACAXKAIAS3FFDQAgACgCAEEBahDQASAhKAIAENABRw0AICAoAgAhByACKAIAIQkgKyAQKAIAIAEoAgBJBH8gBwUgCQs2AgAgCCAAKAIAQQVqICEoAgBBBGogAigCACArKAIAIBQoAgAQvQJBBGo2AgAgKCgCAA0ADAELICJB/8HXLzYCACAjIAMoAgAgJygCACAAKAIAIAIoAgAgIiApKAIAQQdxQbgBahEJADYCACAjKAIAIAgoAgBLBEAgCCAjKAIANgIAIAsgACgCADYCACAKICIoAgA2AgALIAgoAgBBBEkEQCAAIAAoAgAgACgCACAFKAIAa0EIdUEBamo2AgAMAwsCQCAoKAIAQQFPBEADQCAAKAIAIB8oAgBPDQIgACAAKAIAQQFqNgIAIA4gDigCAEEBajYCACAKKAIABEAgESAOKAIAIAwoAgBrNgIAIA0oAgAhByAEKAIAIQkgLCARKAIAIAEoAgBJBH8gBwUgCQs2AgAgJCAsKAIAIBEoAgBqNgIAIAEoAgBBAWsgESgCAGtBA08gESgCACAXKAIAS3EEQCAAKAIAENABICQoAgAQ0AFGBEAgICgCACEHIAIoAgAhCSAtIBEoAgAgASgCAEkEfyAHBSAJCzYCACAYIAAoAgBBBGogJCgCAEEEaiACKAIAIC0oAgAgFCgCABC9AkEEajYCACAuIBgoAgBBA2w2AgAgLyAIKAIAQQNsIAooAgBBAWoQ1AFrQQFqNgIAIBgoAgBBBE8EQCAuKAIAIC8oAgBKBEAgCCAYKAIANgIAIApBADYCACALIAAoAgA2AgALCwsLCyAZQf/B1y82AgAgGiADKAIAICcoAgAgACgCACACKAIAIBkgKSgCAEEHcUG4AWoRCQA2AgAgMCAaKAIAQQJ0IBkoAgBBAWoQ1AFrNgIAIDEgCCgCAEECdCAKKAIAQQFqENQBa0EEajYCACAaKAIAQQRPBEAgMCgCACAxKAIASgRAIAggGigCADYCACAKIBkoAgA2AgAgCyAAKAIANgIADAILCyAoKAIAQQJHDQIgACgCACAfKAIATw0CIAAgACgCAEEBajYCACAOIA4oAgBBAWo2AgAgCigCAARAIBIgDigCACAMKAIAazYCACANKAIAIQcgBCgCACEJIDIgEigCACABKAIASQR/IAcFIAkLNgIAICUgMigCACASKAIAajYCACABKAIAQQFrIBIoAgBrQQNPIBIoAgAgFygCAEtxBEAgACgCABDQASAlKAIAENABRgRAICAoAgAhByACKAIAIQkgMyASKAIAIAEoAgBJBH8gBwUgCQs2AgAgGyAAKAIAQQRqICUoAgBBBGogAigCACAzKAIAIBQoAgAQvQJBBGo2AgAgNCAbKAIAQQJ0NgIAIDUgCCgCAEECdCAKKAIAQQFqENQBa0EBajYCACAbKAIAQQRPBEAgNCgCACA1KAIASgRAIAggGygCADYCACAKQQA2AgAgCyAAKAIANgIACwsLCwsgHEH/wdcvNgIAIB0gAygCACAnKAIAIAAoAgAgAigCACAcICkoAgBBB3FBuAFqEQkANgIAIDYgHSgCAEECdCAcKAIAQQFqENQBazYCACA3IAgoAgBBAnQgCigCAEEBahDUAWtBB2o2AgAgHSgCAEEESQ0CIDYoAgAgNygCAEwNAiAIIB0oAgA2AgAgCiAcKAIANgIAIAsgACgCADYCAAwACwALCyAKKAIABEAgFSALKAIAIAQoAgBrIAooAgBBAmtrNgIAIA0oAgAgFSgCAGohByAEKAIAIBUoAgBqIQkgFiAVKAIAIAEoAgBJBH8gBwUgCQs2AgAgPSgCACEHIBQoAgAhCSA4IBUoAgAgASgCAEkEfyAHBSAJCzYCAANAAkAgCygCACAFKAIATQ0AIBYoAgAgOCgCAE0NACALKAIAQX9qLQAAIBYoAgBBf2otAABHDQAgCyALKAIAQX9qNgIAIBYgFigCAEF/ajYCACAIIAgoAgBBAWo2AgAMAQsLIA8gDCgCADYCACAMIAooAgBBAms2AgALCyA5IAsoAgAgBSgCAGs2AgAgPCgCACA5KAIAIAUoAgAgCigCACAIKAIAQQNrEPkCIAAgCygCACAIKAIAaiIHNgIAIAUgBzYCAANAAkAgACgCACAfKAIASw0AIBMgACgCACAEKAIAayAPKAIAazYCACANKAIAIQcgBCgCACEJIDogEygCACABKAIASQR/IAcFIAkLNgIAICYgOigCACATKAIAajYCACABKAIAQQFrIBMoAgBrQQNPIBMoAgAgFygCAEtxRQ0AIAAoAgAQ0AEgJigCABDQAUcNACAgKAIAIQcgAigCACEJIDsgEygCACABKAIASQR/IAcFIAkLNgIAIAggACgCAEEEaiAmKAIAQQRqIAIoAgAgOygCACAUKAIAEL0CQQRqNgIAIAogDygCADYCACAPIAwoAgA2AgAgDCAKKAIANgIAIDwoAgBBACAFKAIAQQAgCCgCAEEDaxD5AiAAIAAoAgAgCCgCAGo2AgAgBSAAKAIANgIADAELCwwBCwsgHigCACAMKAIANgIAIB4oAgAgDygCADYCBCACKAIAIAUoAgBrIQAgBiQFIAALsBcBOH8jBSEGIwVBoAJqJAUgBkG8AWohDCAGQbgBaiEPIAZBtAFqIQggBkGwAWohCiAGQawBaiELIAZBqAFqIQ4gBkGkAWohECAGQaABaiEqIAZBnAFqISEgBkGYAWohKyAGQZQBaiEiIAZBkAFqISMgBkGMAWohESAGQYgBaiEsIAZBhAFqISQgBkGAAWohLSAGQfwAaiEYIAZB+ABqIS4gBkH0AGohLyAGQfAAaiEZIAZB7ABqIRogBkHoAGohMCAGQeQAaiExIAZB4ABqIRIgBkHcAGohMiAGQdgAaiElIAZB1ABqITMgBkHQAGohGyAGQcwAaiE0IAZByABqITUgBkHEAGohHCAGQUBrIR0gBkE8aiE2IAZBOGohNyAGQTRqIRUgBkEwaiEWIAZBLGohOCAGQShqITkgBkEkaiETIAZBIGohOiAGQRxqISYgBkEYaiE7IAZBFGoiDSAANgIAIAZBEGoiACABNgIAIAZBDGoiASACNgIAIAZBCGoiAiADNgIAIAZBBGoiAyAENgIAIAYgBTYCACAAKAIAIQAgASgCACEBIAIoAgAhAiADKAIAIQQgBigCACEFIAZBkAJqIgMgDSgCADYCACAGQYwCaiI8IAA2AgAgBkGIAmoiHiABNgIAIAZBhAJqIicgAjYCACAGQYACaiIAIAQ2AgAgBkH8AWoiBCAFNgIAIAZB+AFqIgdBADYCACAGQfQBaiIoQQI2AgAgBkHwAWoiASAAKAIANgIAIAZB7AFqIgAgASgCADYCACAGQegBaiIFIAEoAgA2AgAgBkHkAWoiAiABKAIAIAQoAgBqNgIAIAZB4AFqIh8gAigCAEF4ajYCACAGQdwBaiIEIAMoAgAoAgQ2AgAgBkHYAWoiASADKAIAKAIMNgIAIAZB1AFqIhcgAygCACgCEDYCACAGQdABaiIUIAQoAgAgASgCAGo2AgAgBkHMAWoiDSADKAIAKAIINgIAIAZByAFqIiAgDSgCACABKAIAajYCACAGQcQBaiI9IA0oAgAgFygCAGo2AgAgBkHAAWoiKSAHKAIABH9BBwVBBgs2AgAgDCAeKAIAKAIANgIAIA8gHigCACgCBDYCACADKAIAIAMoAgAoAhg2AhwgACAAKAIAIAAoAgAgFCgCAEZqNgIAA0AgACgCACAfKAIASQRAIAhBADYCACAKQQA2AgAgCyAAKAIAQQFqNgIAIA4gACgCACAEKAIAazYCACAQIA4oAgBBAWogDCgCAGs2AgAgDSgCACEHIAQoAgAhCSAqIBAoAgAgASgCAEkEfyAHBSAJCzYCACAhICooAgAgECgCAGo2AgACQAJAIAEoAgBBAWsgECgCAGtBA08gECgCACAXKAIAS3FFDQAgACgCAEEBahDQASAhKAIAENABRw0AICAoAgAhByACKAIAIQkgKyAQKAIAIAEoAgBJBH8gBwUgCQs2AgAgCCAAKAIAQQVqICEoAgBBBGogAigCACArKAIAIBQoAgAQvQJBBGo2AgAgKCgCAA0ADAELICJB/8HXLzYCACAjIAMoAgAgJygCACAAKAIAIAIoAgAgIiApKAIAQQdxQbgBahEJADYCACAjKAIAIAgoAgBLBEAgCCAjKAIANgIAIAsgACgCADYCACAKICIoAgA2AgALIAgoAgBBBEkEQCAAIAAoAgAgACgCACAFKAIAa0EIdUEBamo2AgAMAwsCQCAoKAIAQQFPBEADQCAAKAIAIB8oAgBPDQIgACAAKAIAQQFqNgIAIA4gDigCAEEBajYCACAKKAIABEAgESAOKAIAIAwoAgBrNgIAIA0oAgAhByAEKAIAIQkgLCARKAIAIAEoAgBJBH8gBwUgCQs2AgAgJCAsKAIAIBEoAgBqNgIAIAEoAgBBAWsgESgCAGtBA08gESgCACAXKAIAS3EEQCAAKAIAENABICQoAgAQ0AFGBEAgICgCACEHIAIoAgAhCSAtIBEoAgAgASgCAEkEfyAHBSAJCzYCACAYIAAoAgBBBGogJCgCAEEEaiACKAIAIC0oAgAgFCgCABC9AkEEajYCACAuIBgoAgBBA2w2AgAgLyAIKAIAQQNsIAooAgBBAWoQ1AFrQQFqNgIAIBgoAgBBBE8EQCAuKAIAIC8oAgBKBEAgCCAYKAIANgIAIApBADYCACALIAAoAgA2AgALCwsLCyAZQf/B1y82AgAgGiADKAIAICcoAgAgACgCACACKAIAIBkgKSgCAEEHcUG4AWoRCQA2AgAgMCAaKAIAQQJ0IBkoAgBBAWoQ1AFrNgIAIDEgCCgCAEECdCAKKAIAQQFqENQBa0EEajYCACAaKAIAQQRPBEAgMCgCACAxKAIASgRAIAggGigCADYCACAKIBkoAgA2AgAgCyAAKAIANgIADAILCyAoKAIAQQJHDQIgACgCACAfKAIATw0CIAAgACgCAEEBajYCACAOIA4oAgBBAWo2AgAgCigCAARAIBIgDigCACAMKAIAazYCACANKAIAIQcgBCgCACEJIDIgEigCACABKAIASQR/IAcFIAkLNgIAICUgMigCACASKAIAajYCACABKAIAQQFrIBIoAgBrQQNPIBIoAgAgFygCAEtxBEAgACgCABDQASAlKAIAENABRgRAICAoAgAhByACKAIAIQkgMyASKAIAIAEoAgBJBH8gBwUgCQs2AgAgGyAAKAIAQQRqICUoAgBBBGogAigCACAzKAIAIBQoAgAQvQJBBGo2AgAgNCAbKAIAQQJ0NgIAIDUgCCgCAEECdCAKKAIAQQFqENQBa0EBajYCACAbKAIAQQRPBEAgNCgCACA1KAIASgRAIAggGygCADYCACAKQQA2AgAgCyAAKAIANgIACwsLCwsgHEH/wdcvNgIAIB0gAygCACAnKAIAIAAoAgAgAigCACAcICkoAgBBB3FBuAFqEQkANgIAIDYgHSgCAEECdCAcKAIAQQFqENQBazYCACA3IAgoAgBBAnQgCigCAEEBahDUAWtBB2o2AgAgHSgCAEEESQ0CIDYoAgAgNygCAEwNAiAIIB0oAgA2AgAgCiAcKAIANgIAIAsgACgCADYCAAwACwALCyAKKAIABEAgFSALKAIAIAQoAgBrIAooAgBBAmtrNgIAIA0oAgAgFSgCAGohByAEKAIAIBUoAgBqIQkgFiAVKAIAIAEoAgBJBH8gBwUgCQs2AgAgPSgCACEHIBQoAgAhCSA4IBUoAgAgASgCAEkEfyAHBSAJCzYCAANAAkAgCygCACAFKAIATQ0AIBYoAgAgOCgCAE0NACALKAIAQX9qLQAAIBYoAgBBf2otAABHDQAgCyALKAIAQX9qNgIAIBYgFigCAEF/ajYCACAIIAgoAgBBAWo2AgAMAQsLIA8gDCgCADYCACAMIAooAgBBAms2AgALCyA5IAsoAgAgBSgCAGs2AgAgPCgCACA5KAIAIAUoAgAgCigCACAIKAIAQQNrEPkCIAAgCygCACAIKAIAaiIHNgIAIAUgBzYCAANAAkAgACgCACAfKAIASw0AIBMgACgCACAEKAIAayAPKAIAazYCACANKAIAIQcgBCgCACEJIDogEygCACABKAIASQR/IAcFIAkLNgIAICYgOigCACATKAIAajYCACABKAIAQQFrIBMoAgBrQQNPIBMoAgAgFygCAEtxRQ0AIAAoAgAQ0AEgJigCABDQAUcNACAgKAIAIQcgAigCACEJIDsgEygCACABKAIASQR/IAcFIAkLNgIAIAggACgCAEEEaiAmKAIAQQRqIAIoAgAgOygCACAUKAIAEL0CQQRqNgIAIAogDygCADYCACAPIAwoAgA2AgAgDCAKKAIANgIAIDwoAgBBACAFKAIAQQAgCCgCAEEDaxD5AiAAIAAoAgAgCCgCAGo2AgAgBSAAKAIANgIADAELCwwBCwsgHigCACAMKAIANgIAIB4oAgAgDygCADYCBCACKAIAIAUoAgBrIQAgBiQFIAALsBcBOH8jBSEGIwVBoAJqJAUgBkG8AWohDCAGQbgBaiEPIAZBtAFqIQggBkGwAWohCiAGQawBaiELIAZBqAFqIQ4gBkGkAWohECAGQaABaiEqIAZBnAFqISEgBkGYAWohKyAGQZQBaiEiIAZBkAFqISMgBkGMAWohESAGQYgBaiEsIAZBhAFqISQgBkGAAWohLSAGQfwAaiEYIAZB+ABqIS4gBkH0AGohLyAGQfAAaiEZIAZB7ABqIRogBkHoAGohMCAGQeQAaiExIAZB4ABqIRIgBkHcAGohMiAGQdgAaiElIAZB1ABqITMgBkHQAGohGyAGQcwAaiE0IAZByABqITUgBkHEAGohHCAGQUBrIR0gBkE8aiE2IAZBOGohNyAGQTRqIRUgBkEwaiEWIAZBLGohOCAGQShqITkgBkEkaiETIAZBIGohOiAGQRxqISYgBkEYaiE7IAZBFGoiDSAANgIAIAZBEGoiACABNgIAIAZBDGoiASACNgIAIAZBCGoiAiADNgIAIAZBBGoiAyAENgIAIAYgBTYCACAAKAIAIQAgASgCACEBIAIoAgAhAiADKAIAIQQgBigCACEFIAZBkAJqIgMgDSgCADYCACAGQYwCaiI8IAA2AgAgBkGIAmoiHiABNgIAIAZBhAJqIicgAjYCACAGQYACaiIAIAQ2AgAgBkH8AWoiBCAFNgIAIAZB+AFqIgdBATYCACAGQfQBaiIoQQI2AgAgBkHwAWoiASAAKAIANgIAIAZB7AFqIgAgASgCADYCACAGQegBaiIFIAEoAgA2AgAgBkHkAWoiAiABKAIAIAQoAgBqNgIAIAZB4AFqIh8gAigCAEF4ajYCACAGQdwBaiIEIAMoAgAoAgQ2AgAgBkHYAWoiASADKAIAKAIMNgIAIAZB1AFqIhcgAygCACgCEDYCACAGQdABaiIUIAQoAgAgASgCAGo2AgAgBkHMAWoiDSADKAIAKAIINgIAIAZByAFqIiAgDSgCACABKAIAajYCACAGQcQBaiI9IA0oAgAgFygCAGo2AgAgBkHAAWoiKSAHKAIABH9BBwVBBgs2AgAgDCAeKAIAKAIANgIAIA8gHigCACgCBDYCACADKAIAIAMoAgAoAhg2AhwgACAAKAIAIAAoAgAgFCgCAEZqNgIAA0AgACgCACAfKAIASQRAIAhBADYCACAKQQA2AgAgCyAAKAIAQQFqNgIAIA4gACgCACAEKAIAazYCACAQIA4oAgBBAWogDCgCAGs2AgAgDSgCACEHIAQoAgAhCSAqIBAoAgAgASgCAEkEfyAHBSAJCzYCACAhICooAgAgECgCAGo2AgACQAJAIAEoAgBBAWsgECgCAGtBA08gECgCACAXKAIAS3FFDQAgACgCAEEBahDQASAhKAIAENABRw0AICAoAgAhByACKAIAIQkgKyAQKAIAIAEoAgBJBH8gBwUgCQs2AgAgCCAAKAIAQQVqICEoAgBBBGogAigCACArKAIAIBQoAgAQvQJBBGo2AgAgKCgCAA0ADAELICJB/8HXLzYCACAjIAMoAgAgJygCACAAKAIAIAIoAgAgIiApKAIAQQdxQbgBahEJADYCACAjKAIAIAgoAgBLBEAgCCAjKAIANgIAIAsgACgCADYCACAKICIoAgA2AgALIAgoAgBBBEkEQCAAIAAoAgAgACgCACAFKAIAa0EIdUEBamo2AgAMAwsCQCAoKAIAQQFPBEADQCAAKAIAIB8oAgBPDQIgACAAKAIAQQFqNgIAIA4gDigCAEEBajYCACAKKAIABEAgESAOKAIAIAwoAgBrNgIAIA0oAgAhByAEKAIAIQkgLCARKAIAIAEoAgBJBH8gBwUgCQs2AgAgJCAsKAIAIBEoAgBqNgIAIAEoAgBBAWsgESgCAGtBA08gESgCACAXKAIAS3EEQCAAKAIAENABICQoAgAQ0AFGBEAgICgCACEHIAIoAgAhCSAtIBEoAgAgASgCAEkEfyAHBSAJCzYCACAYIAAoAgBBBGogJCgCAEEEaiACKAIAIC0oAgAgFCgCABC9AkEEajYCACAuIBgoAgBBA2w2AgAgLyAIKAIAQQNsIAooAgBBAWoQ1AFrQQFqNgIAIBgoAgBBBE8EQCAuKAIAIC8oAgBKBEAgCCAYKAIANgIAIApBADYCACALIAAoAgA2AgALCwsLCyAZQf/B1y82AgAgGiADKAIAICcoAgAgACgCACACKAIAIBkgKSgCAEEHcUG4AWoRCQA2AgAgMCAaKAIAQQJ0IBkoAgBBAWoQ1AFrNgIAIDEgCCgCAEECdCAKKAIAQQFqENQBa0EEajYCACAaKAIAQQRPBEAgMCgCACAxKAIASgRAIAggGigCADYCACAKIBkoAgA2AgAgCyAAKAIANgIADAILCyAoKAIAQQJHDQIgACgCACAfKAIATw0CIAAgACgCAEEBajYCACAOIA4oAgBBAWo2AgAgCigCAARAIBIgDigCACAMKAIAazYCACANKAIAIQcgBCgCACEJIDIgEigCACABKAIASQR/IAcFIAkLNgIAICUgMigCACASKAIAajYCACABKAIAQQFrIBIoAgBrQQNPIBIoAgAgFygCAEtxBEAgACgCABDQASAlKAIAENABRgRAICAoAgAhByACKAIAIQkgMyASKAIAIAEoAgBJBH8gBwUgCQs2AgAgGyAAKAIAQQRqICUoAgBBBGogAigCACAzKAIAIBQoAgAQvQJBBGo2AgAgNCAbKAIAQQJ0NgIAIDUgCCgCAEECdCAKKAIAQQFqENQBa0EBajYCACAbKAIAQQRPBEAgNCgCACA1KAIASgRAIAggGygCADYCACAKQQA2AgAgCyAAKAIANgIACwsLCwsgHEH/wdcvNgIAIB0gAygCACAnKAIAIAAoAgAgAigCACAcICkoAgBBB3FBuAFqEQkANgIAIDYgHSgCAEECdCAcKAIAQQFqENQBazYCACA3IAgoAgBBAnQgCigCAEEBahDUAWtBB2o2AgAgHSgCAEEESQ0CIDYoAgAgNygCAEwNAiAIIB0oAgA2AgAgCiAcKAIANgIAIAsgACgCADYCAAwACwALCyAKKAIABEAgFSALKAIAIAQoAgBrIAooAgBBAmtrNgIAIA0oAgAgFSgCAGohByAEKAIAIBUoAgBqIQkgFiAVKAIAIAEoAgBJBH8gBwUgCQs2AgAgPSgCACEHIBQoAgAhCSA4IBUoAgAgASgCAEkEfyAHBSAJCzYCAANAAkAgCygCACAFKAIATQ0AIBYoAgAgOCgCAE0NACALKAIAQX9qLQAAIBYoAgBBf2otAABHDQAgCyALKAIAQX9qNgIAIBYgFigCAEF/ajYCACAIIAgoAgBBAWo2AgAMAQsLIA8gDCgCADYCACAMIAooAgBBAms2AgALCyA5IAsoAgAgBSgCAGs2AgAgPCgCACA5KAIAIAUoAgAgCigCACAIKAIAQQNrEPkCIAAgCygCACAIKAIAaiIHNgIAIAUgBzYCAANAAkAgACgCACAfKAIASw0AIBMgACgCACAEKAIAayAPKAIAazYCACANKAIAIQcgBCgCACEJIDogEygCACABKAIASQR/IAcFIAkLNgIAICYgOigCACATKAIAajYCACABKAIAQQFrIBMoAgBrQQNPIBMoAgAgFygCAEtxRQ0AIAAoAgAQ0AEgJigCABDQAUcNACAgKAIAIQcgAigCACEJIDsgEygCACABKAIASQR/IAcFIAkLNgIAIAggACgCAEEEaiAmKAIAQQRqIAIoAgAgOygCACAUKAIAEL0CQQRqNgIAIAogDygCADYCACAPIAwoAgA2AgAgDCAKKAIANgIAIDwoAgBBACAFKAIAQQAgCCgCAEEDaxD5AiAAIAAoAgAgCCgCAGo2AgAgBSAAKAIANgIADAELCwwBCwsgHigCACAMKAIANgIAIB4oAgAgDygCADYCBCACKAIAIAUoAgBrIQAgBiQFIAALjNYBAYkEfyMFIQYjBUHgEGokBSAGQRRqIgsgADYCACAGQRBqIgAgATYCACAGQQxqIgEgAjYCACAGQQhqIgIgAzYCACAGQQRqIgMgBDYCACAGIAU2AgAgACgCACEAIAEoAgAhASACKAIAIQIgAygCACEDIAYoAgAhBCAGQbACaiJoIAsoAgA2AgAgBkGsAmoijgQgADYCACAGQagCaiImIAE2AgAgBkGkAmoi2AEgAjYCACAGQaACaiIHIAM2AgAgBkGcAmoiCCAENgIAIAZBmAJqIowCQQA2AgAgBkGUAmoisgNBATYCACAGQZACaiI4IGgoAgBBMGo2AgAgBkGMAmoiACAHKAIANgIAIAZBiAJqIiQgACgCADYCACAGQYQCaiJSIAAoAgA2AgAgBkGAAmoijQIgACgCACAIKAIAajYCACAGQfwBaiKzAyCNAigCAEF4ajYCACAGQfgBaiIAIGgoAgAoAgQ2AgAgBkH0AWoiCSAAKAIAIGgoAgAoAgxqNgIAIAZB2BBqIeYCIAZB1BBqIbQDIAZB0BBqIbUDIAZBzBBqIZcBIAZByBBqIbYDIAZBxBBqIZgBIAZBwBBqIZkBIAZBvBBqIecCIAZBuBBqIegCIAZBtBBqIY4CIAZBsBBqIUEgBkGsEGohmgEgBkGoEGohEyAGQaQQaiFCIAZBoBBqIY8CIAZBnBBqIbcDIAZBmBBqIZACIAZBlBBqIWkgBkGQEGohuAMgBkGMEGohmwEgBkGIEGoh6QIgBkGEEGohnAEgBkGAEGohJyAGQfwPaiG5AyAGQfgPaiE5IAZB9A9qIeoCIAZB8A9qIesCIAZB7A9qIRwgBkHoD2ohkQIgBkHkD2ohugMgBkHgD2ohnQEgBkHcD2ohkgIgBkHYD2ohkwIgBkHUD2oh2QEgBkHQD2ohUyAGQcwPaiGUAiAGQcgPaiGVAiAGQcQPaiHsAiAGQcAPaiGWAiAGQbwPaiHaASAGQbgPaiHbASAGQbQPaiGXAiAGQbAPaiG7AyAGQawPaiEvIAZBqA9qIe0CIAZBpA9qIWogBkGgD2ohvAMgBkGcD2ohayAGQZgPaiGeASAGQZQPaiHuAiAGQZAPaiFUIAZBjA9qIe8CIAZBiA9qIWwgBkGED2ohbSAGQYAPaiG9AyAGQfwOaiG+AyAGQfgOaiHcASAGQfQOaiECIAZB8A5qIZ8BIAZB7A5qIZgCIAZB6A5qIUMgBkHkDmohoAEgBkHgDmohFCAGQdwOaiFEIAZB2A5qIZkCIAZB1A5qIb8DIAZB0A5qIZoCIAZBzA5qIW4gBkHIDmohwAMgBkHEDmohoQEgBkHADmoh8AIgBkG8DmohogEgBkG4DmohKCAGQbQOaiHBAyAGQbAOaiE6IAZBrA5qIfECIAZBqA5qIfICIAZBpA5qIR0gBkGgDmohmwIgBkGcDmohwgMgBkGYDmohowEgBkGUDmohnAIgBkGQDmohnQIgBkGMDmoh3QEgBkGIDmohVSAGQYQOaiGeAiAGQYAOaiGfAiAGQfwNaiHzAiAGQfgNaiGgAiAGQfQNaiHeASAGQfANaiHfASAGQewNaiGhAiAGQegNaiHDAyAGQeQNaiEwIAZB4A1qIfQCIAZB3A1qIW8gBkHYDWohxAMgBkHUDWohcCAGQdANaiGkASAGQcwNaiH1AiAGQcgNaiFWIAZBxA1qIfYCIAZBwA1qIXEgBkG8DWohciAGQbgNaiHFAyAGQbQNaiHGAyAGQbANaiHgASAGQawNaiEDIAZBqA1qIaUBIAZBpA1qIaICIAZBoA1qIUUgBkGcDWohpgEgBkGYDWohFSAGQZQNaiFGIAZBkA1qIaMCIAZBjA1qIccDIAZBiA1qIaQCIAZBhA1qIXMgBkGADWohyAMgBkH8DGohpwEgBkH4DGoh9wIgBkH0DGohqAEgBkHwDGohKSAGQewMaiHJAyAGQegMaiE7IAZB5AxqIfgCIAZB4AxqIfkCIAZB3AxqIR4gBkHYDGohpQIgBkHUDGohygMgBkHQDGohqQEgBkHMDGohpgIgBkHIDGohpwIgBkHEDGoh4QEgBkHADGohVyAGQbwMaiGoAiAGQbgMaiGpAiAGQbQMaiH6AiAGQbAMaiGqAiAGQawMaiHiASAGQagMaiHjASAGQaQMaiGrAiAGQaAMaiHLAyAGQZwMaiExIAZBmAxqIfsCIAZBlAxqIXQgBkGQDGohzAMgBkGMDGohdSAGQYgMaiGqASAGQYQMaiH8AiAGQYAMaiFYIAZB/AtqIf0CIAZB+AtqIXYgBkH0C2ohdyAGQfALaiHNAyAGQewLaiHOAyAGQegLaiHkASAGQeQLaiEEIAZB4AtqIasBIAZB3AtqIawCIAZB2AtqIUcgBkHUC2ohrAEgBkHQC2ohFiAGQcwLaiFIIAZByAtqIa0CIAZBxAtqIc8DIAZBwAtqIa4CIAZBvAtqIXggBkG4C2oh0AMgBkG0C2ohrQEgBkGwC2oh/gIgBkGsC2ohrgEgBkGoC2ohKiAGQaQLaiHRAyAGQaALaiE8IAZBnAtqIf8CIAZBmAtqIYADIAZBlAtqIR8gBkGQC2ohrwIgBkGMC2oh0gMgBkGIC2ohrwEgBkGEC2ohsAIgBkGAC2ohsQIgBkH8Cmoh5QEgBkH4CmohWSAGQfQKaiGyAiAGQfAKaiGzAiAGQewKaiGBAyAGQegKaiG0AiAGQeQKaiHmASAGQeAKaiHnASAGQdwKaiG1AiAGQdgKaiHTAyAGQdQKaiEyIAZB0ApqIYIDIAZBzApqIXkgBkHICmoh1AMgBkHECmoheiAGQcAKaiGwASAGQbwKaiGDAyAGQbgKaiFaIAZBtApqIYQDIAZBsApqIXsgBkGsCmohfCAGQagKaiHVAyAGQaQKaiHWAyAGQaAKaiHoASAGQZwKaiEFIAZBmApqIbEBIAZBlApqIekBIAZBkApqIdcDIAZBjApqIdgDIAZBiApqIdkDIAZBhApqIdoDIAZBgApqIdsDIAZB/AlqIYUDIAZB+AlqIYYDIAZB9AlqIeoBIAZB8AlqIbIBIAZB7AlqIVsgBkHoCWohfSAGQeQJaiF+IAZB4AlqIbMBIAZB3AlqIbQBIAZB2AlqIesBIAZB1AlqIewBIAZB0AlqIe0BIAZBzAlqIe4BIAZByAlqIYcDIAZBxAlqIYgDIAZBwAlqIdwDIAZBvAlqId0DIAZBuAlqIbUBIAZBtAlqId4DIAZBsAlqIbYBIAZBrAlqIbcBIAZBqAlqIYkDIAZBpAlqIYoDIAZBoAlqIbYCIAZBnAlqIUkgBkGYCWohuAEgBkGUCWohFyAGQZAJaiFKIAZBjAlqIbcCIAZBiAlqId8DIAZBhAlqIbgCIAZBgAlqIX8gBkH8CGoh4AMgBkH4CGohuQEgBkH0CGohiwMgBkHwCGohugEgBkHsCGohKyAGQegIaiHhAyAGQeQIaiE9IAZB4AhqIYwDIAZB3AhqIY0DIAZB2AhqISAgBkHUCGohuQIgBkHQCGoh4gMgBkHMCGohuwEgBkHICGohugIgBkHECGohuwIgBkHACGoh7wEgBkG8CGohXCAGQbgIaiG8AiAGQbQIaiG9AiAGQbAIaiGOAyAGQawIaiG+AiAGQagIaiHwASAGQaQIaiHxASAGQaAIaiG/AiAGQZwIaiHjAyAGQZgIaiEzIAZBlAhqIY8DIAZBkAhqIYABIAZBjAhqIeQDIAZBiAhqIYEBIAZBhAhqIbwBIAZBgAhqIZADIAZB/AdqIV0gBkH4B2ohkQMgBkH0B2ohggEgBkHwB2ohgwEgBkHsB2oh5QMgBkHoB2oh5gMgBkHkB2oh8gEgBkHgB2ohCyAGQdwHaiG9ASAGQdgHaiHAAiAGQdQHaiFLIAZB0AdqIb4BIAZBzAdqIRggBkHIB2ohTCAGQcQHaiHBAiAGQcAHaiHnAyAGQbwHaiHCAiAGQbgHaiGEASAGQbQHaiHoAyAGQbAHaiG/ASAGQawHaiGSAyAGQagHaiHAASAGQaQHaiEsIAZBoAdqIekDIAZBnAdqIT4gBkGYB2ohkwMgBkGUB2ohlAMgBkGQB2ohISAGQYwHaiHDAiAGQYgHaiHqAyAGQYQHaiHBASAGQYAHaiHEAiAGQfwGaiHFAiAGQfgGaiHzASAGQfQGaiFeIAZB8AZqIcYCIAZB7AZqIccCIAZB6AZqIZUDIAZB5AZqIcgCIAZB4AZqIfQBIAZB3AZqIfUBIAZB2AZqIckCIAZB1AZqIesDIAZB0AZqITQgBkHMBmohlgMgBkHIBmohhQEgBkHEBmoh7AMgBkHABmohhgEgBkG8BmohwgEgBkG4BmohlwMgBkG0BmohXyAGQbAGaiGYAyAGQawGaiGHASAGQagGaiGIASAGQaQGaiHtAyAGQaAGaiHuAyAGQZwGaiH2ASAGQZgGaiENIAZBlAZqIcMBIAZBkAZqIcoCIAZBjAZqIU0gBkGIBmohxAEgBkGEBmohGSAGQYAGaiFOIAZB/AVqIcsCIAZB+AVqIe8DIAZB9AVqIcwCIAZB8AVqIYkBIAZB7AVqIfADIAZB6AVqIcUBIAZB5AVqIZkDIAZB4AVqIcYBIAZB3AVqIS0gBkHYBWoh8QMgBkHUBWohPyAGQdAFaiGaAyAGQcwFaiGbAyAGQcgFaiEiIAZBxAVqIc0CIAZBwAVqIfIDIAZBvAVqIccBIAZBuAVqIc4CIAZBtAVqIc8CIAZBsAVqIfcBIAZBrAVqIWAgBkGoBWoh0AIgBkGkBWoh0QIgBkGgBWohnAMgBkGcBWoh0gIgBkGYBWoh+AEgBkGUBWoh+QEgBkGQBWoh0wIgBkGMBWoh8wMgBkGIBWohNSAGQYQFaiGdAyAGQYAFaiGKASAGQfwEaiH0AyAGQfgEaiGLASAGQfQEaiHIASAGQfAEaiGeAyAGQewEaiFhIAZB6ARqIZ8DIAZB5ARqIYwBIAZB4ARqIY0BIAZB3ARqIfUDIAZB2ARqIfYDIAZB1ARqIfoBIAZB0ARqIQ4gBkHMBGohyQEgBkHIBGoh1AIgBkHEBGohTyAGQcAEaiHKASAGQbwEaiEaIAZBuARqIVAgBkG0BGoh1QIgBkGwBGoh9wMgBkGsBGoh1gIgBkGoBGohjgEgBkGkBGoh+AMgBkGgBGohywEgBkGcBGohoAMgBkGYBGohzAEgBkGUBGohLiAGQZAEaiH5AyAGQYwEaiFAIAZBiARqIaEDIAZBhARqIaIDIAZBgARqISMgBkH8A2oh1wIgBkH4A2oh+gMgBkH0A2ohzQEgBkHwA2oh2AIgBkHsA2oh2QIgBkHoA2oh+wEgBkHkA2ohYiAGQeADaiHaAiAGQdwDaiHbAiAGQdgDaiGjAyAGQdQDaiHcAiAGQdADaiH8ASAGQcwDaiH9ASAGQcgDaiHdAiAGQcQDaiH7AyAGQcADaiE2IAZBvANqIaQDIAZBuANqIY8BIAZBtANqIfwDIAZBsANqIZABIAZBrANqIc4BIAZBqANqIaUDIAZBpANqIWMgBkGgA2ohpgMgBkGcA2ohkQEgBkGYA2ohkgEgBkGUA2oh/QMgBkGQA2oh/gMgBkGMA2oh/gEgBkGIA2ohDyAGQYQDaiHPASAGQYADaiH/ASAGQfwCaiH/AyAGQfgCaiGABCAGQfQCaiGBBCAGQfACaiGCBCAGQewCaiGDBCAGQegCaiGnAyAGQeQCaiGoAyAGQeACaiGAAiAGQdwCaiHQASAGQdgCaiFkIAZB1AJqIZMBIAZB0AJqIZQBIAZBzAJqIdEBIAZByAJqIdIBIAZBxAJqIYECIAZBwAJqIYICIAZBvAJqIYMCIAZBuAJqIYQCIAZBtAJqIakDIAZB6AFqIQAgBkHkAWohNyAGQdgBaiHeAiAGQdQBaiEBIAZB0AFqISUgBkHMAWohhQIgBkHIAWoh3wIgBkHEAWohhgIgBkHAAWohqgMgBkG8AWohhwIgBkG4AWoh0wEgBkG0AWohqwMgBkGwAWohhAQgBkGsAWohGyAGQagBaiHUASAGQaQBaiHgAiAGQaABaiGFBCAGQZQBaiGsAyAGQZABaiGGBCAGQYwBaiGIAiAGQYgBaiGVASAGQYQBaiHhAiAGQYABaiGtAyAGQfwAaiHVASAGQfgAaiGHBCAGQfQAaiGIBCAGQfAAaiGJAiAGQewAaiFlIAZB6ABqIeICIAZB5ABqIeMCIAZB2ABqIa4DIAZB1ABqIYkEIAZB0ABqIYoEIAZBzABqIZYBIAZByABqIVEgBkHEAGohrwMgBkFAayGwAyAGQTxqIbEDIAZBOGohZiAGQTRqIeQCIAZBMGohiwQgBkEsaiFnIAZBKGoh5QIgBkEkaiHWASAGQSBqIdcBIAZBHGohigIgBkEYaiGMBCAGQfABaiKNBCDYASgCACgCFEH/H0kEfyDYASgCACgCFAVB/x8LIosCNgIAIAZB7AFqIosCINgBKAIAKAIQQQNGBH9BAwVBBAs2AgAgACA4KAIAKAIUNgIAIDcgOCgCACgCEDYCACBoKAIAIGgoAgAoAhg2AhwgOCgCACAHKAIAIAgoAgAQ8AIgJCAkKAIAICQoAgAgCSgCAEZqNgIAIN4CQgA3AgAg3gJBADYCCANAICQoAgAgswMoAgBJBEAgJUEANgIAIIYCICQoAgAgUigCAGs2AgAgqgMghgIoAgBBAEdBAXM2AgAg2AEoAgAhByAkKAIAIQggjQIoAgAhCSCyAygCACEKICYoAgAhDCCqAygCACEQIDcoAgAhESCLAigCACESIGQgaCgCADYCACCTASAHNgIAIJQBIAg2AgAg0QEgCTYCACDSASAKNgIAIIECIAw2AgAgggIgEDYCACCDAiARNgIAIIQCIBI2AgAgqQMgkwEoAgAoAhA2AgACQCCUASgCACBkKAIAKAIEIGQoAgAoAhhqSQRAINABQQA2AgAFIJMBKAIAIQcglAEoAgAhCCDRASgCACEJIKkDKAIAIQog0gEoAgAhDCD/ASBkKAIANgIAIP8DIAc2AgAggAQgCDYCACCBBCAJNgIAIIIEIAo2AgAggwQgDDYCACCnAyD/ASgCACgCBDYCACCoAyCABCgCACCnAygCAGs2AgAggAIg/wEoAgAoAhg2AgADQCCAAigCACCoAygCAEkEQCD/ASgCACD/AygCACCnAygCACCAAigCAGoggQQoAgAgggQoAgAggwQoAgAQugIhByCAAiCAAigCACAHajYCAAwBCwsg/wEoAgAgqAMoAgA2AhgCQAJAAkACQCCpAygCAEEDaw4FAAMCAQEDCyCTASgCACEHIJQBKAIAIQgg0QEoAgAhCSDSASgCACEKIIECKAIAIQwgggIoAgAhECCDAigCACERIIQCKAIAIRIgTyBkKAIANgIAIMoBIAc2AgAgGiAINgIAIFAgCTYCACDVAiAKNgIAIPcDIAw2AgAg1gIgEDYCACCOASARNgIAIPgDIBI2AgAgywFBAzYCACCgAyDKASgCACgCFEH/H0kEfyDKASgCACgCFAVB/x8LIgc2AgAgzAEgTygCACgCBDYCACAuIBooAgAgzAEoAgBrNgIAIPkDIMoBKAIAKAIINgIAIEAgywEoAgBBA0YEf0EDBUEECzYCACChAyBPKAIAKAIkNgIAIKIDIBooAgAg+QMoAgAgywEoAgAQuwI2AgAgIyChAygCACCiAygCAEECdGooAgA2AgAg1wIgTygCACgCLDYCACD6AyDKASgCACgCBEEBazYCACDNAUEBIPoDKAIAdEEBazYCACDYAkEANgIAINkCQQA2AgAg+wEgTygCACgCCDYCACBiIE8oAgAoAgw2AgAg2gIg+wEoAgAgYigCAGo2AgAg2wIgzAEoAgAgYigCAGo2AgAgowMgzQEoAgAgLigCAE8Ef0EABSAuKAIAIM0BKAIAawsiBzYCACDcAiBPKAIAKAIQ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a0EDT3EEQCAXKAIAID0oAgAQ8QIgkQMoAgAgPSgCABDxAkYEQCBdIBcoAgAgPSgCAGogkQMoAgAgPSgCAGogSigCACC8AigCACC9AigCABC9AiA9KAIAajYCAAsLCwsgXSgCACCAASgCAEsEQCCAASBdKAIANgIAIH8oAgAgMygCAEEDdGoggQEoAgAguAIoAgBrNgIAIH8oAgAgMygCAEEDdGogXSgCADYCBCAzIDMoAgBBAWo2AgAgXSgCACCLAygCAEsgFygCACBdKAIAaiBKKAIARnINAgsggQEggQEoAgBBAWo2AgAMAAsACyC2AiAzKAIANgIADAELILkBKAIAQQNGBEAggAEoAgAguQEoAgBJBEAgggEgSSgCACAXKAIAEPICNgIAIIIBKAIAIL4CKAIASyArKAIAIIIBKAIAa0GAgBBJcQRAAkACQCC3AigCAEUNACCCASgCACBcKAIATw0AIOYDIO8BKAIAIIIBKAIAajYCACCDASAXKAIAIOYDKAIAIEooAgAgvAIoAgAgvQIoAgAQvQI2AgAMAQsg5QMgugEoAgAgggEoAgBqNgIAIIMBIBcoAgAg5QMoAgAgSigCABC8AjYCAAsggwEoAgAguQEoAgBPBEAggAEggwEoAgA2AgAgfygCACArKAIAIIIBKAIAa0ECajYCACB/KAIAIIMBKAIANgIEIDNBATYCACCDASgCACCLAygCAEsgFygCACCDASgCAGogSigCAEZyBEAgSSgCACArKAIAQQFqNgIYILYCQQE2AgAMBQsLCwsLIIwDKAIAII0DKAIAQQJ0aiArKAIANgIAAkACQAJAA0ACQCCPAyCPAygCACIHQX9qNgIAIAdFDQAgICgCACC+AigCAE0NACDyASC5AigCACAgKAIAILsBKAIAcUEDdGo2AgAgugIoAgAhByC7AigCACEIIAsgugIoAgAguwIoAgBJBH8gBwUgCAs2AgACQAJAILcCKAIARQ0AICAoAgAgCygCAGogXCgCAE8NACC9ASDvASgCACAgKAIAajYCACAXKAIAIAsoAgBqIL0BKAIAIAsoAgBqIEooAgAgvAIoAgAgvQIoAgAQvQIhByALIAsoAgAgB2o2AgAgICgCACALKAIAaiBcKAIATwRAIL0BILoBKAIAICAoAgBqNgIACwwBCyC9ASC6ASgCACAgKAIA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CyCFAiAAKAIAICUoAgBBHGxqKAIINgIAIN8CIAAoAgAgJSgCAEEcbGooAgQ2AgAgASAlKAIAIIUCKAIAazYCAAsLILADIIUCKAIANgIAILEDIN8CKAIANgIAIGYgASgCADYCAANAIOQCIAAoAgAgZigCAEEcbGooAgg2AgAgiwQgACgCACBmKAIAQRxsaigCBDYCACAAKAIAIGYoAgBBHGxqILADKAIANgIIIAAoAgAgZigCAEEcbGogsQMoAgA2AgQgsAMg5AIoAgA2AgAgsQMgiwQoAgA2AgAg5AIoAgAgZigCAE0EQCBmIGYoAgAg5AIoAgBrNgIADAELCyBnQQA2AgADQCBnKAIAICUoAgBJBEAg5QIgJCgCACBSKAIAazYCACDWASAAKAIAIGcoAgBBHGxqKAIINgIAINcBIAAoAgAgZygCAEEcbGooAgQ2AgAg1gEoAgBBAUYEQCAkICQoAgBBAWo2AgAgZyBnKAIAQQFqNgIADAILIGcgZygCACDWASgCAGo2AgAgJCAkKAIAINYBKAIAajYCACDXASgCAEEDTwRAICYoAgAgJigCACgCBDYCCCAmKAIAICYoAgAoAgA2AgQgJigCACDXASgCAEECazYCAAUgigIg1wEoAgAg5QIoAgBFajYCACCKAigCAARAICYoAgAhByCMBCCKAigCAEEDRgR/IAcoAgBBAWsFIAcgigIoAgBBAnRqKAIACyIHNgIAIIoCKAIAQQJPBEAgJigCACAmKAIAKAIENgIICyAmKAIAICYoAgAoAgA2AgQgJigCACCMBCgCADYCAAsLIDgoAgAg5QIoAgAgUigCACDXASgCACDWASgCABD4AiCOBCgCACDlAigCACBSKAIAINcBKAIAINYBKAIAQQNrEPkCIFIgJCgCADYCAAwBCwsgOCgCABD6AgwBCwsgjQIoAgAgUigCAGshACAGJAUgAAuM1gEBiQR/IwUhBiMFQeAQaiQFIAZBFGoiCyAANgIAIAZBEGoiACABNgIAIAZBDGoiASACNgIAIAZBCGoiAiADNgIAIAZBBGoiAyAENgIAIAYgBTYCACAAKAIAIQAgASgCACEBIAIoAgAhAiADKAIAIQMgBigCACEEIAZBsAJqImggCygCADYCACAGQawCaiKOBCAANgIAIAZBqAJqIiYgATYCACAGQaQCaiLYASAC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ABC9AiBAKAIAajYCAAsLCwsgYygCACCPASgCAEsEQCCPASBjKAIANgIAII4BKAIAIDYoAgBBA3RqIJABKAIAINYCKAIAazYCACCOASgCACA2KAIAQQN0aiBjKAIANgIEIDYgNigCAEEBajYCACBjKAIAIKADKAIASyAaKAIAIGMoAgBqIFAoAgBGcg0CCyCQASCQASgCAEEBajYCAAwACwALINQCIDYoAgA2AgAMAQsgywEoAgBBA0YEQCCPASgCACDLASgCAEkEQCCRASBPKAIAIBooAgAQ8gI2AgAgkQEoAgAg3AIoAgBLIC4oAgAgkQEoAgBrQYCAEElxBEACQAJAINUCKAIARQ0AIJEBKAIAIGIoAgBPDQAg/gMg+wEoAgAgkQEoAgBqNgIAIJIBIBooAgAg/gMoAgAgUCgCACDaAigCACDbAigCABC9AjYCAAwBCyD9AyDMASgCACCRASgCAGo2AgAgkgEgGigCACD9AygCACBQKAIAELwCNgIACyCSASgCACDLASgCAE8EQCCPASCSASgCADYCACCOASgCACAuKAIAIJEBKAIAa0ECajYCACCOASgCACCSASgCADYCBCA2QQE2AgAgkgEoAgAgoAMoAgBLIBooAgAgkgEoAgBqIFAoAgBGcgRAIE8oAgAgLigCAEEBajYCGCDUAkEBNgIADAULCwsLCyChAygCACCiAygCAEECdGogLigCADYCAAJAAkACQANAAkAgpAMgpAMoAgAiB0F/ajYCACAHRQ0AICMoAgAg3AIoAgBNDQAg/gEg1wIoAgAgIygCACDNASgCAHFBA3RqNgIAINgCKAIAIQcg2QIoAgAhCCAPINgCKAIAINkCKAIASQR/IAcFIAgLNgIAAkACQCDVAigCAEUNACAjKAIAIA8oAgBqIGIoAgBPDQAgzwEg+wEoAgAgIygCAGo2AgAgGigCACAPKAIAaiDPASgCACAPKAIAaiBQKAIAINoCKAIAINsCKAIAEL0CIQcgDyAPKAIAIAdqNgIAICMoAgAgDygCAGogYigCAE8EQCDPASDMASgCACAjKAIAajYCAAsMAQsgzwEgzAEoAgAgIygCAGo2AgAgGigCACAPKAIAaiDPASgCACAPKAIAaiBQKAIAELwCIQcgDyAPKAIAIAdqNgIACyAPKAIAII8BKAIASwRAIA8oAgAg3QIo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ICsoAgAgggEoAgBrQQJqNgIAIH8oAgAggwEoAgA2AgQgM0EBNgIAIIMBKAIAIIsDKAIASyAXKAIAIIMBKAIAaiBKKAIARnIEQCBJKAIAICsoAgBBAWo2AhggtgJBATYCAAwFCwsLCwsgjAMoAgAgjQMoAgBBAnRqICsoAgA2AgACQAJAAkADQAJAII8DII8DKAIAIgdBf2o2AgAgB0UNACAgKAIAIL4CKAIATQ0AIPIBILkCKAIAICAoAgAguwEoAgBxQQN0ajYCACC6AigCACEHILsCKAIAIQggCyC6AigCACC7AigCAEkEfyAHBSAICzYCAAJAAkAgtwIoAgBFDQAgICgCACALKAIAaiBcKAIATw0AIL0BIO8BKAIAICAoAgBqNgIAIBcoAgAgCygCAGogvQEoAgAgCygCAGogSigCACC8AigCACC9AigCABC9AiEHIAsgCygCACAHajYCACAgKAIAIAsoAgBqIFwoAgBPBEAgvQEgugEoAgAgICgCAGo2AgALDAELIL0BILoBKAIAICAoAgBqNgIAIBcoAgAgCygCAGogvQEoAgAgCygCAGogSigCABC8AiEHIAsgCygCACAHajYCAAsgCygCACCAASgCAEsEQCALKAIAIL8CKAIAICAoAgBrSwRAIL8CICAoAgAgCygCAGo2AgALIIABIAsoAgA2AgAgfygCACAzKAIAQQN0aiArKAIAICAoAgBrQQJqNgIAIH8oAgAgMygCAEEDdGogCygCADYCBCAzIDMoAgBBAWo2AgAgCygCAEGAIEsNASAXKAIAIAsoAgBqIEooAgBGDQELICAoAgAhByC9ASgCACALKAIAai0AACAXKAIAIAsoAgBqLQAASARAIPABKAIAIAc2AgAgugIgCygCADYCACAgKAIAII4DKAIATQ0DIPABIPIBKAIAQQRqNgIAICAg8gEoAgAoAgQ2AgAFIPEBKAIAIAc2AgAguwIgCygCADYCACAgKAIAII4DKAIATQ0EIPEBIPIBKAIANgIAICAg8gEoAgAoAgA2AgALDAELCwwCCyDwASDjAzYCAAwBCyDxASDjAzYCAAsg8QEoAgBBADYCACDwASgCAEEANgIAIEkoAgAgvwIoAgBBCGs2AhggtgIgMygCADYCAAsg0AEgtgIoAgA2AgAMAwsgkwEoAgAhByCUASgCACEIINEBKAIAIQkg0gEoAgAhCiCBAigCACEMIIICKAIAIRAggwIoAgAhESCEAigCACESIEsgZCgCADYCACC+ASAHNgIAIBggCDYCACBMIAk2AgAgwQIgCjYCACDnAyAMNgIAIMICIBA2AgAghAEgETYCACDoAyASNgIAIL8BQQU2AgAgkgMgvgEoAgAoAhRB/x9JBH8gvgEoAgAoAhQFQf8fCyIHNgIAIMABIEsoAgAoAgQ2AgAgLCAYKAIAIMABKAIAazYCACDpAyC+ASgCACgCCDYCACA+IL8BKAIAQQNGBH9BAwVBBAs2AgAgkwMgSygCACgCJDYCACCUAyAYKAIAIOkDKAIAIL8BKAIAELsCNgIAICEgkwMoAgAglAMoAgBBAnRqKAIANgIAIMMCIEsoAgAoAiw2AgAg6gMgvgEoAgAoAgRBAWs2AgAgwQFBASDqAygCAHRBAWs2AgAgxAJBADYCACDFAkEANgIAIPMBIEsoAgAoAgg2AgAgXiBLKAIAKAIMNgIAIMYCIPMBKAIAIF4oAgBqNgIAIMcCIMABKAIAIF4oAgBqNgIAIJUDIMEBKAIAICwoAgBPBH9BAAUgLCgCACDBASgCAGsLIgc2AgAgyAIgSygCACgCEDYCACD0ASDDAigCACAsKAIAIMEBKAIAcUEDdGo2AgAg9QEgwwIoAgAgLCgCACDBASgCAHFBA3RqQQRqNgIAIMkCICwoAgBBCWo2AgAgNEEANgIAIJYDQQEgvgEoAgAoAgx0NgIAIIUBIOgDKAIAQQFrNgIAIOwDIMICKAIAQQNqNgIAIIYBIMICKAIANgIAAkACQAJAA0AghgEoAgAg7AMoAgBPDQIg5wMoAgAhByDCASCGASgCAEEDRgR/IAcoAgBBAWsFIAcghgEoAgBBAnRqKAIACyIHNgIAIJcDICwoAgAgwgEoAgBrNgIAIF9BADYCACDCASgCAEEBayAsKAIAIF4oAgBrSQRAIBgoAgAgPigCABDxAiAYKAIAIMIBKAIAayA+KAIAEPECRgRAIF8gGCgCACA+KAIAaiAYKAIAID4oAgBqIMIBKAIAayBMKAIAELwCID4oAgBqNgIACwUgmAMg8wEoAgAglwMoAgBqNgIAIMECKAIABEAgwgEoAgBBAWsgLCgCACDIAigCAGtJIF4oAgBBAWsglwMoAgBrQQNPcQRAIBgoAgAgPigCABDxAiCYAygCACA+KAIAEPECRgRAIF8gGCgCACA+KAIAaiCYAygCACA+KAIAaiBMKAIAIMYCKAIAIMcCKAIAEL0CID4oAgBqNgIACwsLCyBfKAIAIIUBKAIASwRAIIUBIF8oAgA2AgAghAEoAgAgNCgCAEEDdGoghgEoAgAgwgIoAgBrNgIAIIQBKAIAIDQoAgBBA3RqIF8oAgA2AgQgNCA0KAIAQQFqNgIAIF8oAgAgkgMoAgBLIBgoAgAgXygCAGogTCgCAEZyDQILIIYBIIYBKAIAQQFqNgIADAALAAsgwAIgNCgCADYCAAwBCyC/ASgCAEEDRgRAIIUBKAIAIL8BKAIASQRAIIcBIEsoAgAgGCgCABDyAjYCACCHASgCACDIAigCAEsgLCgCACCHASgCAGtBgIAQSXEEQAJAAkAgwQIoAgBFDQAghwEoAgAgXigCAE8NACDuAyDzASgCACCHASgCAGo2AgAgiAEgGCgCACDuAygCACBMKAIAIMYCKAIAIMcCKAIAEL0CNgIADAELIO0DIMABKAIAIIcBKAIAajYCACCIASAYKAIAIO0DKAIAIEwoAgAQvAI2AgALIIgBKAIAIL8BKAIATwRAIIUBIIgBKAIANgIAIIQBKAIAICwoAgAghwEoAgBrQQJqNgIAIIQBKAIAIIgBKAIANgIEIDRBATYCACCIASgCACCSAygCAEsgGCgCACCIASgCAGogTCgCAEZyBEAgSygCACAsKAIAQQFqNgIYIMACQQE2AgAMBQsLCwsLIJMDKAIAIJQDKAIAQQJ0aiAsKAIANgIAAkACQAJAA0ACQCCWAyCWAygCACIHQX9qNgIAIAdFDQAgISgCACDIAigCAE0NACD2ASDDAigCACAhKAIAIMEBKAIAcUEDdGo2AgAgxAIoAgAhByDFAigCACEIIA0gxAIoAgAgxQIoAgBJBH8gBwUgCAs2AgACQAJAIMECKAIARQ0AICEoAgAgDSgCAGogXigCAE8NACDDASDzASgCACAhKAIAajYCACAYKAIAIA0oAgBqIMMBKAIAIA0oAgBqIEwoAgAgxgIoAgAgxwIoAgAQvQIhByANIA0oAgAgB2o2AgAgISgCACANKAIAaiBeKAIATwRAIMMBIMABKAIAICEoAgBqNgIACwwBCyDDASDAASgCACAhKAIAajYCACAYKAIAIA0oAgBqIMMBKAIAIA0oAgBqIEwoAgAQvAIhByANIA0oAgAgB2o2AgALIA0oAgAghQEoAgBLBEAgDSgCACDJAigCACAhKAIAa0sEQCDJAiAhKAIAIA0oAgBqNgIACyCFASANKAIANgIAIIQBKAIAIDQoAgBBA3RqICwoAgAgISgCAGtBAmo2AgAghAEoAgAgNCgCAEEDdGogDSgCADYCBCA0IDQoAgBBAWo2AgAgDSgCAEGAIEsNASAYKAIAIA0oAgBqIEwoAgBGDQELICEoAgAhByDDASgCACANKAIAai0AACAYKAIAIA0oAgBqLQAASARAIPQBKAIAIAc2AgAgxAIgDSgCADYCACAhKAIAIJUDKAIATQ0DIPQBIPYBKAIAQQRqNgIAICEg9gEoAgAoAgQ2AgAFIPUBKAIAIAc2AgAgxQIgDSgCADYCACAhKAIAIJUDKAIATQ0EIPUBIPYBKAIANgIAICEg9gEoAgAoAgA2AgALDAELCwwCCyD0ASDrAzYCAAwBCyD1ASDrAzYCAAsg9QEoAgBBADYCACD0ASgCAEEANgIAIEsoAgAgyQIoAgBBCGs2AhggwAIgNCgCADYCAAsg0AEgwAIoAgA2AgAMAgsgkwEoAgAhByCUASgCACEIINEBKAIAIQkg0gEoAgAhCiCBAigCACEMIIICKAIAIRAggwIoAgAhESCEAigCACESIE0gZCgCADYCACDEASAHNgIAIBkgCDYCACBOIAk2AgAgywIgCjYCACDvAyAMNgIAIMwCIBA2AgAgiQEgETYCACDwAyASNgIAIMUBQQQ2AgAgmQMgxAEoAgAoAhRB/x9JBH8gxAEoAgAoAhQFQf8fCyIHNgIAIMYBIE0oAgAoAgQ2AgAgLSAZKAIAIMYBKAIAazYCACDxAyDEASgCACgCCDYCACA/IMUBKAIAQQNGBH9BAwVBBAs2AgAgmgMgTSgCACgCJDYCACCbAyAZKAIAIPEDKAIAIMUBKAIAELsCNgIAICIgmgMoAgAgmwMoAgBBAnRqKAIANgIAIM0CIE0oAgAoAiw2AgAg8gMgxAEoAgAoAgRBAWs2AgAgxwFBASDyAygCAHRBAWs2AgAgzgJBADYCACDPAkEANgIAIPcBIE0oAgAoAgg2AgAgYCBNKAIAKAIMNgIAINACIPcBKAIAIGAoAgBqNgIAINECIMYBKAIAIGAoAgBqNgIAIJwDIMcBKAIAIC0oAgBPBH9BAAUgLSgCACDHASgCAGsLIgc2AgAg0gIgTSgCACgCEDYCACD4ASDNAigCACAtKAIAIMcBKAIAcUEDdGo2AgAg+QEgzQIoAgAgLSgCACDHASgCAHFBA3RqQQRqNgIAINMCIC0oAgBBCWo2AgAgNUEANgIAIJ0DQQEgxAEoAgAoAgx0NgIAIIoBIPADKAIAQQFrNgIAIPQDIMwCKAIAQQNqNgIAIIsBIMwCKAIANgIAAkACQAJAA0AgiwEoAgAg9AMoAgBPDQIg7wMoAgAhByDIASCLASgCAEEDRgR/IAcoAgBBAWsFIAcgiwEoAgBBAnRqKAIACyIHNgIAIJ4DIC0oAgAgyAEoAgBrNgIAIGFBADYCACDIASgCAEEBayAtKAIAIGAoAgBrSQRAIBkoAgAgPygCABDxAiAZKAIAIMgBKAIAayA/KAIAEPECRgRAIGEgGSgCACA/KAIAaiAZKAIAID8oAgBqIMgBKAIAayBOKAIAELwCID8oAgBqNgIACwUgnwMg9wEoAgAgngMoAgBqNgIAIMsCKAIABEAgyAEoAgBBAWsgLSgCACDSAigCAGtJIGAoAgBBAWsgngMoAgBrQQNPcQRAIBkoAgAgPygCABDxAiCfAygCACA/KAIAEPECRgRAIGEgGSgCACA/KAIAaiCfAygCACA/KAIAaiBOKAIAINACKAIAINECKAIAEL0CID8oAgBqNgIACwsLCyBhKAIAIIoBKAIASwRAIIoBIGEoAgA2AgAgiQEoAgAgNSgCAEEDdGogiwEoAgAgzAIoAgBrNgIAIIkBKAIAIDUoAgBBA3RqIGEoAgA2AgQgNSA1KAIAQQFqNgIAIGEoAgAgmQMoAgBLIBkoAgAgYSgCAGogTigCAEZyDQILIIsBIIsBKAIAQQFqNgIADAALAAsgygIgNSgCADYCAAwBCyDFASgCAEEDRgRAIIoBKAIAIMUBKAIASQRAIIwBIE0oAgAgGSgCABDyAjYCACCMASgCACDSAigCAEsgLSgCACCMASgCAGtBgIAQSXEEQAJAAkAgywIoAgBFDQAgjAEoAgAgYCgCAE8NACD2AyD3ASgCACCMASgCAGo2AgAgjQEgGSgCACD2AygCACBOKAIAINACKAIAINECKAIAEL0CNgIADAELIPUDIMYBKAIAIIwBKAIAajYCACCNASAZKAIAIPUDKAIAIE4oAgAQvAI2AgALII0BKAIAIMUBKAIATwRAIIoBII0BKAIANgIAIIkBKAIAIC0oAgAgjAEoAgBrQQJqNgIAIIkBKAIAII0BKAIANgIEIDVBATYCACCNASgCACCZAygCAEsgGSgCACCNASgCAGogTigCAEZyBEAgTSgCACAtKAIAQQFqNgIYIMoCQQE2AgAMBQsLCwsLIJoDKAIAIJsDKAIAQQJ0aiAtKAIANgIAAkACQAJAA0ACQCCdAyCdAygCACIHQX9qNgIAIAdFDQAgIigCACDSAigCAE0NACD6ASDNAigCACAiKAIAIMcBKAIAcUEDdGo2AgAgzgIoAgAhByDPAigCACEIIA4gzgIoAgAgzwIoAgBJBH8gBwUgCAs2AgACQAJAIMsCKAIARQ0AICIoAgAgDigCAGogYCgCAE8NACDJASD3ASgCACAiKAIAajYCACAZKAIAIA4oAgBqIMkBKAIAIA4oAgBqIE4oAgAg0AIoAgAg0QIoAgAQvQIhByAOIA4oAgAgB2o2AgAgIigCACAOKAIAaiBgKAIATwRAIMkBIMYBKAIAICIoAgBqNgIACwwBCyDJASDGASgCACAiKAIAajYCACAZKAIAIA4oAgBqIMkBKAIAIA4oAgBqIE4oAgAQvAIhByAOIA4oAgAgB2o2AgALIA4oAgAgigEoAgBLBEAgDigCACDTAigCACAiKAIAa0sEQCDTAiAiKAIAIA4oAgBqNgIACyCKASAOKAIANgIAIIkBKAIAIDUoAgBBA3RqIC0oAgAgIigCAGtBAmo2AgAgiQEoAgAgNSgCAEEDdGogDigCADYCBCA1IDUoAgBBAWo2AgAgDigCAEGAIEsNASAZKAIAIA4oAgBqIE4oAgBGDQELICIoAgAhByDJASgCACAOKAIAai0AACAZKAIAIA4oAgBqLQAASARAIPgBKAIAIAc2AgAgzgIgDigCADYCACAiKAIAIJwDKAIATQ0DIPgBIPoBKAIAQQRqNgIAICIg+gEoAgAoAgQ2AgAFIPkBKAIAIAc2AgAgzwIgDigCADYCACAiKAIAIJwDKAIATQ0EIPkBIPoBKAIANgIAICIg+gEoAgAoAgA2AgALDAELCwwCCyD4ASDzAzYCAAwBCyD5ASDzAzYCAAsg+QEoAgBBADYCACD4ASgCAEEANgIAIE0oAgAg0wIoAgBBCGs2AhggygIgNSgCADYCAAsg0AEgygIoAgA2AgALCyCHAiDQASgCADYCACCHAigCAEUEQCAkICQoAgBBAWo2AgAMAgsg0wFBADYCAANAINMBKAIAQQNJBEAgACgCAEEQaiDTASgCAEECdGogJigCACDTASgCAEECdGooAgA2AgAg0wEg0wEoAgBBAWo2AgAMAQsLIAAoAgBBATYCCCAAKAIAIIYCKAIANgIMIKsDIDcoAgAghwIoAgBBA3RqQXxqKAIANgIAAkAgqwMoAgAgjQQoAgBLBEAghQIgqwMoAgA2AgAg3wIgNygCACCHAigCAEEBa0EDdGooAgA2AgAgAUEANgIAICVBATYCAAUghAQg3gIgUigCACCGAigCACA4KAIAEPMCNgIAIBtBADYCAANAIBsoAgAgiwIoAgBJBEAgACgCACAbKAIAQRxsakEBNgIIIAAoAgAgGygCAEEcbGpBgICAgAQ2AgAgGyAbKAIAQQFqNgIADAELCyDUAUEANgIAA0Ag1AEoAgAghwIoAgBJBEAg4AIgNygCACDUASgCAEEDdGooAgA2AgAghQQgNygCACDUASgCAEEDdGooAgQ2AgAgrAMgJigCACDgAigCACCqAygCABD0AgNAIBsoAgAghQQoAgBNBEAghAQoAgAhByAbKAIAIQggOCgCACEJIIwCKAIAIQog3AMg4AIoAgA2AgAg3QMgCDYCACC1ASAJNgIAIN4DIAo2AgAgtwEg3AMoAgBBAWoQ1AE2AgAgiQMg3QMoAgBBA2s2AgAgtQEoAgAoAjgEQCCIAyCJAygCAEEBahDUAUEQaiC3ASgCAGo2AgAFILYBILcBKAIAILUBKAIAKAI0aiC1ASgCACgCDCC3ASgCAEECdGooAgBBAWoQ1AFrNgIAIN4DKAIAQQJIILcBKAIAQRRPcQRAILYBILYBKAIAILcBKAIAQRNrQQF0ajYCAAsgigMgiQMoAgAQ3AI2AgAgigMoAgBBAnRBwDVqKAIAILUBKAIAKAIwaiC1ASgCACgCCCCKAygCAEECdGooAgBBAWoQ1AFrIQggtgEgtgEoAgAgCGo2AgAgiAMgtgEoAgA2AgALIIYEIAcgiAMoAgBqNgIAIAAoAgAgGygCAEEcbGogGygCADYCCCAAKAIAIBsoAgBBHGxqIOACKAIANgIEIAAoAgAgGygCAEEcbGoghgIoAgA2AgwgACgCACAbKAIAQRxsaiCGBCgCADYCACAAKAIAIBsoAgBBHGxqQRBqIgcgrAMpAgA3AgAgByCsAygCCDYCCCAbIBsoAgBBAWo2AgAMAQsLINQBINQBKAIAQQFqNgIADAELCyAlIBsoAgBBAWs2AgAgAUEBNgIAAkACQANAIAEoAgAgJSgCAEsNAiCIAiAkKAIAIAEoAgBqNgIAIJUBIAAoAgAgASgCAEEcbGpBbGooAgBBAUYEfyAAKAIAIAEoAgBBHGxqQXBqKAIAQQFqBUEBCyIHNgIAIAEoAgAglQEoAgBLBEAg4QIgACgCACABKAIAIJUBKAIAa0EcbGooAgAgiAIoAgAglQEoAgBrIJUBKAIAIDgoAgAQ9QJqNgIABSDhAiDeAiBSKAIAIJUBKAIAIDgoAgAQ9gI2AgALIOECKAIAIAAoAgAgASgCAEEcbGooAgBMBEAgACgCACABKAIAQRxsakEBNgIIIAAoAgAgASgCAEEcbGpBADYCBCAAKAIAIAEoAgBBHGxqIJUBKAIANgIMIAAoAgAgASgCAEEcbGog4QIoAgA2AgAgACgCACABKAIAQRxsakEQaiIHIAAoAgAgASgCAEEcbGpBdGoiCCkCADcCACAHIAgoAgg2AggLAkAgiAIoAgAgswMoAgBNBEAgASgCACAlKAIARg0EIIwCKAIARQRAIAAoAgAgASgCAEEBakEcbGooAgAgACgCACABKAIAQRxsaigCAEwNAgsgrQMgACgCACABKAIAQRxsaigCCEEBRzYCACDVASAAKAIAIAEoAgBBHGxqKAIIQQFGBH8gACgCACABKAIAQRxsaigCDAVBAAsiBzYCACCHBCABKAIAINUBKAIASwR/IAAoAgAgASgCACDVASgCAGtBHGxqKAIABUEACyIHNgIAIIgEIIcEKAIAIIgCKAIAINUBKAIAayDVASgCACA4KAIAEPcCajYCACDYASgCACEHIIgCKAIAIQggjQIoAgAhCSCyAygCACEKIAAoAgAgASgCAEEcbGpBEGohDCCtAygCACEQIDcoAgAhESCLAigCACESIFsgaCgCADYCACB9IAc2AgAgfiAINgIAILMBIAk2AgAgtAEgCjYCACDrASAMNgIAIOwBIBA2AgAg7QEgETYCACDuASASNgIAIIcDIH0oAgAoAhA2AgACQCB+KAIAIFsoAgAoAgQgWygCACgCGGpJBEAgsgFBADYCAAUgfSgCACEHIH4oAgAhCCCzASgCACEJIIcDKAIAIQogtAEoAgAhDCDpASBbKAIANgIAINcDIAc2AgAg2AMgCDYCACDZAyAJNgIAINoDIAo2AgAg2wMgDDYCACCFAyDpASgCACgCBDYCACCGAyDYAygCACCFAygCAGs2AgAg6gEg6QEoAgAoAhg2AgADQCDqASgCACCGAygCAEkEQCDpASgCACDXAygCACCFAygCACDqASgCAGog2QMoAgAg2gMoAgAg2wMoAgAQugIhByDqASDqASgCACAHajYCAAwBCwsg6QEoAgAghgMoAgA2AhgCQAJAAkACQCCHAygCAEEDaw4FAAMCAQEDCyB9KAIAIQcgfigCACEIILMBKAIAIQkgtAEoAgAhCiDrASgCACEMIOwBKAIAIRAg7QEoAgAhESDuASgCACESIEcgWygCADYCACCsASAHNgIAIBYgCDYCACBIIAk2AgAgrQIgCjYCACDPAyAMNgIAIK4CIBA2AgAgeCARNgIAINADIBI2AgAgrQFBAzYCACD+AiCsASgCACgCFEH/H0kEfyCsASgCACgCFAVB/x8LIgc2AgAgrgEgRygCACgCBDYCACAqIBYoAgAgrgEoAgBrNgIAINEDIKwBKAIAKAIINgIAIDwgrQEoAgBBA0YEf0EDBUEECzYCACD/AiBHKAIAKAIkNgIAIIADIBYoAgAg0QMoAgAgrQEoAgAQuwI2AgAgHyD/AigCACCAAygCAEECdGooAgA2AgAgrwIgRygCACgCLDYCACDSAyCsASgCACgCBEEBazYCACCvAUEBINIDKAIAdEEBazYCACCwAkEANgIAILECQQA2AgAg5QEgRygCACgCCDYCACBZIEcoAgAoAgw2AgAgsgIg5QEoAgAgWSgCAGo2AgAgswIgrgEoAgAgWSgCAGo2AgAggQMgrwEoAgAgKigCAE8Ef0EABSAqKAIAIK8BKAIAawsiBzYCACC0AiBHKAIAKAIQNgIAIOYBIK8CKAIAICooAgAgrwEoAgBxQQN0ajYCACDnASCvAigCACAqKAIAIK8BKAIAcUEDdGpBBGo2AgAgtQIgKigCAEEJajYCACAyQQA2AgAgggNBASCsASgCACgCDHQ2AgAgeSDQAygCAEEBazYCACDUAyCuAigCAEEDajYCACB6IK4CKAIANgIAAkACQAJAA0AgeigCACDUAygCAE8NAiDPAygCACEHILABIHooAgBBA0YEfyAHKAIAQQFrBSAHIHooAgBBAnRqKAIACyIHNgIAIIMDICooAgAgsAEoAgBrNgIAIFpBADYCAAJAILABKAIAQQFrICooAgAgWSgCAGtJBEAgFigCACA8KAIAEPECIBYoAgAgsAEoAgBrIDwoAgAQ8QJHDQEgWiAWKAIAIDwoAgBqIBYoAgAgPCgCAGogsAEoAgBrIEgoAgAQvAIgPCgCAGo2AgAFIIQDIOUBKAIAIIMDKAIAajYCACCtAigCAEUNASCwASgCAEEBayAqKAIAILQCKAIAa0kgWSgCAEEBayCDAygCAGtBA09xRQ0BIBYoAgAgPCgCABDxAiCEAygCACA8KAIAEPECRw0BIFogFigCACA8KAIAaiCEAygCACA8KAIAaiBIKAIAILICKAIAILMCKAIAEL0CIDwoAgBqNgIACwsgWigCACB5KAIASwRAIHkgWigCADYCACB4KAIAIDIoAgBBA3RqIHooAgAgrgIoAgBrNgIAIHgoAgAgMigCAEEDdGogWigCADYCBCAyIDIoAgBBAWo2AgAgWigCACD+AigCAEsgFigCACBaKAIAaiBIKAIARnINAgsgeiB6KAIAQQFqNgIADAALAAsgrAIgMigCADYCAAwBCwJAIK0BKAIAQQNGBEAgeSgCACCtASgCAE8NASB7IEcoAgAgFigCABDyAjYCACB7KAIAILQCKAIASyAqKAIAIHsoAgBrQYCAEElxRQ0BAkACQCCtAigCAEUNACB7KAIAIFkoAgBPDQAg1gMg5QEoAgAgeygCAGo2AgAgfCAWKAIAINYDKAIAIEgoAgAgsgIoAgAgswIoAgAQvQI2AgAMAQsg1QMgrgEoAgAgeygCAGo2AgAgfCAWKAIAINUDKAIAIEgoAgAQvAI2AgALIHwoAgAgrQEoAgBJDQEgeSB8KAIANgIAIHgoAgAgKigCACB7KAIAa0ECajYCACB4KAIAIHwoAgA2AgQgMkEBNgIAIHwoAgAg/gIoAgBLIBYoAgAgfCgCAGogSCgCAEZyRQ0BIEcoAgAgKigCAEEBajYCGCCsAkEBNgIADAILCyD/AigCACCAAygCAEECdGogKigCADYCAAJAAkACQANAAkAgggMgggMoAgAiB0F/ajYCACAHRQ0AIB8oAgAgtAIoAgBNDQAg6AEgrwIoAgAgHygCACCvASgCAHFBA3RqNgIAILACKAIAIQcgsQIoAgAhCCAFILACKAIAILECKAIASQR/IAcFIAgLNgIAAkACQCCtAigCAEUNACAfKAIAIAUoAgBqIFkoAgBPDQAgsQEg5QEoAgAgHygCAGo2AgAgFigCACAFKAIAaiCxASgCACAFKAIAaiBIKAIAILICKAIAILMCKAIAEL0CIQcgBSAFKAIAIAdqNgIAIB8oAgAgBSgCAGogWSgCAEkNASCxASCuASgCACAfKAIAajYCAAwBCyCxASCuASgCACAfKAIAajYCACAWKAIAIAUoAgBqILEBKAIAIAUoAgBqIEgoAgAQvAIhByAFIAUoAgAgB2o2AgALIAUoAgAgeSgCAEsEQCAFKAIAILUCKAIAIB8oAgBrSwRAILUCIB8oAgAgBSgCAGo2AgALIHkgBSgCADYCACB4KAIAIDIoAgBBA3RqICooAgAgHygCAGtBAmo2AgAgeCgCACAyKAIAQQN0aiAFKAIANgIEIDIgMigCAEEBajYCACAFKAIAQYAgSw0BIBYoAgAgBSgCAGogSCgCAEYNAQsgHygCACEHILEBKAIAIAUoAgBqLQAAIBYoAgAgBSgCAGotAABIBEAg5gEoAgAgBzYCACCwAiAFKAIANgIAIB8oAgAggQMoAgBNDQMg5gEg6AEoAgBBBGo2AgAgHyDoASgCACgCBDYCAAUg5wEoAgAgBzYCACCxAiAFKAIANgIAIB8oAgAggQMoAgBNDQQg5wEg6AEoAgA2AgAgHyDoASgCACgCADYCAAsMAQsLDAILIOYBINMDNgIADAELIOcBINMDNgIACyDnASgCAEEANgIAIOYBKAIAQQA2AgAgRygCACC1AigCAEEIazYCGCCsAiAyKAIANgIACyCyASCsAigCADYCAAwECyB9KAIAIQcgfigCACEIILMBKAIAIQkgtAEoAgAhCiDrASgCACEMIOwBKAIAIRAg7QEoAgAhESDuASgCACESIEEgWygCADYCACCaASAHNgIAIBMgCDYCACBCIAk2AgAgjwIgCjYCACC3AyAMNgIAIJACIBA2AgAgaSARNgIAILgDIBI2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CyAHQUBrIR8gB0E8aiEgIAdBOGohFSAHQTRqIRYgB0EwaiEdIAdBLGohCiAHQShqISEgB0EkaiEiIAdBIGohDSAHQRxqIQ4gB0EYaiEXIAdBFGohIyAHQRBqIQYgB0EMaiEPIAdBCGohASAHQQRqIQggACATKAIANgIAA0AgACgCAARAIB8gBCgCACAAKAIAIAIoAgBxQQN0akEEajYCACAgIB8oAgAoAgA2AgAgCSgCACALKAIAIAAoAgAgECgCACAFKAIAIBwoAgAgHigCABCIAyAAICAoAgA2AgAgBSAFKAIAQQFqNgIADAELCyAVQQA2AgAgFkEANgIAIB0gCSgCACgCCDYCACAKIAkoAgAoAgw2AgAgISAdKAIAIAooAgBqNgIAICIgESgCACAKKAIAajYCACANIAQoAgAgAygCACACKAIAcUEDdGo2AgAgDiAEKAIAIAMoAgAgAigCAHFBA3RqQQRqNgIAIBcgAygCAEEJajYCACAGQQA2AgAgACAZKAIAIBooAgBBAnRqKAIANgIAIBkoAgAgGigCAEECdGogAygCADYCAAJAAkACQANAAkAgEiASKAIAIgVBf2o2AgAgBUUNACAAKAIAIBsoAgBNDQAgDyAEKAIAIAAoAgAgAigCAHFBA3RqNgIAIBUoAgAhBSAWKAIAIQsgASAVKAIAIBYoAgBJBH8gBQUgCws2AgACQAJAIB4oAgBFDQAgACgCACABKAIAaiAKKAIATw0AIAggHSgCACAAKAIAajYCACAMKAIAIAEoAgBqIAgoAgAgASgCAGogECgCACAhKAIAICIoAgAQvQIhBSABIAEoAgAgBWo2AgAgACgCACABKAIAaiAKKAIATwRAIAggESgCACAAKAIAajYCAAsMAQsgCCARKAIAIAAoAgBqNgIAIAwoAgAgASgCAGogCCgCACABKAIAaiAQKAIAELwCIQUgASABKAIAIAVqNgIACyABKAIAIAYoAgBLBEAgASgCACAXKAIAIAAoAgBrSwRAIBcgACgCACABKAIAajYCAAsgASgCACAGKAIAa0ECdCADKAIAIAAoAgBrQQFqENQBIBgoAgAoAgBBAWoQ1AFrSgRAIAYgASgCADYCACAYKAIAIAMoAgBBAmogACgCAGs2AgALIAwoAgAgASgCAGogECgCAEYNAQsgACgCACEFIAgoAgAg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ACEAIAUkBSAADwsgAigCAEUEQCAIKAIAQajqvmkQigIgAUEENgIACyAPLAAAIQIgBCgCACEHIAEgASgCACIIQQFqNgIAIAcgCGogAjoAACAKKAIARQRAIA4sAAAhAiAEKAIAIQcgASABKAIAIghBAWo2AgAgByAIaiACOgAACwJAAkACQAJAIAsoAgBBAWsOAwECAAMLIAQoAgAgASgCAGogCSgCABCKAiABIAEoAgBBBGo2AgAMAgsgBCgCACABKAIAaiAJKAIAOgAAIAEgASgCAEEBajYCAAwBCyAEKAIAIAEoAgBqIAkoAgBB//8DcRCaAiABIAEoAgBBAmo2AgALAkACQAJAAkACQCAMKAIAQQFrDgMBAgADCyAEKAIAIAEoAgBqIAApAwAQiwIgASABKAIAQQhqNgIADAMLIAQoAgAgASgCAGogACkDAEKAAn2nQf//A3EQmgIgASABKAIAQQJqNgIADAILIAQoAgAgASgCAGogACkDAKcQigIgASABKAIAQQRqNgIADAELIAooAgAEQCAAKQMAp0H/AXEhACAEKAIAIQIgASABKAIAIgRBAWo2AgAgAiAEaiAAOgAACwsgBiABKAIANgIAIAYoAgAhACAFJAUgAAuQCAEPfyMFIQYjBUHwAGokBSAGQcgAaiIHIAA2AgAgBkHEAGoiCiABNgIAIAZBQGsiDSACNgIAIAZBPGoiASADNgIAIAZBOGoiACAENgIAIAZBNGoiECAFNgIAIAZBMGoiAiAHKAIAKALoATYCACAGQSxqIgsgACgCADYCACAGQShqIgggASgCADYCACAGQSRqIg8gCigCADYCACAGQSBqIgQgDygCADYCACAGQRxqIhFBASAHKAIAKAJ4dDYCACAHKAIAKAKYAUEARyAAKAIAQQBHcQRAIAcoAgBBiAJqIAEoAgAgACgCABDrARoLIAZB0ABqIQogBkHMAGohBSAGQRhqIQEgBkEUaiESIAZBEGohEyAGQQxqIQ4gBkEIaiEDIAZBBGohFCAGIQACQAJAAkACQANAIAsoAgBFDQQgASAHKAIAQeADajYCACASIBAoAgAgAigCACALKAIAT3E2AgAgDSgCAEEGSQ0BIAsoAgAgAigCAEkEQCACIAsoAgA2AgALIAgoAgAgAigCAGohDCAKIAEoAgAiCSkCADcCACAKIAkpAgg3AgggCiAJKAIQNgIQIAogDBCgAwRAIBMgBygCACgCfCAHKAIAKAKQARCqAjYCACAOIAEoAgAgEygCACARKAIAIAgoAgAQoQM2AgAgBygCACAOKAIAELIDIAEoAgAoAhggDigCAEkEQCABKAIAQQA2AhgFIAEoAgBBGGoiCSAJKAIAIA4oAgBrNgIACyABKAIAQQA2AhQLIAEoAgAgCCgCACACKAIAaiARKAIAIAEoAgBBFGoQowMgASgCACgCGCABKAIAKAIQSQRAIAEoAgAgASgCACgCEDYCGAsgAyAHKAIAIAQoAgBBA2ogDSgCAEEDayAIKAIAIAIoAgAQkgM2AgAgAygCABDMAUEARyEMIAMoAgAhCSAMDQIgEigCACEMIAkEQCAAIAxBBGogAygCAEEDdGo2AgAgBCgCACAAKAIAENkCIAMgAygCAEEDajYCAAUgFCAMIAIoAgBBA3RqNgIAIAIoAgBBA2ogDSgCAEsNBCAEKAIAIBQoAgAQigIgBCgCAEEDaiAIKAIAIAIoAgAQ9AcaIAMgAigCAEEDajYCAAsgCCAIKAIAIAIoAgBqNgIAIAsgCygCACACKAIAazYCACAEIAQoAgAgAygCAGo2AgAgDSANKAIAIAMoAgBrNgIADAALAAsgBUG6fzYCACAFKAIAIQAgBiQFIAAPCyAFIAk2AgAgBSgCACEAIAYkBSAADwsgBUG6fzYCACAFKAIAIQAgBiQFIAAPCyAQKAIABEAgBCgCACAPKAIASwRAIAcoAgBBAzYCAAsLIAUgBCgCACAPKAIAazYCACAFKAIAIQAgBiQFIAAL4wgBDX8jBSEGIwVB8ABqJAUgBkHYAGohCCAGQdQAaiIFIAA2AgAgBkHQAGoiECABNgIAIAZBzABqIhEgAjYCACAGQcgAaiIJIAM2AgAgBkHEAGoiAiAENgIAIAZBQGsiASAFKAIAQeADajYCACAFKAIAIQAgAigCAEEHSQRAIABByANqIAIoAgAgBSgCACgCiAEQkwMgCEEANgIAIAgoAgAhACAGJAUgAA8LIABB8AJqEJQDIAZBPGoiAyABKAIAKAIENgIAIAZBOGoiBCAJKAIANgIAIAZBNGoiACAEKAIAIAMoAgBrNgIAIAAoAgAgASgCACgCGEGAA2pLBEAgASgCACAAKAIAQcABIAAoAgAgASgCACgCGGtBgANrSQR/QcABBSAAKAIAIAEoAgAoAhhrQYADawtrNgIYCyAGQSxqIQQgBkEYaiEDIAZBEGohDCAGQQxqIQ0gBkEIaiEOIAZBBGohCyAGIQAgBkHcAGoiByABKAIAIgopAgA3AgAgByAKKQIINwIIIAcgCigCEDYCECAGQTBqIgogBygCECAHKAIMSTYCACAGQShqIgdBADYCAANAIAUoAgAhDyAHKAIAQQNIBEAgBSgCACgC3ANB5CNqIAcoAgBBAnRqIA8oAtgDQeQjaiAHKAIAQQJ0aigCADYCACAHIAcoAgBBAWo2AgAMAQsLIAUoAgAhBwJAIA8oAswDIAUoAgAoAtADSQRAIAQgB0HIA2ogASgCACAFKAIAQfACaiAFKAIAKALcA0HkI2ogBSgCAEH4AGogCSgCACACKAIAIAooAgAQlQM2AgAFIAcoArgBRQRAIA0gBSgCACgCkAEgCigCABDfAjYCACAEIAEoAgAgBSgCAEHwAmogBSgCACgC3ANB5CNqIAUoAgBB+ABqIAkoAgAgAigCACANKAIAQR9xQcABahEKADYCAAwCCyADQgA3AgAgA0IANwIIIAMgBSgCACgCwAM2AgAgAyAFKAIAKALEAzYCDCAMIAUoAgBBmANqIAMgBSgCAEG4AWogCSgCACACKAIAEJYDNgIAIAwoAgAQzQFFBEAgBCADIAEoAgAgBSgCAEHwAmogBSgCACgC3ANB5CNqIAUoAgBB+ABqIAkoAgAgAigCACAKKAIAEJUDNgIADAILIAggDCgCADYCACAIKAIAIQAgBiQFIAAPCwsgDiAJKAIAIAIoAgBqIAQoAgBrNgIAIAUoAgBB8AJqIA4oAgAgBCgCABCXAyALIAUoAgBB8AJqIAUoAgAoAtgDIAUoAgAoAtwDIAUoAgBB9ABqIBAoAgAgESgCACACKAIAIAUoAgAoAswEIAUoAgAoAggQmAM2AgAgCygCABDMASALKAIARXIEfyAIIAsoAgA2AgAgCCgCACEAIAYkBSAABSAAIAUoAgAoAtgDNgIAIAUoAgAgBSgCACgC3AM2AtgDIAUoAgAgACgCADYC3AMgCCALKAIANgIAIAgoAgAhACAGJAUgAAsLhAMBBH8jBSEGIwVBEGokBSAGIgNBDGoiBSAANgIAIANBCGoiBCABNgIAIANBBGoiASACNgIAAkACQAJAA0AgBCgCAEEATQ0DIAUoAgAoAgQgBSgCACgCCE8NAyADIAUoAgAoAgAgBSgCACgCBEEMbGo2AgAgBCgCACADKAIAKAIETQ0BIAQgBCgCACADKAIAKAIEazYCACADKAIAQQA2AgQgBCgCACADKAIAKAIISQ0CIAQgBCgCACADKAIAKAIIazYCACADKAIAQQA2AgggBSgCAEEEaiIAIAAoAgBBAWo2AgAMAAsACyADKAIAQQRqIgAgACgCACAEKAIAazYCACAGJAUPCyADKAIAQQhqIgAgACgCACAEKAIAazYCACADKAIAKAIIIAEoAgBPBEAgBiQFDwsgBSgCACgCBEEBaiAFKAIAKAIISQRAIAMoAgBBEGoiACAAKAIAIAMoAgAoAghqNgIACyAFKAIAQQRqIgAgACgCAEEBajYCACAGJAUPCyAGJAULRAEBfyMFIQEjBUEQaiQFIAEgADYCACABKAIAIAEoAgAoAgg2AgwgASgCACABKAIAKAIANgIEIAEoAgBBADYCHCABJAULwgUBCn8jBSEIIwVB0ABqJAUgCEEMaiEKIAhBCGohCyAIQQRqIQ4gCCERIAhBzABqIg8gADYCACAIQcgAaiIJIAE2AgAgCEHEAGoiECACNgIAIAhBQGsiDSADNgIAIAhBPGoiDCAENgIAIAhBOGoiAyAFNgIAIAhBNGoiAiAGNgIAIAhBMGoiASAHNgIAIAhBLGoiACAMKAIAKAIQNgIAIAhBKGoiBSAMKAIAKAIYIAEoAgAQ3wI2AgAgCEEkaiIEIAkoAgAoAgQ2AgAgCEEgaiIBIAMoAgA2AgAgCEEcaiIDIAEoAgAgAigCAGo2AgAgCEEYaiICIAEoAgA2AgADQAJAIA8oAgAoAgQgDygCACgCCE8NACACKAIAIAMoAgBPDQAgCiAPKAIAIAMoAgAgAigCAGsgACgCABCvAyAKKAIARQ0AIAkoAgAgAigCABCwAyAJKAIAIAwoAgAgAigCABCxAxogDiAJKAIAIBAoAgAgDSgCACAMKAIAIAIoAgAgCigCBCAFKAIAQR9xQcABahEKADYCACACIAIoAgAgCigCBGo2AgAgCSgCACACKAIAIAQoAgBrNgIYIAtBAjYCAANAIAsoAgBBAEoEQCANKAIAIAsoAgBBAnRqIA0oAgAgCygCAEEBa0ECdGooAgA2AgAgCyALKAIAQX9qNgIADAELCyANKAIAIAooAgA2AgAgECgCACAOKAIAIAIoAgAgDigCAGsgCigCAEECaiAKKAIIQQNrEPkCIAIgAigCACAKKAIIajYCAAwBCwsgCSgCACACKAIAELADIAkoAgAgDCgCACACKAIAELEDGiARIAkoAgAgECgCACANKAIAIAwoAgAgAigCACADKAIAIAIoAgBrIAUoAgBBH3FBwAFqEQoANgIAIAkoAgAgAygCACAEKAIAazYCGCARKAIAIQAgCCQFIAAL4wUBEn8jBSEFIwVB8ABqJAUgBUHUAGohCSAFQdAAaiEKIAVBHGohByAFQRhqIRIgBUEUaiELIAVBEGohDyAFQQxqIQwgBUEIaiEQIAVBBGohEyAFIRQgBUHMAGoiCCAANgIAIAVByABqIgYgATYCACAFQcQAaiIRIAI2AgAgBUFAayIVIAM2AgAgBUE8aiIAIAQ2AgAgBUE4aiIWQQEgESgCACgCFHQ2AgAgBUE0aiIEIBUoAgA2AgAgBUEwaiIDIAQoAgAgACgCAGo2AgAgBUGAgMAANgIsIAVBKGoiAiAAKAIAQYCAwABuIAAoAgBB//8/cUEAR2o2AgAgBUEgaiINQQA2AgAgBUEkaiIOQQA2AgACQAJAA0AgDigCACACKAIATw0CIAYoAgAoAgggBigCACgCDE8NAiAHIAQoAgAgDigCAEEUdGo2AgAgEiADKAIAIAcoAgBrNgIAIAMoAgAhASAHKAIAQYCAQGshACALIBIoAgBBgIDAAEkEfyABBSAACzYCACAPIAsoAgAgBygCAGs2AgAgECAGKAIAKAIINgIAIAsoAgAhACAJIAgoAgAiASkCADcCACAJIAEpAgg3AgggCSABKAIQNgIQIAkgABCgAwRAIBNBASARKAIAKAIEdDYCACAUIAgoAgBBACAWKAIAIBUoAgAQoQM2AgAgCCgCACgCFCATKAIAIBQoAgAQogMLIAgoAgAgCygCACAWKAIAQQAQowMgDCAIKAIAIAYoAgAgESgCACAHKAIAIA8oAgAQpAM2AgAgDCgCABDMAQ0BIBAoAgAgBigCACgCCEkEQCAGKAIAKAIAIBAoAgBBDGxqQQRqIgAgACgCACANKAIAajYCACANIAwoAgA2AgAFIA0gDSgCACAPKAIAajYCAAsgDiAOKAIAQQFqNgIADAALAAsgCiAMKAIANgIAIAooAgAhACAFJAUgAA8LIApBADYCACAKKAIAIQAgBSQFIAALYAECfyMFIQMjBUEQaiQFIANBCGoiBCAANgIAIANBBGoiACABNgIAIAMgAjYCACAEKAIAKAIMIAAoAgAgAygCABD0BxogBCgCAEEMaiIAIAAoAgAgAygCAGo2AgAgAyQFC/QCAQZ/IwUhCSMFQTBqJAUgCUEsaiEKIAlBKGoiCyAANgIAIAlBJGoiDCABNgIAIAlBIGoiASACNgIAIAlBHGoiDSADNgIAIAlBGGoiDiAENgIAIAlBFGoiAyAFNgIAIAlBEGoiAiAGNgIAIAlBDGoiBCAHNgIAIAlBCGoiBSAINgIAIAlBBGoiACALKAIAIAwoAgAgASgCACANKAIAIA4oAgAgAygCACAEKAIAIAUoAgAQmQM2AgAgACgCAEG6f0YgAigCACADKAIATXEEQCAKQQA2AgAgCigCACEAIAkkBSAADwsgACgCABDMAQRAIAogACgCADYCACAKKAIAIQAgCSQFIAAPCyAJIAIoAgAgAigCABCaA2s2AgAgACgCACAJKAIATwRAIApBADYCACAKKAIAIQAgCSQFIAAPCyABKAIAQdgjaigCAEECRgRAIAEoAgBB2CNqQQE2AgALIAogACgCADYCACAKKAIAIQAgCSQFIAALmw8BEn8jBSEIIwVB8AJqJAUgCEHsAmohCiAIQegCaiIMIAA2AgAgCEHkAmoiDSABNgIAIAhB4AJqIgEgAjYCACAIQdwCaiIAIAM2AgAgCEHYAmoiCSAENgIAIAhB1AJqIgMgBTYCACAIQdACaiICIAY2AgAgCEHMAmoiBiAHNgIAIAhByAJqIhggACgCACgCBEEZSzYCACAIQcQCaiIVIAEoAgBBsBlqNgIAIAhBwAJqIhYgASgCAEGACGo2AgAgCEG8AmoiFyABKAIAQYQOajYCACAIQawCaiIZIAwoAgAoAgA2AgAgCEGoAmoiEiAMKAIAKAIYNgIAIAhBpAJqIhMgDCgCACgCEDYCACAIQaACaiIUIAwoAgAoAhQ2AgAgCEGcAmoiDyAJKAIANgIAIAhBmAJqIg4gDygCACADKAIAajYCACAIQZQCaiIJIA8oAgA2AgAgCEGQAmoiCyAMKAIAKAIEIAwoAgAoAgBrQQhtNgIAIAhBiAJqIhAgDCgCACgCCDYCACAIQYQCaiIEIAwoAgAoAgwgECgCAGs2AgAgCEGAAmoiESANKAIAIAEoAgAgACgCACgCHCAAKAIAKAIwIAkoAgAgAygCACAQKAIAIAQoAgAgAigCACAGKAIAEJsDNgIAIBEoAgAQzAFBAEchAyARKAIAIQAgAwRAIAogADYCACAKKAIAIQAgCCQFIAAPCyAJIAkoAgAgAGo2AgAgDigCACAJKAIAa0EESARAIApBun82AgAgCigCACEAIAgkBSAADwsgCygCACEAIAsoAgBB/wBJBEAgCSAJKAIAIgNBAWo2AgAgAyAAOgAABSAAQYD+AUkEQCAJKAIAIAsoAgBBCHZBgAFqOgAAIAkoAgAgCygCADoAASAJIAkoAgBBAmo2AgAFIAkoAgBBfzoAACAJKAIAQQFqIAsoAgBBgP4Ba0H//wNxEJoCIAkgCSgCAEEDajYCAAsLIAsoAgBFBEAgASgCAEGwGWogDSgCAEGwGWpBpAoQ9AcaIAEoAgBB4CNqIA0oAgBB4CNqKAIANgIAIAEoAgBBgAhqIA0oAgBBgAhqQYQGEPQHGiABKAIAQdgjaiANKAIAQdgjaigCADYCACABKAIAQYQOaiANKAIAQYQOakGsCxD0BxogASgCAEHcI2ogDSgCAEHcI2ooAgA2AgAgCiAJKAIAIA8oAgBrNgIAIAooAgAhACAIJAUgAA8LIAkgCSgCACIAQQFqNgIAIAhBjAJqIhAgADYCACAMKAIAENoCIAhB/AFqIgNBIzYCACAIQfgBaiIEIAgiACADIBMoAgAgCygCACACKAIAEPUBNgIAIAEoAgBB4CNqIA0oAgBB4CNqKAIANgIAIAhBuAJqIgcgASgCAEHgI2ogBCgCACALKAIAQQZBARCcAzYCACAIQfQBaiIEIAkoAgAgDigCACAJKAIAayAVKAIAQQkgBygCACAIIAMoAgAgEygCACALKAIAQfAgQQZBIyANKAIAQbAZakGkCiACKAIAQYAwEJ0DNgIAIAQoAgAQzAFBAEchAyAEKAIAIQUgAwRAIAogBTYCACAKKAIAIQAgCCQFIAAPCyAIQbQCaiEDIAhB5AFqIQQgCSAJKAIAIAVqNgIAIAhB8AFqIgVBHzYCACAIQewBaiIMIAAgBSASKAIAIAsoAgAgAigCABD1ATYCACAIQegBaiIRIAUoAgBBHE0Ef0EBBUEACzYCACABKAIAQdgjaiANKAIAQdgjaigCADYCACADIAEoAgBB2CNqIAwoAgAgCygCAEEFIBEoAgAQnAM2AgAgBCAJKAIAIA4oAgAgCSgCAGsgFigCAEEIIAMoAgAgACAFKAIAIBIoAgAgCygCAEHAIUEFQRwgDSgCAEGACGpBhAYgAigCAEGAMBCdAzYCACAEKAIAEMwBQQBHIQUgBCgCACEEIAUEQCAKIAQ2AgAgCigCACEAIAgkBSAADwsgCSAJKAIAIARqNgIAIAhB4AFqIgRBNDYCACAIQdwBaiIMIAAgBCAUKAIAIAsoAgAgAigCABD1ATYCACABKAIAQdwjaiANKAIAQdwjaigCADYCACAIQbACaiIFIAEoAgBB3CNqIAwoAgAgCygCAEEGQQEQnAM2AgAgCEHYAWoiASAJKAIAIA4oAgAgCSgCAGsgFygCAEEJIAUoAgAgACAEKAIAIBQoAgAgCygCAEGAIkEGQTQgDSgCAEGEDmpBrAsgAigCAEGAMBCdAzYCACABKAIAEMwBQQBHIQIgASgCACEAIAIEQCAKIAA2AgAgCigCACEAIAgkBSAADwsgCSAJKAIAIABqNgIAIBAoAgAgBygCAEEGdCADKAIAQQR0aiAFKAIAQQJ0ajoAACAIQdQBaiIAIAkoAgAgDigCACAJKAIAayAXKAIAIBQoAgAgFigCACASKAIAIBUoAgAgEygCACAZKAIAIAsoAgAgGCgCACAGKAIAEN0CNgIAIAAoAgAQzAFBAEchASAAKAIAIQAgAQR/IAogADYCACAKKAIAIQAgCCQFIAAFIAkgCSgCACAAajYCACAKIAkoAgAgDygCAGs2AgAgCigCACEAIAgkBSAACwspAQF/IwUhASMFQRBqJAUgASAANgIAIAEoAgBBBnZBAmohACABJAUgAAv2CAEMfyMFIQojBUHgAGokBSAKQdgAaiELIApB1ABqIgwgADYCACAKQdAAaiIAIAE2AgAgCkHMAGoiDSACNgIAIApByABqIgIgAzYCACAKQcQAaiIOIAQ2AgAgCkFAayIDIAU2AgAgCkE8aiIFIAY2AgAgCkE4aiIBIAc2AgAgCkE0aiIPIAg2AgAgCkEwaiIQIAk2AgAgCkEsaiIVIAEoAgAQmgM2AgAgCkEoaiIEIAEoAgBBgAhPQQNqIAEoAgBBgIABT2o2AgAgCkEkaiIGIA4oAgA2AgAgCkEgaiIJIAEoAgBBgAJJNgIAIApBHGoiB0ECNgIAIAAoAgBB1CNqIAwoAgBB1CNqKAIANgIAIAAoAgAgDCgCAEGACBD0BxogAigCAARAIAsgDigCACADKAIAIAUoAgAgASgCABCeAzYCACALKAIAIQAgCiQFIAAPCyAKQRRqIgIgDCgCAEHUI2ooAgBBAkYEf0EGBUE/CzYCACABKAIAIAIoAgBNBEAgCyAOKAIAIAMoAgAgBSgCACABKAIAEJ4DNgIAIAsoAgAhACAKJAUgAA8LIAMoAgAgBCgCAEEBakkEQCALQbp/NgIAIAsoAgAhACAKJAUgAA8LIApBEGoiCCAMKAIAQdQjaigCADYCACABKAIAQYAITSECIApBDGoiESANKAIAQQRJBH8gAgVBAAs2AgAgCCgCAEECRiAEKAIAQQNGcQRAIAlBATYCAAsgBigCACAEKAIAaiECIAMoAgAgBCgCAGshDSAFKAIAIRIgASgCACETIA8oAgAhDyAAKAIAIRQgESgCACERIBAoAgAhECAJKAIABH8gAiANIBIgE0H/AUELIA9BgDAgFCAIIBEgEBCgAgUgAiANIBIgE0H/AUELIA9BgDAgFCAIIBEgEBChAgshDSAKQRhqIgIgDTYCACAIKAIABEAgB0EDNgIACyACKAIARSACKAIAIAEoAgAgFSgCAGtPciACKAIAEM0BcgRAIAAoAgAgDCgCAEGACBD0BxogCyAOKAIAIAMoAgAgBSgCACABKAIAEJ4DNgIAIAsoAgAhACAKJAUgAA8LIAIoAgBBAUYEQCAAKAIAIAwoAgBBgAgQ9AcaIAsgDigCACADKAIAIAUoAgAgASgCABCfAzYCACALKAIAIQAgCiQFIAAPCyAHKAIAQQJGBEAgACgCAEHUI2pBATYCAAsgCkEIaiEDIApBBGohBSAKIQACQAJAAkACQCAEKAIAQQNrDgMAAQIDCyADIAcoAgAgCSgCAEEAR0EBc0ECdGogASgCAEEEdGogAigCAEEOdGo2AgAgBigCACADKAIAENkCDAILIAUgBygCAEEIaiABKAIAQQR0aiACKAIAQRJ0ajYCACAGKAIAIAUoAgAQigIMAQsgACAHKAIAQQxqIAEoAgBBBHRqIAIoAgBBFnRqNgIAIAYoAgAgACgCABCKAiAGKAIAIAIoAgBBCnY6AAQLIAsgBCgCACACKAIAajYCACALKAIAIQAgCiQFIAALrQIBBH8jBSEFIwVBIGokBSAFQRRqIQYgBUEQaiIHIAA2AgAgBUEMaiIIIAE2AgAgBUEIaiIBIAI2AgAgBUEEaiICIAM2AgAgBSIAIAQ2AgAgCCgCACABKAIARgRAIAAoAgBFIAEoAgBBAktyBEAgBygCAEEBNgIAIAZBATYCACAGKAIAIQAgBSQFIAAPCwsgACgCAARAIAcoAgAoAgBBAkYgASgCAEHoB0lxBEAgBkEDNgIAIAYoAgAhACAFJAUgAA8LCwJAIAAoAgAEQCABKAIAQcAATwRAIAgoAgAgASgCACACKAIAQQFrdk8NAgsgBygCAEEANgIAIAZBADYCACAGKAIAIQAgBSQFIAAPCwsgBygCAEEBNgIAIAZBAjYCACAGKAIAIQAgBSQFIAALwQcBE38jBSEQIwVB4AFqJAUgEEHQAWohESAQQYQBaiEYIBBBgAFqIRkgECEaIBBB/ABqIRMgEEH4AGohFCAQQfQAaiEbIBBB8ABqIRUgEEHsAGohHCAQQcwBaiIfIAA2AgAgEEHIAWoiICABNgIAIBBBxAFqIhYgAjYCACAQQcABaiIhIAM2AgAgEEG8AWoiIiAENgIAIBBBuAFqIh0gBTYCACAQQbQBaiISIAY2AgAgEEGwAWoiHiAHNgIAIBBBrAFqIhcgCDYCACAQQagBaiIFIAk2AgAgEEGkAWoiBCAKNgIAIBBBoAFqIgMgCzYCACAQQZwBaiICIAw2AgAgEEGYAWoiACANNgIAIBBBlAFqIgcgDjYCACAQQZABaiIGIA82AgAgEEGMAWoiCCAfKAIANgIAIBBBiAFqIgEgCCgCACAgKAIAajYCAAJAAkACQAJAAkAgIigCAA4EAgADAQQLIAgoAgAgHigCACwAADoAACAYIBYoAgAgEigCAEH/AXEQ/QE2AgAgGCgCABDNAQRAIBEgGCgCADYCACARKAIAIQAgECQFIAAPBSARQQE2AgAgESgCACEAIBAkBSAADwsACyAWKAIAIAIoAgAgACgCABD0BxogEUEANgIAIBEoAgAhACAQJAUgAA8LIBkgFigCACAFKAIAIAMoAgAgBCgCACAHKAIAIAYoAgAQ8AE2AgAgGSgCABDNAQRAIBEgGSgCADYCACARKAIAIQAgECQFIAAPBSARQQA2AgAgESgCACEAIBAkBSAADwsACyATIBcoAgA2AgAgFCAhKAIAIBcoAgAgEigCABD6ATYCACAdKAIAIB4oAgAgFygCAEEBa2otAABBAnRqKAIAQQFLBEAgHSgCACAeKAIAIBcoAgBBAWtqLQAAQQJ0aiIAIAAoAgBBf2o2AgAgEyATKAIAQX9qNgIACyAbIBogFCgCACAdKAIAIBMoAgAgEigCABD7ATYCACAbKAIAEM0BBEAgESAbKAIANgIAIBEoAgAhACAQJAUgAA8LIBUgCCgCACABKAIAIAgoAgBrIBogEigCACAUKAIAEPIBNgIAIBUoAgAQzAEEQCARIBUoAgA2AgAgESgCACEAIBAkBSAADwsgHCAWKAIAIBogEigCACAUKAIAIAcoAgAgBigCABDwATYCACAcKAIAEM0BBEAgESAcKAIANgIAIBEoAgAhACAQJAUgAA8FIBEgFSgCADYCACARKAIAIQAgECQFIAAPCwALIBFBfzYCACARKAIAIQAgECQFIAALqgIBBX8jBSEEIwVBIGokBSAEQRhqIQUgBEEUaiIGIAA2AgAgBEEQaiIHIAE2AgAgBEEMaiIIIAI2AgAgBEEIaiIBIAM2AgAgBEEEaiICIAYoAgA2AgAgBCIAIAEoAgBBH0tBAWogASgCAEH/H0tqNgIAIAEoAgAgBCgCAGogBygCAEsEQCAFQbp/NgIAIAUoAgAhACAEJAUgAA8LAkACQAJAAkAgACgCAEEBaw4DAAECAwsgAigCACABKAIAQQN0OgAADAILIAIoAgAgASgCAEEEdEEEakH//wNxEJoCDAELIAIoAgAgASgCAEEEdEEMahCKAgsgAigCACAAKAIAaiAIKAIAIAEoAgAQ9AcaIAUgASgCACAAKAIAajYCACAFKAIAIQAgBCQFIAAL5wEBA38jBSEEIwVBIGokBSAEQRRqIgUgADYCACAEIAE2AhAgBEEMaiIGIAI2AgAgBEEIaiIBIAM2AgAgBEEEaiICIAUoAgA2AgAgBCIAIAEoAgBBH0tBAWogASgCAEH/H0tqNgIAAkACQAJAAkAgBCgCAEEBaw4DAAECAwsgAigCACABKAIAQQN0QQFqOgAADAILIAIoAgAgASgCAEEEdEEFakH//wNxEJoCDAELIAIoAgAgASgCAEEEdEENahCKAgsgAigCACAAKAIAaiAGKAIALAAAOgAAIAAoAgBBAWohACAEJAUgAAs/AQJ/IwUhAiMFQRBqJAUgAkEEaiIDIAE2AgAgAiADKAIAIAAoAgRrNgIAIAIoAgBBgICAgHpLIQAgAiQFIAALhAIBAn8jBSEEIwVBIGokBSAEQRxqIgUgADYCACAEQRhqIgAgATYCACAEQRRqIgEgAjYCACAEQRBqIgIgAzYCACAEQQxqIgNBASAAKAIAdEEBazYCACAEQQhqIgAgAigCACAFKAIAKAIEazYCACAEQQRqIgIgACgCACADKAIAcSABKAIAajYCACAEIAAoAgAgAigCAGs2AgAgBSgCAEEEaiIAIAAoAgAgBCgCAGo2AgAgBSgCAEEIaiIAIAAoAgAgBCgCAGo2AgAgBSgCAEEQaiIAIAAoAgAgBCgCAGs2AgAgBSgCAEEMaiIAIAAoAgAgBCgCAGs2AgAgBCgCACEAIAQkBSAAC6wBAQN/IwUhAyMFQRBqJAUgA0EMaiIEIAA2AgAgA0EIaiIFIAE2AgAgA0EEaiIBIAI2AgAgAyIAQQA2AgADQCAAKAIAIAUoAgBJBEAgBCgCACAAKAIAQQN0aigCACABKAIASQRAIAQoAgAgACgCAEEDdGpBADYCAAUgBCgCACAAKAIAQQN0aiICIAIoAgAgASgCAGs2AgALIAAgACgCAEEBajYCAAwBCwsgAyQFC/8BAQN/IwUhBCMFQSBqJAUgBEEYaiIFIAA2AgAgBEEUaiIAIAE2AgAgBEEQaiIGIAI2AgAgBEEMaiIBIAM2AgAgBEEIaiICIAAoAgAgBSgCACgCBGs2AgAgBEEEaiIDIAEoAgAEfyABKAIAKAIABUEACyIANgIAIAIoAgAgBigCACADKAIAak0EQCAEJAUPCyAEIgAgAigCACAGKAIAazYCACAFKAIAKAIQIAQoAgBJBEAgBSgCACAAKAIANgIQCyAFKAIAKAIMIAUoAgAoAhBJBEAgBSgCACAFKAIAKAIQNgIMCyABKAIARQRAIAQkBQ8LIAEoAgBBADYCACAEJAULxhACMH8BfiMFIQUjBUHgAWokBSAFQbwBaiIIIAA2AgAgBUG4AWoiEyABNgIAIAVBtAFqIgkgAjYCACAFQbABaiIHIAM2AgAgBUGsAWoiCiAENgIAIAVByAFqIgIgCCgCACIAKQIANwIAIAIgACkCCDcCCCACIAAoAhA2AhAgBUGoAWoiFCACKAIQIAIoAgxJNgIAIAVBpAFqIgwgCSgCACgCDDYCACAFQQhqIi4gCCgCACkDIDcDACAFQaABaiINIAkoAgAoAgQgCSgCACgCCGs2AgAgBUGcAWoiL0EBIAkoAgAoAgh0NgIAIAVBmAFqIjAgCSgCACgCEDYCACAFQZQBaiIxQQEgCSgCACgCEHRBAWs2AgAgBUGQAWoiDiAIKAIAKAIMNgIAIAVBjAFqIiYgFCgCAAR/IAgoAgAoAhAFIA4oAgALNgIAIAVBiAFqIg8gCCgCACgCBDYCACAFQcABaiEYIAVB/ABqIScgBUH4AGohGSAFQfQAaiEVIAVB8ABqIRAgBUHsAGohHiAFQegAaiERIAVB5ABqIQEgBUHgAGohBCAFIQAgBUHcAGohEiAFQdgAaiEfIAVB1ABqISAgBUHQAGohGiAFQcwAaiEbIAVByABqISEgBUHEAGohAyAFQUBrISIgBUE8aiEoIAVBOGohCyAFQTRqIRYgBUEwaiEcIAVBLGohKSAFQShqISMgBUEkaiEqIAVBIGohKyAFQRxqISQgBUEYaiEsIAVBFGohLSAFQRBqIR0gBUGEAWoiJSAUKAIABH8gCCgCACgCCAVBAAs2AgAgJSgCACAmKAIAaiEGIAVBgAFqIjIgFCgCAAR/IAYFQQALNgIAICUoAgAgDigCAGohBiAnIBQoAgAEfyAGBUEACzYCACAZIA8oAgAgDigCAGo2AgAgFSAHKAIANgIAIBAgFSgCACAKKAIAajYCACAMKAIAIQYgHiAQKAIAIAwoAgBBCEsEfyAGBUEIC2s2AgAgESAVKAIANgIAIAEgFSgCADYCACAEQQA2AgAgAEIANwMAAkACQANAIAEoAgAgHigCAEsNAiAfIAEoAgAgDygCAGs2AgAgIEEANgIAIBpBADYCACAbQQA2AgAgASgCACAVKAIARwRAIAAgACkDACAEKAIALAAAIAQoAgAgDCgCAGosAAAgLikDABClAzcDAAUgACABKAIAIAwoAgAQpgM3AwALIAQgASgCADYCACAAKQMAIA0oAgAgMCgCABCnAyAxKAIARwRAIAEgASgCAEEBajYCAAwBCyAIKAIAIQcgACkDACANKAIAEKgDIQogAiAJKAIAIgYpAgA3AgAgAiAGKQIINwIIIAIgBikCEDcCECAhIAcgCiACEKkDNgIAICJBADYCACAoIAApAwAgDSgCABCqAzYCACADICEoAgA2AgADQCADKAIAICEoAgAgLygCAEEDdGpJBEACQCADKAIAKAIEICgoAgBGBEAgAygCACgCACAmKAIASwRAIBQoAgAEQCAlKAIAIQYgDygCACEHICkgAygCACgCACAOKAIASQR/IAYFIAcLNgIAICMgKSgCACADKAIAKAIAajYCACAnKAIAIQYgECgCACEHICogAygCACgCACAOKAIASQR/IAYFIAcLNgIAIDIoAgAhBiAZKAIAIQcgKyADKAIAKAIAIA4oAgBJBH8gBgUgBws2AgAgCyABKAIAICMoAgAgECgCACAqKAIAIBkoAgAQvQI2AgAgCygCACAMKAIASQ0DIBYgASgCACARKAIAICMoAgAgKygCABCrAzYCACAcIAsoAgAgFigCAGo2AgAFICQgDygCACADKAIAKAIAajYCACALIAEoAgAgJCgCACAQKAIAELwCNgIAIAsoAgAgDCgCAEkNAyAWIAEoAgAgESgCACAkKAIAIBkoAgAQqwM2AgAgHCALKAIAIBYoAgBqNgIACyAcKAIAICIoAgBLBEAgIiAcKAIANgIAICAgCygCADYCACAaIBYoAgA2AgAgGyADKAIANgIACwsLCyADIAMoAgBBCGo2AgAMAQsLIBsoAgBFBEAgCCgCACEHIAApAwAhNSANKAIAIQogHygCACEXIAIgCSgCACIGKQIANwIAIAIgBikCCDcCCCACIAYpAhA3AhAgByA1IAogFyACEKwDIAEgASgCAEEBajYCAAwBCyASICAoAgAgGigCAGo2AgAgASABKAIAIBooAgBrNgIAICwgGygCACgCADYCACAtIB8oAgAgLCgCAGs2AgAgHSATKAIAKAIAIBMoAgAoAghBDGxqNgIAIBMoAgAoAgggEygCACgCDEYNASAdKAIAIAEoAgAgESgCAGs2AgQgHSgCACASKAIANgIIIB0oAgAgLSgCADYCACATKAIAQQhqIgYgBigCAEEBajYCACAIKAIAIQcgACkDACE1IA0oAgAhCiAEKAIAIA8oAgBrIRcgAiAJKAIAIgYpAgA3AgAgAiAGKQIINwIIIAIgBikCEDcCECAHIDUgCiAXIAIQrAMgASgCACASKAIAaiAeKAIATQRAIAgoAgAhByAAKQMAITUgBCgCACEKIAEoAgAgEigCAGohFyAPKAIAITMgDSgCACE0IAIgCSgCACIGKQIANwIAIAIgBikCCDcCCCACIAYpAhA3AhAgACAHIDUgCiAXIDMgNCACEK0DNwMAIAQgASgCACASKAIAakF/ajYCAAsgASABKAIAIBIoAgBqNgIAIBEgASgCADYCAAwACwALIBhBun82AgAgGCgCACEAIAUkBSAADwsgGCAQKAIAIBEoAgBrNgIAIBgoAgAhACAFJAUgAAuKAQEDfyMFIQUjBUEgaiQFIAVBCGoiBCAANwMAIAVBEWoiBiABOgAAIAVBEGoiASACOgAAIAUgAzcDACAEIAQpAwAgBi0AAEEKaqwgBSkDAH59NwMAIAQgBCkDAELjyJW9y5vvjU9+NwMAIAQgBCkDACABLQAAQQpqrHw3AwAgBCkDACEAIAUkBSAAC5oBAgN/AX4jBSECIwVBIGokBSACQRBqIgMgADYCACACQQxqIgQgATYCACACIgBCADcDACAAQQhqIgFBADYCAANAIAApAwAhBSABKAIAIAQoAgBJBEAgACAFQuPIlb3Lm++NT343AwAgACAAKQMAIAMoAgAgASgCAGotAABBCmqsfDcDACABIAEoAgBBAWo2AgAMAQsLIAIkBSAFC6ABAQN/IwUhAyMFQSBqJAUgA0EQaiEEIAMgADcDACADQQxqIgUgATYCACADQQhqIgEgAjYCACADKQMAIQBBICAFKAIAayABKAIASQR/IAQgAEEBIAEoAgB0QQFrrYM+AgAgBCgCACEBIAMkBSABBSAEIABBICAFKAIAayABKAIAa62IQQEgASgCAHRBAWutgz4CACAEKAIAIQEgAyQFIAELC00BA38jBSECIwVBEGokBSACIgQgADcDACACQQhqIgMgATYCACADKAIARQRAIAIkBUEADwsgBCkDAEHAACADKAIAa62IpyEBIAIkBSABC0EBAn8jBSEDIwVBEGokBSADQQRqIgQgADYCACADIAE2AgAgBCgCACgCFCADKAIAIAIoAgh0QQN0aiEAIAMkBSAAC0EBAn8jBSECIwVBEGokBSACIAA3AwAgAkEIaiIDIAE2AgAgAikDAEEgIAMoAgBrrYhC/////w+DpyEBIAIkBSAB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CyAANgIAIAlBIGoiDCABNgIAIAlBHGoiASACNgIAIAlBGGoiDSADNgIAIAlBFGoiAiAENgIAIAkiACAGNwMAIAlBEGoiAyAHNgIAIAIoAgAEQCACKAIAKAIIQQBLBEAgCygCAEEMaiIBIAUpAgA3AgAgASAFKQIINwIIIAEgBSkCEDcCECABIAUpAhg3AhggASAFKQIgNwIgIAEgBSkCKDcCKCABIAUpAjA3AjAgASAFKQI4NwI4IAFBQGsgBUFAaykCADcCACABIAUpAkg3AkggASAFKQJQNwJQIAEgBSkCWDcCWCABIAUpAmA3AmAgCygCACEBIAIoAgAhAiAFKAIEIQQgACkDACEGIAMoAgAhACAIIAVBIGoiAykCADcCACAIIAMoAgg2AgggCiABIAIgBCAIIAYgABC2AzYCACAKKAIAIQAgCSQFIAAPCwsgCygCACECIAApAwAhBiADKAIAIQMgCCAFKQIANwIAIAggBSkCCDcCCCAIIAUpAhA3AhAgCCAFKQIYNwIYIAggBSkCIDcCICAIIAUpAig3AiggCCAFKQIwNwIwIAggBSkCODcCOCAIQUBrIAVBQGspAgA3AgAgCCAFKQJINwJIIAggBSkCUDcCUCAIIAUpAlg3AlggCCAFKQJgNwJgIAlBDGoiACACIAggBkEAIAMQzwI2AgAgACgCABDNAQRAIAogACgCADYCACAKKAIAIQAgCSQFIAAPCyAJQQhqIgAgCygCACgC2AMgCygCAEHgA2ogBSAMKAIAIAEoAgAgDSgCACALKAIAKALMBBCxAjYCACAAKAIAEMwBQQBHIQEgACgCACEAIAEEfyAKIAA2AgAgCigCACEAIAkkBSAABSALKAIAIAA2AtwBIApBADYCACAKKAIAIQAgCSQFIAALC80GAQV/IwUhBiMFQYACaiQFIAZBlAFqIgcgADYCACAGQZABaiIIIAE2AgAgBkGMAWoiCSACNgIAIAYiACAENwMAIABBiAFqIgogBTYCACAAQSBqIgEgBygCAEEMaiICKQIANwIAIAEgAikCCDcCCCABIAIpAhA3AhAgASACKQIYNwIYIAEgAikCIDcCICABIAIpAig3AiggASACKQIwNwIwIAEgAikCODcCOCABQUBrIAJBQGspAgA3AgAgASACKQJINwJIIAEgAikCUDcCUCABIAIpAlg3AlggASACKQJgNwJgIAFBBGoiAiAIKAIAQfAkaiIFKQIANwIAIAIgBSkCCDcCCCACIAUpAhA3AhAgAiAFKAIYNgIYIAkoAgAEQCABIAkoAgA2AgQLIAFBIGoiAiADKQIANwIAIAIgAygCCDYCCCAHKAIAIQIgACkDACEEIAooAgAhAyAGQZgBaiIAIAEpAgA3AgAgACABKQIINwIIIAAgASkCEDcCECAAIAEpAhg3AhggACABKQIgNwIgIAAgASkCKDcCKCAAIAEpAjA3AjAgACABKQI4NwI4IABBQGsgAUFAaykCADcCACAAIAEpAkg3AkggACABKQJQNwJQIAAgASkCWDcCWCAAIAEpAmA3AmAgAiAAIARBASADEM8CGiAGQRxqIgEgCCgCAEGIJWooAgBBAUYEf0EABUEBIAgoAgBB9CRqKAIAdAsiADYCACAGQRhqIgBBASAIKAIAQfgkaigCAHQ2AgAgBkEUaiICIAEoAgAgACgCAGpBAnQ2AgAgBygCACgChAQgCCgCACgCOCACKAIAEPQHGiAGQRBqIgBBASAHKAIAKAKABHQ2AgAgBygCACgCiARBACAAKAIAQQJ0EPYHGiAGQQxqIgAgCCgCAEEUajYCACAGQQhqIgEgBygCAEHgA2o2AgAgASgCACICIAAoAgAiAykCADcCACACIAMpAgg3AgggAiADKAIQNgIQIAEoAgAgACgCACgCGDYCGCABKAIAIAAoAgAoAhw2AhwgASgCACAAKAIAKAIUNgIUIAcoAgAgCCgCAEGYJWooAgA2AtwBIAcoAgAoAtgDIAgoAgBBgAFqQfAjEPQHGiAGJAVBAAv2AgECfyMFIQMjBUHwAGokBSADIAEpAgA3AgAgAyABKQIINwIIIAMgASkCEDcCECADIAEpAhg3AhggAyABKQIgNwIgIAMgASkCKDcCKCADIAEpAjA3AjAgAyABKQI4NwI4IANBQGsgAUFAaykCADcCACADIAEpAkg3AkggAyABKQJQNwJQIAMgASkCWDcCWCADIAEpAmA3AmAgA0EEaiIBIAIpAgA3AgAgASACKQIINwIIIAEgAikCEDcCECABIAIoAhg2AhggA0EgaiIEIAJBHGoiASkCADcCACAEIAEoAgg2AgggA0EDNgIsIAAgAykCADcCACAAIAMpAgg3AgggACADKQIQNwIQIAAgAykCGDcCGCAAIAMpAiA3AiAgACADKQIoNwIoIAAgAykCMDcCMCAAIAMpAjg3AjggAEFAayADQUBrKQIANwIAIAAgAykCSDcCSCAAIAMpAlA3AlAgACADKQJYNwJYIAAgAykCYDcCYCADJAUL1wEBAn8jBSEEIwVB4ABqJAUgBEHUAGoiBSABNgIAIAQgAjcDACAEQdAAaiIBIAM2AgAgBEEIaiIDIAUoAgAgBCkDACABKAIAEKgCIARBKGoiAUIANwIAIAFCADcCCCABQgA3AhAgAUIANwIYIAFCADcCICABIAMpAgA3AgAgASADKQIINwIIIAEgAykCEDcCECABIAMoAhg2AhggAUEBNgIcIAAgASkCADcCACAAIAEpAgg3AgggACABKQIQNwIQIAAgASkCGDcCGCAAIAEpAiA3AiAgBCQFC78CAQV/IwUhBSMFQSBqJAUgBUEcaiEGIAVBGGoiByAANgIAIAVBFGoiCCABNgIAIAVBEGoiCSACNgIAIAVBDGoiASADNgIAIAVBCGoiAiAENgIAIAUiACAHKAIAIAgoAgAgCSgCACABKAIAIAIoAgBBAUEBEI8DNgIAIAUoAgAQzAEEQCAGIAAoAgA2AgAgBigCACEAIAUkBSAADwsgBUEEaiIBIAcoAgAgCCgCACAAKAIAaiAJKAIAIAAoAgBrELoDNgIAIAEoAgAQzAEEQCAGIAEoAgA2AgAgBigCACEAIAUkBSAADwsgBygCACgClAEEQCAHKAIAKQPwASAHKAIAKQP4AUIBfFIEQCAGQbh/NgIAIAYoAgAhACAFJAUgAA8LCyAGIAAoAgAgASgCAGo2AgAgBigCACEAIAUkBSAAC5UFAQp/IwUhAyMFQZABaiQFIANBIGohBCADQRxqIgYgADYCACADQRhqIgggATYCACADQRRqIgcgAjYCACADQRBqIgogCCgCADYCACADQQxqIgUgCigCADYCACADQQhqIglBADYCACAGKAIAKAIARQRAIARBRDYCACAEKAIAIQAgAyQFIAAPCyADQShqIQEgA0EEaiELIAMhAAJAIAYoAgAoAgBBAUYEQCAIKAIAIQggBygCACEMIAEgBigCAEH0AGoiAikCADcCACABIAIpAgg3AgggASACKQIQNwIQIAEgAikCGDcCGCABIAIpAiA3AiAgASACKQIoNwIoIAEg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AgAiBkEBajYCACAGIAQ6AAAgGSgCACEEIBooAgAhBiBHIAwoAgA2AgAgSCAENgIAIGEgBjYCACBJIEcoAgAgYSgCABDgATYCACBiIEgoAgAgSSgCAEEBdGosAAA6AAAgRygCACBIKAIAIEkoAgBBAXRqLQABEN4BIGIsAAAhBCADIAMoAgAiBkEBajYCACAGIAQ6AAAMAQsLAkADQCAMKAIAENkBRSADKAIAIB4oAgBJcUUNASAZKAIAIQQgGigCACEGIEQgDCgCADYCACBFIAQ2AgAgXyAGNgIAIEYgRCgCACBfKAIAEOABNgIAIGAgRSgCACBGKAIAQQF0aiwAADoAACBEKAIAIEUoAgAgRigCAEEBdGotAAEQ3gEgYCwAACEEIAMgAygCACIGQQFqNgIAIAYgBDoAAAwACwALA0AgAygCACAeKAIASQRAIBkoAgAhBCAaKAIAIQYgJSAMKAIANgIAIEIgBDYCACBdIAY2AgAgQyAlKAIAIF0oAgAQ4AE2AgAgXiBCKAIAIEMoAgBBAXRqLAAAOgAAICUoAgAgQigCACBDKAIAQQF0ai0AARDeASBeLAAAIQQgAyADKAIAIgZBAWo2AgAgBiAEOgAADAELCyBUKAIAIQMgACgCACEAIAEoAgAhASACICgoAgA2AgAgCyAYNgIAIB0gAzYCACAOIAA2AgAgDyABNgIAIHYgAigCADYCAANAIAsoAgAQ2QFFIAIoAgAgHSgCAEF9aklxBEAgDigCACEAIA8oAgAhASAiIAsoAgA2AgAgIyAANgIAIFsgATYCACAkICIoAgAgWygCABDgATYCACBcICMoAgAgJCgCAEEBdGosAAA6AAAgIigCACAjKAIAICQoAgBBAXRqLQABEN4BIFwsAAAhACACIAIoAgAiAUEBajYCACABIAA6AAAgDigCACEAIA8oAgAhASBBIAsoAgA2AgAgICAANgIAIFkgATYCACAhIEEoAgAgWSgCABDgATYCACBaICAoAgAgISgCAEEBdGosAAA6AAAgQSgCACAgKAIAICEoAgBBAXRqLQABEN4BIFosAAAhACACIAIoAgAiAUEBajYCACABIAA6AAAMAQsLAkADQCALKAIAENkBRSACKAIAIB0oAgBJcUUNASAOKAIAIQAgDygCACEBID4gCygCADYCACA/IAA2AgAgVyABNgIA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BzYCACAlICEoAgAgOigCABDgATYCACA5KAIAIB0oAgAgJSgCAEECdGouAAA7AAAgISgCACAdKAIAICUoAgBBAnRqLQACEN4BIAMgAygCACAdKAIAICUoAgBBAnRqLQADajYCACABKAIAIQggAigCACEHIDcgBCgCADYCACAcICo2AgAgFCAINgIAIDggBzYCACAXIBwoAgAgOCgCABDgATYCACA3KAIAIBQoAgAgFygCAEECdGouAAA7AAAgHCgCACAUKAIAIBcoAgBBAnRqLQACEN4BIAQgBCgCACAUKAIAIBcoAgBBAnRqLQADajYCACABKAIAIQggAigCACEHIDUgECgCADYCACAbICs2AgAgICAINgIAIDYgBzYCACAWIBsoAgAgNigCABDgATYCACA1KAIAICAoAgAgFigCAEECdGouAAA7AAAgGygCACAgKAIAIBYoAgBBAnRqLQACEN4BIBAgECgCACAgKAIAIBYoAgBBAnRqLQADajYCACABKAIAIQggAigCACEHIDMgJCgCADYCACAuICw2AgAgGSAINgIAIDQgBzYCACAaIC4oAgAgNCgCABDgATYCACAzKAIAIBkoAgAgGigCAEECdGouAAA7AAAgLigCACAZKAIAIBooAgBBAnRqLQACEN4BICQgJCgCACAZKAIAIBooAgBBAnRqLQADajYCACABKAIAIQggAigCACEHIDEgAygCADYCACAVICk2AgAgDiAINgIAIDIgBzYCACAPIBUoAgAgMigCABDgATYCACAxKAIAIA4oAgAgDygCAEECdGouAAA7AAAgFSgCACAOKAIAIA8oAgBBAnRqLQACEN4BIAMgAygCACAOKAIAIA8oAgBBAnRqLQADajYCACABKAIAIQggAigCACEHICggBCgCADYCACAeICo2AgAgDSAINgIAIC0gBzYCACALIB4oAgAgLSgCABDgATYCACAoKAIAIA0oAgAgCygCAEECdGouAAA7AAAgHigCACANKAIAIAsoAgBBAnRqLQACEN4BIAQgBCgCACANKAIAIAsoAgBBAnRqLQADajYCACABKAIAIQggAigCACEHICYgECgCADYCACASICs2AgAgDCAINgIAICcgBzYCACAKIBIoAgAgJygCABDgATYCACAmKAIAIAwoAgAgCigCAEECdGouAAA7AAAgEigCACAM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IQAgASQFIAALegEDfyMFIQIjBUEQaiQFIAJBBGohAyACIgEgADYCACABKAIABH8gASgCACgCABDyAxogASgCACgCMBCHBiABKAIAKAI8EIcGIAEoAgAQhwYgA0EANgIAIAMoAgAhACACJAUgAAUgA0EANgIAIAMoAgAhACACJAUgAAsLegEDfyMFIQIjBUEQaiQFIAJBBGohAyACIgEgADYCACABKAIABH8gASgCACgCABDyAxogASgCACgCHBCHBiABKAIAKAIoEIcGIAEoAgAQhwYgA0EANgIAIAMoAgAhACACJAUgAAUgA0EANgIAIAMoAgAhACACJAUgAAsL1gEBA38jBSECIwVBEGokBSACQQRqIQMgAiIBIAA2AgAgASgCAEUEQCADQQA2AgAgAygCACEAIAIkBSAADwsgASgCACgCABDxAxogASgCACgCJARAIAEoAgAoAmQgASgCACgCJCABKAIAKAJgQR9xQeQCahECAAsgASgCACgCMARAIAEoAgAoAmQgASgCACgCMCABKAIAKAJgQR9xQeQCahECAAsgASgCACgCZCABKAIAIAEoAgAoAmBBH3FB5AJqEQIAIANBADYCACADKAIAIQAgAiQFIAALeQEDfyMFIQEjBUEQaiQFIAFBBGohAiABIgMgADYCACABKAIABH8gAygCAEHEqQFqKAIAIAMoAgAgAygCAEHAqQFqKAIAQR9xQeQCahECACACQQA2AgAgAigCACEAIAEkBSAABSACQQA2AgAgAigCACEAIAEkBSAACwskAQF/IwUhASMFQRBqJAUgASAANgIAIAEoAgAQhwYgASQFQQALegEDfyMFIQIjBUEQaiQFIAJBBGohAyACIgEgADYCACABKAIABH8gASgCACgCABDyAxogASgCACgCKBCHBiABKAIAKAI0EIcGIAEoAgAQhwYgA0EANgIAIAMoAgAhACACJAUgAAUgA0EANgIAIAMoAgAhACACJAUgAAsLrgEBBH8jBSEDIwVBEGokBSADQQxqIQIgAyEEIANBCGoiBSAANgIAIANBBGoiACABNgIAAkAgACgCAEEESQRAIAJBADYCAAUgBCAFKAIAEM8BNgIAAkACQAJAAkACQCAEKAIAQaTqvmlrDgQAAQIDBAsgAkEENgIADAULIAJBBTYCAAwECyACQQY2AgAMAwsgAkEHNgIADAILIAJBADYCAAsLIAIoAgAhACADJAUgAAs5AQJ/IwUhAiMFQRBqJAUgAkEEaiIDIAA2AgAgAiABNgIAIAMoAgAgAigCAEEAEPYDIQAgAiQFIAALpgIBBH8jBSEDIwVBMGokBSADQRxqIQQgA0EYaiIFIAA2AgAgA0EUaiIAIAE2AgAgA0EQaiIGIAI2AgAgA0EMaiIBIAYoAgAQ9wM2AgAgACgCACABKAIASQRAIARBuH82AgAgBCgCACEAIAMkBSAADwsgA0EgaiICIAUoAgAgASgCAEEBa2osAAA6AAAgA0EIaiIGIAItAABBA3E2AgAgA0EEaiIFIAItAABBBXVBAXE2AgAgAyIAIAItAABBBnU2AgAgBCABKAIAIgEgBSgCACICQQBHQQFzaiAGKAIAQQJ0QfAiaigCACIGaiADKAIAQQJ0QYAjaigCAGogBSgCAAR/IAAoAgBBAEdBAXMFQQALIgBBAXFqNgIAIAQoAgAhACADJAUgAAs/AQJ/IwUhASMFQRBqJAUgAUEEaiICIAA2AgAgASIAIAIoAgBBAUYEf0EBBUEFCzYCACAAKAIAIQAgASQFIAALSgECfyMFIQMjBUEQaiQFIANBCGoiBCAANgIAIANBBGoiACABNgIAIAMgAjYCACAEKAIAIAAoAgAgAygCAEEAEPkDIQAgAyQFIAALiwkCDH8BfiMFIQQjBUHQAGokBSAEQcgAaiEFIARBxABqIgcgADYCACAEQUBrIgAgATYCACAEQTxqIgEgAjYCACAEQThqIgYgAzYCACAEQTRqIgIgACgCADYCACAEQTBqIgMgBigCABD3AzYCACABKAIAIAMoAgBJBEAgBSADKAIANgIAIAUoAgAhACAEJAUgAA8LIAYoAgBBAUcEQCAAKAIAEM8BQajqvmlHBEAgACgCABDPAUFwcUHQ1LTCAUcEQCAFQXY2AgAgBSgCACEAIAQkBSAADwsgASgCAEEISQRAIAVBCDYCACAFKAIAIQAgBCQFIAAPBSAHKAIAIgFCADcDACABQgA3AwggAUIANwMQIAFCADcDGCABQgA3AyAgACgCAEEEahDPAa0hECAHKAIAIBA3AwAgBygCAEEBNgIUIAVBADYCACAFKAIAIQAgBCQFIAAPCwALCyAEQSxqIgggACgCACABKAIAIAYoAgAQ9gM2AgAgCCgCACEAIAEoAgAgCCgCAEkEQCAFIAA2AgAgBSgCACEAIAQkBSAADwsgBygCACAANgIYIARBzQBqIgYgAigCACADKAIAQQFraiwAADoAACAEQShqIgEgAygCADYCACAEQSRqIgsgBi0AAEEDcTYCACAEQSBqIgwgBi0AAEECdUEBcTYCACAEQRxqIgkgBi0AAEEFdUEBcTYCACAEQRhqIg0gBi0AAEEGdTYCACAEQQhqIgNCADcDACAEQRRqIghBADYCACAEIgBCfzcDACAGLQAAQQhxBEAgBUFyNgIAIAUoAgAhACAEJAUgAA8LIARBzABqIQYgBEEQaiEKAkAgCSgCAEUEQCACKAIAIQ4gASABKAIAIg9BAWo2AgAgBiAOIA9qLAAAOgAAIAogBi0AAEEDdUEKajYCACAKKAIAQR5NBEAgA0IBIAooAgCthjcDACADIAMpAwAgAykDAEIDiCAGLQAAQQdxrH58NwMADAILIAVBcDYCACAFKAIAIQAgBCQFIAAPCwsCQAJAAkACQCALKAIAQQFrDgMBAgADCyAIIAIoAgAgASgCAGoQzwE2AgAgASABKAIAQQRqNgIADAILIAggAigCACABKAIAai0AADYCACABIAEoAgBBAWo2AgAMAQsgCCACKAIAIAEoAgBqENgDQf//A3E2AgAgASABKAIAQQJqNgIACwJAAkACQAJAAkAgDSgCAEEBaw4DAQIAAwsgACACKAIAIAEoAgBqEOIBNwMADAMLIAAgAigCACABKAIAahDYA0H//wNxQYACaqw3AwAMAgsgACACKAIAIAEoAgBqEM8BrTcDAAwBCyAJKAIABEAgACACKAIAIAEoAgBqLQAArTcDAAsLIAkoAgAEQCADIAApAwA3AwALIAcoAgBBADYCFCAHKAIAIAApAwA3AwAgBygCACADKQMANwMIIAMpAwAhECAHKAIAIAMpAwBCgIAIVAR+IBAFQoCACAs+AhAgBygCACAIKAIANgIcIAcoAgAgDCgCADYCICAFQQA2AgAgBSgCACEAIAQkBSAAC8sBAgZ/AX4jBSECIwVBQGskBSACQTBqIQMgAkEoaiEFIAIhBiACQTxqIgQgADYCACACQThqIgcgATYCACAEKAIAIAcoAgAQ9ANBAEchACAEKAIAIQQgBygCACEBAkAgAARAIAUgBCABEPsDNwMAIAUp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AiQFIAALxQEBA38jBSECIwVBEGokBSACQQxqIQMgAkEIaiIEIAA2AgAgAkEEaiIAIAE2AgAgAiAEKAIAIAAoAgAQ9AM2AgACQAJAAkACQAJAAkAgAigCAEEEaw4EAAECAwQLIAMgBCgCACAAKAIAEIkENgIADAQLIAMgBCgCACAAKAIAEIoENgIADAMLIAMgBCgCACAAKAIAEIsENgIADAILIAMgBCgCACAAKAIAEIwENgIADAELIANBdjYCAAsgAygCACEAIAIkBSAAC4kCAQN/IwUhAyMFQSBqJAUgA0EUaiEEIANBEGoiBSAANgIAIANBDGoiACABNgIAIANBCGoiASACNgIAIAAoAgBBA0kEQCAEQbh/NgIAIAQoAgAhACADJAUgAA8LIANBBGoiAiAFKAIAEIgENgIAIAMiACACKAIAQQN2NgIAIAEoAgAgAigCAEEBcTYCBCABKAIAIAIoAgBBAXZBA3E2AgAgASgCACADKAIANgIIIAEoAgAoAgBBAUYEQCAEQQE2AgAgBCgCACEAIAMkBSAADwsgASgCACgCAEEDRgR/IARBbDYCACAEKAIAIQAgAyQFIAAFIAQgACgCADYCACAEKAIAIQAgAyQFIAALCzcBAX8jBSEBIwVBEGokBSABIAA2AgAgASgCABDYA0H//wNxIAEoAgAtAAJBEHRqIQAgASQFIAALNwECfyMFIQIjBUEQaiQFIAJBBGoiAyAANgIAIAIgATYCACADKAIAIAIoAgAQjwQhACACJAUgAAv/AgEFfyMFIQIjBUEwaiQFIAJBIGohAyACQRxqIgUgADYCACACQRhqIgAgATYCACACQRRqIgEgBSgCADYCACACQRBqIgQgACgCADYCACAAKAIAQQVJBEAgA0G4fzYCACADKAIAIQAgAiQFIAAPCyAFKAIAEM8BQaXqvmlHBEAgA0F2NgIAIAMoAgAhACACJAUgAA8LIAJBCGohBiACIQAgASABKAIAQQVqNgIAIAQgBCgCAEEFazYCAAJAAkACQANAIAAgASgCACAEKAIAIAYQjgQ2AgAgACgCABDMAQ0BIAEgASgCAEEDajYCACAEIAQoAgBBA2s2AgAgACgCACAEKAIASw0CIAAoAgBFDQMgASABKAIAIAAoAgBqNgIAIAQgBCgCACAAKAIAazYCAAwACwALIAMgACgCADYCACADKAIAIQAgAiQFIAAPCyADQbh/NgIAIAMoAgAhACACJAUgAA8LIAMgASgCACAFKAIAazYCACADKAIAIQAgAiQFIAALxwMBBn8jBSECIwVBMGokBSACQSBqIQMgAkEcaiIGIAA2AgAgAkEYaiIAIAE2AgAgAkEUaiIBIAYoAgA2AgAgAkEQaiIEIAAoAgA2AgAgAkEIaiIHQgA3AgAgAkEEaiIFIAYoAgBBBRCEBDYCACAFKAIAEM0BBEAgAyAFKAIANgIAIAMoAgAhACACJAUgAA8LIAYoAgAQ/wNBpuq+aUcEQCADQXY2AgAgAygCACEAIAIkBSAADwsgACgCACAFKAIAQQNqSQRAIANBuH82AgAgAygCACEAIAIkBSAADwsgAiEAIAEgASgCACAFKAIAajYCACAEIAQoAgAgBSgCAGs2AgACQAJAAkADQCAAIAEoAgAgBCgCACAHEI0ENgIAIAAoAgAQzQENASABIAEoAgBBA2o2AgAgBCAEKAIAQQNrNgIAIAAoAgAgBCgCAEsNAiAAKAIARQ0DIAEgASgCACAAKAIAajYCACAEIAQoAgAgACgCAGs2AgAMAAsACyADIAAoAgA2AgAgAygCACEAIAIkBSAADwsgA0G4fzYCACADKAIAIQAgAiQFIAAPCyADIAEoAgAgBigCAGs2AgAgAygCACEAIAIkBSAAC+UDAQZ/IwUhAiMFQTBqJAUgAkEkaiEDIAJBIGoiBiAANgIAIAJBHGoiACABNgIAIAJBGGoiASAGKAIANgIAIAJBFGoiBCAAKAIANgIAIAAoAgBBCEkEQCADQbh/NgIAIAMoAgAhACACJAUgAA8LIAJBEGoiBSAGKAIAQQUQgAQ2AgAgBSgCABDNAQRAIAMgBSgCADYCACADKAIAIQAgAiQFIAAPCyAGKAIAEP8DQafqvmlHBEAgA0F2NgIAIAMoAgAhACACJAUgAA8LIAAoAgAgBSgCAEEDakkEQCADQbh/NgIAIAMoAgAhACACJAUgAA8LIAJBCGohByACIQAgASABKAIAIAUoAgBqNgIAIAQgBCgCACAFKAIAazYCAAJAAkACQANAIAAgASgCACAEKAIAIAcQjQQ2AgAgACgCABDNAQ0BIAEgASgCAEEDajYCACAEIAQoAgBBA2s2AgAgBygCAEEDRg0DIAAoAgAgBCgCAEsNAiABIAEoAgAgACgCAGo2AgAgBCAEKAIAIAAoAgBrNgIADAALAAsgAyAAKAIANgIAIAMoAgAhACACJAUgAA8LIANBuH82AgAgAygCACEAIAIkBSAADwsgAyABKAIAIAYoAgBrNgIAIAMoAgAhACACJAUgAAumAgEDfyMFIQMjBUEgaiQFIANBFGohBCADQRBqIgUgADYCACADQQxqIgAgATYCACADQQhqIgEgAjYCACADQQRqIgIgBSgCADYCACAAKAIAQQNJBEAgBEG4fzYCACAEKAIAIQAgAyQFIAAPCyABKAIAIAIoAgAtAABBBnU2AgAgAyIAIAIoAgAtAAIgAigCAC0AAUEIdGogAigCAC0AAEEHcUEQdGo2AgAgAygCACECIAEoAgAgASgCACgCAEECRgR/IAIFQQALNgIEIAEoAgAoAgBBA0YEQCAEQQA2AgAgBCgCACEAIAMkBSAADwsgASgCACgCAEECRgR/IARBATYCACAEKAIAIQAgAyQFIAAFIAQgACgCADYCACAEKAIAIQAgAyQFIAALC7UCAQN/IwUhAyMFQSBqJAUgA0EUaiEEIANBEGoiBSAANgIAIANBDGoiACABNgIAIANBCGoiASACNgIAIANBBGoiAiAFKAIANgIAIAAoAgBBA0kEQCAEQbh/NgIAIAQoAgAhACADJAUgAA8LIANBGGoiBSACKAIALAAAOgAAIAMiACACKAIALQACIAIoAgAtAAFBCHRqIAIoAgAtAABBB3FBEHRqNgIAIAEoAgAgBS0AAEEGdTYCACADKAIAIQIgASgCACABKAIAKAIAQQJGBH8gAgVBAAs2AgQgASgCACgCAEEDRgRAIARBADYCACAEKAIAIQAgAyQFIAAPCyABKAIAKAIAQQJGBH8gBEEBNgIAIAQoAgAhACADJAUgAAUgBCAAKAIANgIAIAQoAgAhACADJAUgAAsL/wIBBX8jBSECIwVBMGokBSACQSBqIQMgAkEcaiIFIAA2AgAgAkEYaiIAIAE2AgAgAkEUaiIBIAUoAgA2AgAgAkEQaiIEIAAoAgA2AgAgACgCAEEFSQRAIANBuH82AgAgAygCACEAIAIkBSAADwsgBSgCABCQBEGk6r5pRwRAIANBdjYCACADKAIAIQAgAiQFIAAPCyACQQhqIQYgAiEAIAEgASgCAEEFajYCACAEIAQoAgBBBWs2AgACQAJAAkADQCAAIAEoAgAgBCgCACAGEI4ENgIAIAAoAgAQzAENASABIAEoAgBBA2o2AgAgBCAEKAIAQQNrNgIAIAAoAgAgBCgCAEsNAiAAKAIARQ0DIAEgASgCACAAKAIAajYCACAEIAQoAgAgACgCAGs2AgAMAAsACyADIAAoAgA2AgAgAygCACEAIAIkBSAADwsgA0G4fzYCACADKAIAIQAgAiQFIAAPCyADIAEoAgAgBSgCAGs2AgAgAygCACEAIAIkBSAAC5IBAQR/IwUhAiMFQRBqJAUgAkEIaiEDIAIiAUEEaiIEIAA2AgAgBCgCACEEQZDlAC0AAAR/IAMgBBDlATYCACADKAIAIQAgAiQFIAAFIAEgBDYCACADIAEoAgAtAAAgASgCAC0AAUEIdGogASgCAC0AAkEQdGogASgCAC0AA0EYdGo2AgAgAygCACEAIAIkBSAACwu/DQEPfyMFIQMjBUHQAGokBSADQcQAaiEEIANBQGsiBSAANgIAIANBPGoiDiABNgIAIANBOGoiCCACNgIAIAgoAgBBA0kEQCAEQWw2AgAgBCgCACEAIAMkBSAADwsgA0EsaiEKIANBKGohCyADQSRqIQwgA0EgaiENIANBHGohDyADQRhqIQcgA0EUaiECIANBEGohBiADQQxqIRAgA0EIaiERIANBBGohCSADIQAgA0E0aiIBIA4oAgA2AgAgA0EwaiIOIAEoAgAtAABBA3E2AgACQAJAAkACQAJAAkAgDigCAA4EAgMBAAQLIAUoAgBBiOEBaigCAEUEQCAEQWI2AgAgBCgCACEAIAMkBSAADwsMBAsMAwsgECABKAIALQAAQQJ1QQNxNgIAAkACQAJAAkAgECgCAEEBaw4DAQIAAgsgBkEDNgIAIAIgASgCABCIBEEEdjYCAAwCCyAGQQI2AgAgAiABKAIAENgDQf//A3FBBHU2AgAMAQsgBkEBNgIAIAIgASgCAC0AAEEDdTYCAAsgBigCACACKAIAakEIaiAIKAIATQRAIAUoAgBB9OEBaiABKAIAIAYoAgBqNgIAIAUoAgBBhOIBaiACKAIANgIAIAQgBigCACACKAIAajYCACAEKAIAIQAgAyQFIAAPCyACKAIAIAYoAgBqIAgoAgBLBEAgBEFsNgIAIAQoAgAhACADJAUgAA8FIAUoAgBB1OIBaiABKAIAIAYoAgBqIAIoAgAQ9AcaIAUoAgBB9OEBaiAFKAIAQdTiAWo2AgAgBSgCAEGE4gFqIAIoAgA2AgAgBSgCAEHU4gFqIAUoAgBBhOIBaigCAGpCADcAACAEIAYoAgAgAigCAGo2AgAgBCgCACEAIAMkBSAADwsACyARIAEoAgAtAABBAnVBA3E2AgACQAJAAkACQCARKAIAQQFrDgMBAgACCyAAQQM2AgAgCSABKAIAEIgEQQR2NgIAIAgoAgBBBEkEQCAEQWw2AgAgBCgCACEAIAMkBSAADwsMAgsgAEECNgIAIAkgASgCABDYA0H//wNxQQR1NgIADAELIABBATYCACAJIAEoAgAtAABBA3U2AgALIAkoAgBBgIAISwRAIARBbDYCACAEKAIAIQAgAyQFIAAPBSAFKAIAQdTiAWogASgCACAAKAIAai0AACAJKAIAQQhqEPYHGiAFKAIAQfThAWogBSgCAEHU4gFqNgIAIAUoAgBBhOIBaiAJKAIANgIAIAQgACgCAEEBajYCACAEKAIAIQAgAyQFIAAPCwALIARBbDYCACAEKAIAIQAgAyQFIAAPCyAIKAIAQQVJBEAgBEFsNgIAIAQoAgAhACADJAUgAA8LIA1BADYCACAPIAEoAgAtAABBAnVBA3E2AgAgByABKAIAEM8BNgIAAkACQAJAAkAgDygCAEECaw4CAQACCyAKQQU2AgAgCyAHKAIAQQR2Qf//D3E2AgAgDCAHKAIAQRZ2IAEoAgAtAARBCnRqNgIADAILIApBBDYCACALIAcoAgBBBHZB//8AcTYCACAMIAcoAgBBEnY2AgAMAQsgDSAPKAIAQQBHQQFzNgIAIApBAzYCACALIAcoAgBBBHZB/wdxNgIAIAwgBygCAEEOdkH/B3E2AgALIAsoAgBBgIAISwRAIARBbDYCACAEKAIAIQAgAyQFIAAPCyAMKAIAIAooAgBqIAgoAgBLBEAgBEFsNgIAIAQoAgAhACADJAUgAA8LIA0oAgBBAEchACAFKAIAIQIgDigCAEEDRgR/IAJB1OIBaiECIAsoAgAhBiABKAIAIAooAgBqIQEgDCgCACEHIAUoAgAoAgwhCCAFKAIAQZDiAWooAgAhCSAABH8gAiAGIAEgByAIIAkQ4wMFIAIgBiABIAcgCCAJEOUDCwUgAkGo0ABqIQIgBSgCAEHU4gFqIQYgCygCACEHIAEoAgAgCigCAGohASAMKAIAIQggBSgCAEGs0AFqIQkgBSgCAEGQ4gFqKAIAIQ0gAAR/IAIgBiAHIAEgCCAJQYAQIA0Q5AMFIAIgBiAHIAEgCCAJQYAQIA0Q5gMLCyIAEM0BBEAgBEFsNgIAIAQoAgAhACADJAUgAA8LIAUoAgBB9OEBaiAFKAIAQdTiAWo2AgAgBSgCAEGE4gFqIAsoAgA2AgAgBSgCAEGI4QFqQQE2AgAgDigCAEECRgRAIAUoAgAgBSgCAEGo0ABqNgIMCyAFKAIAQdTiAWogBSgCAEGE4gFqKAIAakIANwAAIAQgDCgCACAKKAIAajYCACAEKAIAIQAgAyQFIAALugcBDH8jBSEEIwVBQGskBSAEQThqIQUgBEE0aiIGIAA2AgAgBEEwaiILIAE2AgAgBEEsaiIBIAI2AgAgBEEoaiIAIAM2AgAgBEEkaiIIIAEoAgA2AgAgBEEgaiIDIAgoAgAgACgCAGo2AgAgBEEcaiIBIAgoAgA2AgAgACgCAEEBSQRAIAVBuH82AgAgBSgCACEAIAQkBSAADwsgASABKAIAIgBBAWo2AgAgBEEYaiICIAAtAAA2AgAgAigCAEUEQCALKAIAQQA2AgAgBUEBNgIAIAUoAgAhACAEJAUgAA8LIARBFGohDCAEQRBqIQ0gBEEMaiEOIARBCGohCSAEQQRqIQogBCEAAkAgAigCAEH/AEoEQCABKAIAIQcgAigCAEH/AUYEQCAHQQJqIAMoAgBNBEAgAiABKAIAENgDQf//A3FBgP4BajYCACABIAEoAgBBAmo2AgAMAwsgBUG4fzYCACAFKAIAIQAgBCQFIAAPBSAHIAMoAgBJBEAgAigCAEGAAWtBCHQhByABIAEoAgAiD0EBajYCACACIAcgDy0AAGo2AgAMAwsgBUG4fzYCACAFKAIAIQAgBCQFIAAPCwALCyALKAIAIAIoAgA2AgAgASgCAEEEaiADKAIASwRAIAVBuH82AgAgBSgCACEAIAQkBSAADwsgDCABKAIALQAAQQZ1NgIAIA0gASgCAC0AAEEEdUEDcTYCACAOIAEoAgAtAABBAnVBA3E2AgAgASABKAIAQQFqNgIAIAkgBigCAEEQaiAGKAIAIAwoAgBBI0EJIAEoAgAgAygCACABKAIAa0GAOkGwNEGgIyAGKAIAQYzhAWooAgAQkwQ2AgAgCSgCABDNAQRAIAVBbDYCACAFKAIAIQAgBCQFIAAPCyABIAEoAgAgCSgCAGo2AgAgCiAGKAIAQZggaiAGKAIAQQhqIA0oAgBBH0EIIAEoAgAgAygCACABKAIAa0GwJ0GwKEGwKSAGKAIAQYzhAWooAgAQkwQ2AgAgCigCABDNAQRAIAVBbDYCACAFKAIAIQAgBCQFIAAPCyABIAEoAgAgCigCAGo2AgAgACAGKAIAQaAwaiAGKAIAQQRqIA4oAgBBNEEJIAEoAgAgAygCACABKAIAa0HQMEHANUHAKyAGKAIAQYzhAWooAgAQkwQ2AgAgACgCABDNAQR/IAVBbDYCACAFKAIAIQAgBCQFIAAFIAEgASgCACAAKAIAajYCACAFIAEoAgAgCCgCAGs2AgAgBSgCACEAIAQkBSAACwvDBAENfyMFIQsjBUGwAWokBSALQawBaiEMIAtB/ABqIQ4gC0H4AGohFCALQfQAaiEVIAtB8ABqIQ8gCyEWIAtB7ABqIRAgC0GoAWoiDSAANgIAIAtBpAFqIhEgATYCACALQaABaiIXIAI2AgAgC0GcAWoiEiADNgIAIAtBmAFqIgIgBDYCACALQZQBaiITIAU2AgAgC0GQAWoiBSAGNgIAIAtBjAFqIgQgBzYCACALQYgBaiIDIAg2AgAgC0GEAWoiASAJNgIAIAtBgAFqIgAgCjYCAAJAAkACQAJAAkACQCAXKAIADgQBAAMCBAsgBSgCAEUEQCAMQbh/NgIADAULIBMoAgAtAAAgEigCAEsEQCAMQWw2AgAMBQUgDiATKAIALQAANgIAIBQgBCgCACAOKAIAQQJ0aigCADYCACAVIAMoAgAgDigCAEECdGooAgA2AgAgDSgCACAUKAIAIBUoAgAQlAQgESgCACANKAIANgIAIAxBATYCAAwFCwALIBEoAgAgASgCADYCACAMQQA2AgAMAwsgACgCAARAIAxBADYCAAwDBSAMQWw2AgAMAwsACyAQIBYgEiAPIBMoAgAgBSgCABDOATYCACAQKAIAEM0BBEAgDEFsNgIADAILIA8oAgAgAigCAEsEQCAMQWw2AgAMAgUgDSgCACAWIBIoAgAgBCgCACADKAIAIA8oAgAQlQQgESgCACANKAIANgIAIAwgECgCADYCAAwCCwALIAxBfzYCAAsgDCgCACEAIAskBSAAC6QBAQN/IwUhAyMFQSBqJAUgA0EUaiIEIAA2AgAgA0EQaiIFIAE2AgAgA0EMaiIBIAI2AgAgA0EIaiICIAQoAgA2AgAgA0EEaiIAIAIoAgA2AgAgAyAEKAIAQQhqNgIAIAAoAgBBADYCBCAAKAIAQQA2AgAgAygCAEEAOgADIAMoAgBBADsBACADKAIAIAEoAgA6AAIgAygCACAFKAIANgIEIAMkBQvGBwETfyMFIQYjBUHQAWokBSAGIREgBkGIAWohEiAGQYQBaiETIAZBgAFqIQwgBkH8AGohCiAGQfgAaiENIAZB9ABqIQcgBkHwAGohDiAGQewAaiEUIAZBvAFqIhYgADYCACAGQbgBaiIPIAE2AgAgBkG0AWoiACACNgIAIAZBsAFqIhcgAzYCACAGQawBaiIYIAQ2AgAgBkGoAWoiECAFNgIAIAZBpAFqIgkgFigCAEEIajYCACAGQaABaiIEIAAoAgBBAWo2AgAgBkGcAWoiC0EBIBAoAgB0NgIAIAZBmAFqIhUgCygCAEEBazYCACAGQZABaiIFIBAoAgA2AgQgBUEBNgIAIAZBwAFqIgNBASAQKAIAQQFrdDsBACAGQYwBaiIIQQA2AgADQCAIKAIAIAQoAgBJBEAgDygCACAIKAIAQQF0ai4BAEF/RgRAIAgoAgAhAiAJKAIAIQEgFSAVKAIAIgBBf2o2AgAgASAAQQN0aiACNgIEIBEgCCgCAEEBdGpBATsBAAUgDygCACAIKAIAQQF0ai4BACADLgEATgRAIAVBADYCAAsgESAIKAIAQQF0aiAPKAIAIAgoAgBBAXRqLgEAOwEACyAIIAgoAgBBAWo2AgAMAQsLIBYoAgAgBSkCADcCACASIAsoAgBBAWs2AgAgEyALKAIAQQF2IAsoAgBBA3ZqQQNqNgIAIApBADYCACAMQQA2AgADQCAMKAIAIAQoAgBJBEAgDUEANgIAA0AgDCgCACEAIA0oAgAgDygCACAMKAIAQQF0ai4BAEgEQCAJKAIAIAooAgBBA3RqIAA2AgQgCiAKKAIAIBMoAgBqIBIoAgBxNgIAA0AgCigCACAVKAIASwRAIAogCigCACATKAIAaiASKAIAcTYCAAwBCwsgDSANKAIAQQFqNgIADAELCyAMIABBAWo2AgAMAQsLIAdBADYCAANAIAcoAgAgCygCAEkEQCAOIAkoAgAgBygCAEEDdGooAgQ2AgAgESAOKAIAQQF0aiIALgEAIQEgACABQQFqOwEAIBQgAUH//wNxNgIAIBAoAgAgFCgCABDUAWtB/wFxIQAgCSgCACAHKAIAQQN0aiAAOgADIAkoAgAgBygCAEEDdGogFCgCACAJKAIAIAcoAgBBA3RqLQADdCALKAIAazsBACAJKAIAIAcoAgBBA3RqIBgoAgAgDigCAEECdGooAgA6AAIgCSgCACAHKAIAQQN0aiAXKAIAIA4oAgBBAnRqKAIANgIEIAcgBygCAEEBajYCAAwBCwsgBiQFC68BAQJ/IwUhAyMFQRBqJAUgA0EEaiICIAA2AgAgAyIAIAE2AgAgAygCACACKAIAQbjgAWooAgBGBEAgAyQFDwsgAigCAEHE4AFqIAIoAgBBuOABaigCADYCACACKAIAQcDgAWogACgCACACKAIAQbjgAWooAgAgAigCAEG84AFqKAIAa2s2AgAgAigCAEG84AFqIAAoAgA2AgAgAigCAEG44AFqIAAoAgA2AgAgAyQFC+oEAQh/IwUhBiMFQUBrJAUgBkEwaiIHIAA2AgAgBkEsaiIJIAE2AgAgBkEoaiIKIAI2AgAgBkEkaiIIIAM2AgAgBkEgaiICIAQ2AgAgBkEcaiILIAU2AgAgBkEYaiIDIAgoAgA2AgAgBkE0aiEBIAZBFGoiDCALKAIABH8gBygCAEHY4AFqKQMAQoCAgBBWBUEBC0EBcTYCACACKAIAQYCACE8EQCABQbh/NgIAIAEoAgAhACAGJAUgAA8LIAZBEGoiACAHKAIAIAgoAgAgAigCABCRBDYCACAAKAIAEM0BQQBHIQUgACgCACEEIAUEQCABIAQ2AgAgASgCACEAIAYkBSAADwsgAyADKAIAIARqNgIAIAIgAigCACAAKAIAazYCACAGQQhqIgUgBygCACAGQQxqIgQgAygCACACKAIAEJIENgIAIAUoAgAQzQFBAEchACAFKAIAIQggAARAIAEgCDYCACABKAIAIQAgBiQFIAAPCyAGQQRqIQ0gBiEAIAMgAygCACAIajYCACACIAIoAgAgBSgCAGs2AgACQAJAIAsoAgAEQCAHKAIAQdjgAWopAwBCgICACFYgBCgCAEEASnENAQUgBCgCAEEASg0BCwwBCyANIAcoAgAoAggQmAQ2AgAgAEEUNgIAIA0oAgAgACgCAE8EQCABIAcoAgAgCSgCACAKKAIAIAMoAgAgAigCACAEKAIAIAwoAgAQmQQ2AgAgASgCACEAIAYkBSAADwsLIAEgBygCACAJKAIAIAooAgAgAygCACACKAIAIAQoAgAgDCgCABCaBDYCACABKAIAIQAgBiQFIAAL2QEBBX8jBSEBIwVBIGokBSABQRhqIgIgADYCACABQRRqIgAgAigCADYCACABQRBqIgMgACgCACgCBDYCACABQQxqIgQgAigCAEEIajYCACABQQhqIgVBASADKAIAdDYCACABIgBBADYCACAAQQRqIgJBADYCAANAIAIoAgAgBSgCAEkEQCAEKAIAIAIoAgBBA3RqLQACQRZKBEAgACAAKAIAQQFqNgIACyACIAIoAgBBAWo2AgAMAQsLIAAgACgCAEEIIAMoAgBrdDYCACAAKAIAIQAgASQFIAAL7QEBBX8jBSEHIwVBIGokBSAHQRxqIQggB0EYaiIJIAA2AgAgB0EUaiIKIAE2AgAgB0EQaiILIAI2AgAgB0EMaiICIAM2AgAgB0EIaiIBIAQ2AgAgB0EEaiIAIAU2AgAgByAGNgIAIAkoAgAhBiAKKAIAIQUgCygCACEEIAIoAgAhAyABKAIAIQIgACgCACEBIAcoAgAhACAJKAIAQZDiAWooAgAEfyAIIAYgBSAEIAMgAiABIAAQnwQ2AgAgCCgCACEAIAckBSAABSAIIAYgBSAEIAMgAiABIAAQnwQ2AgAgCCgCACEAIAckBSAACwvtAQEFfyMFIQcjBUEgaiQFIAdBHGohCCAHQRhqIgkgADYCACAHQRRqIgogATYCACAHQRBqIgsgAjYCACAHQQxqIgIgAzYCACAHQQhqIgEgBDYCACAHQQRqIgAgBTYCACAHIAY2AgAgCSgCACEGIAooAgAhBSALKAIAIQQgAigCACEDIAEoAgAhAiAAKAIAIQEgBygCACEAIAkoAgBBkOIBaigCAAR/IAggBiAFIAQgAyACIAEgABCbBDYCACAIKAIAIQAgByQFIAAFIAggBiAFIAQgAyACIAEgABCbBDYCACAIKAIAIQAgByQFIAALC4YdAUJ/IwUhByMFQcADaiQFIAdBsANqISwgB0GoA2ohEiAHQaQDaiEKIAdBoANqIRkgB0GcA2ohFSAHQZgDaiEtIAdBlANqIRogB0GQA2ohLiAHQYwDaiEbIAdBiANqIREgB0GEA2ohHCAHQYADaiEjIAdB/AJqIRQgB0H4AmohLyAHQfQCaiEJIAdB8AJqISQgB0HsAmohFiAHQegCaiE6IAchCyAHQeQCaiElIAdB4AJqITsgB0HYAmohMCAHQdQCaiE8IAdB0AJqIT0gB0HMAmohJiAHQcgCaiE+IAdBwAJqITEgB0G8AmohPyAHQbgCaiFAIAdBtAJqIScgB0GwAmohQSAHQagCaiEyIAdBpAJqIUIgB0GgAmohQyAHQZwCaiEIIAdBmAJqIUQgB0GIAmohHSAHQYACaiEeIAdB/AFqIR8gB0H4AWohDyAHQfQBaiFFIAdB8AFqITMgB0HsAWohRiAHQegBaiE0IAdB5AFqIQwgB0HgAWohICAHQdwBaiEhIAdB2AFqIRAgB0HQAGohDSAHQcwAaiEXIAdByABqISIgB0E4aiEoIAdBNGohNSAHQTBqIRggB0EsaiEpIAdBKGoiNiAANgIAIAdBJGoiNyABNgIAIAdBIGoiACACNgIAIAdBHGoiASADNgIAIAdBGGoiOCAENgIAIAdBFGoiBCAFNgIAIAdBEGoiAyAGNgIAIDcoAgAhAiAAKAIAIQAgASgCACEBIDgoAgAhBiAEKAIAIQUgAygCACEEIAdB1AFqIg4gNigCADYCACAHQdABaiIDIAI2AgAgB0HMAWoiAiAANgIAIAdByAFqIgAgATYCACAHQcQBaiIBIAY2AgAgB0HAAWoiKiAFNgIAIAdBvAFqIjYgBDYCACAHQbgBaiIEIAAoAgA2AgAgB0G0AWoiACAEKAIAIAEoAgBqNgIAIAdBsAFqIjkgAygCADYCACAHQawBaiJHIDkoAgAgAigCAGo2AgAgB0GoAWoiEyA5KAIANgIAIAdBpAFqIisgDigCAEH04QFqKAIANgIAIAdBoAFqIkggKygCACAOKAIAQYTiAWooAgBqNgIAIAdBnAFqIjcgDigCAEG84AFqKAIANgIAIAdBmAFqIjggDigCAEHA4AFqKAIANgIAIAdBlAFqIgYgDigCAEHE4AFqKAIANgIAAkAgKigCAARAIA4oAgBBjOEBakEBNgIAIBdBADYCAANAIBcoAgBBA0kEQCANQSxqIBcoAgBBAnRqIA4oAgBBrOABaiAXKAIAQQJ0aigCADYCACAXIBcoAgBBAWo2AgAMAQsLICIgDSAEKAIAIAAoAgAgBCgCAGsQ1wE2AgAgIigCABDNAQRAIBBBbDYCACAQKAIAIQAgByQFIAAPCyANQRRqIA0gDigCACgCABCcBCANQRxqIA0gDigCACgCCBCcBCANQSRqIA0gDigCACgCBBCcBAJAAkADQAJAIA0Q2QFBAk0hASAqKAIAQQBHIQAgKigCACECIAEEfyAABUEAC0UNACAqIAJBf2o2AgAgNigCACEAIAggDTYCACBEIAA2AgAgHiAIKAIAKAIYIAgoAgAoAhRBA3RqLQACNgIAIB8gCCgCACgCKCAIKAIAKAIkQQN0ai0AAjYCACAPIAgoAgAoAiAgCCgCACgCHEEDdGotAAI2AgAgRSAeKAIAIB8oAgBqIA8oAgBqNgIAIDMgCCgCACgCGCAIKAIAKAIUQQN0aigCBDYCACBGIAgoAgAoAiggCCgCACgCJEEDdGooAgQ2AgAgNCAIKAIAKAIgIAgoAgAoAhxBA3RqKAIENgIAAkAgDygCAARAIEQoAgBBAEcgDygCAEEZT3FFBEAgDCA0KAIAIAgoAgAgDygCABDfAWo2AgAgCCgCABDZARoMAgsgICAPKAIAIA8oAgBBICAIKAIAKAIEa0kEfyAPKAIABUEgIAgoAgAoAgRrC2s2AgAgDCA0KAIAIAgoAgAgDygCACAgKAIAaxDfASAgKAIAdGo2AgAgCCgCABDZARogICgCAARAIAgoAgAgICgCABDfASEAIAwgDCgCACAAajYCAAsFIAxBADYCAAsLAkAgDygCAEEBTQRAIAwgDCgCACAzKAIARWo2AgAgDCgCAEUEQCAMIAgoAgAoAiw2AgAMAgsgCCgCAEEsaiEAICEgDCgCAEEDRgR/IAAoAgBBAWsFIAAgDCgCAEECdGooAgALNgIAICEgISgCACAhKAIAQQBHQQFzajYCACAMKAIAQQFHBEAgCCgCACAIKAIAKAIwNgI0CyAIKAIAIAgoAgAoAiw2AjAgDCAhKAIAIgA2AgAgCCgCACAANgIsBSAIKAIAIAgoAgAoAjA2AjQgCCgCACAIKAIAKAIsNgIwIAgoAgAgDCgCADYCLAsLIB0gDCgCADYCCCAdIEYoAgAgHygCAEEASwR/IAgoAgAgHygCABDfAQVBAAtqNgIEIB8oAgAgHigCAGpBFE8EQCAIKAIAENkBGgsgRSgCAEEfT0EAcQRAIAgoAgAQ2QEaCyAdIDMoAgAgHigCAEEASwR/IAgoAgAgHigCABDfAQVBAAtqNgIAIAgoAgAQ2QEaIAgoAgAhACAnIAgoAgBBFGo2AgAgQSAANgIAIDIgJygCACgCBCAnKAIAKAIAQQN0aikCADcCACBCIDItAAM2AgAgQyBBKAIAIEIoAgAQ3AE2AgAgJygCACAyLwEAIEMoAgBqNgIAIAgoAgAhACAmIAgoAgBBJGo2AgAgPiAANgIAIDEgJigCACgCBCAmKAIAKAIAQQN0aikCADcCACA/IDEtAAM2AgAgQCA+KAIAID8oAgAQ3AE2AgAgJigCACAxLwEAIEAoAgBqNgIAIAgoAgAQ2QEaIAgoAgAhACAlIAgoAgBBHGo2AgAgOyAANgIAIDAgJSgCACgCBCAlKAIAKAIAQQN0aikCADcCACA8IDAtAAM2AgAgPSA7KAIAIDwoAgAQ3AE2AgAgJSgCACAwLwEAID0oAgBqNgIAICggHSkCADcCACAoIB0pAgg3AgggEygCACEFIEcoAgAhBCBIKAIAIQMgNygCACECIDgoAgAhASAGKAIAIQAgCyAoKQAANwAAIAsgKCkACDcACCAKIAU2AgAgGSAENgIAIBUgKzYCACAtIAM2AgAgGiACNgIAIC4gATYCACAbIAA2AgAgESAKKAIAIAsoAgBqNgIAIBwgCygCACALKAIEajYCACAjIAooAgAgHCgCAGo2AgAgFCAZKAIAQXhqNgIAIC8gFSgCACgCACALKAIAajYCACAJIBEoAgAgCygCCGs2AgACQCAjKAIAIBkoAgBLBEAgEkG6fzYCAAUgLygCACAtKAIASwRAIBJBbDYCAAwCCyAKKAIAISIgESgCACAUKAIASwRAIBkoAgAhBSAVKAIAIQQgLSgCACEDIBooAgAhAiAuKAIAIQEgGygCACEAICwgCykCADcCACAsIAspAgg3AgggEiAiIAUgLCAEIAMgAiABIAAQnQQ2AgAMAgsgIiAVKAIAKAIAEPwCIAsoAgBBCEsEQCAKKAIAQQhqIBUoAgAoAgBBCGogCygCAEEIaxD7AgsgCiARKAIANgIAIBUoAgAgLygCADYCAAJAIAsoAgggESgCACAaKAIAa0sEQCALKAIIIBEoAgAgLigCAGtLBEAgEkFsNgIADAQLIAkgGygCACAJKAIAIBooAgBrajYCACAJKAIAIAsoAgRqIBsoAgBNBEAgESgCACAJKAIAIAsoAgQQ9QcaIBIgHCgCADYCAAwECyAkIBsoAgAgCSgCAGs2AgAgESgCACAJKAIAICQoAgAQ9QcaIAogESgCACAkKAIAajYCACALQQRqIgAgACgCACAkKAIAazYCACAJIBooAgA2AgAgCigCACAUKAIATQRAIAsoAgRBA08NAgsgFkEANgIAA0AgFigCACALKAIESQRAIAooAgAgFigCAGogCSgCACAWKAIAaiwAADoAACAWIBYoAgBBAWo2AgAMAQsLIBIgHCgCADYCAAwDCwsgCygCCEEISQRAIDogCygCCEECdEGQPWooAgA2AgAgCigCACAJKAIALAAAOgAAIAooAgAgCSgCACwAAToAASAKKAIAIAkoAgAsAAI6AAIgCigCACAJKAIALAADOgADIAkgCSgCACALKAIIQQJ0QbA9aigCAGo2AgAgCigCAEEEaiAJKAIAEJ4EIAkgCSgCACA6KAIAazYCAAUgCigCACAJKAIAEPwCCyAKIAooAgBBCGo2AgAgCSAJKAIAQQhqNgIAIAooAgAhAAJAICMoAgAgGSgCAEFzaksEQCAAIBQoAgBJBEAgCigCACAJKAIAIBQoAgAgCigCAGsQ+wIgCSAJKAIAIBQoAgAgCigCAGtqNgIAIAogFCgCADYCAAsDQCAKKAIAICMoAgBPDQIgCSAJKAIAIgBBAWo2AgAgACwAACEBIAogCigCACIAQQFqNgIAIAAgAToAAAwACwAFIAAgCSgCACALKAIEQQhrEPsCCwsgEiAcKAIANgIACwsgNSASKAIANgIAIDUoAgAQzQFBAEchACA1KAIAIQEgAA0CIBMgEygCACABajYCAAwBCwsMAQsgECABNgIAIBAoAgAhACAHJAUgAA8LIAIEQCAQQWw2AgAgECgCACEAIAckBSAADwsgGEEANgIAA0AgGCgCAEEDTw0CIA4oAgBBrOABaiAYKAIAQQJ0aiANQSxqIBgoAgBBAnRqKAIANgIAIBggGCgCAEEBajYCAAwACwALCyApIEgoAgAgKygCAGs2AgAgKSgCACBHKAIAIBMoAgBrSwR/IBBBun82AgAgECgCACEAIAckBSAA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IAAoAgAgOygCAGs2AgAgCyA4KAIANgIAIAooAgAgHygCAE0EQCAOKAIEQQNPDQILICNBADYCAANAICMoAgAgDigCBEkEQCAKKAIAICMoAgBqIAsoAgAgIygCAGosAAA6AAAgIyAjKAIAQQFqNgIADAELCyAbICwoAgA2AgAMAwsLIA4oAghBCEkEQCBkIA4oAghBAnRBkD1qKAIANgIAIAooAgAgCygCACwAADoAACAKKAIAIAsoAgAsAAE6AAEgCigCACALKAIALAACOgACIAooAgAgCygCACwAAzoAAyALIAsoAgAgDigCCEECdEGwPWooAgBqNgIAIAooAgBBBGogCygCABCeBCALIAsoAgAgZCgCAGs2AgAFIAooAgAgCygCABD8AgsgCiAKKAIAQQhqNgIAIAsgCygCAEEIajYCACAKKAIAIQACQCA6KAIAICsoAgBBc2pLBEAgACAfKAIASQRAIAooAgAgCygCACAfKAIAIAooAgBrEPsCIAsgCygCACAfKAIAIAooAgBrajYCACAKIB8oAgA2AgALA0AgCigCACA6KAIATw0CIAsgCygCACIAQQFqNgIAIAAsAAAhASAKIAooAgAiAEEBajYCACAAIAE6AAAMAAsABSAAIAsoAgAgDigCBEEIaxD7AgsLIBsgLCgCADYCAAsLIGAgGygCADYCACBgKAIAEM0BQQBHIQAgYCgCACEBIAANAiAVIBUoAgAgAWo2AgAgECAQKAIAQQFqNgIADAELCwwBCyAUIAE2AgAgFCgCACEAIAckBSAADwsgKUEANgIAA0AgKSgCAEEDTw0CIBYoAgBBrOABaiApKAIAQQJ0aiARQSxqICkoAgBBAnRqKAIANgIAICkgKSgCAEEBajYCAAwACwALCyBMIGMoAgAgNygCAGs2AgAgTCgCACBiKAIAIBUoAgBrSwR/IBRBun82AgAgFCgCACEAIAckBSAABSAVKAIAIDcoAgAgTCgCABD0BxogFSAVKAIAIEwoAgBqNgIAIBQgFSgCACBhKAIAazYCACAUKAIAIQAgByQFIAALC44BAQJ/IwUhByMFQSBqJAUgB0EYaiIIIAA2AgAgB0EUaiIAIAE2AgAgB0EQaiIBIAI2AgAgB0EMaiICIAM2AgAgB0EIaiIDIAQ2AgAgB0EEaiIEIAU2AgAgByAGNgIAIAgoAgAg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IAMoAgAoAgQ2AgAgAigCAEHA4AFqIAMoAgAoAgQ2AgAgAigCAEHE4AFqIAMoAgAoAgQgAygCACgCCGo2AgAgAigCAEG44AFqIAIoAgBBxOABaigCADYCACACKAIAQYjhAWohACADKAIAQbjgAWooAgAEQCAAQQE2AgAgAigCAEGM4QFqQQE2AgAgAigCACADKAIAQQxqNgIAIAIoAgAgAygCAEGcMGo2AgQgAigCACADKAIAQZQgajYCCCACKAIAIAMoAgBBpNAAajYCDCACKAIAQazgAWogAygCAEGo4AFqKAIANgIAIAIoAgBBsOABaiADKAIAQazgAWooAgA2AgAgAigCAEG04AFqIAMoAgBBsOABaigCADYCAAUgAEEANgIAIAIoAgBBjOEBakEANgIACwsgBUEANgIAIAUoAgAhACAEJAUgAAvSAQEEfyMFIQMjBUEgaiQFIANBFGohBCADQRBqIgUgADYCACADQQxqIgYgATYCACADQQhqIgEgAjYCACADQQRqIgAgBSgCABCrBDYCACAAKAIAEM0BBEAgBCAAKAIANgIAIAQoAgAhACADJAUgAA8LIAMhACAGKAIAQQBHIAEoAgBBAEdxBEAgACAFKAIAIAYoAgAgASgCABCsBDYCACAAKAIAEM0BBEAgBEFiNgIAIAQoAgAhACADJAUgAA8LCyAEQQA2AgAgBCgCACEAIAMkBSAAC+gIAQt/IwUhBSMFQdAAaiQFIAVBzABqIQYgBUHIAGoiCCAANgIAIAVBxABqIgAgATYCACAFQUBrIgcgAjYCACAFQTxqIg0gAzYCACAFQThqIg4gBDYCACAFQTRqIgEgDSgCACgCADYCACAFQTBqIgogACgCADYCACAFQSxqIgwgCigCACAHKAIAajYCACAFQShqIgMgCigCADYCACAFQSRqIgIgDigCACgCADYCACACKAIAQQlJBEAgBkG4fzYCACAGKAIAIQAgBSQFIAAPCyAFQSBqIgkgASgCAEEFEPUDNgIAIAkoAgAQzQEEQCAGIAkoAgA2AgAgBigCACEAIAUkBSAADwsgAigCACAJKAIAQQNqSQRAIAZBuH82AgAgBigCACEAIAUkBSAADwsgBUEcaiIAIAgoAgAgASgCACAJKAIAEKgENgIAIAAoAgAQzQEEQCAGIAAoAgA2AgAgBigCACEAIAUk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ACANKAIAQQJ0aigCADYCACAOIBEoAgA2AgAgFCARKAIAIBAoAgBqNgIAIAogBC8BACATKAIAQQh0akH//wNxEOAEIAogDygCACAWKAIAajoAAiAKQQI6AAMDQCAVKAIAIQEgDiAOKAIAIgJBAWo2AgAgASACQQJ0aiAKKAEANgEAIA4oAgAgFCgCAEkNAAsgACANKAIAQQJ0aiIBIAEoAgAgECgCAGo2AgAgCyALKAIAQQFqNgIADAELCyAJJAULcwEDfyMFIQIjBUEQaiQFIAIhAyACQQRqIgQgADYCACACQQhqIgAgATsBACAEKAIAIQFBkOUALQAABEAgASAALgEAEOEEIAIkBQUgAyABNgIAIAMoAgAgAC4BADoAACADKAIAIAAvAQBBCHU6AAEgAiQFCwszAQF/IwUhAiMFQRBqJAUgAiAANgIAIAJBBGoiACABOwEAIAIoAgAgAC4AADsAACACJAULwgIBBn8jBSEFIwVB0ABqJAUgBUE8aiEGIAVBOGoiByAANgIAIAVBNGoiCCABNgIAIAVBMGoiCSACNgIAIAVBLGoiCiADNgIAIAVBKGoiACAENgIAIAVBJGoiASAHKAIANgIAIAVBIGoiAyABKAIAIAgoAgBqNgIAIAVBHGoiAiAAKAIAQQRqNgIAIAVBGGoiBCACKAIANgIAIAVBQGsiAiAAKAIAENIDIAVBBGoiByACLQACNgIAIAUiACAFQQhqIgIgCSgCACAKKAIAEL4ENgIAIAUoAgAQzAEEQCAGIAAoAgA2AgAgBigCACEAIAUkBSAADwsgASgCACACIAMoAgAgBCgCACAHKAIAENgEGiACENUDBH8gBiAIKAIANgIAIAYoAgAhACAFJAUgAAUgBkFsNgIAIAYoAgAhACAFJAUgAAsLhgIBAn8jBSECIwVBEGokBSACQQRqIgEgADYCACABKAIAQaCoAWpBBTYCACABKAIAQcyoAWpBADYCACABKAIAQZCoAWpBADYCACABKAIAQZSoAWpBADYCACABKAIAQZioAWpBADYCACABKAIAQZyoAWpBADYCACABKAIAQYwoakGMgIDgADYCACABKAIAQdSoAWpBADYCACABKAIAQdCoAWpBADYCACABKAIAQbSpAWpBADYCACACIgBBADYCAANAIAAoAgBBA0gEQCABKAIAQaSoAWogACgC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ACIBIAEoAgAgBSgCAC0AAUEIdGo2AgALIAIgBSgCACAAKAIAQQFraiwAADoAACACLQAABEBBCCACLQAAENQBayEBIAMoAgAgATYCBCADKAIAQQRqIgEgASgCAEEEIAAoAgBrQQN0ajYCAAwCCyAGQX82AgAgBigCACEAIAQkBSAADwsACyAGIAAoAgA2AgAgBigCACEAIAQkBSAAC+MFAQl/IwUhBCMFQTBqJAUgBEEEaiEDIARBKGoiBiAANgIAIARBJGoiAiABNgIAIARBIGoiASACKAIAQRBqEMMEQf8BcTYCACAEQRxqIgcgAigCAEEgahDDBEH/AXE2AgAgBEEYaiIAIAIoAgBBGGoQwwRB/wFxNgIAIARBFGoiCCABKAIAQQJ0QbA0aigCADYCACAEQRBqIgkgBygCAEECdEHANWooAgA2AgAgBEEMaiIFIAAoAgA2AgAgBEEIaiIKIAgoAgAgCSgCAGogBSgCAGo2AgAgACgCAARAIAMgACgCAEECdEGgN2ooAgAgAigCACAFKAIAENwBajYCACACKAIAEMAEGgUgA0EANgIACyAEIQACQCADKAIAQQNJBEAgASgCAEUgAygCAEEBTXEEQCADQQEgAygCAGs2AgALIAIoAgBBKGohBSADKAIARQRAIAMgBSgCADYCAAwCCyAAIAUgAygCAEECdGooAgA2AgAgAygCAEEBRwRAIAIoAgAgAigCACgCLDYCMAsgAigCACACKAIAKAIoNgIsIAMgACgCACIANgIAIAIoAgAgADYCKAUgAyADKAIAQQJrNgIAIAIoAgAgAigCACgCLDYCMCACKAIAIAIoAgAoAig2AiwgAigCACADKAIANgIoCwsgBigCACADKAIANgIIIAcoAgBBAnRBoDhqKAIAIQMgBygCAEEfSwR/IAIoAgAgCSgCABDcAQVBAAshACAGKAIAIANBA2ogAGo2AgQgCSgCACAIKAIAakEYSwRAIAIoAgAQwAQaCyABKAIAQQJ0QYA6aigCACEDIAEoAgBBD0sEfyACKAIAIAgoAgAQ3AEFQQALIQAgBigCACADIABqNgIAIAooAgBBH0tBAXIEQCACKAIAEMAEGgsgAigCAEEQaiACKAIAEMQEIAIoAgBBIGogAigCABDEBCACKAIAEMAEGiACKAIAQRhqIAIoAgAQxAQgBCQFC+gI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QTBqIgcgACgCAEEGajYCACAFQSxqIhMgBygCACAKKAIAajYCACAFQShqIhQgEygCACALKAIAajYCACAFQSRqIhYgFCgCACAMKAIAajYCACAFQSBqIgAgECgCAEEDakEEbjYCACAFQRxqIg4gBCgCACAAKAIAajYCACAFQRhqIg8gDigCACAAKAIAajYCACAFQRRqIhEgDygCACAAKAIAajYCACAFQRBqIgMgBCgCADYCACAFQQxqIgQgDigCADYCACAFQQhqIgggDygCADYCACAFQQRqIg0gESgCADYCACAFQTRqIhUgCSgCACAKKAIAIAsoAgBqIAwoAgBqQQZqazYCACAVKAIAIAkoAgBLBEAgBkFsNgIAIAYoAgAhACAFJAUgAA8LIAVBiAFqIgAgBUH4AGoiCSAHKAIAIAooAgAQ8QQ2AgAgACgCABDMAQRAIAYgACgCADYCACAGKAIAIQAgBSQFIAAPCyAAIAVB6ABqIgogEygCACALKAIAEPEENgIAIAAoAgAQzAEEQCAGIAAoAgA2AgAgBigCACEAIAUkBSAADwsgACAFQdgAaiILIBQoAgAgDCgCABDxBDYCACAAKAIAEMwBBEAgBiAAKAIANgIAIAYoAgAhACAFJAUgAA8LIAAgBUHIAGoiDCAWKAIAIBUoAgAQ8QQ2AgAgACgCABDMAQRAIAYgACgCADYCACAGKAIAIQAgBSQFIAAPCyAFIgAgCRDABCAKEMAEciALEMAEciAMEMAEcjYCAANAAkAgACgCAA0AIA0oAgAgEigCAEF5ak8NACADKAIAIAkgASgCACACKAIAENAEIQcgAyADKAIAIAdqNgIAIAQoAgAgCiABKAIAIAIoAgAQ0AQhByAEIAQoAgAgB2o2AgAgCCgCACALIAEoAgAgAigCABDQBCEHIAggCCgCACAHajYCACANKAIAIAwgASgCACACKAIAENAEIQcgDSANKAIAIAdqNgIAIAMoAgAgCSABKAIAIAIoAgAQ0AQhByADIAMoAgAgB2o2AgAgBCgCACAKIAEoAgAgAigCABDQBCEHIAQgBCgCACAHajYCACAIKAIAIAsgASgCACACKAIAENAEIQcgCCAIKAIAIAdqNgIAIA0oAgAgDCABKAIAIAIoAgAQ0AQhByANIA0oAgAgB2o2AgAgACAJEMAEIAoQwARyIAsQwARy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mNABaiAAKAIAIAIoAgBBkNABaigCACACKAIAQZTQAWooAgBrazYCACACKAIAQZTQAWogACgCADYCACACKAIAQZDQAWogACgCADYCACADJAUL/AYBCX8jBSEFIwVB0ABqJAUgBUHEAGohBiAFQUBrIgkgADYCACAFQTxqIgAgATYCACAFQThqIgogAjYCACAFQTRqIgggAzYCACAFQTBqIgcgBDYCACAFQSxqIgEgCCgCADYCACAFQShqIg0gASgCACAHKAIAajYCACAFQSRqIgsgACgCADYCACAFQSBqIgMgCygCADYCACAFQRxqIgwgCygCACAKKAIAajYCACAFQRhqIgIgBygCADYCACAHKAIAQQhJBEAgBkG4fzYCACAGKAIAIQAgBSQFIAAPCyAFQQhqIgAgCSgCACAIKAIAQQUQiAU2AgAgACgCABDMAQRAIAYgACgCADYCACAGKAIAIQAgBSQFIAAPCyAHKAIAIAAoAgBBA2pJBEAgBkG4fzYCACAGKAIAIQAgBSQFIAAPCyABIAEoAgAgACgCAGo2AgAgAiACKAIAIAAoAgBrNgIAIAAgCSgCACAIKAIAIAAoAgAQiQU2AgAgACgCABDMAQRAIAYgACgCADYCACAGKAIAIQAgBSQFIAAPCyAFQRBqIQcgBUEEaiEEIAUhAAJAAkACQAJAAkACQAJAA0AgBEEANgIAIAAgASgCACANKAIAIAEoAgBrIAcQjgQ2AgAgACgCABDMAQ0BIAEgASgCAEEDajYCACACIAIoAgBBA2s2AgAgACgCACACKAIASw0CAkACQAJAAkACQAJAIAcoAgAOBAECAAMECwwICyAEIAkoAgAgAygCACAMKAIAIAMoAgBrIAEoAgAgACgCABCKBTYCAAwDCyAEIAMoAgAgDCgCACADKAIAayABKAIAIAAoAgAQqQQ2AgAMAgsgAigCAA0GDAELDAYLIAAoAgBFDQcgBCgCABDMAUEARyEKIAQoAgAhCCAKDQYgAyADKAIAIAhqNgIAIAEgASgCACAAKAIAajYCACACIAIoAgAgACgCAGs2AgAMAAsACyAGIAAoAgA2AgAgBigCACEAIAUkBSAADwsgBkG4fzYCACAGKAIAIQAgBSQFIAAPCyAGQX82AgAgBigCACEAIAUkBSAADwsgBkG4fzYCACAGKAIAIQAgBSQFIAAP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AgAgCigCACEAIAkkBSAADwsgBygCAEEKTQRAIAEgASgCACADKAIAajYCACANKAIAIAAgEigCACAHKAIAEJUFGgwBCyAKQWw2AgAgCigCACEAIAkkBSAADwsgCiABKAIAIAgoAgBrNgIAIAooAgAhACAJJAUgAAuuBQEFfyMFIQQjBUEgaiQFIARBFGohBSAEQRBqIgMgADYCACAEQQxqIgYgATYCACAEQQhqIgEgAjYCACABKAIAQQFJBEAgAygCACIAQgA3AgAgAEIANwIIIAVBuH82AgAgBSgCACEAIAQkBSAADwsgBEEEaiECIAQhACABKAIAQQRPIQcgAygCACAGKAIANgIMAkAgBwRAIAMoAgAgBigCACABKAIAakF8ajYCCCADKAIAKAIIEOEBIQAgAygCACAANgIAIAIgBigCACABKAIAQQFrai0AADYCACACKAIABEBBCCACKAIAENQBayEAIAMoAgAgADYCBAwCCyAFQX82AgAgBSgCACEAIAQkBSAADwUgAygCACADKAIAKAIMNgIIIAMoAgAgAygCACgCDC0AADYCAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgBBAmsOBgUEAwIBAAYLIAMoAgAiAiACKAIAIAMoAgAoAgwtAAZBEHRqNgIADAYLDAULDAULDAULDAULDAULDAULIAMoAgAiAiACKAIAIAMoAgAoAgwtAAVBCHRqNgIACyADKAIAIgIgAigCACADKAIAKAIMLQAEajYCAAsgAygCACICIAIoAgAgAygCACgCDC0AA0EYdGo2AgALIAMoAgAiAiACKAIAIAMoAgAoAgwtAAJBEHRqNgIACyADKAIAIgIgAigCACADKAIAKAIMLQABQQh0ajYCAAsgACAGKAIAIAEoAgBBAWtqLQAANgIAIAAoAgAEQEEIIAAoAgAQ1AFrIQAgAygCACAANgIEIAMoAgBBBGoiACAAKAIAQQQgASgCAGtBA3RqNgIADAILIAVBfzYCACAFKAIAIQAgBCQFIAAPCwALIAUgASgCADYCACAFKAIAIQAgBCQFIAALhQEBAn8jBSEDIwVBIGokBSADQRBqIgQgADYCACADQQxqIgAgATYCACADQQhqIgEgAjYCACADQQRqIgIgASgCADYCACADIAIoAgA2AgAgACgCACADKAIALwEAENwB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BiAANgIAIAVBDGoiACABNgIAIAVBCGoiASACNgIAIAVBBGoiAiADNgIAIAUgBDYCACAGKAIAIAAoAgAgASgCACACKAIAIAUoAgBBAEEAEK8FIQAgBSQFIAALxggBB38jBSEHIwVB0ABqJAUgB0HIAGoiCCAANgIAIAdBxABqIgAgATYCACAHQUBrIgsgAjYCACAHQTxqIgogAzYCACAHQThqIgkgBDYCACAHQTRqIgEgBTYCACAHQTBqIgUgBjYCACAHQSxqIgIgCigCADYCACAHQShqIg0gAigCACAJKAIAajYCACAHQSRqIgYgACgCADYCACAHQSBqIgQgBigCADYCACAHQRxqIgwgBigCACALKAIAajYCACAHQRhqIgMgCSgCADYCACAIKAIAELAFGiABKAIABEAgCCgCACABKAIAIAUoAgAQsQUgCCgCAEGY0ABqIAgoAgBBjNAAaigCADYCACAIKAIAQZTQAGogACgCACAIKAIAQYzQAGooAgAgCCgCAEGQ0ABqKAIAa2s2AgAgCCgCAEGQ0ABqIAAoAgA2AgAFIAgoAgBBmNAAaiAAKAIAIgA2AgAgCCgCAEGQ0ABqIAA2AgAgCCgCAEGU0ABqIAA2AgALIAdBzABqIQEgCSgCAEEISQRAIAFBuH82AgAgASgCACEAIAckBSAADwsgB0EIaiIAIAgoAgAgCigCAEEFELIFNgIAIAAoAgAQzAEEQCABIAAoAgA2AgAgASgCACEAIAckBSAADwsgCSgCACAAKAIAQQNqSQRAIAFBuH82AgAgASgCACEAIAckBSAADwsgAiACKAIAIAAoAgBqNgIAIAMgAygCACAAKAIAazYCACAAIAgoAgAgCigCACAAKAIAELMFNgIAIAAoAgAQzAEEQCABIAAoAgA2AgAgASgCACEAIAckBSAADwsgB0EQaiEJIAdBBGohBSAHIQACQAJAAkACQAJAAkACQANAIAVBADYCACAAIAIoAgAgDSgCACACKAIAayAJEI4ENgIAIAAoAgAQzAENASACIAIoAgBBA2o2AgAgAyADKAIAQQNrNgIAIAAoAgAgAygCAEsNAgJAAkACQAJAAkACQCAJKAIADgQBAgADBAsMCAsgBSAIKAIAIAQoAgAgDCgCACAEKAIAayACKAIAIAAoAgAQtAU2AgAMAwsgBSAEKAIAIAwoAgAg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AgAgBSgCACEAIAQkBSAADwsgBEEEaiECIAQhACABKAIAQQRPIQcgAygCACAGKAIANgIMAkAgBwRAIAMoAgAgBigCACABKAIAakF8ajYCCCADKAIAKAIIEL0FIQAgAygCACAANgIAIAIgBigCACABKAIAQQFrai0AADYCACACKAIABEBBCCACKAIAENQBayEAIAMoAgAgADYCBAwCCyAFQX82AgAgBSgCACEAIAQkBSAADwUgAygCACADKAIAKAIMNgIIIAMoAgAgAygCACgCDC0AADYCAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgBBAmsOBgUEAwIBAAYLIAMoAgAiAiACKAIAIAMoAgAoAgwtAAZBEHRqNgIADAYLDAULDAULDAULDAULDAULDAULIAMoAgAiAiACKAIAIAMoAgAoAgwtAAVBCHRqNgIACyADKAIAIgIgAigCACADKAIAKAIMLQAEajYCAAsgAygCACICIAIoAgAgAygCACgCDC0AA0EYdGo2AgALIAMoAgAiAiACKAIAIAMoAgAoAgwtAAJBEHRqNgIACyADKAIAIgIgAigCACADKAIAKAIMLQABQQh0ajYCAAsgACAGKAIAIAEoAgBBAWtqLQAANgIAIAAoAgAEQEEIIAAoAgAQ1AFrIQAgAygCACAANgIEIAMoAgBBBGoiACAAKAIAQQQgASgCAGtBA3RqNgIADAILIAVBfzYCACAFKAIAIQAgBCQFIAAPCwALIAUgASgCADYCACAFKAIAIQAgBCQFIAALdgECfyMFIQMjBUEQaiQFIANBCGoiBCAANgIAIANBBGoiACABNgIAIAMgAjYCACADQQxqIgEgAygCACgBADYBACAAKAIAIAEvAQAQ3AEhASAEKAIAIAE2AgAgACgCABC6BRogBCgCACADKAIAQQRqNgIEIAMkBQvAAwEGfyMFIQMjBUEQaiQFIANBDGohAiADQQhqIgEgADYCACABKAIAKAIEQSBLBEAgAkEDNgIAIAIoAgAhACADJAUgAA8LIAEoAgAhBSABKAIAKAIIIAEoAgAoAgxBBGpPBEAgASgCAEEIaiIAIAAoAgAgBSgCBEEDdms2AgAgASgCAEEEaiIAIAAoAgBBB3E2AgAgASgCACgCCBC9BSEAIAEoAgAgADYCACACQQA2AgAgAigCACEAIAMk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QCACKAIIQQRPDQILA0AgCCgCACAGKAIASQRAIAEgASgCACIAQQFqNgIAIAAsAAAhACAIIAgoAgAiAkEBajYCACACIAA6AAAMAQsLIAogBSgCADYCACAKKAIAIQAgCSQFIAAPCwsgAigCBEEISQRAIAAgAigCBEECdEGQPWooAgA2AgAgCCgCACABKAIALAAAOgAAIAgoAgAgASgCACwAAToAASAIKAIAIAEoAgAsAAI6AAIgCCgCACABKAIALAADOgADIAEgASgCACACKAIEQQJ0QbA9aigCAGo2AgAgCCgCAEEEaiABKAIAEJ4EIAEgASgCACAAKAIAazYCAAUgCCgCACABKAIAEPwCCyAIIAgoAgBBCGo2AgAgASABKAIAQQhqNgIAIAgoAgAhAAJAIAYoAgAgCygCAEF0aksEQCAAIAQoAgBJBEAgCCgCACABKAIAIAQoAgAgCCgCAGsQ+wIgASABKAIAIAQoAgAgCCgCAGtqNgIAIAggBCgCADYCAAsDQCAIKAIAIAYoAgBPDQIgASABKAIAIgBBAWo2AgAgACwAACEAIAggCCgCACICQQFqNgIAIAIgADoAAAwACwAFIAAgASgCACACKAIIQQhrEPsCCwsgCiAFKAIANgIAIAooAgAhACAJJAUgAAs3AQJ/IwUhASMFQRBqJAUgASAANgIAIAFBBGoiAiABKAIAIgAQkAQ2AgAgAigCACEAIAEkBSAAC40LARB/IwUhBSMFQdAAaiQFIAVBQGshBiAFQTxqIhIgADYCACAFQThqIg8gATYCACAFQTRqIgggAjYCACAFQTBqIgAgAzYCACAFQSxqIhAgBDYCACAFQShqIg4gACgCADYCACAFQSRqIgsgDigCACAQKAIAajYCACAFQSBqIgIgDigCADYCACAFQQhqIglBADYCACAFQQRqIhNBADYCACAQKAIAQQRJBEAgBkG4fzYCACAGKAIAIQAgBSQFIAAPCyAFQRBqIgMgAigCABCQBDYCACAFQRxqIgQgAygCAEEPcUEFajYCACAEKAIAQQ9KBEAgBkFUNgIAIAYoAgAhACAFJAUgAA8LIAUhACAFQcYAaiERIAVBxABqIQcgAyADKAIAQQR2NgIAIAVBDGoiAUEENgIAIAgoAgAgBCgCADYCACAFQRhqIgxBASAEKAIAdEEBajYCACAFQRRqIghB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CyABQQRqIgAgACgCACABKAIEQQR2ajYCACABQQhqIgAgACgCACABKAIIQQN2ajYCACABKAIEIAEoAgBJBEAgA0EBNgIACyAFIAcoAgAgBigCACAIKAIAIAIoAgAgAygCAEECdEHE5QBqKAIAQQ9xQagBahEIADYCACAFKAIAIQAgBCQFIAALrQIBBn8jBSEEIwVBoMAAaiQFIARBnMAAaiEFIARBmMAAaiIHIAA2AgAgBEGUwABqIgggATYCACAEQZDAAGoiBiACNgIAIARBjMAAaiIBIAM2AgAgBCIAQQBBgsAAEPYHGiAEQQw7AQAgBEGIwABqIgMgBigCADYCACAEQYTAAGoiAiAEIAYoAgAgASgCABDLBTYCACACKAIAEMwBQQBHIQkgAigCACEGIAkEQCAFIAY2AgAgBSgCACEAIAQkBSAADwsgBiABKAIATwR/IAVBuH82AgAgBSgCACEAIAQkBSAABSADIAMoAgAgAigCAGo2AgAgASABKAIAIAIoAgBrNgIAIAUgBygCACAIKAIAIAMoAgAgASgCACAAEMwFNgIAIAUoAgAhACAEJAUgAAsLrQIBBn8jBSEEIwVBoIABaiQFIARBnIABaiEFIARBmIABaiIHIAA2AgAgBEGUgAFqIgggATYCACAEQZCAAWoiBiACNgIAIARBjIABaiIBIAM2AgAgBCIAQQBBhIABEPYHGiAEQQw2AgAgBEGIgAFqIgMgBigCADYCACAEQYSAAWoiAiAEIAYoAgAgASgCABDDBTYCACACKAIAEMwBQQBHIQkgAigCACEGIAkEQCAFIAY2AgAgBSgCACEAIAQkBSAADwsgBiABKAIATwR/IAVBuH82AgAgBSgCACEAIAQkBSAABSADIAMoAgAgAigCAGo2AgAgASABKAIAIAIoAgBrNgIAIAUgBygCACAIKAIAIAMoAgAgASgCACAAEMQFNgIAIAUoAgAhACAEJAUgAAsLhQoBG38jBSEDIwVB0BBqJAUgA0HIEGohBiADQcQQaiIEIAA2AgAgA0HAEGoiACABNgIAIANBvBBqIgEgAjYCACADQZAJaiICQgA3AwAgAkIANwMIIAJCADcDECACQgA3AxggAkIANwMgIAJCADcDKCACQgA3AzAgAkIANwM4IAJBQGtBADYCACADQcAIaiIHQgA3AwAgB0IANwMIIAdC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AigCAEECdGooAgA2AgAgCiAELgEAEOAEIAogFigCADoAAiAKQQE6AAMgDEEANgIAA0AgDCgCACASKAIATw0CIBUoAgAgDCgCAEECdGogCigBADYBACAMIAwoAgBBAWo2AgAMAAsACwsgC0EANgIAA0AgCygCACAFKAIASQRAIBMgAygCACALKAIAQQF0ai0AADYCACANIAMoAgAgCygCAEEBdGotAAE2AgAgDyAGKAIAIA0oAgBrNgIAIBBBASAXKAIAIA8oAgBrdDYCACARIAAgDSgCAEECdGooAgA2AgAgDiARKAIANgIAIBQgESgCACAQKAIAajYCACAKIAQvAQAgEygCAEEIdGpB//8DcRDgBCAKIA8oAgAgFigCAGo6AAIgCkECOgADA0AgFSgCACEBIA4gDigCACICQQFqNgIAIAEgAkECdGogCigBADYBACAOKAIAIBQoAgBJDQALIAAgDSgCAEECdGoiASABKAIAIBAoAgBqNgIAIAsgCygCAEEBajYCAAwBCwsgCSQFC6YDAQh/IwUhBCMFQcCEAWokBSAEQbSEAWohBSAEQbCEAWoiByAANgIAIARBrIQBaiIIIAE2AgAgBEGohAFqIgEgAjYCACAEQaSEAWoiAiADNgIAIARBoIQBaiIAIAEoAgA2AgAgBEGchAFqIgMgACgCADYCACAEQZSEAWoiBkH/ATYCACACKAIAQQJJBEAgBUG4fzYCACAFKAIAIQAgBCQFIAAPCyAEQZCEAWoiASAEQZCAAWoiCSAGIARBmIQBaiIKIAAoAgAgAigCABC+BTYCACABKAIAEMwBQQBHIQsgASgCACEAIAsEQCAFIAA2AgAgBSgCACEAIAQkBSAADwsgACACKAIATwRAIAVBuH82AgAgBSgCACEAIAQkBSAADwsgAyADKAIAIAEoAgBqNgIAIAIgAigCACABKAIAazYCACABIAQiACAJIAYoAgAgCigCABCVBTYCACABKAIAEMwBBH8gBSABKAIANgIAIAUoAgAhACAEJAUgAAUgBSAHKAIAIAgoAgAgAygCACACKAIAIAAQygU2AgAgBSgCACEAIAQkBSAACwuNDgEkfyMFIQUjBUHAAWokBSAFQbgBaiEQIAVBtAFqIRsgBUGwAWohHCAFQawBaiEdIAVBqAFqIR4gBUGkAWohFSAFQaABaiEKIAVB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AWogADYCACAFKAIAQejhAWooAgAQzQFBAEchAyAFKAIAIQAgAwRAIAYgAEHo4QFqKAIANgIAIAYoAgAhACAHJAUgAA8FIABB3OIJaiACKAIAIAEoAgAQ9AcaIAUoAgBByOABaiAFKAIAQejhAWooAgAgASgCAGs2AgAgBSgCAEGE4QFqQQE2AgAgBkEANgIAIAYoAgAhACAHJAUgAA8LAAsgBSgCAEHc4glqIAUoAgBB6OEBaigCACABKAIAa2ogAigCACABKAIAEPQHGiALIAUoAgAgBSgCAEHc4glqIAUoAgBB6OEBaigCABCoBDYCACALKAIAEM0BBEAgBiALKAIANgIAIAYoAgAhACAHJAUgAA8FIAUoAgBByOABakEDNgIAIAUoAgBBhOEBakECNgIAIAZBADYCACAGKAIAIQAgByQFIAAPCwALIAogAigCAEEDIAQQhwQ2AgAgCigCABDNAUEARyEBIAooAgAhACABBEAgBiAANgIAIAYoAgAhACAHJAUgAA8LIAUoAgBByOABaiAANgIAIAUoAgBBgOEBaiAEKAIANgIAIAUoAgBBiOIBaiAEKAIINgIAIAQoAgRBAEchACAKKAIABEAgBSgCAEGE4QFqIAAEf0EEBUEDCzYCACAGQQA2AgAgBigCACEAIAckBSAADwsgBSgCACEBIAAEQCAFKAIAQcjgAWohACABQfDgAWooAgAEQCAAQQQ2AgAgBSgCAEGE4QFqQQU2AgAFIABBADYCACAFKAIAQYThAWpBADYCAAsFIAFByOABakEDNgIAIAUoAgBBhOEBakECNgIACyAGQQA2AgAgBigCACEAIAckBSAADwsCQAJAAkACQAJAIAUoAgBBgOEBaigCAA4DAQIAAwsgAyAFKAIAIAgoAgAgCSgCACACKAIAIAEoAgBBARCXBDYCAAwDCyADIAgoAgAgCSgCACACKAIAIAEoAgAQqQQ2AgAMAgsgAyAIKAIAIAkoAgAgAigCACABKAIAIAUoAgBBiOIBaigCABDUBTYCAAwBCyAGQWw2AgAgBigCACEAIAckBSAADwsgAygCABDNAUEARyEBIAMoAgAhACABBEAgBiAANgIAIAYoAgAhACAHJAUgAA8LIAUoAgBB+OABaiIBIAEpAwAgAK18NwMAIAUoAgBB8OABaigCAARAIAUoAgBBkOEBaiAI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AygCAEGE4QFqQQI2AgALIAMoAgBB2OABaiADKAIAQdjgAWopAwBCgAhWBH4gAygCAEHY4AFqKQMABUKACAs3AwAgAygCAEHY4AFqKQMAIAMoAgBBrOIBaigCAK1WBEBBNCEBDAULIBkgAygCAEHg4AFqKAIAQQRLBH8gAygCAEHg4AFqKAIABUEECyIGNgIAIBogAygCAEHY4AFqKQMAIAMoAgBB0OABaikDABDjBTYCAAJAAkAgAygCAEGk4gFqKAIAIBkoAgBJDQAgAygCAEG04gFqKAIAIBooAgBJDQAMAQsgIiAZKAIAIBooAgBqNgIAIAMoAgBBjOIBaigCAARAICIoAgAgAygCAEGM4gFqKAIAQfDiCWtLBEBBOyEBDAcLBSADKAIAQaDiAWooAgAhBiANIAMoAgBB+OEBaiIOKQIANwIAIA0gDigCCDYCCCAGIA0Q7wEgAygCAEGk4gFqQQA2AgAgAygCAEG04gFqQQA2AgAgIigCACEGIA0gAygCAEH44QFqIg4pAgA3AgAgDSAOKAIINgIIIAYgDRDtASEGIAMoAgBBoOIBaiAGNgIAIAMoAgBBoOIBaigCAEUEQEE9IQEMBwsLIAMoAgBBpOIBaiAZKAIANgIAIAMoAgBBsOIBaiADKAIAQaDiAWooAgAgAygCAEGk4gFqKAIAajYCACADKAIAQbTiAWogGigCADYCAAsgAygCAEGc4gFqQQI2AgALIBEgAygCABDRBTYCACARKAIARQRAIAMoAgBBnOIBakEANgIAIAFBADYCAAwDCyALKAIAIAIoAgBrIBEoAgBJBEAgAigCACALKAIARgRAIAFBADYCAAwEBSADKAIAQZziAWpBAzYCAAwCCwALICMgAygCABDnBTYCACASIAMoAgAiDiADKAIAQbDiAWooAgAgAygCAEG44gFqKAIAaiAjKAIABH9BAAUgAygCAEG04gFqKAIAIAMoAgBBuOIBaigCAGsLIgYgAigCACARKAIAENMFNgIAIBIoAgAQzQEEQEHGACEBDAQLIAIgAigCACARKAIAajYCACASKAIAICMoAgByBEAgAygCAEG84gFqIAMoAgBBuOIBaigCACASKAIAajYCACADKAIAQZziAWpBBDYCAAsMAgsgJCADKAIAENEFNgIAIBMgJCgCACADKAIAQajiAWooAgBrNgIA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NgIAIAMoAgAhASAAKAIABEAgARDSBUECRkEDbCEBIAAgACgCACABajYCACAAIAAoAgAgAygCAEGo4gFqKAIAazYCACAFIAAoAgA2AgAgBSgCACEAIAQkBSAADwsgAygCAEHQ4gFqKAIAQQBHIQAgAUG84gFqKAIAIAMoAgBBuOIBaigCAEcEQCAARQRAIAcoAgBBCGoiACAAKAIAQX9qNgIAIAMoAgBB0OIBakEBNgIACyAFQQE2AgAgBSgCACEAIAQkBSAADwsCQCAABEAgBygCACgCCCAHKAIAKAIESQRAIAcoAgBBCGoiACAAKAIAQQFqNgIADAILIAMoAgBBnOIBakECNgIAIAVBATYCACAFKAIAIQAgBCQFIAAPCwsgBUEANgIAIAUoAgAhACAEJAUgAA8LQQALvggBHH8jBSEEIwVBgAFqJAUgBEHwAGohBiAEQdwAaiEQIARB2ABqIREgBEHUAGohCCAEQdAAaiESIARBzABqIQkgBEHIAGohEyAEQcQAaiEUIARBQGshFSAEQTxqIQogBEE4aiEWIARBNGohCyAEQTBqIRcgBEEsaiEYIARBKGohGSAEQSRqIQwgBEEgaiEaIARBHGohDSAEQRhqIRsgBEEUaiEcIARBEGohHSAEQQxqIQ4gBEEIaiEeIARBBGohDyAEIR8gBEHsAGoiByAANgIAIARB6ABqIgAgATYCACAEQeQAaiIFIAI2AgAgBEHgAGoiASADNgIAAkACQAJAAkACQCAAKAIAQQRrDgQDAgEABAsgHCAHKAIANgIAIB0gASgCACgCACABKAIAKAIIajYCACAOIAEoAgAoAgQgASgCACgCCGs2AgAgHiAFKAIAKAIAIAUoAgAoAghqNgIAIA8gBSgCACgCBCAFKAIAKAIIazYCACAfIBwoAgAgHigCACAPIB0oAgAgDhD4BTYCACAFKAIAQQhqIgAgACgCACAPKAIAajYCACABKAIAQQhqIgAgACgCACAOKAIAajYCACAGIB8oAgA2AgAgBigCACEAIAQkBSAADwsgGCAHKAIANgIAIBkgASgCACgCACABKAIAKAIIajYCACAMIAEoAgAoAgQgASgCACgCCGs2AgAgGiAFKAIAKAIAIAUoAgAoAghqNgIAIA0gBSgCACgCBCAFKAIAKAIIazYCACAbIBgoAgAgGigCACANIBkoAgAgDBD3BTYCACAFKAIAQQhqIgAgACgCACANKAIAajYCACABKAIAQQhqIgAgACgCACAMKAIAajYCACAGIBsoAgA2AgAgBigCACEAIAQkBSAADwsgFCAHKAIANgIAIBUgASgCACgCACABKAIAKAIIajYCACAKIAEoAgAoAgQgASgCACgCCGs2AgAgFiAFKAIAKAIAIAUoAgAoAghqNgIAIAsgBSgCACgCBCAFKAIAKAIIazYCACAXIBQoAgAgFigCACALIBUoAgAgChD2BTYCACAFKAIAQQhqIgAgACgCACALKAIAajYCACABKAIAQQhqIgAgACgCACAKKAIAajYCACAGIBcoAgA2AgAgBigCACEAIAQkBSAADwsgECAHKAIANgIAIBEgASgCACgCACABKAIAKAIIajYCACAIIAEoAgAoAgQgASgCACgCCGs2AgAgEiAFKAIAKAIAIAUoAgAoAghqNgIAIAkgBSgCACgCBCAFKAIAKAIIazYCACATIBAoAgAgEigCACAJIBEoAgAgCBD1BTYCACAFKAIAQQhqIgAgACgCACAJKAIAajYCACABKAIAQQhqIgAgACgCACAIKAIAajYCACAGIBMoAgA2AgAgBigCACEAIAQkBSAADwsgBkF0NgIAIAYoAgAhACAEJAUgAAuRBQEGfyMFIQUjBUEwaiQFIAVBIGoiBiAANgIAIAVBHGoiByABNgIAIAVBGGoiCCACNgIAIAVBFGoiCSADNgIAIAVBEGoiAyAENgIAIAcoAgAgCCgCAEcEQCAGKAIAKAIAIAcoAgAQ7AMaCyAFQSRqIQEgBUEMaiECIAVBCGohBCAFQQRqIQogBSEAAkACQAJAAkACQCAIKAIAQQRrDgQDAgEABAsgACAHKAIAIAgoAgBHBH8Q7wUFIAYoAgAoAgALNgIAIAAoAgAEQCAAKAIAIAkoAgAgAygCABDwBRogBigCACAAKAIANgIAIAFBADYCACABKAIAIQAgBSQFIAAPBSABQUA2AgAgASgCACEAIAUkBSAADwsACyAKIAcoAgAgCCgCAEcEfxDtBQUgBigCACgCAAs2AgAgCigCAARAIAooAgAgCSgCACADKAIAEO4FGiAGKAIAIAooAgA2AgAgAUEANgIAIAEoAgAhACAFJAUgAA8FIAFBQDYCACABKAIAIQAgBSQFIAAPCwALIAQgBygCACAIKAIARwR/EOsFBSAGKAIAKAIACzYCACAEKAIABEAgBCgCACAJKAIAIAMoAgAQ7AUaIAYoAgAgBCgCADYCACABQQA2AgAgASgCACEAIAUkBSAADwUgAUFANgIAIAEoAgAhACAFJAUgAA8LAAsgAiAHKAIAIAgoAgBHBH8Q9AUFIAYoAgAoAgALNgIAIAIoAgAEQCACKAIAEOkFGiACKAIAIAkoAgAgAygCABDqBRogBigCACACKAIANgIAIAFBADYCACABKAIAIQAgBSQFIAAPBSABQUA2AgAgASgCACEAIAUkBSAADwsACyABQQA2AgAgASgCACEAIAUkBSAACy4BAX8jBSEBIwVBEGokBSABIAA2AgAgASgCAEGE4QFqKAIAQQdGIQAgASQFIAALhwEBBH8jBSEEIwVBIGokBSAEQRBqIgYgADYCACAEQQxqIgUgATYCACAEQQhqIgcgAjYCACAEQQRqIgEgAzYCACAFKAIAIQIgASgCACEDIAQiACAFKAIAIAEoAgBJBH8gAgUgAws2AgAgBigCACAHKAIAIAAoAgAQ9AcaIAAoAgAhACAEJAUgAAsmAQF/IwUhASMFQRBqJAUgASAANgIAIAEoAgAQ8wUhACABJAUgAAtIAQJ/IwUhAyMFQRBqJAUgA0EIaiIEIAA2AgAgA0EEaiIAIAE2AgAgAyACNgIAIAQoAgAgACgCACADKAIAEPIFIQAgAyQFIAALzAEBBH8jBSECIwVBEGokBSACQQRqIQMgAiIBQeAAEIYGNgIAIAEoAgAEfyABKAIAIgBCADcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoIABCADcDMCAAQgA3AzggAEFAa0IANwMAIABCADcDSCAAQgA3A1AgAEIANwNYELAEIQAgASgCACAANgIAIAEoAgBBADYCUCADIAEoAgA2AgAgAygCACEBIAIkBSABBSADQQA2AgAgAygCACEBIAIkBSABCwt9AQJ/IwUhBCMFQRBqJAUgBEEIaiIDIAA2AgAgBEEEaiIAIAE2AgAgBCACNgIAIAMoAgBBATYCUCADKAIAQQA2AkggAygCAEEANgJEIAMoAgBBADYCOCADKAIAQQA2AkwgAygCACgCACAAKAIAIAQoAgAQhQUhACAEJAUgAAu+AQEEfyMFIQIjBUEQaiQFIAJBBGohAyACIgFB0AAQhgY2AgAgASgCAAR/IAEoAgAiAEIANwMAIABCADcDCCAAQgA3AxAgAEIANwMYIABCADcDICAAQgA3AyggAEIANwMwIABCADcDOCAAQUBrQgA3AwAgAEIANwNIELIEIQAgASgCACAANgIAIAEoAgBBADYCGCADIAEoAgA2AgAgAygCACEBIAIkBSABBSADQQA2AgAgAygCACEBIAIkBSABCwt9AQJ/IwUhBCMFQRBqJAUgBEEIaiIDIAA2AgAgBEEEaiIAIAE2AgAgBCACNgIAIAMoAgBBATYCGCADKAIAQQA2AjQgAygCAEEANgIwIAMoAgBBADYCJCADKAIAQQA2AkwgAygCACgCACAAKAIAIAQoAgAQ6gQhACAEJAUgAAs0AQJ/IwUhACMFQRBqJAUgAEGg5QApAgA3AgAgAEGo5QAoAgA2AgggABDxBSEBIAAkBSABC30BAn8jBSEEIwVBEGokBSAEQQhqIgMgADYCACAEQQRqIgAgATYCACAEIAI2AgAgAygCAEEBNgIgIAMoAgBBADYCPCADKAIAQQA2AjggAygCAEEANgIsIAMoAgBBADYCWCADKAIAKAIAIAAoAgAgBCgCABC2BCEAIAQkBSAAC5wDAQV/IwUhBCMFQSBqJAUgACgCAEUEQCAAKAIERQRAIABBoOUAKQIANwIAIABBqOUAKAIANgIICwsgBEEIaiEFIARBBGohAiAEIQMgACgCAARAIAAoAgQEQCADIAAoAghB6AAgACgCAEE/cUHIAGoRBwA2AgAgAygCAEUEQCACQQA2AgAgAigCACEAIAQkBSAADwsgAygCACIBQgA3AwAgAUIANwMIIAFCADcDECABQgA3AxggAUIANwMgIAFCADcDKCABQgA3AzAgAUIANwM4IAFBQGtCADcDACABQgA3A0ggAUIANwNQIAFCADcDWCABQgA3A2AgAygCAEHcAGoiASAAKQIANwIAIAEgACgCCDYCCCAFIAApAgA3AgAgBSAAKAIINgIIIAUQ5wQhACADKAIAIAA2AgAgAygCACEAIAMoAgAoAgAEQCAAQQA2AiAgAiADKAIANgIAIAIoAgAhACAEJAUgAA8FIAAQ8AMaIAJBADYCACACKAIAIQAgBCQFIAAPCwALCyACQQA2AgAgAigCACEAIAQkBSAAC04B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AAAAAAAAAGIEfyAARAAAAAAAAPBDoiABEKkGIQAgASgCAEFAagVBAAsiAjYCAAwBCyABIASnQf8PcUGCeGo2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvyEACyAAC6UCAAJ/IAAEfyABQYABSQRAIAAgAToAAEEBDAILQZDpACgCACgCAEUEQCABQYB/cUGAvwNGBEAgACABOgAAQQEMAwVByLUBQdQANgIAQX8MAwsACyABQYAQSQRAIAAgAUEGdkHAAXI6AAAgACABQT9xQYABcjoAAUECDAILIAFBgLADSSABQYBAcUGAwANGcgRAIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAASAAIAFBP3FBgAFyOgACQQMMAgsgAUGAgHxqQYCAwABJBH8gACABQRJ2QfABcjoAACAAIAFBDHZBP3FBgAFyOgABIAAgAUEGdkE/cUGAAXI6AAIgACABQT9xQYABcjoAA0EEBUHItQFB1AA2AgBBfwsFQQELCwuTAQECfwJAAkACQANAIAJB8MUAai0AACAARg0BIAJBAWoiAkHXAEcNAAtB1wAhAgwBCyACDQBB0MYAIQAMAQtB0MYAIQADQCAAIQMDQCADQQFqIQAgAywAAARAIAAhAwwBCwsgAkF/aiICDQALCyABKAIUIgEEfyABKAIAIAEoAgQgABCZBgVBAAsiAQR/IAEFIAALC/MBAQR/AkACQCACQRBqIgQoAgAiAw0AIAIQrQYEf0EABSAEKAIAIQMMAQshAgwBCyADIAJBFGoiBSgCACIEayABSQRAIAIgACABIAIoAiRBH3FBiAFqEQUAIQIMAQsCfyACLABLQQBIIAFFcgR/QQAFIAEhAwNAIAAgA0F/aiIGaiwAAEEKRwRAIAYEQCAGIQMMAgVBAAwECwALCyACIAAgAyACKAIkQR9xQYgBahEFACICIANJDQIgACADaiEAIAEgA2shASAFKAIAIQQgAwsLIQIgBCAAIAEQ9AcaIAUgBSgCACABajYCACACIAFqIQILIAILawECfyAAQcoAaiICLAAAIQEgAiABQf8BaiABcjoAACAAKAIAIgFBCHEEfyAAIAFBIHI2AgBBfwUgAEEANgIIIABBADYCBCAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQQQALIgALOwECfyAAKAIQIABBFGoiAygCACIEayIAIAJLBEAgAiEACyAEIAEgABD0BxogAyADKAIAIABqNgIAIAILLAEBfyMFIQIjBUEQaiQFIAIgATYCAEHQ5QAoAgAgACACEJ4GIQAgAiQFIAALqwEBBn8jBSEDIwVBEGokBSADIgQgAUH/AXEiBzoAAAJAAkAgAEEQaiICKAIAIgUNACAAEK0GBH9BfwUgAigCACEFDAELIQEMAQsgAEEUaiICKAIAIgYgBUkEQCABQf8BcSIBIAAsAEtHBEAgAiAGQQFqNgIAIAYgBzoAAAwCCwsgACAEQQEgACgCJEEfcUGIAWoRBQBBAUYEfyAELQAABUF/CyEBCyADJAUgAQvCAQEFfyMFIQMjBUEwaiQFIANBIGohBSADQRBqIQQgAyECQc6TASABLAAAEJQGBEAgARCyBiEGIAIgADYCACACIAZBgIACcjYCBCACQbYDNgIIQQUgAhAMEI8GIgJBAEgEQEEAIQAFIAZBgIAgcQRAIAQgAjYCACAEQQI2AgQgBEEBNgIIQd0BIAQQCxoLIAIgARCzBiIARQRAIAUgAjYCAEEGIAUQDhpBACEACwsFQci1AUEWNgIAQQAhAAsgAyQFIAALmAEBA38gAEErEJQGRSECIAAsAAAiA0HyAEchASACBH8gAQVBAiIBC0GAAXIhAiAAQfgAEJQGBH8gAiIBBSABC0GAgCByIQIgAEHlABCUBgR/IAIiAQUgAQtBwAByIQAgA0HyAEYEfyABBSAAIgELQYAEciEAIANB9wBGBH8gAAUgASIAC0GACHIhASADQeEARgR/IAEFIAALC6IDAQd/IwUhAyMFQUBrJAUgA0EoaiEFIANBGGohBiADQRBqIQcgAyEEIANBOGohCEHOkwEgASwAABCUBgRAQYQJEIYGIgIEQCACQQBB/AAQ9gcaIAFBKxCUBkUEQCACIAEsAABB8gBGBH9BCAVBBAs2AgALIAFB5QAQlAYEQCAEIAA2AgAgBEECNgIEIARBATYCCEHdASAEEAsaCyABLAAAQeEARgRAIAcgADYCACAHQQM2AgRB3QEgBxALIgFBgAhxRQRAIAYgADYCACAGQQQ2AgQgBiABQYAIcjYCCEHdASAGEAsaCyACIAIoAgBBgAFyIgE2AgAFIAIoAgAhAQsgAiAANgI8IAIgAkGEAWo2AiwgAkGACDYCMCACQcsAaiIEQX86AAAgAUEIcUUEQCAFIAA2AgAgBUGTqAE2AgQgBSAINgIIQTYgBRANRQRAIARBCjoAAAsLIAJBFjYCICACQQM2AiQgAkECNgIoIAJBHTYCDEGMtQEoAgBFBEAgAkF/NgJMCyACELQGGgVBACECCwVByLUBQRY2AgALIAMkBSACCzEBAn8gABC1BiIBKAIANgI4IAEoAgAiAgRAIAIgADYCNAsgASAANgIAQcy1ARAPIAALDABBzLUBEAZB1LUBC4YBAQJ/AkAgAARAIAAoAkxBf0wEQCAAELkGIQAMAgsgABC5BiEBIAEhAAVB0OYAKAIABH9B0OYAKAIAELYGBUEACyEAELUGKAIAIgEEQANAIAEoAkwaQQAhAiABKAIUIAEoAhxLBEAgARC5BiAAciEACyABKAI4IgENAAsLQcy1ARAPCwsgAAupAQEFfyAAKAJMGkEAIQUgABC4BiAAKAIAQQFxQQBHIgRFBEAQtQYhAyAAQThqIQEgACgCNCICBEAgAiABKAIANgI4CyABKAIAIgEEQCABIAI2AjQLIAEhAiADKAIAIABGBEAgAyACNgIAC0HMtQEQDwsgABC2BiEDIAAgACgCDEE/cUEIahEEACEBIAAoAlwiAgRAIAIQhwYLIARFBEAgABCHBgsgASADcgtCAQF/IAAoAkQEQCAAQfAAaiEBIAAoAnQiAARAIAAgASgCADYCcAsgASgCACIBBH8gAUH0AGoFQbzpAAsgADYCAAsLngEBBn8CfwJAIABBFGoiASgCACAAQRxqIgIoAgBNDQAgAEEAQQAgACgCJEEfcUGIAWoRBQAaIAEoAgANAEF/DAELIABBBGoiAygCACIEIABBCGoiBSgCACIGSQRAIAAgBCAGa0EBIAAoAihBH3FBiAFqEQUAGgsgAEEANgIQIAJBADYCACABQQA2AgAgBUEANgIAIANBADYCAEEACyIAC2IBBH8CfwJAIAEoAkxBAEgNAAwACyAAQf8BcSEDIABB/wFxIgQgASwAS0cEQCABQRRqIgUoAgAiAiABKAIQSQRAIAUgAkEBajYCACACIAM6AAAgBAwCCwsgASAAELAGCyIACwsAIABBv39qQRpJCxcAIABBIHJBn39qQQZJIAAQlQZBAEdyCwYAQdKTAQtIAQF/IABFBEBBASEACwN/An8gABCGBiIBBEAgAQwBC0HgtQFB4LUBKAIAIgE2AgAgAQR/IAFBA3FB4AFqEQYADAIFQQALCwsLmgICBn8BfiMFIQIjBUEwaiQFIAJBGGohASACQRBqIQQgAiEDIAJBJGohBRDABiIABEAgACgCACIABEAgACkDMCIGQoB+g0KA1qyZ9MiTpsMAUgRAIAFBjZUBNgIAQduUASABEMEGCyAAQdAAaiEBIAZCgdasmfTIk6bDAFEEQCAAKAIsIQELIAUgATYCACAAKAIAIgAoAgQhAUGw3AAgACAFQbDcACgCACgCEEEfcUGIAWoRBQAEQCAFKAIAIgAgACgCACgCCEE/cUEIahEEACEAIANBjZUBNgIAIAMgATYCBCADIAA2AghBhZQBIAMQwQYFIARBjZUBNgIAIAQgATYCBEGylAEgBBDBBgsLC0GBlQEgAkEgahDBBgs8AQJ/IwUhASMFQRBqJAUgASEAQdi1AUEDECwEQEGYlgEgABDBBgVB3LUBKAIAECohACABJAUgAA8LQQALMQEBfyMFIQIjBUEQaiQFIAIgATYCAEHU5gAoAgAiASAAIAIQngYaQQogARC6BhoQKAvSAQEDfyMFIQUjBUFAayQFIAUhAyAAIAFBABDGBgR/QQEFIAEEfyABQcjcAEG43ABBABDKBiIBBH8gA0EEaiIEQgA3AgAgBEIANwIIIARCADcCECAEQgA3AhggBEIANwIgIARCADcCKCAEQQA2AjAgAyABNgIAIAMgADYCCCADQX82AgwgA0EBNgIwIAEgAyACKAIAQQEgASgCACgCHEEHcUGMA2oRCwAgAygCGEEBRgR/IAIgAygCEDYCAEEBBUEACwVBAAsFQQALCyEAIAUkBSAACx4AIAAgASgCCCAFEMYGBEBBACABIAIgAyAEEMkGCwufAQACQCAAIAEoAgggBBDGBgRAQQAgASACIAMQyAYFIAAgASgCACAEEMYGBEAgASgCECACRwRAIAFBFGoiACgCACACRwRAIAEgAzYCICAAIAI2AgAgAUEoaiIAIAAoAgBBAWo2AgAgASgCJEEBRgRAIAEoAhhBAkYEQCABQQE6ADYLCyABQQQ2AiwMBAsLIANBAUYEQCABQQE2AiALCwsLCxwAIAAgASgCCEEAEMYGBEBBACABIAIgAxDHBgsLBwAgACABRgttAQF/AkAgAUEQaiIAKAIAIgQEQCAEIAJHBEAgAUEkaiIAIAAoAgBBAWo2AgAgAUECNgIYIAFBAToANgwCCyABQRhqIgAoAgBBAkYEQCAAIAM2AgALBSAAIAI2AgAgASADNgIYIAFBATYCJAsLCyYBAX8gASgCBCACRgRAIAFBHGoiBCgCAEEBRwRAIAQgAzYCAAsLC7YBACABQQE6ADUCQCABKAIEIANGBEAgAUEBOgA0IAFBEGoiACgCACIDRQRAIAAgAjYCACABIAQ2AhggAUEBNgIkIARBAUYgASgCMEEBRnFFDQIgAUEBOgA2DAILIAMgAkcEQCABQSRqIgAgACgCAEEBajYCACABQQE6ADYMAgsgAUEYaiICKAIAIgBBAkYEQCACIAQ2AgAFIAAhBAsgASgCMEEBRiAEQQFGcQRAIAFBAToANgsLCwuGAwEHfyMFIQgjBUFAayQFIAAgACgCACIEQXhqKAIAaiEHIARBfGooAgAhBiAIIgQgAjYCACAEIAA2AgQgBCABNgIIIAQgAzYCDCAEQRRqIQAgBEEYaiEJIARBHGohCiAEQSBqIQMgBEEoaiEBIARBEGoiBUIANwIAIAVCADcCCCAFQgA3AhAgBUIANwIYIAVBADYCICAFQQA7ASQgBUEAOgAmAkAgBiACQQAQxgYEfyAEQQE2AjAgBiAEIAcgB0EBQQAgBigCACgCFEEDcUGYA2oRDAAgCSgCAEEBRgR/IAcFQQALBSAGIAQgB0EBQQAgBigCACgCGEEDcUGUA2oRDQACQAJAAkACQCAEKAIkDgIAAQILIAAoAgAhACABKAIAQQFGIAooAgBBAUZxIAMoAgBBAUZxRQRAQQAhAAsMBAsMAQtBACEADAILIAkoAgBBAUcEQCABKAIARSAKKAIAQQFGcSADKAIAQQFGcUUEQEEAIQAMAwsLIAUoAgALIQALIAgkBSAAC0QBAX8gACABKAIIIAUQxgYEQEEAIAEgAiADIAQQyQYFIAAoAggiBiABIAIgAyAEIAUgBigCACgCFEEDcUGYA2oRDAALC70CAQN/AkAgACABKAIIIAQQxgYEQEEAIAEgAiADEMgGBSAAIAEoAgAgBBDGBkUEQCAAKAIIIgAgASACIAMgBCAAKAIAKAIYQQNxQZQDahENAAwCCyABKAIQIAJHBEAgAUEUaiIFKAIAIAJHBEAgASADNgIgIAFBLGoiAygCAEEERg0DIAFBNGoiBkEAOgAAIAFBNWoiB0EAOgAAIAAoAggiACABIAIgAkEBIAQgACgCACgCFEEDcUGYA2oRDAAgAwJ/AkAgBywAAAR/IAYsAAANAUEBBUEACyEAIAUgAjYCACABQShqIgIgAigCAEEBajYCACABKAIkQQFGBEAgASgCGEECRgRAIAFBAToANiAADQJBBAwDCwsgAA0AQQQMAQtBAwsiADYCAAwDCwsgA0EBRgRAIAFBATYCIAsLCws+AQF/IAAgASgCCEEAEMYGBEBBACABIAIgAxDHBgUgACgCCCIEIAEgAiADIAQoAgAoAhxBB3FBjANqEQsACwstAQJ/IwUhACMFQRBqJAUgACEBQdy1AUHIABArBEBByZYBIAEQwQYFIAAkBQsLNAECfyMFIQEjBUEQaiQFIAEhAiAAEIcGQdy1ASgCAEEAEC0EQEH7lgEgAhDBBgUgASQFCwsLACAAIAFBABDGBguBAwEDfyMFIQUjBUFAayQFIAUhAyACIAIoAgAoAgA2AgAgACABIgRBABDGBgR/QQEFIARBqN0AQQAQxgYLBH9BAQUgAQR/IAFByNwAQYDdAEEAEMoGIgEEfyABKAIIIAAoAghBf3NxBH9BAAUgAEEMaiIAKAIAIAFBDGoiASgCAEEAEMYGBH9BAQUgACgCAEGg3QBBABDGBgR/QQEFIAAoAgAiAAR/IABByNwAQbjcAEEAEMoGIgQEfyABKAIAIgAEfyAAQcjcAEG43ABBABDKBiIBBH8gA0EEaiIAQgA3AgAgAEIANwIIIABCADcCECAAQgA3AhggAEIANwIgIABCADcCKCAAQQA2AjAgAyABNgIAIAMgBDYCCCADQX82AgwgA0EBNgIwIAEgAyACKAIAQQEgASgCACgCHEEHcUGMA2oRCwAgAygCGEEBRgR/IAIgAygCEDYCAEEBBUEACwVBAAsFQQALBUEACwVBAAsLCwsFQQALBUEACwshACAFJAUgAAsEAEEAC4QCAQh/IAAgASgCCCAFEMYGBEBBACABIAIgAyAEEMkGBSABQTRqIgYsAAAhCSABQTVqIgcsAAAhCiAAQRBqIAAoAgwiCEEDdGohCyAGQQA6AAAgB0EAOgAAIABBEGogASACIAMgBCAFENcGAkAgCEEBSgRAIAFBGGohDCAAQQhqIQggAUE2aiENIABBGGohAANAIA0sAAANAiAGLAAABEAgDCgCAEEBRg0DIAgoAgBBAnFFDQMFIAcsAAAEQCAIKAIAQQFxRQ0ECwsgBkEAOgAAIAdBADoAACAAIAEgAiADIAQgBRDXBiAAQQhqIgAgC0kNAAsLCyAGIAk6AAAgByAKOgAACwubBQEJfwJAIAAgASgCCCAEEMYGBEBBACABIAIgAxDIBgUgACABKAIAIAQQxgZFBEAgACgCDCEFIABBEGogASACIAMgBBDYBiAFQQFMDQIgAEEQaiAFQQN0aiEHIABBGGohBSAAKAIIIgZBAnFFBEAgAUEkaiIAKAIAQQFHBEAgBkEBcUUEQCABQTZqIQYDQCAGLAAADQYgACgCAEEBRg0GIAUgASACIAMgBBDYBiAFQQhqIgUgB0kNAAsMBQsgAUEYaiEGIAFBNmohCANAIAgsAAANBSAAKAIAQQFGBEAgBigCAEEBRg0GCyAFIAEgAiADIAQQ2AYgBUEIaiIFIAdJDQALDAQLCyABQTZqIQADQCAALAAADQMgBSABIAIgAyAEENgGIAVBCGoiBSAHSQ0ACwwCCyABKAIQIAJHBEAgAUEUaiILKAIAIAJHBEAgASADNgIgIAFBLGoiDCgCAEEERg0DIABBEGogACgCDEEDdGohDSABQTRqIQcgAUE1aiEGIAFBNmohCCAAQQhqIQkgAUEYaiEKQQAhAyAAQRBqIQVBACEAAn8CQAJAA0AgBSANTw0BIAdBADoAACAGQQA6AAAgBSABIAIgAkEBIAQQ1wYgCCwAAA0BAkAgBiwAAARAIAcsAABFBEAgCSgCAEEBcQRAQQEhAwwDBUEBIQMMBQsACyAKKAIAQQFGDQQgCSgCAEECcUUNBEEBIQNBASEACwsgBUEIaiEFDAALAAsgAEUEQCALIAI2AgAgAUEoaiIAIAAoAgBBAWo2AgAgASgCJEEBRgRAIAooAgBBAkYEQCAIQQE6AAAgAw0DQQQMBAsLCyADDQBBBAwBC0EDCyEAIAwgADYCAAwDCwsgA0EBRgRAIAFBATYCIAsLCwt5AQJ/AkAgACABKAIIQQAQxgYEQEEAIAEgAiADEMcGBSAAQRBqIAAoAgwiBEEDdGohBSAAQRBqIAEgAiADENYGIARBAUoEQCABQTZqIQQgAEEYaiEAA0AgACABIAIgAxDWBiAELAAADQMgAEEIaiIAIAVJDQALCwsLC1YBA38gACgCBCIFQQh1IQQgBUEBcQRAIAIoAgAgBGooAgAhBAsgACgCACIAKAIAKAIcIQYgACABIAIgBGogBUECcQR/IAMFQQILIAZBB3FBjANqEQsAC1oBA38gACgCBCIHQQh1IQYgB0EBcQRAIAMoAgAgBmooAgAhBgsgACgCACIAKAIAKAIUIQggACABIAIgAyAGaiAHQQJxBH8gBAVBAgsgBSAIQQNxQZgDahEMAAtYAQN/IAAoAgQiBkEIdSEFIAZBAXEEQCACKAIAIAVqKAIAIQULIAAoAgAiACgCACgCGCEHIAAgASACIAVqIAZBAnEEfyADBUECCyAEIAdBA3FBlANqEQ0AC4sGAQx/IwUhCyMFQeAgaiQFIAtB0CBqIQcgCyIKQZAgaiEFAkACQCAARQ0AIAFBAEciBCACRSINcQ0AIAQEfyACKAIABUEACyEMIApBgCBqIAo2AgAgBSAKENoGIAVBMGoiBEIANwIAIARBADYCCCAEQQA6AAwgBUE9aiIOQQE6AAAgBUEgaiEIIAVBJGoiBigCACIEIAUoAihJBEAgByAKENsGIARBADYCACAEQQA2AgQgBEEANgIIIAQgBygCADYCDCAGIAYoAgBBEGo2AgAFIAggChDcBgsgBUE+aiIJQQA6AAAgBUEBOgA/IAdBADYCACAAIAAgABCWBmoiDyAFIAcQ3QYCQAJAAkAgBygCACIEIAksAABFcgR/IAQhAAwBBSAIKAIAIgQgBigCAEYNAiAEKAIAIAQoAgRGDQIgCUEAOgAAIA5BADoAACAFKAIAIQYgBUEEaiIIKAIAIQQDQCAEIAZHBEAgBEFoaiIEEN4GDAELCyAIIAY2AgAgBSgCECEGIAVBFGoiCCgCACEEA0AgBCAGRwRAIARBcGoiBBDfBgwBCwsgCCAGNgIAIAAgDyAFIAcQ3QYgCSwAAAR/IAdBfjYCAEEAIQFBfgUgBygCACEADAILCyEADAILIABFDQBBACEBDAELIAVBBGoiACgCAEFoahDgBiIEQQFqIgYgDEsEQCABIAYQiQYiAUUEQCAHQX82AgBBACEBQX8hAAwCCyANRQRAIAIgBjYCAAsFIAFFBEBBACEBQQAhAAwCCwsgACgCACICQXRqIgcsAAsiCUEASCEGIAcoAgAhDCACQXhqKAIAIQggCUH/AXEhCSACQWhqIAYEfyAMBSAHCyAGBH8gCAUgCQsQ4QYaIAAoAgBBaGoiACwAC0EASARAIAAoAgAhAAsgASAAIAQQ9AcaIAEgBGpBADoAAEEAIQALIAMEQCADIAA2AgALIAVBIGoQ4gYgBUEQahDjBiAFEN8GIApBgCBqQQA2AgAMAQsgAwR/IANBfTYCAEEABUEACyEBCyALJAUgAQuPAQECfyMFIQIjBUEQaiQFIAIgATYCACAAQQA2AgAgAEEANgIEIABBADYCCCAAIAIoAgA2AgwgAiABENsGIABBEGoiA0EANgIAIANBADYCBCADQQA2AgggAyACKAIANgIMIAIgATYCACAAQSBqIgBBADYCACAAQQA2AgQgAEEANgIIIAAgAigCADYCDCACJAULCQAgACABNgIAC9sBAQl/IwUhBSMFQSBqJAUgBUEUaiEGIAUhBEH/////ACIHIABBBGoiCCgCACAAKAIAa0EEdUEBaiIDSQRAECgFIAAoAgggACgCACIJayICQQR1IAdBAXZJIQogAkEDdSICIANPBEAgAiEDCyAAQQxqIQIgBCAKBH8gAwUgBwsgCCgCACAJa0EEdSACENwHIARBCGoiAygCACECIAYgARDbBiACQQA2AgAgAkEANgIEIAJBADYCCCACIAYoAgA2AgwgAyACQRBqNgIAIAAgBBDdByAEEN4HIAUkBQsLtgIBAX8CQCAAIAFJBEACQCAALAAAQd8ARgRAIAEgAGtBA0wEQCADQX42AgAMBAsCQAJAAkACQAJAIAAsAAFB2gBrDgYAAgICAgECCyAAQQJqIgQgASACEOwGIgAgBEYgACABRnJFBEAgACwAAEEuRgRAIAAgASACEO0GIQALCyAAIAFGDQUgA0F+NgIADAcLDAELDAELIAAsAAJB3wBGBEAgACwAA0HaAEYEQCAAQQRqIgQgASACEOwGIgAgBEYgACABRnIEQCADQX42AgAMBwsgACABIAIQ7gYgAUYNBCADQX42AgAMBgsLCyADQX42AgAMAwUgACABIAIQ7wYgAUcEQCADQX42AgAMBAsLCyADKAIARQRAIAIoAgAgAigCBEYEQCADQX42AgALCwUgA0F+NgIACwsLDwAgAEEMahDrBiAAEOsGC1IBA38gACgCACICBEAgAEEEaiIDKAIAIQED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aiEADAELCyADIAZBDGoiAEECEPwGQduZARCWBiECIAMoAgQhBSADLAALIg1B/wFxIQ4gAiANQQBIBH8gBQUgDgtGBEAgA0HbmQEgAhD9BkUhAiADEOsGIAIEQCAAEOQHCwUgAxDrBgsgBCAJEIAHIARBAEHbmQEQ8gYaIAogBCkCADcCACAKIAQoAgg2AghBACECA0AgAkEDRwRAIAQgAkECdGpBADYCACACQQFqIQIMAQsLIApBkpoBEPMGGiAIIAopAgA3AgAgCCAKKAIINgIIQQAhAgNAIAJBA0cEQCAKIAJBAnRqQQA2AgAgAkEBaiECDAELCyAALAALIgVBAEghAiAAKAIAIQ0gBigCECEOIAVB/wFxIQUgCCACBH8gDQUgAAsgAgR/IA4FIAULEOEGGiAMIAgpAgA3AgAgDCAIKAIINgIIQQAhAANAIABBA0cEQCAIIABBAnRqQQA2AgAgAEEBaiEADAELCyAHKAIAIgJBdGoiAEELaiIHLAAAQQBIBEAgACgCACEHIANBADoAACAHIAMQ6AYgAkF4akEANgIABSADQQA6AAAgACADEOgGIAdBADoAAAsgABCOByAAIAwpAgA3AgAgACAMKAIINgIIQQAhAANAIABBA0cEQCAMIABBAnRqQQA2AgAgAEEBaiEADAELCyAMEOsGIAgQ6wYgChDrBiAEEOsGIAkQ3gYgBhDeBiABIQALCwsLCwsLCyALJAUgAAtEAQF/IABBADYCACAAQQRqIgNBADYCACAAQQA2AgggACACKAIANgIMIAAQ4wcgAygCACABEPQGIAMgAygCAEEYajYCAAuSAgEIfyMFIQcjBUEgaiQFIAchBUH/////ACIIIABBBGoiCSgCACAAKAIAa0EEdUEBaiIDSQRAECgFIAAoAgggACgCACIEayICQQR1IAhBAXZJIQYgAkEDdSICIANPBEAgAiEDCyAAQQxqIQIgBSAGBH8gAwUgCAsgCSgCACAEa0EEdSACENwHIAVBCGoiBigCACIEQQA2AgAgBEEEaiICQQA2AgAgBEEIaiIDQQA2AgAgBCABKAIMNgIMIAQgASgCADYCACACIAFBBGoiAigCADYCACADIAFBCGoiAygCADYCACADQQA2AgAgAkEANgIAIAFBADYCACAGIARBEGo2AgAgACAFEN0HIAUQ4gcgByQFCwvr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QfeZARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDBYLIANCADcCACADQQA2AgggA0GimgFBopoBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMFQsgA0IANwIAIANBADYCCCADQaWaAUGlmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwUCyAAIAEgAhCVByEADBMLIAAgASACEJYHIQAMEgsMEQsCQAJAAkACQAJAAkAgBCwAAUHjAGsOFAAFBQUFBQUFBQECBQMFBQUFBQUEBQsgACABIAIQlwchAAwVCyAAIAEgAhCYByEADBQLIANCADcCACADQQA2AgggA0GnmgFBp5oBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMEwsgA0IANwIAIANBADYCCCADQamaAUGpmgEQlgYQjAcgAEECaiIEIAEgAyACEJQHIQEgAxDrBiABIARHBEAgASEACwwSCyAAIAEgAhCZByEADBELDBALAkACQAJAAkACQAJAAkACQAJAAkAgBCwAAUHWAGsOIQgJCQkJCQkJCQkJAAkBCQIJCQkJCQkDCQQJCQkJBQYJBwkLIARBAmoiBCABIAIQjQciASAERg0YIAIoAgAgAkEEaiICKAIARg0YIAdCADcCACAHQQA2AggCQCAKBEAgB0GrmgFBq5oBEJYGEIwHBUEAIQADQCAAQQNGDQIgByAAQQJ0akEANgIAIABBAWohAAwACwALCyAHQa6aARDzBhogBiAHKQIANwIAIAYgBygCCDYCCEEAIQADQCAAQQNHBEAgByAAQQJ0akEANgIAIABBAWohAAwBCwsgCCACKAIAQWhqEIAHIAgsAAsiBEEASCEAIAgoAgAhCSAIKAIEIQogBEH/AXEhBCAGIAAEfyAJBSAICyAABH8gCgUgBAsQ4QYaIAUgBikCADcCACAFIAYoAgg2AghBACEAA0AgAEEDRwRAIAYgAEECdGpBADYCACAAQQFqIQAMAQsLIAIoAgAiAkFoaiIAQQtqIgQsAABBAEgEQCAAKAIAIQQgA0EAOgAAIAQgAxDoBiACQWxqQQA2AgAFIANBADoAACAAIAMQ6AYgBEEAOgAACyAAEI4HIAAgBSkCADcCACAAIAUoAgg2AghBACEAA0AgAEEDRwRAIAUgAEECdGpBADYCACAAQQFqIQAMAQsLIAUQ6wYgCBDrBiAGEOsGIAcQ6wYgASEADBgLIAAgASACEJoHIQAMFwsgA0IANwIAIANBADYCCCADQfWZAUH1mQEQlgYQjAcgAEECaiIEIAEgAyACEJQHIQEgAxDrBiABIARHBEAgASEACwwWCyAEQQJqIgQgASACEI0HIgEgBEYNFSACKAIAIAJBBGoiAigCAEYNFSAHQgA3AgAgB0EANgIIAkAgCgRAIAdBq5oBQauaARCWBhCMBwVBACEAA0AgAEEDRg0CIAcgAEECdGpBADYCACAAQQFqIQAMAAsACwsgB0G4mgEQ8wYaIAYgBykCADcCACAGIAcoAgg2AghBACEAA0AgAEEDRwRAIAcgAEECdGpBADYCACAAQQFqIQAMAQsLIAggAigCAEFoahCAByAILAALIgRBAEghACAIKAIAIQkgCCgCBCEKIARB/wFxIQQgBiAABH8gCQUgCAsgAAR/IAoFIAQLEOEGGiAFIAYpAgA3AgAgBSAGKAIINgIIQQAhAANAIABBA0cEQCAGIABBAnRqQQA2AgAgAEEBaiEADAELCyACKAIAIgJBaGoiAEELaiIELAAAQQBIBEAgACgCACEEIANBADoAACAEIAMQ6AYgAkFsakEANgIABSADQQA6AAAgACADEOgGIARBADoAAAsgABCOByAAIAUpAgA3AgAgACAFKAIINgIIQQAhAANAIABBA0cEQCAFIABBAnRqQQA2AgAgAEEBaiEADAELCyAFEOsGIAgQ6wYgBhDrBiAHEOsGIAEhAAwVCyAAIAEgAhCbByEADBQLIAAgASACEJwHIQAMEwsgACABIAIQnQchAAwSCyADQgA3AgAgA0EANgIIIANBwJoBQcCaARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDBELIANCADcCACADQQA2AgggA0HCmgFBwpoBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMEAsMDwsCQAJAAkACQCAELAABQc8Aaw4jAQMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwIDCyADQgA3AgAgA0EANgIIIANBxZoBQcWaARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDBELIANCADcCACADQQA2AgggA0HHmgFBx5oBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMEAsgA0IANwIAIANBADYCCCADQcqaAUHKmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwPCwwOCwJAAkACQCAELAABQeUAaw4QAAICAgICAgICAgICAgICAQILIANCADcCACADQQA2AgggA0HNmgFBzZoBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMDwsgA0IANwIAIANBADYCCCADQYeaAUGHmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwOCwwNCyAELAABQfgARw0MIABBAmoiBCABIAIQjQciCSAERg0MIAJBBGohBCAJIAEgAhCNByIBIAlGBEAgBCgCACECQQAhAQNAIAFBf0cEQCACIAFBf2oiAUEYbGoQ3gYMAQsLIAQgAkFoajYCAAwNCyAEKAIAIgkgAigCAGtBGG1BAkkNDCADIAlBaGoQgAcgBCgCACECQQAhAANAIABBf0cEQCACIABBf2oiAEEYbGoQ3gYMAQsLIAQgAkFoajYCACAFIAJBUGoQgAcgDEHjmQEgBRCPByAMQdCaARDzBhogCCAMKQIANwIAIAggDCgCCDYCCEEAIQADQCAAQQNHBEAgDCAAQQJ0akEANgIAIABBAWohAAwBCwsgAywACyICQQBIIQAgAygCACEJIAMoAgQhCiACQf8BcSECIAggAAR/IAkFIAMLIAAEfyAKBSACCxDhBhogByAIKQIANwIAIAcgCCgCCDYCCEEAIQADQCAAQQNHBEAgCCAAQQJ0akEANgIAIABBAWohAAwBCwsgB0GSmgEQ8wYaIBAgBykCADcCACAQIAcoAgg2AghBACEAA0AgAEEDRwRAIAcgAEECdGpBADYCACAAQQFqIQAMAQsLIAYgEBCDByAEKAIAQWhqIAYQhAcgBhDeBiAQEOsGIAcQ6wYgCBDrBiAMEOsGIAUQ6wYgAxDrBiABIQAMDAsCQAJAAkACQAJAIAQsAAFB0wBrDiICBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAEDBAsgA0IANwIAIANBADYCCCADQdOaAUHTmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwPCyADQgA3AgAgA0EANgIIIANB1poBQdaaARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDA4LIANCADcCACADQQA2AgggA0HZmgFB2ZoBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMDQsgA0IANwIAIANBADYCCCADQYWaAUGFmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwMCwwLCwJAAkACQAJAAkACQCAELAABQckAaw4lAQUFAwUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUABQUCBAULIANCADcCACADQQA2AgggA0HdmgFB3ZoBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMDwsgA0IANwIAIANBADYCCCADQd+aAUHfmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwOCyADQgA3AgAgA0EANgIIIANB9ZkBQfWZARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDA0LIANCADcCACADQQA2AgggA0HimgFB4poBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMDAsgAEECaiIEIAFHBEAgBCwAAEHfAEYEQCADQgA3AgAgA0EANgIIIANB5ZoBQeWaARCWBhCMByAAQQNqIgQgASADIAIQlAchASADEOsGIAEgBEcEQCABIQALDA0LCyAEIAEgAhCNByIBIARGDQsgAigCACACQQRqIgIoAgAiBEYNCyAGIARBaGoQgAcgBkEAQeOZARDyBhogBSAGKQIANwIAIAUgBigCCDYCCEEAIQADQCAAQQNHBEAgBiAAQQJ0akEANgIAIABBAWohAAwBCwsgBUHomgEQ8wYaIBEgBSkCADcCACARIAUoAgg2AghBACEAA0AgAEEDRwRAIAUgAEECdGpBADYCACAAQQFqIQAMAQsLIAMgERCDByACKAIAQWhqIAMQhAcgAxDeBiAREOsGIAUQ6wYgBhDrBiABIQAMCwsMCgsCQAJAAkACQAJAAkAgBCwAAUHhAGsOGAAFBQUBBQIFBQUFBQUFBQUFBQUDBQUABAULIAAgASACEJ4HIQAMDgsgA0IANwIAIANBADYCCCADQeyaAUHsmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwNCyADQgA3AgAgA0EANgIIIANB3ZoBQd2aARCWBhCMByAAQQJqIgQgASADIAIQlAchASADEOsGIAEgBEcEQCABIQALDAwLIANCADcCACADQQA2AgggA0HvmgFB75oBEJYGEIwHIABBAmoiBCABIAMgAhCUByEBIAMQ6wYgASAERwRAIAEhAAsMCwsgAEECaiIEIAEgAhCfByIBIARHBEAgASEACwwKCwwJCwJAAkACQAJAAkAgBCwAAUHSAGsOIQMEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAQQEAgQLIAAgASACEJsHIQAMDAsgA0IANwIAIANBADYCCCADQfGaAUHxmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwLCyADQgA3AgAgA0EANgIIIANB9JoBQfSaARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDAoLIANCADcCACADQQA2AgggA0H2mgFB9poBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMCQsMCAsCQAJAAkACQAJAAkACQCAELAABQcwAaw4pAgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYBAAYGAwYGBAUGCyADQgA3AgAgA0EANgIIIANB+ZoBQfmaARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDA0LIANCADcCACADQQA2AgggA0H9mgFB/ZoBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMDAsgA0IANwIAIANBADYCCCADQf+aAUH/mgEQlgYQjAcgAEECaiIEIAEg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BEAgACwAAEHMAEYEQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQQFqIgUsAABB1ABrDiYAFBQUFBQUFBQUFBMUBAIDERIQFAUICRQKCw4PFBQUBgcUFAEMDRQLDBYLIANCADcCACADQQA2AgggA0GLowFBi6MBEJYGEIwHIABBAmoiBCABIAMgAhDNByEBIAMQ6wYgASAERwRAIAEhAAsMFQsgACwAA0HFAEcNFAJAAkACQCAALAACQTBrDgIAAQILIANBk6MBEKkHIAJBBGoiBCgCACIBIAIoAghJBEAgASADEIUHIAQgBCgCAEEYajYCAAUgAiADEIYHCyADEN4GIABBBGohAAwWCyADQZmjARDOByACQQRqIgQoAgAiASACKAIISQRAIAEgAxCFByAEIAQoAgBBGGo2AgAFIAIgAxCGBwsgAxDeBiAAQQRqIQAMFQsMFAsgA0IANwIAIANBADYCCCADQZ6jAUGeowEQlgYQjAcgAEECaiIEIAEgAyACEM0HIQEgAxDrBiABIARHBEAgASEACwwTCyADQgA3AgAgA0EANgIIIANBo6MBQaOjARCWBhCMByAAQQJqIgQgASADIAIQzQchASADEOsGIAEgBEcEQCABIQALDBILIANCADcCACADQQA2AgggA0GvowFBr6MBEJYGEIwHIABBAmoiBCABIAMgAhDNByEBIAMQ6wYgASAERwRAIAEhAAsMEQsgA0IANwIAIANBADYCCCADQb2jAUG9owEQlgYQjAcgAEECaiIEIAEgAyACEM0HIQEgAxDrBiABIARHBEAgASEACwwQCyADQgA3AgAgA0EANgIIIANBw6MBQcOjARCWBhCMByAAQQJqIgQgASADIAIQzQchASADEOsGIAEgBEcEQCABIQALDA8LIANCADcCACADQQA2AgggA0HstQFB7LUBEJYGEIwHIABBAmoiBCABIAMgAhDNByEBIAMQ6wYgASAERwRAIAEhAAsMDgsgA0IANwIAIANBADYCCCADQdKjAUHSowEQlgYQjAcgAEECaiIEIAEgAyACEM0HIQEgAxDrBiABIARHBEAgASEACwwNCyADQgA3AgAgA0EANgIIIANB1KMBQdSjARCWBhCMByAAQQJqIgQgASADIAIQzQchASADEOsGIAEgBEcEQCAB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QQA6AAAgACALEOgGIARBADoAAAsgABCOByAAIAkpAgA3AgAgACAJKAIINgIIQQAhAANAIABBA0cEQCAJIABBAnRqQQA2AgAgAEEBaiEADAELCyAJEOsGIAMQ6wYgBRDrBiAHEOsGIAgQ6wYgASEADAILAkACQCAEIAEQ7QciAyAERgR/IAAhAUEDBSADIAEgAhDsBiIBIANGBH8gACEBQQAFIAIoAgAgAigCBCICRgR/IAAhAUEBBSACQWhqIQIgACwAAkH2AEYEfyACQQBB4acBEPIGGkEABSACQQBB86cBEPIGGkEACwsLCyICQQNxDgQAAQEAAQsgASEADAILIAJFBEAgASEACwsLIAYkBSAACw8AIAAoAgAgACwABDoAAAvHAQECfwJAIAAgAUcEQAJAAkACQAJAIAAsAABB6ABrDg8AAgICAgICAgICAgICAgECCyAAQQFqIgMgARCLByICIANGIAIgAUZyDQQgAkEBaiEBIAIsAABB3wBGBH8gAQUgAAsPCwwBCwwCCyAAQQFqIgMgARCLByICIANGIAIgAUZyRQRAIAIsAABB3wBGBEAgAkEBaiIDIAEQiwciAiADRiACIAFGckUEQCACQQFqIQEgAiwAAEHfAEYEQCABIQALCwsLCwsgAAsZACAALAAAQQFGBH9BAAUgAEEBOgAAQQELC0sBAn8jBSEDIwVBEGokBSADIgQgAigCADYCACAAIAEgAyAAKAIAKAIQQR9xQYgBahEFACIABEAgAiAEKAIANgIACyADJAUgAEEBcQscACAABH8gAEHI3ABBgN0AQQAQygZBAEcFQQALCwMAAQsrACAAQf8BcUEYdCAAQQh1Qf8BcUEQdHIgAEEQdUH/AXFBCHRyIABBGHZyCx0BAX8gAWciA0EgRgRAIAMgAGdqIQMLQQAkCSADC8MDAQN/IAJBgMAATgRAIAAgASACECkPCyAAIQQgACACaiEDIABBA3EgAUEDcUYEQANAIABBA3EEQCACRQRAIAQPCyAAIAEsAAA6AAAgAEEBaiEAIAFBAWohASACQQFrIQIMAQsLIANBfHEiAkFAaiEFA0AgACAFTARAIAAgASgCADYCACAAIAEoAgQ2AgQgACABKAIINgIIIAAgASgCDDYCDCAAIAEoAhA2AhAgACABKAIUNgIUIAAgASgCGDYCGCAAIAEoAhw2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AAAFAAAAAwAAAEAAAAAHAAAAFwAAABcAAAAWAAAABwAAAAMAAACAAAAABwAAABkAAAAZAAAAFwAAAAcAAAADAAAAgAAAAAgAAAAaAAAAGgAAABgAAAAHAAAAAwAAAAABAAAIAAAAGwAAABsAAAAZAAAACQAAAAMAAAAAAgAACAAAABIAAAAMAAAADQAAAAEAAAAFAAAAAQAAAAEAAAASAAAADQAAAA4AAAABAAAABgAAAAEAAAABAAAAEgAAAA4AAAANAAAAAQAAAAUAAAAIAAAAAgAAABIAAAAQAAAADwAAAAEAAAAFAAAACAAAAAIAAAASAAAADwAAABEAAAABAAAABQAAAAgAAAADAAAAEgAAABAAAAARAAAABAAAAAUAAAAIAAAAAwAAABIAAAAQAAAAEQAAAAMAAAAFAAAACAAAAAQAAAASAAAAEQAAABEAAAAEAAAABAAAAAgAAAAEAAAAEgAAABEAAAARAAAABAAAAAQAAAAIAAAABQAAABIAAAARAAAAEQAAAAUAAAAEAAAACAAAAAUAAAASAAAAEQAAABEAAAAGAAAABAAAAAgAAAAFAAAAEgAAABIAAAARAAAABgAAAAQAAAAIAAAABQAAABIAAAASAAAAEQAAAAUAAAAEAAAACAAAAAYAAAASAAAAEwAAABEAAAAHAAAABAAAAAgAAAAGAAAAEgAAABIAAAASAAAABAAAAAQAAAAQAAAABwAAABIAAAASAAAAEgAAAAQAAAADAAAAEAAAAAcAAAASAAAAEwAAABIAAAAGAAAAAwAAACAAAAAHAAAAEgAAABMAAAASAAAACAAAAAMAAABAAAAABwAAABIAAAATAAAAEgAAAAkAAAADAAAAgAAAAAcAAAASAAAAEwAAABIAAAAKAAAAAwAAAAABAAAHAAAAEgAAABMAAAASAAAACwAAAAMAAAAAAgAACAAAABIAAAATAAAAEgAAAAwAAAADAAAAAAIAAAgAAAASAAAAEwAAABIAAAANAAAAAwAAAAACAAAIAAAAEQAAAAwAAAAMAAAAAQAAAAUAAAABAAAAAQAAABEAAAAMAAAADQAAAAEAAAAGAAAAAQAAAAEAAAARAAAADQAAABAAAAABAAAABQAAAAEAAAABAAAAEQAAABAAAAAQAAAAAgAAAAUAAAAIAAAAAgAAABEAAAANAAAADwAAAAMAAAAEAAAACAAAAAMAAAARAAAADwAAABEAAAAEAAAABAAAAAgAAAADAAAAEQAAABAAAAARAAAAAwAAAAQAAAAIAAAABAAAABEAAAAPAAAAEQAAAAQAAAAEAAAACAAAAAUAAAARAAAAEQAAABEAAAAEAAAABAAAAAgAAAAFAAAAEQAAABEAAAARAAAABQAAAAQAAAAIAAAABQAAABEAAAARAAAAEQAAAAYAAAAEAAAACAAAAAUAAAARAAAAEQAAABEAAAAHAAAABAAAAAgAAAAFAAAAEQAAABEAAAARAAAACAAAAAQAAAAIAAAABQAAABEAAAASAAAAEQAAAAYAAAAEAAAACAAAAAYAAAARAAAAEQAAABEAAAAHAAAAAwAAAAgAAAAHAAAAEQAAABEAAAARAAAABwAAAAMAAAAQAAAABwAAABEAAAASAAAAEQAAAAcAAAADAAAAIAAAAAcAAAARAAAAEgAAABEAAAAHAAAAAwAAAEAAAAAHAAAAEQAAABIAAAARAAAABwAAAAMAAAAAAQAABwAAABEAAAASAAAAEQAAAAgAAAADAAAAAAEAAAcAAAARAAAAEgAAABEAAAAJAAAAAwAAAAABAAAIAAAAEQAAABIAAAARAAAACgAAAAMAAAAAAQAACAAAABEAAAASAAAAEQAAAAsAAAADAAAAAAIAAAgAAAAOAAAADAAAAA0AAAABAAAABQAAAAEAAAABAAAADgAAAA4AAAAOAAAAAQAAAAYAAAABAAAAAQAAAA4AAAAOAAAADgAAAAEAAAAEAAAAAQAAAAEAAAAOAAAADgAAAA4AAAABAAAABAAAAAYAAAACAAAADgAAAA4AAAAOAAAABAAAAAQAAAAGAAAAAwAAAA4AAAAOAAAADgAAAAMAAAAEAAAABgAAAAQAAAAOAAAADgAAAA4AAAAEAAAABAAAAAYAAAAFAAAADgAAAA4AAAAOAAAABQAAAAQAAAAGAAAABQAAAA4AAAAOAAAADgAAAAYAAAAEAAAABgAAAAUAAAAOAAAADwAAAA4AAAAGAAAABAAAAAYAAAAGAAAADgAAAA8AAAAOAAAAAwAAAAMAAAAGAAAABwAAAA4AAAAPAAAADgAAAAYAAAADAAAACAAAAAcAAAAOAAAADwAAAA4AAAAGAAAAAwAAABAAAAAHAAAADgAAAA8AAAAOAAAABgAAAAMAAAAYAAAABwAAAA4AAAAPAAAADwAAAAYAAAADAAAAMAAAAAcAAAAOAAAADwAAAA8AAAAGAAAAAwAAAEAAAAAHAAAADgAAAA8AAAAPAAAABgAAAAMAAABgAAAABwAAAA4AAAAPAAAADwAAAAYAAAADAAAAgAAAAAcAAAAOAAAADwAAAA8AAAAGAAAAAwAAAAABAAAHAAAADgAAAA8AAAAPAAAABwAAAAMAAAAAAQAABwAAAA4AAAAPAAAADwAAAAgAAAADAAAAAAEAAAgAAAAOAAAADwAAAA8AAAAJAAAAAwAAAAABAAAIAAAADgAAAA8AAAAPAAAACgAAAAMAAAAAAQAACAAAAAAAAAABAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/AQAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAEGxHwuHAgECAwQFBgcICQoLDA0ODxAQERESEhMTFBQUFBUVFRUWFhYWFhYWFhcXFxcXFxcXGBgYGBgYGBgYGBgYGBgYGAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICAhISIiIyMkJCQkJSUlJSYmJiYmJiYmJycnJycnJycoKCgoKCgoKCgoKCgoKCgoKSkpKSkpKSkpKSkpKSkpKSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqBAADAAIAAgACAAIAAgACAAIAAgACAAIAAgABAAEAAQACAAIAAgACAAIAAgACAAIAAgADAAIAAQABAAEAAQABAP//////////AEHAIQuqAQEAAQABAAEAAQABAAIAAgACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP////////////8AAAAAAAABAAQAAwACAAIAAgACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP//////////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AAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACUAAAAnAAAAKQAAACsAAAAvAAAAMwAAADsAAABDAAAAUwAAAGMAAACDAAAAAwEAAAMCAAADBAAAAwgAAAMQAAADIAAAA0AAAAOAAAADAAEAQbAyC0gEAAMAAgACAAIAAgACAAIAAgACAAIAAgACAAEAAQABAAIAAgACAAIAAgACAAIAAgACAAMAAgABAAEAAQABAAEA//////////8AQYAzC6oBAQABAAEAAQABAAEAAgACAAIAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA/////////////wAAAAAAAAEABAADAAIAAgACAAIAAgACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA//////////////////8AQfA0C00BAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEABBwDYLUQEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEABBpDcLbQEAAAADAAAABwAAAA8AAAAfAAAAPwAAAH8AAAD/AAAA/wEAAP8DAAD/BwAA/w8AAP8fAAD/PwAA/38AAP//AAD//wEA//8DAP//BwD//w8A//8fAP//PwD//38A////AP///wH///8DAQAAAAEAQaQ4C88BAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAiAAAAJAAAACYAAAAoAAAALAAAADAAAAA4AAAAQAAAAFAAAABgAAAAgAAAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAEGEOgvUAQEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAASAAAAFAAAABYAAAAYAAAAHAAAACAAAAAoAAAAMAAAAEAAAACAAAAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAAAAAEABAADAAIAAgACAAIAAgACAAIAAgACAAIAAgABAAEAAQACAAIAAgACAAIAAgACAAIAAgADAAIAAQABAAEAAQABAP//////////AEHgOwvtAgEAAQABAAEAAQABAAIAAgACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP////////////8AAAAAAAABAAQAAwACAAIAAgACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP//////////////////AAAAAAAACAAAAAgAAAAIAAAABwAAAAgAAAAJAAAACgAAAAsAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAEAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAAAAgEAAAABAAAAAQAAAAEAAAABAEHYPgsNAQAAAAEAAAACAAAAAgBB8D4LlQMBAAAAAQAAAAIAAAACAAAAJgAAAIIAAAAhBQAASgAAAGcIAAAmAAAAwAEAAIAAAABJBQAASgAAAL4IAAApAAAALAIAAIAAAABJBQAASgAAAL4IAAAvAAAAygIAAIAAAACKBQAASgAAAIQJAAA1AAAAcwMAAIAAAACdBQAASgAAAKAJAAA9AAAAgQMAAIAAAADrBQAASwAAAD4KAABEAAAAngMAAIAAAABNBgAASwAAAKoKAABLAAAAswMAAIAAAADBBgAATQAAAB8NAABNAAAAUwQAAIAAAAAjCAAAUQAAAKYPAABUAAAAmQQAAIAAAABLCQAAVwAAALESAABYAAAA2gQAAIAAAABvCQAAXQAAACMUAABUAAAARQUAAIAAAABUCgAAagAAAIwUAABqAAAArwUAAIAAAAB2CQAAfAAAAE4QAAB8AAAA0gIAAIAAAABjBwAAkQAAAJAHAACSAAAAAQAAAAIAAAADAAAABAAAAAcAAAAIAAAADwAAABAAAAAfAAAAIAAAAD8AAABAAAAAfwAAAIAAQZDCAAsYEQAKABEREQAAAAAFAAAAAAAACQAAAAALAEGwwgALIREADwoREREDCgcAARMJCwsAAAkGCwAACwAGEQAAABEREQBB4cIACwELAEHqwgALGBEACgoREREACgAAAgAJCwAAAAkACwAACwBBm8MACwEMAEGnwwALFQwAAAAADAAAAAAJDAAAAAAADAAADABB1cMACwEOAEHhwwALFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBBj8QACwEQAEGbxAALHg8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgBB0sQACw4SAAAAEhISAAAAAAAACQBBg8UACwELAEGPxQALFQoAAAAACgAAAAAJCwAAAAAACwAACwBBvcUACwEMAEHJxQALfgwAAAAADAAAAAAJDAAAAAAADAAADAAAMDEyMzQ1Njc4OUFCQ0RFRlQhIhkNAQIDEUscDBAECx0SHidobm9wcWIgBQYPExQVGggWBygkFxgJCg4bHyUjg4J9JiorPD0+P0NHSk1YWVpbXF1eX2BhY2RlZmdpamtscnN0eXp7fABB0MYAC/0cSWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgZG93bgBIb3N0IGlzIHVucmVhY2hhYmxlAEFkZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVk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AAAAAAAAAAMAAAAEAAAAAAAAAAUAAAAGAAAAAAAAANQyAAAFAEHg5QALAR0AQfjlAAsOAQAAAAIAAABIVAAAAAQAQZDmAAsBAQBBn+YACwUK/////wBB0OYACwnUMgAAWDMAAAUAQeTmAAsBHQBB/OYACwoDAAAAAgAAAOxaAEGU5wALAQIAQaPnAAsF//////8AQZDpAAsCsFoAQezpAAsBBABBk+oACwX//////wBByOoAC+09IC4AADIAAAAzAAAAHgAAAAEAAAAAAAAAOC4AADQAAAA1AAAANgAAADcAAAAFAAAAAQAAAAEAAAABAAAAAAAAAGAuAAA0AAAAOAAAADYAAAA3AAAABQAAAAIAAAACAAAAAgAAAAAAAACQLgAANAAAADkAAAA2AAAANwAAAAYAAAAAAAAAgC4AADQAAAA6AAAANgAAADcAAAAHAAAAAAAAABAvAAA0AAAAOwAAADYAAAA3AAAACAAAAAAAAAAgLwAANAAAADwAAAA2AAAANwAAAAUAAAADAAAAAwAAAAMAAABkdW1teQByYgBsZW5ndGgAYnVmZmVyAGNvbnN0cnVjdG9yAHNldABIRUFQVTgAVmVjdG9yVTgAY2xvbmVUb1ZlY3RvcgBjbG9uZUFzVHlwZWRBcnJheQB0b1R5cGVkQXJyYXlWaWV3AFpzdGRDb21wcmVzc2lvbkRpY3QAY3JlYXRlQ29tcHJlc3Npb25EaWN0AFpzdGREZWNvbXByZXNzaW9uRGljdABjcmVhdGVEZWNvbXByZXNzaW9uRGljdABac3RkQ29kZWMAY29tcHJlc3NCb3VuZABjb250ZW50U2l6ZQBjb21wcmVzcwBkZWNvbXByZXNzAGNvbXByZXNzVXNpbmdEaWN0AGRlY29tcHJlc3NVc2luZ0RpY3QAWnN0ZENvbXByZXNzU3RyZWFtQmluZGluZwBiZWdpbgBiZWdpblVzaW5nRGljdAB0cmFuc2Zvcm0AZmx1c2gAZW5kAFpzdGREZWNvbXByZXNzU3RyZWFtQmluZGluZwBOMTBlbXNjcmlwdGVuM3ZhbEUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJWk4yNVpzdGRDb21wcmVzc1N0cmVhbUJpbmRpbmc5VHJhbnNmb3JtRU4xMGVtc2NyaXB0ZW4zdmFsRVM0X0UzJF8wTlNfOWFsbG9jYXRvcklTNV9FRUZ2UktOU182dmVjdG9ySWhOUzZfSWhFRUVFRUVFAE5TdDNfXzIxMF9fZnVuY3Rpb242X19iYXNlSUZ2UktOU182dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFRUVFAFpOMjVac3RkQ29tcHJlc3NTdHJlYW1CaW5kaW5nOVRyYW5zZm9ybUVOMTBlbXNjcmlwdGVuM3ZhbEVTMV9FMyRfMABOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZzVGbHVzaEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfMU5TXzlhbGxvY2F0b3JJUzVfRUVGdlJLTlNfNnZlY3RvckloTlM2X0loRUVFRUVFRQBaTjI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZzVGbHVzaEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfMQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZzNFbmRFTjEwZW1zY3JpcHRlbjN2YWxFRTMkXzJOU185YWxsb2NhdG9ySVM1X0VFRnZSS05TXzZ2ZWN0b3JJaE5TNl9JaEVFRUVFRUUAWk4yNVpzdGRDb21wcmVzc1N0cmVhbUJpbmRpbmczRW5kRU4xMGVtc2NyaXB0ZW4zdmFsRUUzJF8yAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMjdac3RkRGVjb21wcmVzc1N0cmVhbUJpbmRpbmc5VHJhbnNmb3JtRU4xMGVtc2NyaXB0ZW4zdmFsRVM0X0UzJF8zTlNfOWFsbG9jYXRvcklTNV9FRUZ2UktOU182dmVjdG9ySWhOUzZfSWhFRUVFRUVFAFpOMjdac3RkRGVjb21wcmVzc1N0cmVhbUJpbmRpbmc5VHJhbnNmb3JtRU4xMGVtc2NyaXB0ZW4zdmFsRVMxX0UzJF8zAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMjdac3RkRGVjb21wcmVzc1N0cmVhbUJpbmRpbmc1Rmx1c2hFTjEwZW1zY3JpcHRlbjN2YWxFRTMkXzROU185YWxsb2NhdG9ySVM1X0VFRnZSS05TXzZ2ZWN0b3JJaE5TNl9JaEVFRUVFRUUAWk4yN1pzdGREZWNvbXByZXNzU3RyZWFtQmluZGluZzVGbHVzaEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfNABOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nM0VuZEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfNU5TXzlhbGxvY2F0b3JJUzVfRUVGdlJLTlNfNnZlY3RvckloTlM2X0loRUVFRUVFRQBaTjI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nM0VuZEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfNQBwdXNoX2JhY2sAcmVzaXplAHNpemUAZ2V0AE5TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAE5TdDNfXzIxM19fdmVjdG9yX2Jhc2VJaE5TXzlhbGxvY2F0b3JJaEVFRUUATlN0M19fMjIwX192ZWN0b3JfYmFzZV9jb21tb25JTGIxRUVFAFBOU3QzX18yNnZlY3RvckloTlNfOWFsbG9jYXRvckloRUVFRQBQS05TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAGlpAHYAdmkAdmlpaQB2aWlpaQBpaWkAaWlpaQBpaWlpaQAxOVpzdGRDb21wcmVzc2lvbkRpY3QAOFJlc291cmNlSTEyWlNURF9DRGljdF9zRQBQMTlac3RkQ29tcHJlc3Npb25EaWN0AFBLMTlac3RkQ29tcHJlc3Npb25EaWN0ADIxWnN0ZERlY29tcHJlc3Npb25EaWN0ADhSZXNvdXJjZUkxMlpTVERfRERpY3Rfc0UAUDIxWnN0ZERlY29tcHJlc3Npb25EaWN0AFBLMjFac3RkRGVjb21wcmVzc2lvbkRpY3QAOVpzdGRDb2RlYwBQOVpzdGRDb2RlYwBQSzlac3RkQ29kZWMAaWlpaWlpADI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZwBQMjVac3RkQ29tcHJlc3NTdHJlYW1CaW5kaW5nAFBLMjVac3RkQ29tcHJlc3NTdHJlYW1CaW5kaW5nADI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nAFAyN1pzdGREZWNvbXByZXNzU3RyZWFtQmluZGluZwBQSzI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nAFBGdlAxMVpTVERfQ0N0eF9zRQBGdlAxMVpTVERfQ0N0eF9zRQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0lQRnZQMTFaU1REX0NDdHhfc0VOU185YWxsb2NhdG9ySVM1X0VFUzRfRUUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Jhc2VJRnZQMTFaU1REX0NDdHhfc0VFRQBQRnZQMTFaU1REX0RDdHhfc0UARnZQMTFaU1REX0RDdHhfc0UATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJUEZ2UDExWlNURF9EQ3R4X3NFTlNfOWFsbG9jYXRvcklTNV9FRVM0X0VFAE5TdDNfXzIxMF9fZnVuY3Rpb242X19iYXNlSUZ2UDExWlNURF9EQ3R4X3NFRUUAUEZ2UDEyWlNURF9DRGljdF9zRQBGdlAxMlpTVERfQ0RpY3Rfc0UATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJUEZ2UDEyWlNURF9DRGljdF9zRU5TXzlhbGxvY2F0b3JJUzVfRUVTNF9FRQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fYmFzZUlGdlAxMlpTVERfQ0RpY3Rfc0VFRQBQRnZQMTJaU1REX0REaWN0X3NFAEZ2UDEyWlNURF9ERGljdF9zRQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0lQRnZQMTJaU1REX0REaWN0X3NFTlNfOWFsbG9jYXRvcklTNV9FRVM0X0VFAE5TdDNfXzIxMF9fZnVuY3Rpb242X19iYXNlSUZ2UDEyWlNURF9ERGljdF9zRUVFAFpOMThac3RkQ29tcHJlc3NTdHJlYW01QmVnaW5FaUUzJF8wAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMThac3RkQ29tcHJlc3NTdHJlYW01QmVnaW5FaUUzJF8wTlNfOWFsbG9jYXRvcklTM19FRUZtUDExWlNURF9DQ3R4X3NFRUUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Jhc2VJRm1QMTFaU1REX0NDdHhfc0VFRQBaTjE4WnN0ZENvbXByZXNzU3RyZWFtNUJlZ2luRVJLMTlac3RkQ29tcHJlc3Npb25EaWN0RTMkXzEATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJWk4xOFpzdGRDb21wcmVzc1N0cmVhbTVCZWdpbkVSSzE5WnN0ZENvbXByZXNzaW9uRGljdEUzJF8xTlNfOWFsbG9jYXRvcklTNl9FRUZtUDExWlNURF9DQ3R4X3NFRUUAWk4yMFpzdGREZWNvbXByZXNzU3RyZWFtNUJlZ2luRXZFMyRfMgBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjIwWnN0ZERlY29tcHJlc3NTdHJlYW01QmVnaW5FdkUzJF8yTlNfOWFsbG9jYXRvcklTM19FRUZtUDExWlNURF9EQ3R4X3NFRUUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Jhc2VJRm1QMTFaU1REX0RDdHhfc0VFRQBaTjIwWnN0ZERlY29tcHJlc3NTdHJlYW01QmVnaW5FUksyMVpzdGREZWNvbXByZXNzaW9uRGljdEUzJF8zAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMjBac3RkRGVjb21wcmVzc1N0cmVhbTVCZWdpbkVSSzIxWnN0ZERlY29tcHJlc3Npb25EaWN0RTMkXzNOU185YWxsb2NhdG9ySVM2X0VFRm1QMTFaU1REX0RDdHhfc0VFRQBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBzdGQ6OndzdHJpbmcAZW1zY3JpcHRlbjo6dmFsAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZyBkb3VibGU+AE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWVFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lkRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZkVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SW1FRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWlFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWhFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFAE5TdDNfXzIyMV9fYmFzaWNfc3RyaW5nX2NvbW1vbklMYjFFRUUATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUATlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUALSsgICAwWDB4AChudWxsKQAtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBuYW4ATkFOAHJ3YQBzdGQ6OmJhZF9mdW5jdGlvbl9jYWxsAE5TdDNfXzIxN2JhZF9mdW5jdGlvbl9jYWxsRQB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzOiAlcwB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzAHRlcm1pbmF0aW5nIHdpdGggJXMgZm9yZWlnbiBleGNlcHRpb24AdGVybWluYXRpbmcAdW5jYXVnaHQAU3Q5ZXhjZXB0aW9uAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAFN0OXR5cGVfaW5mbwBOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAHB0aHJlYWRfb25jZSBmYWlsdXJlIGluIF9fY3hhX2dldF9nbG9iYWxzX2Zhc3QoKQBjYW5ub3QgY3JlYXRlIHB0aHJlYWQga2V5IGZvciBfX2N4YV9nZXRfZ2xvYmFscygpAGNhbm5vdCB6ZXJvIG91dCB0aHJlYWQgdmFsdWUgZm9yIF9fY3hhX2dldF9nbG9iYWxzKCkAdGVybWluYXRlX2hhbmRsZXIgdW5leHBlY3RlZGx5IHJldHVybmVkAE4xMF9fY3h4YWJpdjExOV9fcG9pbnRlcl90eXBlX2luZm9FAE4xMF9fY3h4YWJpdjExN19fcGJhc2VfdHlwZV9pbmZvRQBOMTBfX2N4eGFiaXYxMjNfX2Z1bmRhbWVudGFsX3R5cGVfaW5mb0UAdgBEbgBiAGMAaABhAHMAdABpAGoAbQBmAGQATjEwX19jeHhhYml2MTIwX19mdW5jdGlvbl90eXBlX2luZm9FAE4xMF9fY3h4YWJpdjEyMV9fdm1pX2NsYXNzX3R5cGVfaW5mb0UAIGNvbnN0ACB2b2xhdGlsZQAgcmVzdHJpY3QAIGNvbXBsZXgAIGltYWdpbmFyeQAgWwAgKAApACgAJiYAb2JqY19vYmplY3Q8ACoAJgBvYmpjcHJvdG8AIAA8AD4AIHZlY3RvclsAXQBwaXhlbCB2ZWN0b3JbACY9AD0ALAB+ADo6AGRlbGV0ZVtdIABkZWxldGUgAC8ALz0AXgBePQA9PQA+PQApWwA8PQA8PAA8PD0ALQAtPQAqPQAtLQApLS0AIT0AIQB8fAB8AHw9AC0+KgArACs9ACsrACkrKwApID8gKAApIDogKAAlACU9AD4+AD4+PQB0aHJvdwB0aHJvdyAAdHlwZWlkKABzaXplb2YuLi4oACwgAHNpemVvZiAoAHN0YXRpY19jYXN0PAA+KAByZWludGVycHJldF9jYXN0PAAtPgBub2V4Y2VwdCAoAFtdIAApIAAuAC4qAHN0ZDo6AG9wZXJhdG9yJiYAb3BlcmF0b3ImAG9wZXJhdG9yJj0Ab3BlcmF0b3I9AG9wZXJhdG9yKCkAb3BlcmF0b3IsAG9wZXJhdG9yfgBvcGVyYXRvciAAb3BlcmF0b3IgZGVsZXRlW10Ab3BlcmF0b3IqAG9wZXJhdG9yLwBvcGVyYXRvci89AG9wZXJhdG9yXgBvcGVyYXRvcl49AG9wZXJhdG9yPT0Ab3BlcmF0b3I+PQBvcGVyYXRvcj4Ab3BlcmF0b3JbXQBvcGVyYXRvcjw9AG9wZXJhdG9yIiIgAG9wZXJhdG9yPDwAb3BlcmF0b3I8PD0Ab3BlcmF0b3I8AG9wZXJhdG9yLQBvcGVyYXRvci09AG9wZXJhdG9yKj0Ab3BlcmF0b3ItLQBvcGVyYXRvciBuZXdbXQBvcGVyYXRvciE9AG9wZXJhdG9yIQBvcGVyYXRvciBuZXcAb3BlcmF0b3J8fABvcGVyYXRvcnwAb3BlcmF0b3J8PQBvcGVyYXRvci0+KgBvcGVyYXRvcisAb3BlcmF0b3IrPQBvcGVyYXRvcisrAG9wZXJhdG9yLT4Ab3BlcmF0b3I/AG9wZXJhdG9yJQBvcGVyYXRvciU9AG9wZXJhdG9yPj4Ab3BlcmF0b3I+Pj0Ab3BlcmF0b3IgZGVsZXRlACd1bm5hbWVkACdsYW1iZGEnKABzdGQ6OnN0cmluZwBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+AGJhc2ljX3N0cmluZwBzdGQ6OmlzdHJlYW0Ac3RkOjpiYXNpY19pc3RyZWFtPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4gPgBiYXNpY19pc3RyZWFtAHN0ZDo6b3N0cmVhbQBzdGQ6OmJhc2ljX29zdHJlYW08Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiA+AGJhc2ljX29zdHJlYW0Ac3RkOjppb3N0cmVhbQBzdGQ6OmJhc2ljX2lvc3RyZWFtPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4gPgBiYXNpY19pb3N0cmVhbQBkeW5hbWljX2Nhc3Q8ACkoAGNvbnN0X2Nhc3Q8AGFsaWdub2YgKABmcAB3Y2hhcl90AGZhbHNlAHRydWUAY2hhcgBzaWduZWQgY2hhcgB1bnNpZ25lZCBjaGFyAHNob3J0AHVuc2lnbmVkIHNob3J0AHUAbAB1bABsbAB1bGwAX19pbnQxMjgAdW5zaWduZWQgX19pbnQxMjgAJUxhTAAlYQAlYWYAZGVjbHR5cGUoAHN0ZDo6YWxsb2NhdG9yAHN0ZDo6YmFzaWNfc3RyaW5nADo6c3RyaW5nIGxpdGVyYWwAc3RkAF9HTE9CQUxfX04AKGFub255bW91cyBuYW1lc3BhY2UpACA+AFRfAGlkADo6KgAgJgAgJiYAIFtdAHZvaWQAYm9vbABpbnQAdW5zaWduZWQgaW50AGxvbmcAdW5zaWduZWQgbG9uZwBsb25nIGxvbmcAZmxvYXQAbG9uZyBkb3VibGUAX19mbG9hdDEyOAAuLi4AZGVjaW1hbDY0AGRlY2ltYWwxMjgAZGVjaW1hbDMyAGRlY2ltYWwxNgBjaGFyMzJfdABjaGFyMTZfdABhdXRvAHN0ZDo6bnVsbHB0cl90AGRvdWJsZQB1bnNpZ25lZCBsb25nIGxvbmcAX2Jsb2NrX2ludm9rZQBpbnZvY2F0aW9uIGZ1bmN0aW9uIGZvciBibG9jayBpbiAAdnRhYmxlIGZvciAAVlRUIGZvciAAdHlwZWluZm8gZm9yIAB0eXBlaW5mbyBuYW1lIGZvciAAY292YXJpYW50IHJldHVybiB0aHVuayB0byAAY29uc3RydWN0aW9uIHZ0YWJsZSBmb3IgAC1pbi0AdmlydHVhbCB0aHVuayB0byAAbm9uLXZpcnR1YWwgdGh1bmsgdG8gAGd1YXJkIHZhcmlhYmxlIGZvciAAcmVmZXJlbmNlIHRlbXBvcmFyeSBmb3Ig";var asmjsCodeFile="";if(!isDataURI(wasmTextFile)){wasmTextFile=locateFile(wasmTextFile);}if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile);}if(!isDataURI(asmjsCodeFile)){asmjsCodeFile=locateFile(asmjsCodeFile);}var wasmPageSize=64*1024;var info={"global":null,"env":null,"asm2wasm":asm2wasmImports,"parent":Module};var exports=null;function mergeMemory(newBuffer){var oldBuffer=Module["buffer"];if(newBuffer.byteLength<oldBuffer.byteLength){err("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here");}var oldView=new Int8Array(oldBuffer);var newView=new Int8Array(newBuffer);newView.set(oldView);updateGlobalBuffer(newBuffer);updateGlobalBufferViews();}function fixImports(imports){return imports;}function getBinary(){try{if(Module["wasmBinary"]){return new Uint8Array(Module["wasmBinary"]);}var binary=tryParseAsDataURI(wasmBinaryFile);if(binary){return binary;}if(Module["readBinary"]){return Module["readBinary"](wasmBinaryFile);}else{throw"both async and sync fetching of the wasm failed";}}catch(err){abort(err);}}function getBinaryPromise(){if(!Module["wasmBinary"]&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";}return response["arrayBuffer"]();}).catch(function(){return getBinary();});}return new Promise(function(resolve,reject){resolve(getBinary());});}function doNativeWasm(global,env,providedBuffer){if((typeof WebAssembly==='undefined'?'undefined':_typeof(WebAssembly))!=="object"){err("no native wasm support detected");return false;}if(!(Module["wasmMemory"]instanceof WebAssembly.Memory)){err("no native wasm Memory in use");return false;}env["memory"]=Module["wasmMemory"];info["global"]={"NaN":NaN,"Infinity":Infinity};info["global.Math"]=Math;info["env"]=env;function receiveInstance(instance,module){exports=instance.exports;if(exports.memory)mergeMemory(exports.memory);Module["asm"]=exports;Module["usingWasm"]=true;removeRunDependency("wasm-instantiate");}addRunDependency("wasm-instantiate");if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance);}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false;}}function receiveInstantiatedSource(output){receiveInstance(output["instance"],output["module"]);}function instantiateArrayBuffer(receiver){getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info);}).then(receiver).catch(function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason);});}if(!Module["wasmBinary"]&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch==="function"){WebAssembly.instantiateStreaming(fetch(wasmBinaryFile,{credentials:"same-origin"}),info).then(receiveInstantiatedSource).catch(function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");instantiateArrayBuffer(receiveInstantiatedSource);});}else{instantiateArrayBuffer(receiveInstantiatedSource);}return{};}Module["asmPreload"]=Module["asm"];var asmjsReallocBuffer=Module["reallocBuffer"];var wasmReallocBuffer=function wasmReallocBuffer(size){var PAGE_MULTIPLE=Module["usingWasm"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;size=alignUp(size,PAGE_MULTIPLE);var old=Module["buffer"];var oldSize=old.byteLength;if(Module["usingWasm"]){try{var result=Module["wasmMemory"].grow((size-oldSize)/wasmPageSize);if(result!==(-1|0)){return Module["buffer"]=Module["wasmMemory"].buffer;}else{return null;}}catch(e){return null;}}};Module["reallocBuffer"]=function(size){if(finalMethod==="asmjs"){return asmjsReallocBuffer(size);}else{return wasmReallocBuffer(size);}};var finalMethod="";Module["asm"]=function(global,env,providedBuffer){env=fixImports(env);if(!env["table"]){var TABLE_SIZE=Module["wasmTableSize"];if(TABLE_SIZE===undefined)TABLE_SIZE=1024;var MAX_TABLE_SIZE=Module["wasmMaxTableSize"];if((typeof WebAssembly==='undefined'?'undefined':_typeof(WebAssembly))==="object"&&typeof WebAssembly.Table==="function"){if(MAX_TABLE_SIZE!==undefined){env["table"]=new WebAssembly.Table({"initial":TABLE_SIZE,"maximum":MAX_TABLE_SIZE,"element":"anyfunc"});}else{env["table"]=new WebAssembly.Table({"initial":TABLE_SIZE,element:"anyfunc"});}}else{env["table"]=new Array(TABLE_SIZE);}Module["wasmTable"]=env["table"];}if(!env["memoryBase"]){env["memoryBase"]=Module["STATIC_BASE"];}if(!env["tableBase"]){env["tableBase"]=0;}var exports;exports=doNativeWasm(global,env,providedBuffer);assert(exports,"no binaryen method succeeded.");return exports;};}integrateWasmJS();STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+23280;__ATINIT__.push({func:function func(){__GLOBAL__sub_I_zstd_binding_cc();}},{func:function func(){__GLOBAL__sub_I_bind_cpp();}});var STATIC_BUMP=23280;Module["STATIC_BASE"]=STATIC_BASE;Module["STATIC_BUMP"]=STATIC_BUMP;var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___cxa_allocate_exception(size){return _malloc(size);}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception;}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:function deAdjust(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var key in EXCEPTIONS.infos){var ptr=+key;var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr;}}return adjusted;},addRef:function addRef(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++;},decRef:function decRef(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module["dynCall_vi"](info.destructor,ptr);}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr);}},clearRef:function clearRef(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0;}};function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--;}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr;}function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr;}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(setTempRet0(0),0)|0;}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(setTempRet0(0),thrown)|0;}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i<typeArray.length;i++){if(typeArray[i]&&Module["___cxa_can_catch"](typeArray[i],throwntype,thrown)){thrown=HEAP32[thrown>>2];info.adjusted=thrown;return(setTempRet0(typeArray[i]),thrown)|0;}}thrown=HEAP32[thrown>>2];return(setTempRet0(throwntype),thrown)|0;}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1;}else{__ZSt18uncaught_exceptionv.uncaught_exception++;}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";}function ___gxx_personality_v0(){}function ___lock(){}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value;}var PATH={splitPath:function splitPath(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1);},normalizeArray:function normalizeArray(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1);}else if(last===".."){parts.splice(i,1);up++;}else if(up){parts.splice(i,1);up--;}}if(allowAboveRoot){for(;up;up--){parts.unshift("..");}}return parts;},normalize:function normalize(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p;}),!isAbsolute).join("/");if(!path&&!isAbsolute){path=".";}if(path&&trailingSlash){path+="/";}return(isAbsolute?"/":"")+path;},dirname:function dirname(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return".";}if(dir){dir=dir.substr(0,dir.length-1);}return root+dir;},basename:function basename(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1);},extname:function extname(path){return PATH.splitPath(path)[3];},join:function join(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"));},join2:function join2(l,r){return PATH.normalize(l+"/"+r);},resolve:function resolve(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings");}else if(!path){return"";}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/";}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p;}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||".";},relative:function relative(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break;}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break;}if(start>end)return[];return arr.slice(start,end-start+1);}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break;}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..");}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/");}};var TTY={ttys:[],init:function init(){},shutdown:function shutdown(){},register:function register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops);},stream_ops:{open:function open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}stream.tty=tty;stream.seekable=false;},close:function close(stream){stream.tty.ops.flush(stream.tty);},flush:function flush(stream){stream.tty.ops.flush(stream.tty);},read:function read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO);}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty);}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO);}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result;}if(bytesRead){stream.node.timestamp=Date.now();}return bytesRead;},write:function write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO);}for(var i=0;i<length;i++){try{stream.tty.ops.put_char(stream.tty,buffer[offset+i]);}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO);}}if(length){stream.node.timestamp=Date.now();}return i;}},default_tty_ops:{get_char:function get_char(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=new Buffer(BUFSIZE);var bytesRead=0;var isPosixPlatform=process.platform!="win32";var fd=process.stdin.fd;if(isPosixPlatform){var usingDevice=false;try{fd=fs.openSync("/dev/stdin","r");usingDevice=true;}catch(e){}}try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE,null);}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e;}if(usingDevice){fs.closeSync(fd);}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8");}else{result=null;}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n";}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n";}}if(!result){return null;}tty.input=intArrayFromString(result,true);}return tty.input.shift();},put_char:function put_char(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[];}else{if(val!=0)tty.output.push(val);}},flush:function flush(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[];}}},default_tty1_ops:{put_char:function put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[];}else{if(val!=0)tty.output.push(val);}},flush:function flush(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[];}}}};var MEMFS={ops_table:null,mount:function mount(_mount){return MEMFS.createNode(null,"/",16384|511,0);},createNode:function createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={};}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null;}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream;}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream;}node.timestamp=Date.now();if(parent){parent.contents[name]=node;}return node;},getFileDataAsRegularArray:function getFileDataAsRegularArray(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i){arr.push(node.contents[i]);}return arr;}return node.contents;},getFileDataAsTypedArray:function getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array();if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents);},expandFileStorage:function expandFileStorage(node,newCapacity){if(node.contents&&node.contents.subarray&&newCapacity>node.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length;}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)|0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return;}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.length<newCapacity){node.contents.push(0);}},resizeFileStorage:function resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return;}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)));}node.usedBytes=newSize;return;}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize){node.contents.push(0);}node.usedBytes=newSize;},node_ops:{getattr:function getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096;}else if(FS.isFile(node.mode)){attr.size=node.usedBytes;}else if(FS.isLink(node.mode)){attr.size=node.link.length;}else{attr.size=0;}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr;},setattr:function setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode;}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp;}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size);}},lookup:function lookup(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT];},mknod:function mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev);},rename:function rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name);}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);}}}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=new_dir;},unlink:function unlink(parent,name){delete parent.contents[name];},rmdir:function rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);}delete parent.contents[name];},readdir:function readdir(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue;}entries.push(key);}return entries;},symlink:function symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node;},readlink:function readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return node.link;}},stream_ops:{read:function read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset);}else{for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i];}}return size;},write:function write(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length;}else if(node.usedBytes===0&&position===0){node.contents=new Uint8Array(buffer.subarray(offset,offset+length));node.usedBytes=length;return length;}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length;}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i];}}node.usedBytes=Math.max(node.usedBytes,position+length);return length;},llseek:function llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position;}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes;}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return position;},allocate:function allocate(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length);},mmap:function mmap(stream,buffer,offset,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&(contents.buffer===buffer||contents.buffer===buffer.buffer)){allocated=false;ptr=contents.byteOffset;}else{if(position>0||position+length<stream.node.usedBytes){if(contents.subarray){contents=contents.subarray(position,position+length);}else{contents=Array.prototype.slice.call(contents,position,position+length);}}allocated=true;ptr=_malloc(length);if(!ptr){throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);}buffer.set(contents,ptr);}return{ptr:ptr,allocated:allocated};},msync:function msync(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}if(mmapFlags&2){return 0;}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0;}}};var IDBFS={dbs:{},indexedDB:function(_indexedDB){function indexedDB(){return _indexedDB.apply(this,arguments);}indexedDB.toString=function(){return _indexedDB.toString();};return indexedDB;}(function(){if(typeof indexedDB!=="undefined")return indexedDB;var ret=null;if((typeof window==='undefined'?'undefined':_typeof(window))==="object")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;assert(ret,"IDBFS used, but indexedDB not supported");return ret;}),DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function mount(_mount2){return MEMFS.mount.apply(null,arguments);},syncfs:function syncfs(mount,populate,callback){IDBFS.getLocalSet(mount,function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback);});});},getDB:function getDB(name,callback){var db=IDBFS.dbs[name];if(db){return callback(null,db);}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION);}catch(e){return callback(e);}if(!req){return callback("Unable to connect to IndexedDB");}req.onupgradeneeded=function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME);}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME);}if(!fileStore.indexNames.contains("timestamp")){fileStore.createIndex("timestamp","timestamp",{unique:false});}};req.onsuccess=function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db);};req.onerror=function(e){callback(this.error);e.preventDefault();};},getLocalSet:function getLocalSet(mount,callback){var entries={};function isRealDir(p){return p!=="."&&p!=="..";}function toAbsolute(root){return function(p){return PATH.join2(root,p);};}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path);}catch(e){return callback(e);}if(FS.isDir(stat.mode)){check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));}entries[path]={timestamp:stat.mtime};}return callback(null,{type:"local",entries:entries});},getRemoteSet:function getRemoteSet(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,function(err,db){if(err)return callback(err);try{var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readonly");transaction.onerror=function(e){callback(this.error);e.preventDefault();};var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index("timestamp");index.openKeyCursor().onsuccess=function(event){var cursor=event.target.result;if(!cursor){return callback(null,{type:"remote",db:db,entries:entries});}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue();};}catch(e){return callback(e);}});},loadLocalEntry:function loadLocalEntry(path,callback){var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path);}catch(e){return callback(e);}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode});}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents});}else{return callback(new Error("node type not supported"));}},storeLocalEntry:function storeLocalEntry(path,entry,callback){try{if(FS.isDir(entry.mode)){FS.mkdir(path,entry.mode);}else if(FS.isFile(entry.mode)){FS.writeFile(path,entry.contents,{canOwn:true});}else{return callback(new Error("node type not supported"));}FS.chmod(path,entry.mode);FS.utime(path,entry.timestamp,entry.timestamp);}catch(e){return callback(e);}callback(null);},removeLocalEntry:function removeLocalEntry(path,callback){try{var lookup=FS.lookupPath(path);var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path);}else if(FS.isFile(stat.mode)){FS.unlink(path);}}catch(e){return callback(e);}callback(null);},loadRemoteEntry:function loadRemoteEntry(store,path,callback){var req=store.get(path);req.onsuccess=function(event){callback(null,event.target.result);};req.onerror=function(e){callback(this.error);e.preventDefault();};},storeRemoteEntry:function storeRemoteEntry(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=function(){callback(null);};req.onerror=function(e){callback(this.error);e.preventDefault();};},removeRemoteEntry:function removeRemoteEntry(store,path,callback){var req=store.delete(path);req.onsuccess=function(){callback(null);};req.onerror=function(e){callback(this.error);e.preventDefault();};},reconcile:function reconcile(src,dst,callback){var total=0;var create=[];Object.keys(src.entries).forEach(function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e.timestamp>e2.timestamp){create.push(key);total++;}});var remove=[];Object.keys(dst.entries).forEach(function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++;}});if(!total){return callback(null);}var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err);}return;}if(++completed>=total){return callback(null);}}transaction.onerror=function(e){done(this.error);e.preventDefault();};create.sort().forEach(function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done);});}else{IDBFS.loadLocalEntry(path,function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done);});}});remove.sort().reverse().forEach(function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done);}else{IDBFS.removeRemoteEntry(store,path,done);}});}};var NODEFS={isWindows:false,staticInit:function staticInit(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"];}NODEFS.flagsForNodeMap={"1024":flags["O_APPEND"],"64":flags["O_CREAT"],"128":flags["O_EXCL"],"0":flags["O_RDONLY"],"2":flags["O_RDWR"],"4096":flags["O_SYNC"],"512":flags["O_TRUNC"],"1":flags["O_WRONLY"]};},bufferFrom:function bufferFrom(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer);},mount:function mount(_mount3){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(_mount3.opts.root),0);},createNode:function createNode(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node;},getMode:function getMode(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2;}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}return stat.mode;},realPath:function realPath(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent;}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts);},flagsForNode:function flagsForNode(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k;}}if(!flags){return newFlags;}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}},node_ops:{getattr:function getattr(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096;}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0;}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks};},setattr:function setattr(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode;}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date);}if(attr.size!==undefined){fs.truncateSync(path,attr.size);}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},lookup:function lookup(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode);},mknod:function mknod(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode);}else{fs.writeFileSync(path,"",{mode:node.mode});}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}return node;},rename:function rename(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},unlink:function unlink(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},rmdir:function rmdir(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},readdir:function readdir(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},symlink:function symlink(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},readlink:function readlink(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path;}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}}},stream_ops:{open:function open(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags));}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},close:function close(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd);}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},read:function read(stream,buffer,offset,length,position){if(length===0)return 0;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position);}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},write:function write(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position);}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},llseek:function llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position;}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size;}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return position;}}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function mount(_mount4){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync();var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i<parts.length-1;i++){var curr=parts.slice(0,i+1).join("/");if(!createdParents[curr]){createdParents[curr]=WORKERFS.createNode(parent,parts[i],WORKERFS.DIR_MODE,0);}parent=createdParents[curr];}return parent;}function base(path){var parts=path.split("/");return parts[parts.length-1];}Array.prototype.forEach.call(_mount4.opts["files"]||[],function(file){WORKERFS.createNode(ensureParent(file.name),base(file.name),WORKERFS.FILE_MODE,0,file,file.lastModifiedDate);});(_mount4.opts["blobs"]||[]).forEach(function(obj){WORKERFS.createNode(ensureParent(obj["name"]),base(obj["name"]),WORKERFS.FILE_MODE,0,obj["data"]);});(_mount4.opts["packages"]||[]).forEach(function(pack){pack["metadata"].files.forEach(function(file){var name=file.filename.substr(1);WORKERFS.createNode(ensureParent(name),base(name),WORKERFS.FILE_MODE,0,pack["blob"].slice(file.start,file.end));});});return root;},createNode:function createNode(parent,name,mode,dev,contents,mtime){var node=FS.createNode(parent,name,mode);node.mode=mode;node.node_ops=WORKERFS.node_ops;node.stream_ops=WORKERFS.stream_ops;node.timestamp=(mtime||new Date()).getTime();assert(WORKERFS.FILE_MODE!==WORKERFS.DIR_MODE);if(mode===WORKERFS.FILE_MODE){node.size=contents.size;node.contents=contents;}else{node.size=4096;node.contents={};}if(parent){parent.contents[name]=node;}return node;},node_ops:{getattr:function getattr(node){return{dev:1,ino:undefined,mode:node.mode,nlink:1,uid:0,gid:0,rdev:undefined,size:node.size,atime:new Date(node.timestamp),mtime:new Date(node.timestamp),ctime:new Date(node.timestamp),blksize:4096,blocks:Math.ceil(node.size/4096)};},setattr:function setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode;}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp;}},lookup:function lookup(parent,name){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);},mknod:function mknod(parent,name,mode,dev){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},rename:function rename(oldNode,newDir,newName){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},unlink:function unlink(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},rmdir:function rmdir(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},readdir:function readdir(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue;}entries.push(key);}return entries;},symlink:function symlink(parent,newName,oldPath){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},readlink:function readlink(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}},stream_ops:{read:function read(stream,buffer,offset,length,position){if(position>=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size;},write:function write(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO);},llseek:function llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position;}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size;}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return position;}}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function handleFSError(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno);},lookupPath:function lookupPath(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key];}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP);}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p;}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break;}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root;}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP);}}}}return{path:current_path,node:current};},getPath:function getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path;}path=path?node.name+"/"+path:node.name;node=node.parent;}},hashName:function hashName(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0;}return(parentid+hash>>>0)%FS.nameTable.length;},hashAddNode:function hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node;},hashRemoveNode:function hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next;}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break;}current=current.name_next;}}},lookupNode:function lookupNode(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent);}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node;}}return FS.lookup(parent,name);},createNode:function createNode(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=function(parent,name,mode,rdev){if(!parent){parent=this;}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;};FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:function get(){return(this.mode&readMode)===readMode;},set:function set(val){val?this.mode|=readMode:this.mode&=~readMode;}},write:{get:function get(){return(this.mode&writeMode)===writeMode;},set:function set(val){val?this.mode|=writeMode:this.mode&=~writeMode;}},isFolder:{get:function get(){return FS.isDir(this.mode);}},isDevice:{get:function get(){return FS.isChrdev(this.mode);}}});}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node;},destroyNode:function destroyNode(node){FS.hashRemoveNode(node);},isRoot:function isRoot(node){return node===node.parent;},isMountpoint:function isMountpoint(node){return!!node.mounted;},isFile:function isFile(mode){return(mode&61440)===32768;},isDir:function isDir(mode){return(mode&61440)===16384;},isLink:function isLink(mode){return(mode&61440)===40960;},isChrdev:function isChrdev(mode){return(mode&61440)===8192;},isBlkdev:function isBlkdev(mode){return(mode&61440)===24576;},isFIFO:function isFIFO(mode){return(mode&61440)===4096;},isSocket:function isSocket(mode){return(mode&49152)===49152;},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function modeStringToFlags(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str);}return flags;},flagsToPermissionString:function flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w";}return perms;},nodePermissions:function nodePermissions(node,perms){if(FS.ignorePermissions){return 0;}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES;}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES;}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES;}return 0;},mayLookup:function mayLookup(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0;},mayCreate:function mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST;}catch(e){}return FS.nodePermissions(dir,"wx");},mayDelete:function mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name);}catch(e){return e.errno;}var err=FS.nodePermissions(dir,"wx");if(err){return err;}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR;}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY;}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR;}}return 0;},mayOpen:function mayOpen(node,flags){if(!node){return ERRNO_CODES.ENOENT;}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP;}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR;}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags));},MAX_OPEN_FDS:4096,nextfd:function nextfd(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd;}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE);},getStream:function getStream(fd){return FS.streams[fd];},createStream:function createStream(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function get(){return this.node;},set:function set(val){this.node=val;}},isRead:{get:function get(){return(this.flags&2097155)!==1;}},isWrite:{get:function get(){return(this.flags&2097155)!==0;}},isAppend:{get:function get(){return this.flags&1024;}}});}var newStream=new FS.FSStream();for(var p in stream){newStream[p]=stream[p];}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream;},closeStream:function closeStream(fd){FS.streams[fd]=null;},chrdev_stream_ops:{open:function open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream);}},llseek:function llseek(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}},major:function major(dev){return dev>>8;},minor:function minor(dev){return dev&255;},makedev:function makedev(ma,mi){return ma<<8|mi;},registerDevice:function registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops};},getDevice:function getDevice(dev){return FS.devices[dev];},getMounts:function getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts);}return mounts;},syncfs:function syncfs(populate,callback){if(typeof populate==="function"){callback=populate;populate=false;}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err);}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err);}return;}if(++completed>=mounts.length){doCallback(null);}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null);}mount.type.syncfs(mount,populate,done);});},mount:function mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot;}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount);}}return mountRoot;},unmount:function unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current);}current=next;}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1);},lookup:function lookup(parent,name){return parent.node_ops.lookup(parent,name);},mknod:function mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}return parent.node_ops.mknod(parent,name,mode,dev);},create:function create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0);},mkdir:function mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0);},mkdirTree:function mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode);}catch(e){if(e.errno!=ERRNO_CODES.EEXIST)throw e;}}},mkdev:function mkdev(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438;}mode|=8192;return FS.mknod(path,mode,dev);},symlink:function symlink(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}return parent.node_ops.symlink(parent,newname,oldpath);},rename:function rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV);}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);}var new_node;try{new_node=FS.lookupNode(new_dir,new_name);}catch(e){}if(old_node===new_node){return;}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err);}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err);}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err);}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path);}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message);}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);}catch(e){throw e;}finally{FS.hashAddNode(old_node);}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path);}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message);}},rmdir:function rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path);}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message);}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path);}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message);}},readdir:function readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}return node.node_ops.readdir(node);},unlink:function unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path);}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message);}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path);}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message);}},readlink:function readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link));},stat:function stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}return node.node_ops.getattr(node);},lstat:function lstat(path){return FS.stat(path,true);},chmod:function chmod(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node;}else{node=path;}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()});},lchmod:function lchmod(path,mode){FS.chmod(path,mode,true);},fchmod:function fchmod(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}FS.chmod(stream.node,mode);},chown:function chown(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node;}else{node=path;}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}node.node_ops.setattr(node,{timestamp:Date.now()});},lchown:function lchown(path,uid,gid){FS.chown(path,uid,gid,true);},fchown:function fchown(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}FS.chown(stream.node,uid,gid);},truncate:function truncate(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;}else{node=path;}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR);}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err);}node.node_ops.setattr(node,{size:len,timestamp:Date.now()});},ftruncate:function ftruncate(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}FS.truncate(stream.node,len);},utime:function utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)});},open:function open(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768;}else{mode=0;}var node;if((typeof path==='undefined'?'undefined':_typeof(path))==="object"){node=path;}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node;}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST);}}else{node=FS.mknod(path,mode,0);created=true;}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(FS.isChrdev(node.mode)){flags&=~512;}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err);}}if(flags&512){FS.truncate(node,0);}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream);}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("read file: "+path);}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ;}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE;}FS.trackingDelegate["onOpenFile"](path,trackingFlags);}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message);}return stream;},close:function close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream);}}catch(e){throw e;}finally{FS.closeStream(stream.fd);}stream.fd=null;},isClosed:function isClosed(stream){return stream.fd===null;},llseek:function llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position;},read:function read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR);}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position;}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead;},write:function write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR);}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if(stream.flags&1024){FS.llseek(stream,0,2);}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position;}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path);}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message);}return bytesWritten;},allocate:function allocate(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);}stream.stream_ops.allocate(stream,offset,length);},mmap:function mmap(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES);}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags);},msync:function msync(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0;}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags);},munmap:function munmap(stream){return 0;},ioctl:function ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);}return stream.stream_ops.ioctl(stream,cmd,arg);},readFile:function readFile(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"');}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0);}else if(opts.encoding==="binary"){ret=buf;}FS.close(stream);return ret;},writeFile:function writeFile(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn);}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);}else{throw new Error("Unsupported data type");}FS.close(stream);},cwd:function cwd(){return FS.currentPath;},chdir:function chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err);}FS.currentPath=lookup.path;},createDefaultDirectories:function createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user");},createDefaultDevices:function createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function read(){return 0;},write:function write(stream,buffer,offset,length,pos){return length;}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=function random_device(){crypto.getRandomValues(randomBuffer);return randomBuffer[0];};}else if(ENVIRONMENT_IS_NODE){random_device=function random_device(){return require("crypto")["randomBytes"](1)[0];};}else{random_device=function random_device(){return Math.random()*256|0;};}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp");},createSpecialDirectories:function createSpecialDirectories(){FS.mkdir("/proc");FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function mount(){var node=FS.createNode("/proc/self","fd",16384|511,73);node.node_ops={lookup:function lookup(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function readlink(){return stream.path;}}};ret.parent=ret;return ret;}};return node;}},{},"/proc/self/fd");},createStandardStreams:function createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"]);}else{FS.symlink("/dev/tty","/dev/stdin");}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"]);}else{FS.symlink("/dev/tty","/dev/stdout");}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"]);}else{FS.symlink("/dev/tty1","/dev/stderr");}var stdin=FS.open("/dev/stdin","r");assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")");},ensureErrnoError:function ensureErrnoError(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break;}}};this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack)Object.defineProperty(this,"stack",{value:new Error().stack,writable:true});};FS.ErrnoError.prototype=new Error();FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>";});},staticInit:function staticInit(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"IDBFS":IDBFS,"NODEFS":NODEFS,"WORKERFS":WORKERFS};},init:function init(input,output,error){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)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams();},quit:function quit(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue;}FS.close(stream);}},getMode:function getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode;},joinPath:function joinPath(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]=="/")path=path.substr(1);return path;},absolutePath:function absolutePath(relative,base){return PATH.resolve(base,relative);},standardizePath:function standardizePath(path){return PATH.normalize(path);},findObject:function findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object;}else{___setErrNo(ret.error);return null;}},analyzePath:function analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path;}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/";}catch(e){ret.error=e.errno;}return ret;},createFolder:function createFolder(parent,name,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.mkdir(path,mode);},createPath:function createPath(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current);}catch(e){}parent=current;}return current;},createFile:function createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode);},createDataFile:function createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i){arr[i]=data.charCodeAt(i);}data=arr;}FS.chmod(node,mode|146);var stream=FS.open(node,"w");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode);}return node;},createDevice:function createDevice(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function open(stream){stream.seekable=false;},close:function close(stream){if(output&&output.buffer&&output.buffer.length){output(10);}},read:function read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input();}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO);}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result;}if(bytesRead){stream.node.timestamp=Date.now();}return bytesRead;},write:function write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i]);}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO);}}if(length){stream.node.timestamp=Date.now();}return i;}});return FS.mkdev(path,mode,dev);},createLink:function createLink(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);return FS.symlink(target,path);},forceLoadFile:function forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;var success=true;if(typeof XMLHttpRequest!=="undefined"){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.");}else if(Module["read"]){try{obj.contents=intArrayFromString(Module["read"](obj.url),true);obj.usedBytes=obj.contents.length;}catch(e){success=false;}}else{throw new Error("Cannot load without read() or XMLHttpRequest.");}if(!success)___setErrNo(ERRNO_CODES.EIO);return success;},createLazyFile:function createLazyFile(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[];}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined;}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset];};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter;};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest();xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function doXHR(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest();xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined");}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[]);}else{return intArrayFromString(xhr.responseText||"",true);}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end);}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum];});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed");}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true;};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array();Object.defineProperties(lazyArray,{length:{get:function get(){if(!this.lengthKnown){this.cacheLength();}return this._length;}},chunkSize:{get:function get(){if(!this.lengthKnown){this.cacheLength();}return this._chunkSize;}}});var properties={isDevice:false,contents:lazyArray};}else{var properties={isDevice:false,url:url};}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents;}else if(properties.url){node.contents=null;node.url=properties.url;}Object.defineProperties(node,{usedBytes:{get:function get(){return this.contents.length;}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO);}return fn.apply(null,arguments);};});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO);}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i];}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i);}}return size;};node.stream_ops=stream_ops;return node;},createPreloadedFile:function createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn);}if(onload)onload();removeRunDependency(dep);}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep);});handled=true;}});if(!handled)finish(byteArray);}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray);},onerror);}else{processData(url);}},indexedDB:function indexedDB(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;},DB_NAME:function DB_NAME(){return"EM_FS_"+window.location.pathname;},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function saveFilesToDB(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION);}catch(e){return onerror(e);}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){console.log("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME);};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror();}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish();};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish();};});transaction.onerror=onerror;};openRequest.onerror=onerror;},loadFilesFromDB:function loadFilesFromDB(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION);}catch(e){return onerror(e);}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly");}catch(e){onerror(e);return;}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror();}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path);}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish();};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish();};});transaction.onerror=onerror;};openRequest.onerror=onerror;}};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function calculateAt(dirfd,path){if(path[0]!=="/"){var dir;if(dirfd===-100){dir=FS.cwd();}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);dir=dirstream.path;}path=PATH.join2(dir,path);}return path;},doStat:function doStat(func,path,buf){try{var stat=func(path);}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-ERRNO_CODES.ENOTDIR;}throw e;}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0;},doMsync:function doMsync(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags);},doMkdir:function doMkdir(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0;},doMknod:function doMknod(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL;}FS.mknod(path,mode,dev);return 0;},doReadlink:function doReadlink(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len;},doAccess:function doAccess(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL;}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES;}return 0;},doDup:function doDup(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd;},doReadv:function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break;}return ret;},doWritev:function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;}return ret;},varargs:0,get:function get(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret;},getStr:function getStr(){var ret=Pointer_stringify(SYSCALLS.get());return ret;},getStreamFromFD:function getStreamFromFD(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream;},getSocketFromFD:function getSocketFromFD(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket;},getSocketAddress:function getSocketAddress(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info;},get64:function get64(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low;},getZero:function getZero(){assert(SYSCALLS.get()===0);}};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0;}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt);}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt);}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL;}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd;};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0;};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0;};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL;}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd;}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0;};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL;};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp);};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};case 21524:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};default:abort("bad ioctl syscall "+op);}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0;}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___unlock(){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size);}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i);}embind_charCodes=codes;}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]];}return ret;}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown";}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name;}else{return name;}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body);}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"");}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name;}else{return this.name+": "+this.message;}};return errorClass;}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message);}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message);}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes;});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count");}for(var i=0;i<myTypes.length;++i){registerType(myTypes[i],myTypeConverters[i]);}}var typeConverters=new Array(dependentTypes.length);var unregisteredTypes=[];var registered=0;dependentTypes.forEach(function(dt,i){if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt];}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[];}awaitingDependencies[dt].push(function(){typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters);}});}});if(0===unregisteredTypes.length){onComplete(typeConverters);}}function registerType(rawType,registeredInstance,options){options=options||{};if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance");}var name=registeredInstance.name;if(!rawType){throwBindingError('type "'+name+'" must have a positive integer typeid pointer');}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return;}else{throwBindingError("Cannot register type '"+name+"' twice");}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(function(cb){cb();});}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function fromWireType(wt){return!!wt;},"toWireType":function toWireType(destructors,o){return o?trueValue:falseValue;},"argPackAdvance":8,"readValueFromPointer":function readValueFromPointer(pointer){var heap;if(size===1){heap=HEAP8;}else if(size===2){heap=HEAP16;}else if(size===4){heap=HEAP32;}else{throw new TypeError("Unknown boolean type size: "+name);}return this["fromWireType"](heap[pointer>>shift]);},destructorFunction:null});}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false;}if(!(other instanceof ClassHandle)){return false;}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass;}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass;}return leftClass===rightClass&&left===right;}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType};}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name;}throwBindingError(getInstanceTypeName(obj)+" instance already deleted");}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this;}else{var clone=Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}});clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone;}}function runDestructor(handle){var $$=handle.$$;if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr);}else{$$.ptrType.registeredClass.rawDestructor($$.ptr);}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion");}this.$$.count.value-=1;var toDelete=0===this.$$.count.value;if(toDelete){runDestructor(this);}if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined;}}function ClassHandle_isDeleted(){return!this.$$.ptr;}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]();}}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion");}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes);}this.$$.deleteScheduled=true;return this;}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater;}function ClassHandle(){}var registeredPointers={};function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!");}return proto[methodName].overloadTable[arguments.length].apply(this,arguments);};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc;}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice");}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!");}Module[name].overloadTable[numArguments]=value;}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments;}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[];}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name);}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass;}return ptr;}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name);}return 0;}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name);}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name);}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr;}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name);}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr);}return ptr;}else{return 0;}}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name);}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name);}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name);}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal");}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr;}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name);}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr;}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,__emval_register(function(){clonedHandle["delete"]();}));if(destructors!==null){destructors.push(this.rawDestructor,ptr);}}break;default:throwBindingError("Unsupporting sharing policy");}}return ptr;}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name);}return 0;}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name);}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name);}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name);}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr;}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2]);}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr);}return ptr;}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr);}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]();}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr;}if(undefined===desiredClass.baseClass){return null;}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null;}return desiredClass.downcast(rv);}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length;}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k]);}}return rv;}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes);}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction;}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined");}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass;}return ptr;}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr];}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType");}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified");}record.count={value:1};return Object.create(prototype,{$$:{value:record}});}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null;}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]();}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv;}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr});}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr});}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this);}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType;}else{toType=registeredPointerRecord.pointerType;}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this);}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr});}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp});}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType;}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&&registeredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}}else{this["toWireType"]=genericPointerToWireType;}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol");}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value;}else{Module[name]=value;Module[name].argCount=numArguments;}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i<signature.length;++i){args.push("a"+i);}var name="dynCall_"+signature+"_"+rawFunction;var body="return function "+name+"("+args.join(", ")+") {\n";body+=" return dynCall(rawFunction"+(args.length?", ":"")+args.join(", ")+");\n";body+="};\n";return new Function("dynCall","rawFunction",body)(dynCall,rawFunction);}var fp;if(Module["FUNCTION_TABLE_"+signature]!==undefined){fp=Module["FUNCTION_TABLE_"+signature][rawFunction];}else if(typeof FUNCTION_TABLE!=="undefined"){fp=FUNCTION_TABLE[rawFunction];}else{var dc=Module["asm"]["dynCall_"+signature];if(dc===undefined){dc=Module["asm"]["dynCall_"+signature.replace(/f/g,"d")];if(dc===undefined){throwBindingError("No dynCall invoker for signature: "+signature);}}fp=makeDynCaller(dc);}if(typeof fp!=="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction);}return fp;}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv;}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return;}if(registeredTypes[type]){return;}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return;}unboundTypes.push(type);seen[type]=true;}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]));}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast);}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast);}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError("Cannot construct "+name+" due to unbound types",[baseClassRawType]);});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype;}else{basePrototype=ClassHandle.prototype;}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name);}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor");}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError("Tried to invoke ctor of "+name+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(registeredClass.constructor_body).toString()+") parameters instead!");}return body.apply(this,arguments);});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter];});}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i<count;i++){array.push(HEAP32[(firstElement>>2)+i]);}return array;}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr);}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[];}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");}classType.registeredClass.constructor_body[argCount-1]=function unboundTypeHandler(){throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes);};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+" called with "+arguments.length+" arguments, expected "+(argCount-1));}var destructors=[];var args=new Array(argCount);args[0]=rawConstructor;for(var i=1;i<argCount;++i){args[i]=argTypes[i]["toWireType"](destructors,arguments[i-1]);}var ptr=invoker.apply(null,args);runDestructors(destructors);return argTypes[0]["fromWireType"](ptr);};return[];});return[];});}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+(typeof constructor==='undefined'?'undefined':_typeof(constructor))+" which is not a function");}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy();var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj;}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!");}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i<argTypes.length;++i){if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){needsDestructorStack=true;break;}}var returns=argTypes[0].name!=="void";var argsList="";var argsListWired="";for(var i=0;i<argCount-2;++i){argsList+=(i!==0?", ":"")+"arg"+i;argsListWired+=(i!==0?", ":"")+"arg"+i+"Wired";}var invokerFnBody="return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n"+"if (arguments.length !== "+(argCount-2)+") {\n"+"throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount-2)+" args!');\n"+"}\n";if(needsDestructorStack){invokerFnBody+="var destructors = [];\n";}var dtorStack=needsDestructorStack?"destructors":"null";var args1=["throwBindingError","invoker","fn","runDestructors","retType","classParam"];var args2=[throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,argTypes[0],argTypes[1]];if(isClassMethodFunc){invokerFnBody+="var thisWired = classParam.toWireType("+dtorStack+", this);\n";}for(var i=0;i<argCount-2;++i){invokerFnBody+="var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n";args1.push("argType"+i);args2.push(argTypes[i+2]);}if(isClassMethodFunc){argsListWired="thisWired"+(argsListWired.length>0?", ":"")+argsListWired;}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n";}else{for(var i=isClassMethodFunc?1:2;i<argTypes.length;++i){var paramName=i===1?"thisWired":"arg"+(i-2)+"Wired";if(argTypes[i].destructorFunction!==null){invokerFnBody+=paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n";args1.push(paramName+"_dtor");args2.push(argTypes[i].destructorFunction);}}}if(returns){invokerFnBody+="var ret = retType.fromWireType(rv);\n"+"return ret;\n";}else{}invokerFnBody+="}\n";args1.push(invokerFnBody);var invokerFunction=new_(Function,args1).apply(null,args2);return invokerFunction;}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName);}function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes);}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler;}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler;}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction;}else{proto[methodName].overloadTable[argCount-2]=memberFunction;}return[];});return[];});}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle);}}function count_emval_handles(){var count=0;for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){++count;}}return count;}function get_first_emval(){for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){return emval_handle_array[i];}}return null;}function init_emval(){Module["count_emval_handles"]=count_emval_handles;Module["get_first_emval"]=get_first_emval;}function __emval_register(value){switch(value){case undefined:{return 1;};case null:{return 2;};case true:{return 3;};case false:{return 4;};default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle;}}}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function fromWireType(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv;},"toWireType":function toWireType(destructors,value){return __emval_register(value);},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null});}function _embind_repr(v){if(v===null){return"null";}var t=typeof v==='undefined'?'undefined':_typeof(v);if(t==="object"||t==="array"||t==="function"){return v.toString();}else{return""+v;}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2]);};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3]);};default:throw new TypeError("Unknown float type: "+name);}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function fromWireType(value){return value;},"toWireType":function toWireType(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name);}return value;},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null});}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes);},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[];});}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer];}:function readU8FromPointer(pointer){return HEAPU8[pointer];};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1];}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1];};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2];}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2];};default:throw new TypeError("Unknown integer type: "+name);}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295;}var shift=getShiftFromSize(size);var fromWireType=function fromWireType(value){return value;};if(minRange===0){var bitshift=32-8*size;fromWireType=function fromWireType(value){return value<<bitshift>>>bitshift;};}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function toWireType(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name);}if(value<minRange||value>maxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!");}return isUnsignedType?value>>>0:value|0;},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null});}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size);}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true});}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function fromWireType(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var endChar=HEAPU8[value+4+length];var endCharSwap=0;if(endChar!=0){endCharSwap=endChar;HEAPU8[value+4+length]=0;}var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0){var stringSegment=UTF8ToString(decodeStartPtr);if(str===undefined)str=stringSegment;else{str+=String.fromCharCode(0);str+=stringSegment;}decodeStartPtr=currentBytePtr+1;}}if(endCharSwap!=0)HEAPU8[value+4+length]=endCharSwap;}else{var a=new Array(length);for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAPU8[value+4+i]);}str=a.join("");}_free(value);return str;},"toWireType":function toWireType(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value);}var getLength;var valueIsOfTypeString=typeof value==="string";if(!(valueIsOfTypeString||value instanceof Uint8Array||value instanceof Uint8ClampedArray||value instanceof Int8Array)){throwBindingError("Cannot pass non-string to std::string");}if(stdStringIsUTF8&&valueIsOfTypeString){getLength=function getLength(){return lengthBytesUTF8(value);};}else{getLength=function getLength(){return value.length;};}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1);}else{if(valueIsOfTypeString){for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);if(charCode>255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits");}HEAPU8[ptr+4+i]=charCode;}}else{for(var i=0;i<length;++i){HEAPU8[ptr+4+i]=value[i];}}}if(destructors!==null){destructors.push(_free,ptr);}return ptr;},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function destructorFunction(ptr){_free(ptr);}});}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var getHeap,shift;if(charSize===2){getHeap=function getHeap(){return HEAPU16;};shift=1;}else if(charSize===4){getHeap=function getHeap(){return HEAPU32;};shift=2;}registerType(rawType,{name:name,"fromWireType":function fromWireType(value){var HEAP=getHeap();var length=HEAPU32[value>>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAP[start+i]);}_free(value);return a.join("");},"toWireType":function toWireType(destructors,value){var HEAP=getHeap();var length=value.length;var ptr=_malloc(4+length*charSize);HEAPU32[ptr>>2]=length;var start=ptr+4>>shift;for(var i=0;i<length;++i){HEAP[start+i]=value.charCodeAt(i);}if(destructors!==null){destructors.push(_free,ptr);}return ptr;},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function destructorFunction(ptr){_free(ptr);}});}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function fromWireType(){return undefined;},"toWireType":function toWireType(destructors,o){return undefined;}});}function requireHandle(handle){if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle);}return emval_handle_array[handle].value;}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType));}return impl;}function __emval_as(handle,returnType,destructorsRef){handle=requireHandle(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=__emval_register(destructors);HEAP32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle);}function __emval_lookupTypes(argCount,argTypes,argWireTypes){var a=new Array(argCount);for(var i=0;i<argCount;++i){a[i]=requireRegisteredType(HEAP32[(argTypes>>2)+i],"parameter "+i);}return a;}function __emval_call(handle,argCount,argTypes,argv){handle=requireHandle(handle);var types=__emval_lookupTypes(argCount,argTypes);var args=new Array(argCount);for(var i=0;i<argCount;++i){var type=types[i];args[i]=type["readValueFromPointer"](argv);argv+=type["argPackAdvance"];}var rv=handle.apply(undefined,args);return __emval_register(rv);}function __emval_allocateDestructors(destructorsRef){var destructors=[];HEAP32[destructorsRef>>2]=__emval_register(destructors);return destructors;}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address);}else{return symbol;}}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args);}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id;}function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name;}).join("_")+"$";var params=["retType"];var args=[retType];var argsList="";for(var i=0;i<argCount-1;++i){argsList+=(i!==0?", ":"")+"arg"+i;params.push("argType"+i);args.push(types[1+i]);}var functionName=makeLegalFunctionName("methodCaller_"+signatureName);var functionBody="return function "+functionName+"(handle, name, destructors, args) {\n";var offset=0;for(var i=0;i<argCount-1;++i){functionBody+=" var arg"+i+" = argType"+i+".readValueFromPointer(args"+(offset?"+"+offset:"")+");\n";offset+=types[i+1]["argPackAdvance"];}functionBody+=" var rv = handle[name]("+argsList+");\n";for(var i=0;i<argCount-1;++i){if(types[i+1]["deleteObject"]){functionBody+=" argType"+i+".deleteObject(arg"+i+");\n";}}if(!retType.isVoid){functionBody+=" return retType.toWireType(destructors, rv);\n";}functionBody+="};\n";params.push(functionBody);var invokerFunction=new_(Function,params).apply(null,args);return __emval_addMethodCaller(invokerFunction);}function __emval_get_module_property(name){name=getStringOrSymbol(name);return __emval_register(Module[name]);}function __emval_get_property(handle,key){handle=requireHandle(handle);key=requireHandle(key);return __emval_register(handle[key]);}function __emval_incref(handle){if(handle>4){emval_handle_array[handle].refcount+=1;}}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;i<argCount;++i){argsList+=(i!==0?", ":"")+"arg"+i;}var functionBody="return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n";for(var i=0;i<argCount;++i){functionBody+="var argType"+i+" = requireRegisteredType(HEAP32[(argTypes >> 2) + "+i+'], "parameter '+i+'");\n'+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n";}functionBody+="var obj = new constructor("+argsList+");\n"+"return __emval_register(obj);\n"+"}\n";return new Function("requireRegisteredType","HEAP32","__emval_register",functionBody)(requireRegisteredType,HEAP32,__emval_register);}var emval_newers={};function __emval_new(handle,argCount,argTypes,args){handle=requireHandle(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer;}return newer(handle,argTypes,args);}function __emval_new_cstring(v){return __emval_register(getStringOrSymbol(v));}function __emval_run_destructors(handle){var destructors=emval_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle);}function __emval_take_value(type,argv){type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](argv);return __emval_register(v);}function _abort(){Module["abort"]();}function _llvm_cttz_i32(x){x=x|0;return(x?31-(Math_clz32(x^x-1)|0)|0:32)|0;}function _llvm_cttz_i64(l,h){var ret=_llvm_cttz_i32(l);if(ret==32)ret+=_llvm_cttz_i32(h);return(setTempRet0(0),ret)|0;}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest;}var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0;}var PTHREAD_SPECIFIC_NEXT_KEY=1;function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL;}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0;}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1;}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL;}PTHREAD_SPECIFIC[key]=value;return 0;}FS.staticInit();__ATINIT__.unshift(function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();});__ATMAIN__.push(function(){FS.ignorePermissions=false;});__ATEXIT__.push(function(){FS.quit();});__ATINIT__.unshift(function(){TTY.init();});__ATEXIT__.push(function(){TTY.shutdown();});if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit();}embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array;}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.");}chr&=255;}ret.push(String.fromCharCode(chr));}return ret.join("");}var decodeBase64=typeof atob==="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2);}if(enc4!==64){output=output+String.fromCharCode(chr3);}}while(i<input.length);return output;};function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE==="boolean"&&ENVIRONMENT_IS_NODE){var buf;try{buf=Buffer.from(s,"base64");}catch(_){buf=new Buffer(s,"base64");}return new Uint8Array(buf.buffer,buf.byteOffset,buf.byteLength);}try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i);}return bytes;}catch(_){throw new Error("Converting base64 string to bytes failed.");}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return;}return intArrayFromBase64(filename.slice(dataURIPrefix.length));}Module["wasmTableSize"]=412;Module["wasmMaxTableSize"]=412;function invoke_i(index){var sp=_stackSave();try{return Module["dynCall_i"](index);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_ii(index,a1){var sp=_stackSave();try{return Module["dynCall_ii"](index,a1);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iii(index,a1,a2){var sp=_stackSave();try{return Module["dynCall_iii"](index,a1,a2);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiii(index,a1,a2,a3){var sp=_stackSave();try{return Module["dynCall_iiii"](index,a1,a2,a3);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=_stackSave();try{return Module["dynCall_iiiii"](index,a1,a2,a3,a4);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=_stackSave();try{return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=_stackSave();try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_v(index){var sp=_stackSave();try{Module["dynCall_v"](index);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_vi(index,a1){var sp=_stackSave();try{Module["dynCall_vi"](index,a1);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_vii(index,a1,a2){var sp=_stackSave();try{Module["dynCall_vii"](index,a1,a2);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viii(index,a1,a2,a3){var sp=_stackSave();try{Module["dynCall_viii"](index,a1,a2,a3);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viiii(index,a1,a2,a3,a4){var sp=_stackSave();try{Module["dynCall_viiii"](index,a1,a2,a3,a4);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=_stackSave();try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=_stackSave();try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}Module.asmGlobalArg={};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_i":invoke_i,"invoke_ii":invoke_ii,"invoke_iii":invoke_iii,"invoke_iiii":invoke_iiii,"invoke_iiiii":invoke_iiiii,"invoke_iiiiii":invoke_iiiiii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_v":invoke_v,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_viii":invoke_viii,"invoke_viiii":invoke_viiii,"invoke_viiiii":invoke_viiiii,"invoke_viiiiii":invoke_viiiiii,"ClassHandle":ClassHandle,"ClassHandle_clone":ClassHandle_clone,"ClassHandle_delete":ClassHandle_delete,"ClassHandle_deleteLater":ClassHandle_deleteLater,"ClassHandle_isAliasOf":ClassHandle_isAliasOf,"ClassHandle_isDeleted":ClassHandle_isDeleted,"RegisteredClass":RegisteredClass,"RegisteredPointer":RegisteredPointer,"RegisteredPointer_deleteObject":RegisteredPointer_deleteObject,"RegisteredPointer_destructor":RegisteredPointer_destructor,"RegisteredPointer_fromWireType":RegisteredPointer_fromWireType,"RegisteredPointer_getPointee":RegisteredPointer_getPointee,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"___cxa_allocate_exception":___cxa_allocate_exception,"___cxa_begin_catch":___cxa_begin_catch,"___cxa_find_matching_catch":___cxa_find_matching_catch,"___cxa_throw":___cxa_throw,"___gxx_personality_v0":___gxx_personality_v0,"___lock":___lock,"___resumeException":___resumeException,"___setErrNo":___setErrNo,"___syscall140":___syscall140,"___syscall145":___syscall145,"___syscall146":___syscall146,"___syscall221":___syscall221,"___syscall5":___syscall5,"___syscall54":___syscall54,"___syscall6":___syscall6,"___unlock":___unlock,"__embind_register_bool":__embind_register_bool,"__embind_register_class":__embind_register_class,"__embind_register_class_constructor":__embind_register_class_constructor,"__embind_register_class_function":__embind_register_class_function,"__embind_register_emval":__embind_register_emval,"__embind_register_float":__embind_register_float,"__embind_register_function":__embind_register_function,"__embind_register_integer":__embind_register_integer,"__embind_register_memory_view":__embind_register_memory_view,"__embind_register_std_string":__embind_register_std_string,"__embind_register_std_wstring":__embind_register_std_wstring,"__embind_register_void":__embind_register_void,"__emval_addMethodCaller":__emval_addMethodCaller,"__emval_allocateDestructors":__emval_allocateDestructors,"__emval_as":__emval_as,"__emval_call":__emval_call,"__emval_call_void_method":__emval_call_void_method,"__emval_decref":__emval_decref,"__emval_get_method_caller":__emval_get_method_caller,"__emval_get_module_property":__emval_get_module_property,"__emval_get_property":__emval_get_property,"__emval_incref":__emval_incref,"__emval_lookupTypes":__emval_lookupTypes,"__emval_new":__emval_new,"__emval_new_cstring":__emval_new_cstring,"__emval_register":__emval_register,"__emval_run_destructors":__emval_run_destructors,"__emval_take_value":__emval_take_value,"_abort":_abort,"_embind_repr":_embind_repr,"_emscripten_memcpy_big":_emscripten_memcpy_big,"_llvm_cttz_i32":_llvm_cttz_i32,"_llvm_cttz_i64":_llvm_cttz_i64,"_pthread_getspecific":_pthread_getspecific,"_pthread_key_create":_pthread_key_create,"_pthread_once":_pthread_once,"_pthread_setspecific":_pthread_setspecific,"constNoSmartPtrRawPointerToWireType":constNoSmartPtrRawPointerToWireType,"count_emval_handles":count_emval_handles,"craftEmvalAllocator":craftEmvalAllocator,"craftInvokerFunction":craftInvokerFunction,"createNamedFunction":createNamedFunction,"downcastPointer":downcastPointer,"embind__requireFunction":embind__requireFunction,"embind_init_charCodes":embind_init_charCodes,"ensureOverloadTable":ensureOverloadTable,"exposePublicSymbol":exposePublicSymbol,"extendError":extendError,"floatReadValueFromPointer":floatReadValueFromPointer,"flushPendingDeletes":flushPendingDeletes,"genericPointerToWireType":genericPointerToWireType,"getBasestPointer":getBasestPointer,"getInheritedInstance":getInheritedInstance,"getInheritedInstanceCount":getInheritedInstanceCount,"getLiveInheritedInstances":getLiveInheritedInstances,"getShiftFromSize":getShiftFromSize,"getStringOrSymbol":getStringOrSymbol,"getTypeName":getTypeName,"get_first_emval":get_first_emval,"heap32VectorToArray":heap32VectorToArray,"init_ClassHandle":init_ClassHandle,"init_RegisteredPointer":init_RegisteredPointer,"init_embind":init_embind,"init_emval":init_emval,"integerReadValueFromPointer":integerReadValueFromPointer,"makeClassHandle":makeClassHandle,"makeLegalFunctionName":makeLegalFunctionName,"new_":new_,"nonConstNoSmartPtrRawPointerToWireType":nonConstNoSmartPtrRawPointerToWireType,"readLatin1String":readLatin1String,"registerType":registerType,"replacePublicSymbol":replacePublicSymbol,"requireHandle":requireHandle,"requireRegisteredType":requireRegisteredType,"runDestructor":runDestructor,"runDestructors":runDestructors,"setDelayFunction":setDelayFunction,"shallowCopyInternalPointer":shallowCopyInternalPointer,"simpleReadValueFromPointer":simpleReadValueFromPointer,"throwBindingError":throwBindingError,"throwInstanceAlreadyDeleted":throwInstanceAlreadyDeleted,"throwInternalError":throwInternalError,"throwUnboundTypeError":throwUnboundTypeError,"upcastPointer":upcastPointer,"whenDependentTypesAreResolved":whenDependentTypesAreResolved,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX};var asm=Module["asm"](Module.asmGlobalArg,Module.asmLibraryArg,buffer);Module["asm"]=asm;var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=function(){return Module["asm"]["__GLOBAL__sub_I_bind_cpp"].apply(null,arguments);};var __GLOBAL__sub_I_zstd_binding_cc=Module["__GLOBAL__sub_I_zstd_binding_cc"]=function(){return Module["asm"]["__GLOBAL__sub_I_zstd_binding_cc"].apply(null,arguments);};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return Module["asm"]["___cxa_can_catch"].apply(null,arguments);};var ___cxa_demangle=Module["___cxa_demangle"]=function(){return Module["asm"]["___cxa_demangle"].apply(null,arguments);};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return Module["asm"]["___cxa_is_pointer_type"].apply(null,arguments);};var ___errno_location=Module["___errno_location"]=function(){return Module["asm"]["___errno_location"].apply(null,arguments);};var ___getTypeName=Module["___getTypeName"]=function(){return Module["asm"]["___getTypeName"].apply(null,arguments);};var _free=Module["_free"]=function(){return Module["asm"]["_free"].apply(null,arguments);};var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=function(){return Module["asm"]["_llvm_bswap_i32"].apply(null,arguments);};var _llvm_ctlz_i64=Module["_llvm_ctlz_i64"]=function(){return Module["asm"]["_llvm_ctlz_i64"].apply(null,arguments);};var _malloc=Module["_malloc"]=function(){return Module["asm"]["_malloc"].apply(null,arguments);};var _memcpy=Module["_memcpy"]=function(){return Module["asm"]["_memcpy"].apply(null,arguments);};var _memmove=Module["_memmove"]=function(){return Module["asm"]["_memmove"].apply(null,arguments);};var _memset=Module["_memset"]=function(){return Module["asm"]["_memset"].apply(null,arguments);};var _sbrk=Module["_sbrk"]=function(){return Module["asm"]["_sbrk"].apply(null,arguments);};var establishStackSpace=Module["establishStackSpace"]=function(){return Module["asm"]["establishStackSpace"].apply(null,arguments);};var getTempRet0=Module["getTempRet0"]=function(){return Module["asm"]["getTempRet0"].apply(null,arguments);};var runPostSets=Module["runPostSets"]=function(){return Module["asm"]["runPostSets"].apply(null,arguments);};var setTempRet0=Module["setTempRet0"]=function(){return Module["asm"]["setTempRet0"].apply(null,arguments);};var setThrew=Module["setThrew"]=function(){return Module["asm"]["setThrew"].apply(null,arguments);};var stackAlloc=Module["stackAlloc"]=function(){return Module["asm"]["stackAlloc"].apply(null,arguments);};var _stackRestore=Module["stackRestore"]=function(){return Module["asm"]["stackRestore"].apply(null,arguments);};var _stackSave=Module["stackSave"]=function(){return Module["asm"]["stackSave"].apply(null,arguments);};var dynCall_i=Module["dynCall_i"]=function(){return Module["asm"]["dynCall_i"].apply(null,arguments);};var dynCall_ii=Module["dynCall_ii"]=function(){return Module["asm"]["dynCall_ii"].apply(null,arguments);};var dynCall_iii=Module["dynCall_iii"]=function(){return Module["asm"]["dynCall_iii"].apply(null,arguments);};var dynCall_iiii=Module["dynCall_iiii"]=function(){return Module["asm"]["dynCall_iiii"].apply(null,arguments);};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return Module["asm"]["dynCall_iiiii"].apply(null,arguments);};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return Module["asm"]["dynCall_iiiiii"].apply(null,arguments);};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return Module["asm"]["dynCall_iiiiiii"].apply(null,arguments);};var dynCall_v=Module["dynCall_v"]=function(){return Module["asm"]["dynCall_v"].apply(null,arguments);};var dynCall_vi=Module["dynCall_vi"]=function(){return Module["asm"]["dynCall_vi"].apply(null,arguments);};var dynCall_vii=Module["dynCall_vii"]=function(){return Module["asm"]["dynCall_vii"].apply(null,arguments);};var dynCall_viii=Module["dynCall_viii"]=function(){return Module["asm"]["dynCall_viii"].apply(null,arguments);};var dynCall_viiii=Module["dynCall_viiii"]=function(){return Module["asm"]["dynCall_viiii"].apply(null,arguments);};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return Module["asm"]["dynCall_viiiii"].apply(null,arguments);};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return Module["asm"]["dynCall_viiiiii"].apply(null,arguments);};Module["asm"]=asm;Module["FS"]=FS;Module["then"]=function(func){if(Module["calledRun"]){func(Module);}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=function(){if(old)old();func(Module);};}return Module;};function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status;}ExitStatus.prototype=new Error();ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller;};function run(args){args=args||Module["arguments"];if(runDependencies>0){return;}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun();}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("");},1);doRun();},1);}else{doRun();}}Module["run"]=run;function abort(what){if(Module["onAbort"]){Module["onAbort"](what);}if(what!==undefined){out(what);err(what);what=JSON.stringify(what);}else{what="";}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info.";}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()();}}Module["noExitRuntime"]=true;run();return Module;};}();if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof(module))==='object')module.exports=Module;else if(typeof define==='function'&&define['amd'])define([],function(){return Module;});else if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object')exports["Module"]=Module;
  21. }).call(this,require('_process'),require("buffer").Buffer,"/lib")
  22. },{"_process":126,"buffer":54,"crypto":63,"fs":9,"path":119}],6:[function(require,module,exports){
  23. (function (process,Buffer,__dirname){
  24. 'use strict';var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};var Module=function(){var _scriptDir=typeof document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return function(Module){Module=Module||{};var Module;if(!Module)Module=typeof Module!=='undefined'?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key];}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=function(status,toThrow){throw toThrow;};Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=(typeof window==='undefined'?'undefined':_typeof(window))==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=(typeof process==='undefined'?'undefined':_typeof(process))==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory);}else{return scriptDirectory+path;}}if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+"/";var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename);}return binary?ret:ret.toString();};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret);}assert(ret.buffer);return ret;};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/");}Module["arguments"]=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex;}});process["on"]("unhandledRejection",function(reason,p){process["exit"](1);});Module["quit"]=function(status){process["exit"](status);};Module["inspect"]=function(){return"[Emscripten Module object]";};}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data);}return read(f);};}Module["readBinary"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data;}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f));}data=read(f,"binary");assert((typeof data==='undefined'?'undefined':_typeof(data))==="object");return data;};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs;}else if(typeof arguments!="undefined"){Module["arguments"]=arguments;}if(typeof quit==="function"){Module["quit"]=function(status){quit(status);};}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WEB){if(document.currentScript){scriptDirectory=document.currentScript.src;}}else{scriptDirectory=self.location.href;}if(_scriptDir){scriptDirectory=_scriptDir;}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.split("/").slice(0,-1).join("/")+"/";}else{scriptDirectory="";}Module["read"]=function shell_read(url){try{var xhr=new XMLHttpRequest();xhr.open("GET",url,false);xhr.send(null);return xhr.responseText;}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data);}throw err;}};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){try{var xhr=new XMLHttpRequest();xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response);}catch(err){var data=tryParseAsDataURI(url);if(data){return data;}throw err;}};}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest();xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return;}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return;}onerror();};xhr.onerror=onerror;xhr.send(null);};Module["setWindowTitle"]=function(title){document.title=title;};}else{}var out=Module["print"]||(typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null);var err=Module["printErr"]||(typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key];}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret;}function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0;}}return ret;}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret;}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4;}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8;}else{return 0;}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text);}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args));}else{return Module["dynCall_"+sig].call(null,ptr);}}var GLOBAL_BASE=8;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text);}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func;}var JSfuncs={"stackSave":function stackSave(){_stackSave();},"stackRestore":function stackRestore(){_stackRestore();},"arrayToC":function arrayToC(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret;},"stringToC":function stringToC(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len);}return ret;}};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(ident,returnType,argTypes,args,opts){function convertReturnValue(ret){if(returnType==="string")return Pointer_stringify(ret);if(returnType==="boolean")return Boolean(ret);return ret;}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=_stackSave();cArgs[i]=converter(args[i]);}else{cArgs[i]=args[i];}}}var ret=func.apply(null,cArgs);ret=convertReturnValue(ret);if(stack!==0)_stackRestore(stack);return ret;}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":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)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type);}}var ALLOC_STATIC=2;var ALLOC_NONE=4;function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break;}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK;}return ret;}return UTF8ToString(ptr);}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr]){++endPtr;}if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr));}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue;}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue;}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2;}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3;}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4;}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5;}}}if(u0<65536){str+=String.fromCharCode(u0);}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023);}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr);}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023;}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u;}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63;}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}}outU8Array[outIdx]=0;return outIdx-startIdx;}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len;}else if(u<=2047){len+=2;}else if(u<=65535){len+=3;}else if(u<=2097151){len+=4;}else if(u<=67108863){len+=5;}else{len+=6;}}return len;}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"]||Module["__cxa_demangle"];assert(__cxa_demangle_func);try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(HEAP32[status>>2]===0&&ret){return Pointer_stringify(ret);}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret);}return func;}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]";});}function jsStackTrace(){var err=new Error();if(!err.stack){try{throw new Error(0);}catch(e){err=e;}if(!err.stack){return"(no stack trace available)";}}return err.stack.toString();}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js);}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer);}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ");}function enlargeMemory(){abortOnCannotGrowMemory();}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY<TOTAL_STACK)err("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+TOTAL_MEMORY+"! (TOTAL_STACK="+TOTAL_STACK+")");if(Module["buffer"]){buffer=Module["buffer"];}else{{buffer=new ArrayBuffer(TOTAL_MEMORY);}Module["buffer"]=buffer;}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY;}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue;}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func);}else{Module["dynCall_vi"](func,callback.arg);}}else{func(callback.arg===undefined?null:callback.arg);}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift());}}callRuntimeCallbacks(__ATPRERUN__);}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__);}function preMain(){callRuntimeCallbacks(__ATMAIN__);}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true;}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift());}}callRuntimeCallbacks(__ATPOSTRUN__);}function addOnPreRun(cb){__ATPRERUN__.unshift(cb);}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb);}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer);}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i);}if(!dontAddNull)HEAP8[buffer>>0]=0;}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id;}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies);}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies);}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null;}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback();}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0;}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+22272;__ATINIT__.push({func:function func(){__GLOBAL__sub_I_zstd_binding_cc();}},{func:function func(){__GLOBAL__sub_I_bind_cpp();}});memoryInitializer="data:application/octet-stream;base64,AAAAAAAAAACwKgAASCcAAAgrAADQKgAAwCoAADAnAAAIKwAA0CoAAPAqAADwJwAAMCcAADAnAADwKgAAAAAAAAAAAAAAAAAA8CoAAPAnAAAwJwAAMCcAAPAqAADwJwAAMCcAADAnAABwJwAAAAAAAAAAAAAAAAAA8CoAAPAnAAAwJwAAMCcAAKgnAAAAAAAAAAAAAAAAAADAKgAACCgAAHAmAABwJgAAwCoAADAoAABwJgAAcCYAAAAAAABrOAcADbIHAJzyBwBwZAgAYK4KALBxCwAwqgwAEwAAAAwAAAANAAAAAQAAAAYAAAABAAAAAQAAABMAAAANAAAADgAAAAEAAAAHAAAAAQAAAAEAAAATAAAADwAAABAAAAABAAAABgAAAAEAAAABAAAAFAAAABAAAAARAAAAAQAAAAUAAAAIAAAAAgAAABQAAAARAAAAEgAAAAEAAAAFAAAACAAAAAIAAAAUAAAAEQAAABIAAAACAAAABQAAABAAAAADAAAAFQAAABEAAAATAAAAAgAAAAUAAAAQAAAABAAAABUAAAASAAAAEwAAAAMAAAAFAAAAEAAAAAQAAAAVAAAAEgAAABQAAAADAAAABQAAABAAAAAFAAAAFQAAABMAAAAUAAAAAwAAAAUAAAAQAAAABQAAABUAAAATAAAAFQAAAAQAAAAFAAAAEAAAAAUAAAAWAAAAFAAAABYAAAAEAAAABQAAABAAAAAFAAAAFgAAABQAAAAWAAAABQAAAAUAAAAQAAAABQAAABYAAAAVAAAAFgAAAAQAAAAFAAAAIAAAAAYAAAAWAAAAFQAAABYAAAAFAAAABQAAACAAAAAGAAAAFgAAABYAAAAWAAAABgAAAAUAAAAgAAAABgAAABYAAAAVAAAAFgAAAAQAAAAFAAAAMAAAAAcAAAAXAAAAFgAAABYAAAAEAAAABAAAADAAAAAHAAAAFwAAABYAAAAWAAAABQAAAAMAAABAAAAABwAAABcAAAAXAAAAFgAAAAcAAAADAAAAgAAAAAcAAAAZAAAAGQAAABcAAAAHAAAAAwAAAIAAAAAIAAAAGgAAABoAAAAYAAAABwAAAAMAAAAAAQAACAAAABsAAAAbAAAAGQAAAAkAAAADAAAAAAIAAAgAAAASAAAADAAAAA0AAAABAAAABQAAAAEAAAABAAAAEgAAAA0AAAAOAAAAAQAAAAYAAAABAAAAAQAAABIAAAAOAAAADQAAAAEAAAAFAAAACAAAAAIAAAASAAAAEAAAAA8AAAABAAAABQAAAAgAAAACAAAAEgAAAA8AAAARAAAAAQAAAAUAAAAIAAAAAwAAABIAAAAQAAAAEQAAAAQAAAAFAAAACAAAAAMAAAASAAAAEAAAABEAAAADAAAABQAAAAgAAAAEAAAAEgAAABEAAAARAAAABAAAAAQAAAAIAAAABAAAABIAAAARAAAAEQAAAAQAAAAEAAAACAAAAAUAAAASAAAAEQAAABEAAAAFAAAABAAAAAgAAAAFAAAAEgAAABEAAAARAAAABgAAAAQAAAAIAAAABQAAABIAAAASAAAAEQAAAAYAAAAEAAAACAAAAAUAAAASAAAAEgAAABEAAAAFAAAABAAAAAgAAAAGAAAAEgAAABMAAAARAAAABwAAAAQAAAAIAAAABgAAABIAAAASAAAAEgAAAAQAAAAEAAAAEAAAAAcAAAASAAAAEgAAABIAAAAEAAAAAwAAABAAAAAHAAAAEgAAABMAAAASAAAABgAAAAMAAAAgAAAABwAAABIAAAATAAAAEgAAAAgAAAADAAAAQAAAAAcAAAASAAAAEwAAABIAAAAJAAAAAwAAAIAAAAAHAAAAEgAAABMAAAASAAAACgAAAAMAAAAAAQAABwAAABIAAAATAAAAEgAAAAsAAAADAAAAAAIAAAgAAAASAAAAEwAAABIAAAAMAAAAAwAAAAACAAAIAAAAEgAAABMAAAASAAAADQAAAAMAAAAAAgAACAAAABEAAAAMAAAADAAAAAEAAAAFAAAAAQAAAAEAAAARAAAADAAAAA0AAAABAAAABgAAAAEAAAABAAAAEQAAAA0AAAAQAAAAAQAAAAUAAAABAAAAAQAAABEAAAAQAAAAEAAAAAIAAAAFAAAACAAAAAIAAAARAAAADQAAAA8AAAADAAAABAAAAAgAAAADAAAAEQAAAA8AAAARAAAABAAAAAQAAAAIAAAAAwAAABEAAAAQAAAAEQAAAAMAAAAEAAAACAAAAAQAAAARAAAADwAAABEAAAAEAAAABAAAAAgAAAAFAAAAEQAAABEAAAARAAAABAAAAAQAAAAIAAAABQAAABEAAAARAAAAEQAAAAUAAAAEAAAACAAAAAUAAAARAAAAEQAAABEAAAAGAAAABAAAAAgAAAAFAAAAEQAAABEAAAARAAAABwAAAAQAAAAIAAAABQAAABEAAAARAAAAEQAAAAgAAAAEAAAACAAAAAUAAAARAAAAEgAAABEAAAAGAAAABAAAAAgAAAAGAAAAEQAAABEAAAARAAAABwAAAAMAAAAIAAAABwAAABEAAAARAAAAEQAAAAcAAAADAAAAEAAAAAcAAAARAAAAEgAAABEAAAAHAAAAAwAAACAAAAAHAAAAEQAAABIAAAARAAAABwAAAAMAAABAAAAABwAAABEAAAASAAAAEQAAAAcAAAADAAAAAAEAAAcAAAARAAAAEgAAABEAAAAIAAAAAwAAAAABAAAHAAAAEQAAABIAAAARAAAACQAAAAMAAAAAAQAACAAAABEAAAASAAAAEQAAAAoAAAADAAAAAAEAAAgAAAARAAAAEgAAABEAAAALAAAAAwAAAAACAAAIAAAADgAAAAwAAAANAAAAAQAAAAUAAAABAAAAAQAAAA4AAAAOAAAADgAAAAEAAAAGAAAAAQAAAAEAAAAOAAAADgAAAA4AAAABAAAABAAAAAEAAAABAAAADgAAAA4AAAAOAAAAAQAAAAQAAAAGAAAAAgAAAA4AAAAOAAAADgAAAAQAAAAEAAAABgAAAAMAAAAOAAAADgAAAA4AAAADAAAABAAAAAYAAAAEAAAADgAAAA4AAAAOAAAABAAAAAQAAAAGAAAABQAAAA4AAAAOAAAADgAAAAUAAAAEAAAABgAAAAUAAAAOAAAADgAAAA4AAAAGAAAABAAAAAYAAAAFAAAADgAAAA8AAAAOAAAABgAAAAQAAAAGAAAABgAAAA4AAAAPAAAADgAAAAMAAAADAAAABgAAAAcAAAAOAAAADwAAAA4AAAAGAAAAAwAAAAgAAAAHAAAADgAAAA8AAAAOAAAABgAAAAMAAAAQAAAABwAAAA4AAAAPAAAADgAAAAYAAAADAAAAGAAAAAcAAAAOAAAADwAAAA8AAAAGAAAAAwAAADAAAAAHAAAADgAAAA8AAAAPAAAABgAAAAMAAABAAAAABwAAAA4AAAAPAAAADwAAAAYAAAADAAAAYAAAAAcAAAAOAAAADwAAAA8AAAAGAAAAAwAAAIAAAAAHAAAADgAAAA8AAAAPAAAABgAAAAMAAAAAAQAABwAAAA4AAAAPAAAADwAAAAcAAAADAAAAAAEAAAcAAAAOAAAADwAAAA8AAAAIAAAAAwAAAAABAAAIAAAADgAAAA8AAAAPAAAACQAAAAMAAAAAAQAACAAAAA4AAAAPAAAADwAAAAoAAAADAAAAAAEAAAgAAAAAAAAAAQAAAAMAAAAHAAAADwAAAB8AAAA/AAAAfwAAAP8AAAD/AQAA/wMAAP8HAAD/DwAA/x8AAP8/AAD/fwAA//8AAP//AQD//wMA//8HAP//DwD//x8A//8/AP//fwD///8A////Af///wP///8H////D////x////8/////fwEAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAAAAAAAAAAAAAAAECAwQFBgcICQoLDA0ODxAQERESEhMTFBQUFBUVFRUWFhYWFhYWFhcXFxcXFxcXGBgYGBgYGBgYGBgYGBgYGAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICAhISIiIyMkJCQkJSUlJSYmJiYmJiYmJycnJycnJycoKCgoKCgoKCgoKCgoKCgoKSkpKSkpKSkpKSkpKSkpKSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqBAADAAIAAgACAAIAAgACAAIAAgACAAIAAgABAAEAAQACAAIAAgACAAIAAgACAAIAAgADAAIAAQABAAEAAQABAP//////////AAAAAAAAAAABAAEAAQABAAEAAQACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQD/////////////AAAAAAAAAQAEAAMAAgACAAIAAgACAAIAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQD//////////////////wAAAAAAAAAAAAABAAAAAgAAAAQAAAAAAAAAAgAAAAQAAAAIAAAAAAAAAAEAAAACAAAACAAAAAEAAQEGAAAAAAAABAAAAAAQAAAEAAAAACAAAAUBAAAAAAAABQMAAAAAAAAFBAAAAAAAAAUGAAAAAAAABQcAAAAAAAAFCQAAAAAAAAUKAAAAAAAABQwAAAAAAAAGDgAAAAAAAQUQAAAAAAABBRQAAAAAAAEFFgAAAAAAAgUcAAAAAAADBSAAAAAAAAQFMAAAACAABgVAAAAAAAAHBYAAAAAAAAgGAAEAAAAACgYABAAAAAAMBgAQAAAgAAAEAAAAAAAAAAQBAAAAAAAABQIAAAAgAAAFBAAAAAAAAAUFAAAAIAAABQcAAAAAAAAFCAAAACAAAAUKAAAAAAAABQsAAAAAAAAGDQAAACAAAQUQAAAAAAABBRIAAAAgAAEFFgAAAAAAAgUYAAAAIAADBSAAAAAAAAMFKAAAAAAABgRAAAAAEAAGBEAAAAAgAAcFgAAAAAAACQYAAgAAAAALBgAIAAAwAAAEAAAAABAAAAQBAAAAIAAABQIAAAAgAAAFAwAAACAAAAUFAAAAIAAABQYAAAAgAAAFCAAAACAAAAUJAAAAIAAABQsAAAAgAAAFDAAAAAAAAAYPAAAAIAABBRIAAAAgAAEFFAAAACAAAgUYAAAAIAACBRwAAAAgAAMFKAAAACAABAUwAAAAAAAQBgAAAQAAAA8GAIAAAAAADgYAQAAAAAANBgAgAAAAAAAAAAAAAAAAAAABAAAAAQAAAAUAAAANAAAAHQAAAD0AAAB9AAAA/QAAAP0BAAD9AwAA/QcAAP0PAAD9HwAA/T8AAP1/AAD9/wAA/f8BAP3/AwD9/wcA/f8PAP3/HwD9/z8A/f9/AP3//wD9//8B/f//A/3//wf9//8P/f//H/3//z/9//9/AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAABAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wAAAAAAAAAAAAEAAQEGAAAAAAAABgMAAAAAAAAEBAAAACAAAAUFAAAAAAAABQYAAAAAAAAFCAAAAAAAAAUJAAAAAAAABQsAAAAAAAAGDQAAAAAAAAYQAAAAAAAABhMAAAAAAAAGFgAAAAAAAAYZAAAAAAAABhwAAAAAAAAGHwAAAAAAAAYiAAAAAAABBiUAAAAAAAEGKQAAAAAAAgYvAAAAAAADBjsAAAAAAAQGUwAAAAAABwaDAAAAAAAJBgMCAAAQAAAEBAAAAAAAAAQFAAAAIAAABQYAAAAAAAAFBwAAACAAAAUJAAAAAAAABQoAAAAAAAAGDAAAAAAAAAYPAAAAAAAABhIAAAAAAAAGFQAAAAAAAAYYAAAAAAAABhsAAAAAAAAGHgAAAAAAAAYhAAAAAAABBiMAAAAAAAEGJwAAAAAAAgYrAAAAAAADBjMAAAAAAAQGQwAAAAAABQZjAAAAAAAIBgMBAAAgAAAEBAAAADAAAAQEAAAAEAAABAUAAAAgAAAFBwAAACAAAAUIAAAAIAAABQoAAAAgAAAFCwAAAAAAAAYOAAAAAAAABhEAAAAAAAAGFAAAAAAAAAYXAAAAAAAABhoAAAAAAAAGHQAAAAAAAAYgAAAAAAAQBgMAAQAAAA8GA4AAAAAADgYDQAAAAAANBgMgAAAAAAwGAxAAAAAACwYDCAAAAAAKBgMEAAAAAAAAAAAAAAAAAAABAAAAAQAAAAUAAAANAAAAHQAAAD0AAAB9AAAA/QAAAP0BAAD9AwAA/QcAAP0PAAD9HwAA/T8AAP1/AAD9/wAA/f8BAP3/AwD9/wcA/f8PAP3/HwD9/z8A/f9/AP3//wD9//8B/f//A/3//wf9//8PAAAAAAAAAAAAAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJQAAACcAAAApAAAAKwAAAC8AAAAzAAAAOwAAAEMAAABTAAAAYwAAAIMAAAADAQAAAwIAAAMEAAADCAAAAxAAAAMgAAADQAAAA4AAAAMAAQAAAAAAAAAAAAAAAAAEAAMAAgACAAIAAgACAAIAAgACAAIAAgACAAEAAQABAAIAAgACAAIAAgACAAIAAgACAAMAAgABAAEAAQABAAEA//////////8AAAAAAAAAAAEAAQABAAEAAQABAAIAAgACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP////////////8AAAAAAAABAAQAAwACAAIAAgACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP//////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAHAAAADwAAAB8AAAA/AAAAfwAAAP8AAAD/AQAA/wMAAP8HAAD/DwAA/x8AAP8/AAD/fwAA//8AAP//AQD//wMA//8HAP//DwD//x8A//8/AP//fwD///8A////Af///wMBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACIAAAAkAAAAJgAAACgAAAAsAAAAMAAAADgAAABAAAAAUAAAAGAAAACAAAAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAASAAAAFAAAABYAAAAYAAAAHAAAACAAAAAoAAAAMAAAAEAAAACAAAAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAAAAAEABAADAAIAAgACAAIAAgACAAIAAgACAAIAAgABAAEAAQACAAIAAgACAAIAAgACAAIAAgADAAIAAQABAAEAAQABAP//////////AAAAAAAAAAABAAEAAQABAAEAAQACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQD/////////////AAAAAAAAAQAEAAMAAgACAAIAAgACAAIAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQD//////////////////wAAAAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAAAAAAAAAAEAAAACAAAAAQAAAAQAAAAEAAAABAAAAAQAAAABAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQAAAAIBAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAgAAACYAAACCAAAAIQUAAEoAAABnCAAAJgAAAMABAACAAAAASQUAAEoAAAC+CAAAKQAAACwCAACAAAAASQUAAEoAAAC+CAAALwAAAMoCAACAAAAAigUAAEoAAACECQAANQAAAHMDAACAAAAAnQUAAEoAAACgCQAAPQAAAIEDAACAAAAA6wUAAEsAAAA+CgAARAAAAJ4DAACAAAAATQYAAEsAAACqCgAASwAAALMDAACAAAAAwQYAAE0AAAAfDQAATQAAAFMEAACAAAAAIwgAAFEAAACmDwAAVAAAAJkEAACAAAAASwkAAFcAAACxEgAAWAAAANoEAACAAAAAbwkAAF0AAAAjFAAAVAAAAEUFAACAAAAAVAoAAGoAAACMFAAAagAAAK8FAACAAAAAdgkAAHwAAABOEAAAfAAAANICAACAAAAAYwcAAJEAAACQBwAAkgAAAAEAAAACAAAAAwAAAAQAAAAHAAAACAAAAA8AAAAQAAAAHwAAACAAAAA/AAAAQAAAAH8AAACAAAAAAAAAAAAAAAARAAoAERERAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABEADwoREREDCgcAARMJCwsAAAkGCwAACwAGEQAAABEREQAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA0AAAAEDQAAAAAJDgAAAAAADgAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAPAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAABISEgAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAoAAAAACgAAAAAJCwAAAAAACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAADAxMjM0NTY3ODlBQkNERUZUISIZDQECAxFLHAwQBAsdEh4naG5vcHFiIAUGDxMUFRoIFgcoJBcYCQoOGx8lI4OCfSYqKzw9Pj9DR0pNWFlaW1xdXl9gYWNkZWZnaWprbHJzdHl6e3wAAAAAAAAAAABJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgAAAAAAAHQxAAC1MwAAdDEAAFY0AACcMQAAyDMAAHgmAAAAAAAAdDEAAJg0AACcMQAA2zQAAHgmAAAAAAAAdDEAAGI1AACcMQAAnjUAAHgmAAAAAAAAdDEAACM2AACcMQAAXTYAAHgmAAAAAAAAdDEAAO02AACcMQAAMjcAAHgmAAAAAAAAdDEAALs3AACcMQAA+TcAAHgmAAAAAAAAdDEAAIA4AAB0MQAAJjkAABgyAAD6OAAAAAAAAAEAAAAQJwAAAAAAABgyAADWOAAAAAAAAAEAAAAYJwAAAAAAAOAxAABLOQAAAAAAADAnAADgMQAAcDkAAAEAAAAwJwAAdDEAAM45AACcMQAAuDkAAGgnAAAAAAAA4DEAAOg5AAAAAAAAcCcAAOAxAAD/OQAAAQAAAHAnAAB0MQAALzoAAJwxAAAXOgAAoCcAAAAAAADgMQAASToAAAAAAACoJwAA4DEAAGI6AAABAAAAqCcAAHQxAAB8OgAA4DEAAIc6AAAAAAAA2CcAAOAxAACTOgAAAQAAANgnAAB0MQAApzoAAOAxAADDOgAAAAAAAAAoAADgMQAA4DoAAAEAAAAAKAAAdDEAAP46AADgMQAAHDsAAAAAAAAoKAAA4DEAADs7AAABAAAAKCgAAJwxAACAOwAAeCgAAAAAAADgMQAAWzsAAAAAAABwKAAA/DEAAG47AAB0MQAAxjsAAJwxAAAaPAAAqCgAAAAAAADgMQAA9TsAAAAAAACgKAAA/DEAAAg8AAB0MQAAYDwAAJwxAAC2PAAA2CgAAAAAAADgMQAAjzwAAAAAAADQKAAA/DEAAKM8AAB0MQAA/TwAAJwxAABUPQAACCkAAAAAAADgMQAALT0AAAAAAAAAKQAA/DEAAEE9AAB0MQAAmz0AAJwxAADvPQAAKCkAAAAAAAB0MQAAyz0AAHQxAABUPgAAnDEAAL0+AAAoKQAAAAAAAHQxAACDPgAAnDEAAF4/AABgKQAAAAAAAHQxAAA4PwAAdDEAAMU/AACcMQAAMkAAAGApAAAAAAAAdDEAAPQ/AAAYMgAAa0UAAAAAAAABAAAAKCoAAAAAAAAYMgAALEUAAAAAAAABAAAAKCoAAAAAAAAYMgAAx0QAAAAAAAABAAAAKCoAAAAAAAB0MQAAqEQAAHQxAACJRAAAdDEAAGpEAAB0MQAAS0QAAHQxAAAsRAAAdDEAAA1EAAB0MQAA7kMAAHQxAADPQwAAdDEAALBDAAB0MQAAkUMAAHQxAAByQwAAdDEAAFNDAAB0MQAABkUAAJwxAAD5RQAAQCoAAAAAAAB0MQAApkYAAJwxAAAGRwAAWCoAAAAAAACcMQAAs0YAAGgqAAAAAAAAdDEAANRGAACcMQAA4UYAAEgqAAAAAAAAnDEAAAxIAABYKgAAAAAAAJwxAADoRwAAgCoAAAAAAACcMQAALkgAAFgqAAAAAAAAxDEAAFZIAADEMQAAWEgAAMQxAABbSAAAxDEAAF1IAADEMQAAX0gAAMQxAABhSAAAxDEAAGNIAADEMQAAZUgAAMQxAABnSAAAxDEAAGlIAADEMQAA5E0AAMQxAABrSAAAxDEAAG1IAADEMQAAb0gAAJwxAABxSAAAWCoAAAAAAACcMQAAlkgAAEgqAAAAAAAAcCYAAAgrAAD4KgAAsCoAAHAmAABwJgAACCsAAAgrAAAIKwAAcCYAALAqAABwJgAAAAAAAIAmAAABAAAAAgAAAAEAAAABAAAAAwAAAAQAAAACAAAAAQAAAAIAAAAAAAAAmCYAAAEAAAAFAAAAAwAAAAMAAAAGAAAABwAAAAQAAAACAAAABAAAAAAAAACwJgAAAQAAAAgAAAAFAAAABQAAAAkAAAAKAAAABgAAAAMAAAAGAAAAAAAAAMgmAAABAAAACwAAAAcAAAAHAAAADAAAAA0AAAAIAAAABAAAAAgAAAAAAAAA4CYAAAEAAAAOAAAACQAAAAkAAAAPAAAAEAAAAAoAAAAFAAAACgAAAAAAAAD4JgAAAQAAABEAAAALAAAACwAAABIAAAATAAAADAAAAAYAAAAMAAAASCcAALAqAABIJwAA0CoAAAgrAABYJwAAcCYAADAnAAAIKwAAsCoAALAqAAAwJwAAcCYAAHAmAAAwJwAAgCcAAHAmAADwKgAAuCcAAHAmAADgJwAA8CoAAPAnAAAIKwAA8CoAAPAnAAAwJwAACCgAAMAqAAAIKAAA8CoAAMAqAAAIKAAAcCcAAMAqAAAIKAAAcCYAADAoAADAKgAAMCgAAMAqAAAwKAAAqCcAAMAqAAAwKAAAcCYAAAAAAABQKAAAFAAAABUAAAANAAAADQAAABYAAAAXAAAADgAAAAcAAAAOAAAAAAAAAIAoAAAYAAAAGQAAAA8AAAAPAAAAGgAAABsAAAAQAAAACAAAABAAAAAAAAAAsCgAABwAAAAdAAAAEQAAABEAAAAeAAAAHwAAABIAAAAJAAAAEgAAAAAAAADgKAAAIAAAACEAAAATAAAAEwAAACIAAAAjAAAAFAAAAAoAAAAUAAAAAAAAABApAAAkAAAAJQAAABUAAAAVAAAAJgAAACcAAAALAAAADAAAABYAAAAAAAAAMCkAACQAAAAoAAAAFwAAABYAAAApAAAAKgAAAA0AAAAOAAAAGAAAAAAAAABIKQAAKwAAACwAAAAZAAAAFwAAAC0AAAAuAAAADwAAABAAAAAaAAAAAAAAAGgpAAArAAAALwAAABsAAAAYAAAAMAAAADEAAAARAAAAEgAAABwAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAEAAAACAAAABMAAAAZAAAAAAAAAAEAAAACAAAAAAAAAAMAAAAEAAAAAAAAAAUAAAAGAAAAAAAAAOQuAAAFAAAAAAAAAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAFhQAAAABAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAK/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5C4AAGgvAAAFAAAAAAAAAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAgAAAPxWAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCoAADIAAAAzAAAAHgAAAAEAAAAAAAAASCoAADQAAAA1AAAANgAAADcAAAAFAAAAAQAAAAEAAAABAAAAAAAAAHAqAAA0AAAAOAAAADYAAAA3AAAABQAAAAIAAAACAAAAAgAAAAAAAACgKgAANAAAADkAAAA2AAAANwAAAAYAAAAAAAAAkCoAADQAAAA6AAAANgAAADcAAAAHAAAAAAAAACArAAA0AAAAOwAAADYAAAA3AAAACAAAAAAAAAAwKwAANAAAADwAAAA2AAAANwAAAAUAAAADAAAAAwAAAAMAAABkdW1teQByYgBsZW5ndGgAYnVmZmVyAGNvbnN0cnVjdG9yAHNldABIRUFQVTgAVmVjdG9yVTgAY2xvbmVUb1ZlY3RvcgBjbG9uZUFzVHlwZWRBcnJheQB0b1R5cGVkQXJyYXlWaWV3AFpzdGRDb21wcmVzc2lvbkRpY3QAY3JlYXRlQ29tcHJlc3Npb25EaWN0AFpzdGREZWNvbXByZXNzaW9uRGljdABjcmVhdGVEZWNvbXByZXNzaW9uRGljdABac3RkQ29kZWMAY29tcHJlc3NCb3VuZABjb250ZW50U2l6ZQBjb21wcmVzcwBkZWNvbXByZXNzAGNvbXByZXNzVXNpbmdEaWN0AGRlY29tcHJlc3NVc2luZ0RpY3QAWnN0ZENvbXByZXNzU3RyZWFtQmluZGluZwBiZWdpbgBiZWdpblVzaW5nRGljdAB0cmFuc2Zvcm0AZmx1c2gAZW5kAFpzdGREZWNvbXByZXNzU3RyZWFtQmluZGluZwBOMTBlbXNjcmlwdGVuM3ZhbEUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJWk4yNVpzdGRDb21wcmVzc1N0cmVhbUJpbmRpbmc5VHJhbnNmb3JtRU4xMGVtc2NyaXB0ZW4zdmFsRVM0X0UzJF8wTlNfOWFsbG9jYXRvcklTNV9FRUZ2UktOU182dmVjdG9ySWhOUzZfSWhFRUVFRUVFAE5TdDNfXzIxMF9fZnVuY3Rpb242X19iYXNlSUZ2UktOU182dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFRUVFAFpOMjVac3RkQ29tcHJlc3NTdHJlYW1CaW5kaW5nOVRyYW5zZm9ybUVOMTBlbXNjcmlwdGVuM3ZhbEVTMV9FMyRfMABOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZzVGbHVzaEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfMU5TXzlhbGxvY2F0b3JJUzVfRUVGdlJLTlNfNnZlY3RvckloTlM2X0loRUVFRUVFRQBaTjI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZzVGbHVzaEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfMQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZzNFbmRFTjEwZW1zY3JpcHRlbjN2YWxFRTMkXzJOU185YWxsb2NhdG9ySVM1X0VFRnZSS05TXzZ2ZWN0b3JJaE5TNl9JaEVFRUVFRUUAWk4yNVpzdGRDb21wcmVzc1N0cmVhbUJpbmRpbmczRW5kRU4xMGVtc2NyaXB0ZW4zdmFsRUUzJF8yAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMjdac3RkRGVjb21wcmVzc1N0cmVhbUJpbmRpbmc5VHJhbnNmb3JtRU4xMGVtc2NyaXB0ZW4zdmFsRVM0X0UzJF8zTlNfOWFsbG9jYXRvcklTNV9FRUZ2UktOU182dmVjdG9ySWhOUzZfSWhFRUVFRUVFAFpOMjdac3RkRGVjb21wcmVzc1N0cmVhbUJpbmRpbmc5VHJhbnNmb3JtRU4xMGVtc2NyaXB0ZW4zdmFsRVMxX0UzJF8zAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMjdac3RkRGVjb21wcmVzc1N0cmVhbUJpbmRpbmc1Rmx1c2hFTjEwZW1zY3JpcHRlbjN2YWxFRTMkXzROU185YWxsb2NhdG9ySVM1X0VFRnZSS05TXzZ2ZWN0b3JJaE5TNl9JaEVFRUVFRUUAWk4yN1pzdGREZWNvbXByZXNzU3RyZWFtQmluZGluZzVGbHVzaEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfNABOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nM0VuZEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfNU5TXzlhbGxvY2F0b3JJUzVfRUVGdlJLTlNfNnZlY3RvckloTlM2X0loRUVFRUVFRQBaTjI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nM0VuZEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfNQBwdXNoX2JhY2sAcmVzaXplAHNpemUAZ2V0AE5TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAE5TdDNfXzIxM19fdmVjdG9yX2Jhc2VJaE5TXzlhbGxvY2F0b3JJaEVFRUUATlN0M19fMjIwX192ZWN0b3JfYmFzZV9jb21tb25JTGIxRUVFAFBOU3QzX18yNnZlY3RvckloTlNfOWFsbG9jYXRvckloRUVFRQBQS05TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAGlpAHYAdmkAdmlpaQB2aWlpaQBpaWkAaWlpaQBpaWlpaQAxOVpzdGRDb21wcmVzc2lvbkRpY3QAOFJlc291cmNlSTEyWlNURF9DRGljdF9zRQBQMTlac3RkQ29tcHJlc3Npb25EaWN0AFBLMTlac3RkQ29tcHJlc3Npb25EaWN0ADIxWnN0ZERlY29tcHJlc3Npb25EaWN0ADhSZXNvdXJjZUkxMlpTVERfRERpY3Rfc0UAUDIxWnN0ZERlY29tcHJlc3Npb25EaWN0AFBLMjFac3RkRGVjb21wcmVzc2lvbkRpY3QAOVpzdGRDb2RlYwBQOVpzdGRDb2RlYwBQSzlac3RkQ29kZWMAaWlpaWlpADI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZwBQMjVac3RkQ29tcHJlc3NTdHJlYW1CaW5kaW5nAFBLMjVac3RkQ29tcHJlc3NTdHJlYW1CaW5kaW5nADI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nAFAyN1pzdGREZWNvbXByZXNzU3RyZWFtQmluZGluZwBQSzI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nAFBGdlAxMVpTVERfQ0N0eF9zRQBGdlAxMVpTVERfQ0N0eF9zRQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0lQRnZQMTFaU1REX0NDdHhfc0VOU185YWxsb2NhdG9ySVM1X0VFUzRfRUUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Jhc2VJRnZQMTFaU1REX0NDdHhfc0VFRQBQRnZQMTFaU1REX0RDdHhfc0UARnZQMTFaU1REX0RDdHhfc0UATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJUEZ2UDExWlNURF9EQ3R4X3NFTlNfOWFsbG9jYXRvcklTNV9FRVM0X0VFAE5TdDNfXzIxMF9fZnVuY3Rpb242X19iYXNlSUZ2UDExWlNURF9EQ3R4X3NFRUUAUEZ2UDEyWlNURF9DRGljdF9zRQBGdlAxMlpTVERfQ0RpY3Rfc0UATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJUEZ2UDEyWlNURF9DRGljdF9zRU5TXzlhbGxvY2F0b3JJUzVfRUVTNF9FRQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fYmFzZUlGdlAxMlpTVERfQ0RpY3Rfc0VFRQBQRnZQMTJaU1REX0REaWN0X3NFAEZ2UDEyWlNURF9ERGljdF9zRQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0lQRnZQMTJaU1REX0REaWN0X3NFTlNfOWFsbG9jYXRvcklTNV9FRVM0X0VFAE5TdDNfXzIxMF9fZnVuY3Rpb242X19iYXNlSUZ2UDEyWlNURF9ERGljdF9zRUVFAFpOMThac3RkQ29tcHJlc3NTdHJlYW01QmVnaW5FaUUzJF8wAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMThac3RkQ29tcHJlc3NTdHJlYW01QmVnaW5FaUUzJF8wTlNfOWFsbG9jYXRvcklTM19FRUZtUDExWlNURF9DQ3R4X3NFRUUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Jhc2VJRm1QMTFaU1REX0NDdHhfc0VFRQBaTjE4WnN0ZENvbXByZXNzU3RyZWFtNUJlZ2luRVJLMTlac3RkQ29tcHJlc3Npb25EaWN0RTMkXzEATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJWk4xOFpzdGRDb21wcmVzc1N0cmVhbTVCZWdpbkVSSzE5WnN0ZENvbXByZXNzaW9uRGljdEUzJF8xTlNfOWFsbG9jYXRvcklTNl9FRUZtUDExWlNURF9DQ3R4X3NFRUUAWk4yMFpzdGREZWNvbXByZXNzU3RyZWFtNUJlZ2luRXZFMyRfMgBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjIwWnN0ZERlY29tcHJlc3NTdHJlYW01QmVnaW5FdkUzJF8yTlNfOWFsbG9jYXRvcklTM19FRUZtUDExWlNURF9EQ3R4X3NFRUUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Jhc2VJRm1QMTFaU1REX0RDdHhfc0VFRQBaTjIwWnN0ZERlY29tcHJlc3NTdHJlYW01QmVnaW5FUksyMVpzdGREZWNvbXByZXNzaW9uRGljdEUzJF8zAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMjBac3RkRGVjb21wcmVzc1N0cmVhbTVCZWdpbkVSSzIxWnN0ZERlY29tcHJlc3Npb25EaWN0RTMkXzNOU185YWxsb2NhdG9ySVM2X0VFRm1QMTFaU1REX0RDdHhfc0VFRQBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBzdGQ6OndzdHJpbmcAZW1zY3JpcHRlbjo6dmFsAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZyBkb3VibGU+AE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWVFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lkRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZkVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SW1FRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWlFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWhFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFAE5TdDNfXzIyMV9fYmFzaWNfc3RyaW5nX2NvbW1vbklMYjFFRUUATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUATlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUALSsgICAwWDB4AChudWxsKQAtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBuYW4ATkFOAHJ3YQBzdGQ6OmJhZF9mdW5jdGlvbl9jYWxsAE5TdDNfXzIxN2JhZF9mdW5jdGlvbl9jYWxsRQB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzOiAlcwB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzAHRlcm1pbmF0aW5nIHdpdGggJXMgZm9yZWlnbiBleGNlcHRpb24AdGVybWluYXRpbmcAdW5jYXVnaHQAU3Q5ZXhjZXB0aW9uAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAFN0OXR5cGVfaW5mbwBOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAHB0aHJlYWRfb25jZSBmYWlsdXJlIGluIF9fY3hhX2dldF9nbG9iYWxzX2Zhc3QoKQBjYW5ub3QgY3JlYXRlIHB0aHJlYWQga2V5IGZvciBfX2N4YV9nZXRfZ2xvYmFscygpAGNhbm5vdCB6ZXJvIG91dCB0aHJlYWQgdmFsdWUgZm9yIF9fY3hhX2dldF9nbG9iYWxzKCkAdGVybWluYXRlX2hhbmRsZXIgdW5leHBlY3RlZGx5IHJldHVybmVkAE4xMF9fY3h4YWJpdjExOV9fcG9pbnRlcl90eXBlX2luZm9FAE4xMF9fY3h4YWJpdjExN19fcGJhc2VfdHlwZV9pbmZvRQBOMTBfX2N4eGFiaXYxMjNfX2Z1bmRhbWVudGFsX3R5cGVfaW5mb0UAdgBEbgBiAGMAaABhAHMAdABpAGoAbQBmAGQATjEwX19jeHhhYml2MTIwX19mdW5jdGlvbl90eXBlX2luZm9FAE4xMF9fY3h4YWJpdjEyMV9fdm1pX2NsYXNzX3R5cGVfaW5mb0UAIGNvbnN0ACB2b2xhdGlsZQAgcmVzdHJpY3QAIGNvbXBsZXgAIGltYWdpbmFyeQAgWwAgKAApACgAJiYAb2JqY19vYmplY3Q8ACoAJgBvYmpjcHJvdG8AIAA8AD4AIHZlY3RvclsAXQBwaXhlbCB2ZWN0b3JbACY9AD0ALAB+ADo6AGRlbGV0ZVtdIABkZWxldGUgAC8ALz0AXgBePQA9PQA+PQApWwA8PQA8PAA8PD0ALQAtPQAqPQAtLQApLS0AIT0AIQB8fAB8AHw9AC0+KgArACs9ACsrACkrKwApID8gKAApIDogKAAlACU9AD4+AD4+PQB0aHJvdwB0aHJvdyAAdHlwZWlkKABzaXplb2YuLi4oACwgAHNpemVvZiAoAHN0YXRpY19jYXN0PAA+KAByZWludGVycHJldF9jYXN0PAAtPgBub2V4Y2VwdCAoAFtdIAApIAAuAC4qAHN0ZDo6AG9wZXJhdG9yJiYAb3BlcmF0b3ImAG9wZXJhdG9yJj0Ab3BlcmF0b3I9AG9wZXJhdG9yKCkAb3BlcmF0b3IsAG9wZXJhdG9yfgBvcGVyYXRvciAAb3BlcmF0b3IgZGVsZXRlW10Ab3BlcmF0b3IqAG9wZXJhdG9yLwBvcGVyYXRvci89AG9wZXJhdG9yXgBvcGVyYXRvcl49AG9wZXJhdG9yPT0Ab3BlcmF0b3I+PQBvcGVyYXRvcj4Ab3BlcmF0b3JbXQBvcGVyYXRvcjw9AG9wZXJhdG9yIiIgAG9wZXJhdG9yPDwAb3BlcmF0b3I8PD0Ab3BlcmF0b3I8AG9wZXJhdG9yLQBvcGVyYXRvci09AG9wZXJhdG9yKj0Ab3BlcmF0b3ItLQBvcGVyYXRvciBuZXdbXQBvcGVyYXRvciE9AG9wZXJhdG9yIQBvcGVyYXRvciBuZXcAb3BlcmF0b3J8fABvcGVyYXRvcnwAb3BlcmF0b3J8PQBvcGVyYXRvci0+KgBvcGVyYXRvcisAb3BlcmF0b3IrPQBvcGVyYXRvcisrAG9wZXJhdG9yLT4Ab3BlcmF0b3I/AG9wZXJhdG9yJQBvcGVyYXRvciU9AG9wZXJhdG9yPj4Ab3BlcmF0b3I+Pj0Ab3BlcmF0b3IgZGVsZXRlACd1bm5hbWVkACdsYW1iZGEnKABzdGQ6OnN0cmluZwBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+AGJhc2ljX3N0cmluZwBzdGQ6OmlzdHJlYW0Ac3RkOjpiYXNpY19pc3RyZWFtPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4gPgBiYXNpY19pc3RyZWFtAHN0ZDo6b3N0cmVhbQBzdGQ6OmJhc2ljX29zdHJlYW08Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiA+AGJhc2ljX29zdHJlYW0Ac3RkOjppb3N0cmVhbQBzdGQ6OmJhc2ljX2lvc3RyZWFtPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4gPgBiYXNpY19pb3N0cmVhbQBkeW5hbWljX2Nhc3Q8ACkoAGNvbnN0X2Nhc3Q8AGFsaWdub2YgKABmcAB3Y2hhcl90AGZhbHNlAHRydWUAY2hhcgBzaWduZWQgY2hhcgB1bnNpZ25lZCBjaGFyAHNob3J0AHVuc2lnbmVkIHNob3J0AHUAbAB1bABsbAB1bGwAX19pbnQxMjgAdW5zaWduZWQgX19pbnQxMjgAJUxhTAAlYQAlYWYAZGVjbHR5cGUoAHN0ZDo6YWxsb2NhdG9yAHN0ZDo6YmFzaWNfc3RyaW5nADo6c3RyaW5nIGxpdGVyYWwAc3RkAF9HTE9CQUxfX04AKGFub255bW91cyBuYW1lc3BhY2UpACA+AFRfAGlkADo6KgAgJgAgJiYAIFtdAHZvaWQAYm9vbABpbnQAdW5zaWduZWQgaW50AGxvbmcAdW5zaWduZWQgbG9uZwBsb25nIGxvbmcAZmxvYXQAbG9uZyBkb3VibGUAX19mbG9hdDEyOAAuLi4AZGVjaW1hbDY0AGRlY2ltYWwxMjgAZGVjaW1hbDMyAGRlY2ltYWwxNgBjaGFyMzJfdABjaGFyMTZfdABhdXRvAHN0ZDo6bnVsbHB0cl90AGRvdWJsZQB1bnNpZ25lZCBsb25nIGxvbmcAX2Jsb2NrX2ludm9rZQBpbnZvY2F0aW9uIGZ1bmN0aW9uIGZvciBibG9jayBpbiAAdnRhYmxlIGZvciAAVlRUIGZvciAAdHlwZWluZm8gZm9yIAB0eXBlaW5mbyBuYW1lIGZvciAAY292YXJpYW50IHJldHVybiB0aHVuayB0byAAY29uc3RydWN0aW9uIHZ0YWJsZSBmb3IgAC1pbi0AdmlydHVhbCB0aHVuayB0byAAbm9uLXZpcnR1YWwgdGh1bmsgdG8gAGd1YXJkIHZhcmlhYmxlIGZvciAAcmVmZXJlbmNlIHRlbXBvcmFyeSBmb3Ig";var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___cxa_allocate_exception(size){return _malloc(size);}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception;}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:function deAdjust(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var key in EXCEPTIONS.infos){var ptr=+key;var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr;}}return adjusted;},addRef:function addRef(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++;},decRef:function decRef(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module["dynCall_vi"](info.destructor,ptr);}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr);}},clearRef:function clearRef(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0;}};function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--;}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr;}function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr;}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(setTempRet0(0),0)|0;}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(setTempRet0(0),thrown)|0;}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i<typeArray.length;i++){if(typeArray[i]&&Module["___cxa_can_catch"](typeArray[i],throwntype,thrown)){thrown=HEAP32[thrown>>2];info.adjusted=thrown;return(setTempRet0(typeArray[i]),thrown)|0;}}thrown=HEAP32[thrown>>2];return(setTempRet0(throwntype),thrown)|0;}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1;}else{__ZSt18uncaught_exceptionv.uncaught_exception++;}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";}function ___gxx_personality_v0(){}function ___lock(){}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value;}var PATH={splitPath:function splitPath(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1);},normalizeArray:function normalizeArray(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1);}else if(last===".."){parts.splice(i,1);up++;}else if(up){parts.splice(i,1);up--;}}if(allowAboveRoot){for(;up;up--){parts.unshift("..");}}return parts;},normalize:function normalize(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p;}),!isAbsolute).join("/");if(!path&&!isAbsolute){path=".";}if(path&&trailingSlash){path+="/";}return(isAbsolute?"/":"")+path;},dirname:function dirname(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return".";}if(dir){dir=dir.substr(0,dir.length-1);}return root+dir;},basename:function basename(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1);},extname:function extname(path){return PATH.splitPath(path)[3];},join:function join(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"));},join2:function join2(l,r){return PATH.normalize(l+"/"+r);},resolve:function resolve(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings");}else if(!path){return"";}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/";}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p;}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||".";},relative:function relative(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break;}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break;}if(start>end)return[];return arr.slice(start,end-start+1);}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break;}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..");}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/");}};var TTY={ttys:[],init:function init(){},shutdown:function shutdown(){},register:function register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops);},stream_ops:{open:function open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}stream.tty=tty;stream.seekable=false;},close:function close(stream){stream.tty.ops.flush(stream.tty);},flush:function flush(stream){stream.tty.ops.flush(stream.tty);},read:function read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO);}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty);}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO);}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result;}if(bytesRead){stream.node.timestamp=Date.now();}return bytesRead;},write:function write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO);}for(var i=0;i<length;i++){try{stream.tty.ops.put_char(stream.tty,buffer[offset+i]);}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO);}}if(length){stream.node.timestamp=Date.now();}return i;}},default_tty_ops:{get_char:function get_char(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=new Buffer(BUFSIZE);var bytesRead=0;var isPosixPlatform=process.platform!="win32";var fd=process.stdin.fd;if(isPosixPlatform){var usingDevice=false;try{fd=fs.openSync("/dev/stdin","r");usingDevice=true;}catch(e){}}try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE,null);}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e;}if(usingDevice){fs.closeSync(fd);}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8");}else{result=null;}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n";}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n";}}if(!result){return null;}tty.input=intArrayFromString(result,true);}return tty.input.shift();},put_char:function put_char(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[];}else{if(val!=0)tty.output.push(val);}},flush:function flush(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[];}}},default_tty1_ops:{put_char:function put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[];}else{if(val!=0)tty.output.push(val);}},flush:function flush(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[];}}}};var MEMFS={ops_table:null,mount:function mount(_mount){return MEMFS.createNode(null,"/",16384|511,0);},createNode:function createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={};}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null;}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream;}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream;}node.timestamp=Date.now();if(parent){parent.contents[name]=node;}return node;},getFileDataAsRegularArray:function getFileDataAsRegularArray(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i){arr.push(node.contents[i]);}return arr;}return node.contents;},getFileDataAsTypedArray:function getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array();if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents);},expandFileStorage:function expandFileStorage(node,newCapacity){if(node.contents&&node.contents.subarray&&newCapacity>node.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length;}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)|0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return;}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.length<newCapacity){node.contents.push(0);}},resizeFileStorage:function resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return;}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)));}node.usedBytes=newSize;return;}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize){node.contents.push(0);}node.usedBytes=newSize;},node_ops:{getattr:function getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096;}else if(FS.isFile(node.mode)){attr.size=node.usedBytes;}else if(FS.isLink(node.mode)){attr.size=node.link.length;}else{attr.size=0;}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr;},setattr:function setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode;}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp;}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size);}},lookup:function lookup(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT];},mknod:function mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev);},rename:function rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name);}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);}}}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=new_dir;},unlink:function unlink(parent,name){delete parent.contents[name];},rmdir:function rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);}delete parent.contents[name];},readdir:function readdir(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue;}entries.push(key);}return entries;},symlink:function symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node;},readlink:function readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return node.link;}},stream_ops:{read:function read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset);}else{for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i];}}return size;},write:function write(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length;}else if(node.usedBytes===0&&position===0){node.contents=new Uint8Array(buffer.subarray(offset,offset+length));node.usedBytes=length;return length;}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length;}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i];}}node.usedBytes=Math.max(node.usedBytes,position+length);return length;},llseek:function llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position;}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes;}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return position;},allocate:function allocate(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length);},mmap:function mmap(stream,buffer,offset,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&(contents.buffer===buffer||contents.buffer===buffer.buffer)){allocated=false;ptr=contents.byteOffset;}else{if(position>0||position+length<stream.node.usedBytes){if(contents.subarray){contents=contents.subarray(position,position+length);}else{contents=Array.prototype.slice.call(contents,position,position+length);}}allocated=true;ptr=_malloc(length);if(!ptr){throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);}buffer.set(contents,ptr);}return{ptr:ptr,allocated:allocated};},msync:function msync(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}if(mmapFlags&2){return 0;}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0;}}};var IDBFS={dbs:{},indexedDB:function(_indexedDB){function indexedDB(){return _indexedDB.apply(this,arguments);}indexedDB.toString=function(){return _indexedDB.toString();};return indexedDB;}(function(){if(typeof indexedDB!=="undefined")return indexedDB;var ret=null;if((typeof window==='undefined'?'undefined':_typeof(window))==="object")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;assert(ret,"IDBFS used, but indexedDB not supported");return ret;}),DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function mount(_mount2){return MEMFS.mount.apply(null,arguments);},syncfs:function syncfs(mount,populate,callback){IDBFS.getLocalSet(mount,function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback);});});},getDB:function getDB(name,callback){var db=IDBFS.dbs[name];if(db){return callback(null,db);}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION);}catch(e){return callback(e);}if(!req){return callback("Unable to connect to IndexedDB");}req.onupgradeneeded=function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME);}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME);}if(!fileStore.indexNames.contains("timestamp")){fileStore.createIndex("timestamp","timestamp",{unique:false});}};req.onsuccess=function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db);};req.onerror=function(e){callback(this.error);e.preventDefault();};},getLocalSet:function getLocalSet(mount,callback){var entries={};function isRealDir(p){return p!=="."&&p!=="..";}function toAbsolute(root){return function(p){return PATH.join2(root,p);};}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path);}catch(e){return callback(e);}if(FS.isDir(stat.mode)){check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));}entries[path]={timestamp:stat.mtime};}return callback(null,{type:"local",entries:entries});},getRemoteSet:function getRemoteSet(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,function(err,db){if(err)return callback(err);try{var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readonly");transaction.onerror=function(e){callback(this.error);e.preventDefault();};var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index("timestamp");index.openKeyCursor().onsuccess=function(event){var cursor=event.target.result;if(!cursor){return callback(null,{type:"remote",db:db,entries:entries});}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue();};}catch(e){return callback(e);}});},loadLocalEntry:function loadLocalEntry(path,callback){var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path);}catch(e){return callback(e);}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode});}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents});}else{return callback(new Error("node type not supported"));}},storeLocalEntry:function storeLocalEntry(path,entry,callback){try{if(FS.isDir(entry.mode)){FS.mkdir(path,entry.mode);}else if(FS.isFile(entry.mode)){FS.writeFile(path,entry.contents,{canOwn:true});}else{return callback(new Error("node type not supported"));}FS.chmod(path,entry.mode);FS.utime(path,entry.timestamp,entry.timestamp);}catch(e){return callback(e);}callback(null);},removeLocalEntry:function removeLocalEntry(path,callback){try{var lookup=FS.lookupPath(path);var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path);}else if(FS.isFile(stat.mode)){FS.unlink(path);}}catch(e){return callback(e);}callback(null);},loadRemoteEntry:function loadRemoteEntry(store,path,callback){var req=store.get(path);req.onsuccess=function(event){callback(null,event.target.result);};req.onerror=function(e){callback(this.error);e.preventDefault();};},storeRemoteEntry:function storeRemoteEntry(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=function(){callback(null);};req.onerror=function(e){callback(this.error);e.preventDefault();};},removeRemoteEntry:function removeRemoteEntry(store,path,callback){var req=store.delete(path);req.onsuccess=function(){callback(null);};req.onerror=function(e){callback(this.error);e.preventDefault();};},reconcile:function reconcile(src,dst,callback){var total=0;var create=[];Object.keys(src.entries).forEach(function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e.timestamp>e2.timestamp){create.push(key);total++;}});var remove=[];Object.keys(dst.entries).forEach(function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++;}});if(!total){return callback(null);}var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err);}return;}if(++completed>=total){return callback(null);}}transaction.onerror=function(e){done(this.error);e.preventDefault();};create.sort().forEach(function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done);});}else{IDBFS.loadLocalEntry(path,function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done);});}});remove.sort().reverse().forEach(function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done);}else{IDBFS.removeRemoteEntry(store,path,done);}});}};var NODEFS={isWindows:false,staticInit:function staticInit(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"];}NODEFS.flagsForNodeMap={"1024":flags["O_APPEND"],"64":flags["O_CREAT"],"128":flags["O_EXCL"],"0":flags["O_RDONLY"],"2":flags["O_RDWR"],"4096":flags["O_SYNC"],"512":flags["O_TRUNC"],"1":flags["O_WRONLY"]};},bufferFrom:function bufferFrom(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer);},mount:function mount(_mount3){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(_mount3.opts.root),0);},createNode:function createNode(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node;},getMode:function getMode(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2;}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}return stat.mode;},realPath:function realPath(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent;}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts);},flagsForNode:function flagsForNode(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k;}}if(!flags){return newFlags;}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}},node_ops:{getattr:function getattr(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096;}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0;}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks};},setattr:function setattr(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode;}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date);}if(attr.size!==undefined){fs.truncateSync(path,attr.size);}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},lookup:function lookup(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode);},mknod:function mknod(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode);}else{fs.writeFileSync(path,"",{mode:node.mode});}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}return node;},rename:function rename(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},unlink:function unlink(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},rmdir:function rmdir(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},readdir:function readdir(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},symlink:function symlink(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},readlink:function readlink(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path;}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}}},stream_ops:{open:function open(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags));}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},close:function close(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd);}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},read:function read(stream,buffer,offset,length,position){if(length===0)return 0;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position);}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},write:function write(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position);}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},llseek:function llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position;}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size;}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return position;}}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function mount(_mount4){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync();var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i<parts.length-1;i++){var curr=parts.slice(0,i+1).join("/");if(!createdParents[curr]){createdParents[curr]=WORKERFS.createNode(parent,parts[i],WORKERFS.DIR_MODE,0);}parent=createdParents[curr];}return parent;}function base(path){var parts=path.split("/");return parts[parts.length-1];}Array.prototype.forEach.call(_mount4.opts["files"]||[],function(file){WORKERFS.createNode(ensureParent(file.name),base(file.name),WORKERFS.FILE_MODE,0,file,file.lastModifiedDate);});(_mount4.opts["blobs"]||[]).forEach(function(obj){WORKERFS.createNode(ensureParent(obj["name"]),base(obj["name"]),WORKERFS.FILE_MODE,0,obj["data"]);});(_mount4.opts["packages"]||[]).forEach(function(pack){pack["metadata"].files.forEach(function(file){var name=file.filename.substr(1);WORKERFS.createNode(ensureParent(name),base(name),WORKERFS.FILE_MODE,0,pack["blob"].slice(file.start,file.end));});});return root;},createNode:function createNode(parent,name,mode,dev,contents,mtime){var node=FS.createNode(parent,name,mode);node.mode=mode;node.node_ops=WORKERFS.node_ops;node.stream_ops=WORKERFS.stream_ops;node.timestamp=(mtime||new Date()).getTime();assert(WORKERFS.FILE_MODE!==WORKERFS.DIR_MODE);if(mode===WORKERFS.FILE_MODE){node.size=contents.size;node.contents=contents;}else{node.size=4096;node.contents={};}if(parent){parent.contents[name]=node;}return node;},node_ops:{getattr:function getattr(node){return{dev:1,ino:undefined,mode:node.mode,nlink:1,uid:0,gid:0,rdev:undefined,size:node.size,atime:new Date(node.timestamp),mtime:new Date(node.timestamp),ctime:new Date(node.timestamp),blksize:4096,blocks:Math.ceil(node.size/4096)};},setattr:function setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode;}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp;}},lookup:function lookup(parent,name){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);},mknod:function mknod(parent,name,mode,dev){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},rename:function rename(oldNode,newDir,newName){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},unlink:function unlink(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},rmdir:function rmdir(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},readdir:function readdir(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue;}entries.push(key);}return entries;},symlink:function symlink(parent,newName,oldPath){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},readlink:function readlink(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}},stream_ops:{read:function read(stream,buffer,offset,length,position){if(position>=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size;},write:function write(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO);},llseek:function llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position;}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size;}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return position;}}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function handleFSError(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno);},lookupPath:function lookupPath(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key];}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP);}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p;}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break;}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root;}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP);}}}}return{path:current_path,node:current};},getPath:function getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path;}path=path?node.name+"/"+path:node.name;node=node.parent;}},hashName:function hashName(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0;}return(parentid+hash>>>0)%FS.nameTable.length;},hashAddNode:function hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node;},hashRemoveNode:function hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next;}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break;}current=current.name_next;}}},lookupNode:function lookupNode(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent);}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node;}}return FS.lookup(parent,name);},createNode:function createNode(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=function(parent,name,mode,rdev){if(!parent){parent=this;}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;};FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:function get(){return(this.mode&readMode)===readMode;},set:function set(val){val?this.mode|=readMode:this.mode&=~readMode;}},write:{get:function get(){return(this.mode&writeMode)===writeMode;},set:function set(val){val?this.mode|=writeMode:this.mode&=~writeMode;}},isFolder:{get:function get(){return FS.isDir(this.mode);}},isDevice:{get:function get(){return FS.isChrdev(this.mode);}}});}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node;},destroyNode:function destroyNode(node){FS.hashRemoveNode(node);},isRoot:function isRoot(node){return node===node.parent;},isMountpoint:function isMountpoint(node){return!!node.mounted;},isFile:function isFile(mode){return(mode&61440)===32768;},isDir:function isDir(mode){return(mode&61440)===16384;},isLink:function isLink(mode){return(mode&61440)===40960;},isChrdev:function isChrdev(mode){return(mode&61440)===8192;},isBlkdev:function isBlkdev(mode){return(mode&61440)===24576;},isFIFO:function isFIFO(mode){return(mode&61440)===4096;},isSocket:function isSocket(mode){return(mode&49152)===49152;},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function modeStringToFlags(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str);}return flags;},flagsToPermissionString:function flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w";}return perms;},nodePermissions:function nodePermissions(node,perms){if(FS.ignorePermissions){return 0;}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES;}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES;}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES;}return 0;},mayLookup:function mayLookup(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0;},mayCreate:function mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST;}catch(e){}return FS.nodePermissions(dir,"wx");},mayDelete:function mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name);}catch(e){return e.errno;}var err=FS.nodePermissions(dir,"wx");if(err){return err;}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR;}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY;}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR;}}return 0;},mayOpen:function mayOpen(node,flags){if(!node){return ERRNO_CODES.ENOENT;}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP;}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR;}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags));},MAX_OPEN_FDS:4096,nextfd:function nextfd(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd;}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE);},getStream:function getStream(fd){return FS.streams[fd];},createStream:function createStream(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function get(){return this.node;},set:function set(val){this.node=val;}},isRead:{get:function get(){return(this.flags&2097155)!==1;}},isWrite:{get:function get(){return(this.flags&2097155)!==0;}},isAppend:{get:function get(){return this.flags&1024;}}});}var newStream=new FS.FSStream();for(var p in stream){newStream[p]=stream[p];}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream;},closeStream:function closeStream(fd){FS.streams[fd]=null;},chrdev_stream_ops:{open:function open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream);}},llseek:function llseek(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}},major:function major(dev){return dev>>8;},minor:function minor(dev){return dev&255;},makedev:function makedev(ma,mi){return ma<<8|mi;},registerDevice:function registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops};},getDevice:function getDevice(dev){return FS.devices[dev];},getMounts:function getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts);}return mounts;},syncfs:function syncfs(populate,callback){if(typeof populate==="function"){callback=populate;populate=false;}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err);}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err);}return;}if(++completed>=mounts.length){doCallback(null);}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null);}mount.type.syncfs(mount,populate,done);});},mount:function mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot;}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount);}}return mountRoot;},unmount:function unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current);}current=next;}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1);},lookup:function lookup(parent,name){return parent.node_ops.lookup(parent,name);},mknod:function mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}return parent.node_ops.mknod(parent,name,mode,dev);},create:function create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0);},mkdir:function mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0);},mkdirTree:function mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode);}catch(e){if(e.errno!=ERRNO_CODES.EEXIST)throw e;}}},mkdev:function mkdev(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438;}mode|=8192;return FS.mknod(path,mode,dev);},symlink:function symlink(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}return parent.node_ops.symlink(parent,newname,oldpath);},rename:function rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV);}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);}var new_node;try{new_node=FS.lookupNode(new_dir,new_name);}catch(e){}if(old_node===new_node){return;}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err);}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err);}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err);}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path);}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message);}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);}catch(e){throw e;}finally{FS.hashAddNode(old_node);}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path);}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message);}},rmdir:function rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path);}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message);}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path);}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message);}},readdir:function readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}return node.node_ops.readdir(node);},unlink:function unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path);}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message);}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path);}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message);}},readlink:function readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link));},stat:function stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}return node.node_ops.getattr(node);},lstat:function lstat(path){return FS.stat(path,true);},chmod:function chmod(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node;}else{node=path;}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()});},lchmod:function lchmod(path,mode){FS.chmod(path,mode,true);},fchmod:function fchmod(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}FS.chmod(stream.node,mode);},chown:function chown(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node;}else{node=path;}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}node.node_ops.setattr(node,{timestamp:Date.now()});},lchown:function lchown(path,uid,gid){FS.chown(path,uid,gid,true);},fchown:function fchown(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}FS.chown(stream.node,uid,gid);},truncate:function truncate(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;}else{node=path;}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR);}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err);}node.node_ops.setattr(node,{size:len,timestamp:Date.now()});},ftruncate:function ftruncate(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}FS.truncate(stream.node,len);},utime:function utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)});},open:function open(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768;}else{mode=0;}var node;if((typeof path==='undefined'?'undefined':_typeof(path))==="object"){node=path;}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node;}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST);}}else{node=FS.mknod(path,mode,0);created=true;}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(FS.isChrdev(node.mode)){flags&=~512;}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err);}}if(flags&512){FS.truncate(node,0);}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream);}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("read file: "+path);}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ;}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE;}FS.trackingDelegate["onOpenFile"](path,trackingFlags);}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message);}return stream;},close:function close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream);}}catch(e){throw e;}finally{FS.closeStream(stream.fd);}stream.fd=null;},isClosed:function isClosed(stream){return stream.fd===null;},llseek:function llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position;},read:function read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR);}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position;}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead;},write:function write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR);}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if(stream.flags&1024){FS.llseek(stream,0,2);}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position;}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path);}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message);}return bytesWritten;},allocate:function allocate(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);}stream.stream_ops.allocate(stream,offset,length);},mmap:function mmap(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES);}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags);},msync:function msync(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0;}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags);},munmap:function munmap(stream){return 0;},ioctl:function ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);}return stream.stream_ops.ioctl(stream,cmd,arg);},readFile:function readFile(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"');}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0);}else if(opts.encoding==="binary"){ret=buf;}FS.close(stream);return ret;},writeFile:function writeFile(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn);}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);}else{throw new Error("Unsupported data type");}FS.close(stream);},cwd:function cwd(){return FS.currentPath;},chdir:function chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err);}FS.currentPath=lookup.path;},createDefaultDirectories:function createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user");},createDefaultDevices:function createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function read(){return 0;},write:function write(stream,buffer,offset,length,pos){return length;}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=function random_device(){crypto.getRandomValues(randomBuffer);return randomBuffer[0];};}else if(ENVIRONMENT_IS_NODE){random_device=function random_device(){return require("crypto")["randomBytes"](1)[0];};}else{random_device=function random_device(){return Math.random()*256|0;};}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp");},createSpecialDirectories:function createSpecialDirectories(){FS.mkdir("/proc");FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function mount(){var node=FS.createNode("/proc/self","fd",16384|511,73);node.node_ops={lookup:function lookup(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function readlink(){return stream.path;}}};ret.parent=ret;return ret;}};return node;}},{},"/proc/self/fd");},createStandardStreams:function createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"]);}else{FS.symlink("/dev/tty","/dev/stdin");}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"]);}else{FS.symlink("/dev/tty","/dev/stdout");}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"]);}else{FS.symlink("/dev/tty1","/dev/stderr");}var stdin=FS.open("/dev/stdin","r");assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")");},ensureErrnoError:function ensureErrnoError(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break;}}};this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack)Object.defineProperty(this,"stack",{value:new Error().stack,writable:true});};FS.ErrnoError.prototype=new Error();FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>";});},staticInit:function staticInit(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"IDBFS":IDBFS,"NODEFS":NODEFS,"WORKERFS":WORKERFS};},init:function init(input,output,error){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)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams();},quit:function quit(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue;}FS.close(stream);}},getMode:function getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode;},joinPath:function joinPath(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]=="/")path=path.substr(1);return path;},absolutePath:function absolutePath(relative,base){return PATH.resolve(base,relative);},standardizePath:function standardizePath(path){return PATH.normalize(path);},findObject:function findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object;}else{___setErrNo(ret.error);return null;}},analyzePath:function analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path;}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/";}catch(e){ret.error=e.errno;}return ret;},createFolder:function createFolder(parent,name,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.mkdir(path,mode);},createPath:function createPath(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current);}catch(e){}parent=current;}return current;},createFile:function createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode);},createDataFile:function createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i){arr[i]=data.charCodeAt(i);}data=arr;}FS.chmod(node,mode|146);var stream=FS.open(node,"w");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode);}return node;},createDevice:function createDevice(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function open(stream){stream.seekable=false;},close:function close(stream){if(output&&output.buffer&&output.buffer.length){output(10);}},read:function read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input();}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO);}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result;}if(bytesRead){stream.node.timestamp=Date.now();}return bytesRead;},write:function write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i]);}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO);}}if(length){stream.node.timestamp=Date.now();}return i;}});return FS.mkdev(path,mode,dev);},createLink:function createLink(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);return FS.symlink(target,path);},forceLoadFile:function forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;var success=true;if(typeof XMLHttpRequest!=="undefined"){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.");}else if(Module["read"]){try{obj.contents=intArrayFromString(Module["read"](obj.url),true);obj.usedBytes=obj.contents.length;}catch(e){success=false;}}else{throw new Error("Cannot load without read() or XMLHttpRequest.");}if(!success)___setErrNo(ERRNO_CODES.EIO);return success;},createLazyFile:function createLazyFile(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[];}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined;}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset];};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter;};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest();xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function doXHR(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest();xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined");}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[]);}else{return intArrayFromString(xhr.responseText||"",true);}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end);}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum];});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed");}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true;};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array();Object.defineProperties(lazyArray,{length:{get:function get(){if(!this.lengthKnown){this.cacheLength();}return this._length;}},chunkSize:{get:function get(){if(!this.lengthKnown){this.cacheLength();}return this._chunkSize;}}});var properties={isDevice:false,contents:lazyArray};}else{var properties={isDevice:false,url:url};}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents;}else if(properties.url){node.contents=null;node.url=properties.url;}Object.defineProperties(node,{usedBytes:{get:function get(){return this.contents.length;}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO);}return fn.apply(null,arguments);};});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO);}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i];}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i);}}return size;};node.stream_ops=stream_ops;return node;},createPreloadedFile:function createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn);}if(onload)onload();removeRunDependency(dep);}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep);});handled=true;}});if(!handled)finish(byteArray);}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray);},onerror);}else{processData(url);}},indexedDB:function indexedDB(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;},DB_NAME:function DB_NAME(){return"EM_FS_"+window.location.pathname;},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function saveFilesToDB(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION);}catch(e){return onerror(e);}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){console.log("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME);};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror();}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish();};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish();};});transaction.onerror=onerror;};openRequest.onerror=onerror;},loadFilesFromDB:function loadFilesFromDB(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION);}catch(e){return onerror(e);}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly");}catch(e){onerror(e);return;}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror();}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path);}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish();};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish();};});transaction.onerror=onerror;};openRequest.onerror=onerror;}};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function calculateAt(dirfd,path){if(path[0]!=="/"){var dir;if(dirfd===-100){dir=FS.cwd();}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);dir=dirstream.path;}path=PATH.join2(dir,path);}return path;},doStat:function doStat(func,path,buf){try{var stat=func(path);}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-ERRNO_CODES.ENOTDIR;}throw e;}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0;},doMsync:function doMsync(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags);},doMkdir:function doMkdir(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0;},doMknod:function doMknod(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL;}FS.mknod(path,mode,dev);return 0;},doReadlink:function doReadlink(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len;},doAccess:function doAccess(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL;}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES;}return 0;},doDup:function doDup(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd;},doReadv:function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break;}return ret;},doWritev:function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;}return ret;},varargs:0,get:function get(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret;},getStr:function getStr(){var ret=Pointer_stringify(SYSCALLS.get());return ret;},getStreamFromFD:function getStreamFromFD(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream;},getSocketFromFD:function getSocketFromFD(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket;},getSocketAddress:function getSocketAddress(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info;},get64:function get64(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low;},getZero:function getZero(){assert(SYSCALLS.get()===0);}};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0;}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt);}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt);}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL;}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd;};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0;};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0;};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL;}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd;}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0;};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL;};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp);};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};case 21524:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};default:abort("bad ioctl syscall "+op);}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0;}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___unlock(){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size);}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i);}embind_charCodes=codes;}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]];}return ret;}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown";}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name;}else{return name;}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body);}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"");}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name;}else{return this.name+": "+this.message;}};return errorClass;}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message);}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message);}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes;});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count");}for(var i=0;i<myTypes.length;++i){registerType(myTypes[i],myTypeConverters[i]);}}var typeConverters=new Array(dependentTypes.length);var unregisteredTypes=[];var registered=0;dependentTypes.forEach(function(dt,i){if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt];}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[];}awaitingDependencies[dt].push(function(){typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters);}});}});if(0===unregisteredTypes.length){onComplete(typeConverters);}}function registerType(rawType,registeredInstance,options){options=options||{};if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance");}var name=registeredInstance.name;if(!rawType){throwBindingError('type "'+name+'" must have a positive integer typeid pointer');}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return;}else{throwBindingError("Cannot register type '"+name+"' twice");}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(function(cb){cb();});}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function fromWireType(wt){return!!wt;},"toWireType":function toWireType(destructors,o){return o?trueValue:falseValue;},"argPackAdvance":8,"readValueFromPointer":function readValueFromPointer(pointer){var heap;if(size===1){heap=HEAP8;}else if(size===2){heap=HEAP16;}else if(size===4){heap=HEAP32;}else{throw new TypeError("Unknown boolean type size: "+name);}return this["fromWireType"](heap[pointer>>shift]);},destructorFunction:null});}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false;}if(!(other instanceof ClassHandle)){return false;}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass;}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass;}return leftClass===rightClass&&left===right;}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType};}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name;}throwBindingError(getInstanceTypeName(obj)+" instance already deleted");}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this;}else{var clone=Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}});clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone;}}function runDestructor(handle){var $$=handle.$$;if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr);}else{$$.ptrType.registeredClass.rawDestructor($$.ptr);}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion");}this.$$.count.value-=1;var toDelete=0===this.$$.count.value;if(toDelete){runDestructor(this);}if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined;}}function ClassHandle_isDeleted(){return!this.$$.ptr;}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]();}}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion");}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes);}this.$$.deleteScheduled=true;return this;}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater;}function ClassHandle(){}var registeredPointers={};function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!");}return proto[methodName].overloadTable[arguments.length].apply(this,arguments);};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc;}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice");}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!");}Module[name].overloadTable[numArguments]=value;}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments;}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[];}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name);}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass;}return ptr;}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name);}return 0;}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name);}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name);}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr;}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name);}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr);}return ptr;}else{return 0;}}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name);}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name);}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name);}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal");}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr;}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name);}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr;}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,__emval_register(function(){clonedHandle["delete"]();}));if(destructors!==null){destructors.push(this.rawDestructor,ptr);}}break;default:throwBindingError("Unsupporting sharing policy");}}return ptr;}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name);}return 0;}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name);}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name);}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name);}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr;}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2]);}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr);}return ptr;}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr);}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]();}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr;}if(undefined===desiredClass.baseClass){return null;}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null;}return desiredClass.downcast(rv);}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length;}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k]);}}return rv;}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes);}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction;}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined");}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass;}return ptr;}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr];}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType");}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified");}record.count={value:1};return Object.create(prototype,{$$:{value:record}});}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null;}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]();}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv;}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr});}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr});}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this);}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType;}else{toType=registeredPointerRecord.pointerType;}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this);}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr});}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp});}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType;}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&&registeredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}}else{this["toWireType"]=genericPointerToWireType;}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol");}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value;}else{Module[name]=value;Module[name].argCount=numArguments;}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i<signature.length;++i){args.push("a"+i);}var name="dynCall_"+signature+"_"+rawFunction;var body="return function "+name+"("+args.join(", ")+") {\n";body+=" return dynCall(rawFunction"+(args.length?", ":"")+args.join(", ")+");\n";body+="};\n";return new Function("dynCall","rawFunction",body)(dynCall,rawFunction);}var fp;if(Module["FUNCTION_TABLE_"+signature]!==undefined){fp=Module["FUNCTION_TABLE_"+signature][rawFunction];}else if(typeof FUNCTION_TABLE!=="undefined"){fp=FUNCTION_TABLE[rawFunction];}else{var dc=Module["asm"]["dynCall_"+signature];if(dc===undefined){dc=Module["asm"]["dynCall_"+signature.replace(/f/g,"d")];if(dc===undefined){throwBindingError("No dynCall invoker for signature: "+signature);}}fp=makeDynCaller(dc);}if(typeof fp!=="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction);}return fp;}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv;}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return;}if(registeredTypes[type]){return;}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return;}unboundTypes.push(type);seen[type]=true;}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]));}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast);}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast);}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError("Cannot construct "+name+" due to unbound types",[baseClassRawType]);});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype;}else{basePrototype=ClassHandle.prototype;}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name);}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor");}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError("Tried to invoke ctor of "+name+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(registeredClass.constructor_body).toString()+") parameters instead!");}return body.apply(this,arguments);});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter];});}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i<count;i++){array.push(HEAP32[(firstElement>>2)+i]);}return array;}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr);}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[];}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");}classType.registeredClass.constructor_body[argCount-1]=function unboundTypeHandler(){throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes);};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+" called with "+arguments.length+" arguments, expected "+(argCount-1));}var destructors=[];var args=new Array(argCount);args[0]=rawConstructor;for(var i=1;i<argCount;++i){args[i]=argTypes[i]["toWireType"](destructors,arguments[i-1]);}var ptr=invoker.apply(null,args);runDestructors(destructors);return argTypes[0]["fromWireType"](ptr);};return[];});return[];});}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+(typeof constructor==='undefined'?'undefined':_typeof(constructor))+" which is not a function");}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy();var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj;}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!");}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i<argTypes.length;++i){if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){needsDestructorStack=true;break;}}var returns=argTypes[0].name!=="void";var argsList="";var argsListWired="";for(var i=0;i<argCount-2;++i){argsList+=(i!==0?", ":"")+"arg"+i;argsListWired+=(i!==0?", ":"")+"arg"+i+"Wired";}var invokerFnBody="return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n"+"if (arguments.length !== "+(argCount-2)+") {\n"+"throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount-2)+" args!');\n"+"}\n";if(needsDestructorStack){invokerFnBody+="var destructors = [];\n";}var dtorStack=needsDestructorStack?"destructors":"null";var args1=["throwBindingError","invoker","fn","runDestructors","retType","classParam"];var args2=[throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,argTypes[0],argTypes[1]];if(isClassMethodFunc){invokerFnBody+="var thisWired = classParam.toWireType("+dtorStack+", this);\n";}for(var i=0;i<argCount-2;++i){invokerFnBody+="var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n";args1.push("argType"+i);args2.push(argTypes[i+2]);}if(isClassMethodFunc){argsListWired="thisWired"+(argsListWired.length>0?", ":"")+argsListWired;}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n";}else{for(var i=isClassMethodFunc?1:2;i<argTypes.length;++i){var paramName=i===1?"thisWired":"arg"+(i-2)+"Wired";if(argTypes[i].destructorFunction!==null){invokerFnBody+=paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n";args1.push(paramName+"_dtor");args2.push(argTypes[i].destructorFunction);}}}if(returns){invokerFnBody+="var ret = retType.fromWireType(rv);\n"+"return ret;\n";}else{}invokerFnBody+="}\n";args1.push(invokerFnBody);var invokerFunction=new_(Function,args1).apply(null,args2);return invokerFunction;}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName);}function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes);}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler;}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler;}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction;}else{proto[methodName].overloadTable[argCount-2]=memberFunction;}return[];});return[];});}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle);}}function count_emval_handles(){var count=0;for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){++count;}}return count;}function get_first_emval(){for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){return emval_handle_array[i];}}return null;}function init_emval(){Module["count_emval_handles"]=count_emval_handles;Module["get_first_emval"]=get_first_emval;}function __emval_register(value){switch(value){case undefined:{return 1;};case null:{return 2;};case true:{return 3;};case false:{return 4;};default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle;}}}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function fromWireType(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv;},"toWireType":function toWireType(destructors,value){return __emval_register(value);},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null});}function _embind_repr(v){if(v===null){return"null";}var t=typeof v==='undefined'?'undefined':_typeof(v);if(t==="object"||t==="array"||t==="function"){return v.toString();}else{return""+v;}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2]);};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3]);};default:throw new TypeError("Unknown float type: "+name);}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function fromWireType(value){return value;},"toWireType":function toWireType(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name);}return value;},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null});}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes);},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[];});}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer];}:function readU8FromPointer(pointer){return HEAPU8[pointer];};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1];}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1];};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2];}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2];};default:throw new TypeError("Unknown integer type: "+name);}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295;}var shift=getShiftFromSize(size);var fromWireType=function fromWireType(value){return value;};if(minRange===0){var bitshift=32-8*size;fromWireType=function fromWireType(value){return value<<bitshift>>>bitshift;};}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function toWireType(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name);}if(value<minRange||value>maxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!");}return isUnsignedType?value>>>0:value|0;},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null});}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size);}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true});}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function fromWireType(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var endChar=HEAPU8[value+4+length];var endCharSwap=0;if(endChar!=0){endCharSwap=endChar;HEAPU8[value+4+length]=0;}var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0){var stringSegment=UTF8ToString(decodeStartPtr);if(str===undefined)str=stringSegment;else{str+=String.fromCharCode(0);str+=stringSegment;}decodeStartPtr=currentBytePtr+1;}}if(endCharSwap!=0)HEAPU8[value+4+length]=endCharSwap;}else{var a=new Array(length);for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAPU8[value+4+i]);}str=a.join("");}_free(value);return str;},"toWireType":function toWireType(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value);}var getLength;var valueIsOfTypeString=typeof value==="string";if(!(valueIsOfTypeString||value instanceof Uint8Array||value instanceof Uint8ClampedArray||value instanceof Int8Array)){throwBindingError("Cannot pass non-string to std::string");}if(stdStringIsUTF8&&valueIsOfTypeString){getLength=function getLength(){return lengthBytesUTF8(value);};}else{getLength=function getLength(){return value.length;};}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1);}else{if(valueIsOfTypeString){for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);if(charCode>255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits");}HEAPU8[ptr+4+i]=charCode;}}else{for(var i=0;i<length;++i){HEAPU8[ptr+4+i]=value[i];}}}if(destructors!==null){destructors.push(_free,ptr);}return ptr;},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function destructorFunction(ptr){_free(ptr);}});}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var getHeap,shift;if(charSize===2){getHeap=function getHeap(){return HEAPU16;};shift=1;}else if(charSize===4){getHeap=function getHeap(){return HEAPU32;};shift=2;}registerType(rawType,{name:name,"fromWireType":function fromWireType(value){var HEAP=getHeap();var length=HEAPU32[value>>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAP[start+i]);}_free(value);return a.join("");},"toWireType":function toWireType(destructors,value){var HEAP=getHeap();var length=value.length;var ptr=_malloc(4+length*charSize);HEAPU32[ptr>>2]=length;var start=ptr+4>>shift;for(var i=0;i<length;++i){HEAP[start+i]=value.charCodeAt(i);}if(destructors!==null){destructors.push(_free,ptr);}return ptr;},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function destructorFunction(ptr){_free(ptr);}});}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function fromWireType(){return undefined;},"toWireType":function toWireType(destructors,o){return undefined;}});}function requireHandle(handle){if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle);}return emval_handle_array[handle].value;}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType));}return impl;}function __emval_as(handle,returnType,destructorsRef){handle=requireHandle(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=__emval_register(destructors);HEAP32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle);}function __emval_lookupTypes(argCount,argTypes,argWireTypes){var a=new Array(argCount);for(var i=0;i<argCount;++i){a[i]=requireRegisteredType(HEAP32[(argTypes>>2)+i],"parameter "+i);}return a;}function __emval_call(handle,argCount,argTypes,argv){handle=requireHandle(handle);var types=__emval_lookupTypes(argCount,argTypes);var args=new Array(argCount);for(var i=0;i<argCount;++i){var type=types[i];args[i]=type["readValueFromPointer"](argv);argv+=type["argPackAdvance"];}var rv=handle.apply(undefined,args);return __emval_register(rv);}function __emval_allocateDestructors(destructorsRef){var destructors=[];HEAP32[destructorsRef>>2]=__emval_register(destructors);return destructors;}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address);}else{return symbol;}}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args);}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id;}function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name;}).join("_")+"$";var params=["retType"];var args=[retType];var argsList="";for(var i=0;i<argCount-1;++i){argsList+=(i!==0?", ":"")+"arg"+i;params.push("argType"+i);args.push(types[1+i]);}var functionName=makeLegalFunctionName("methodCaller_"+signatureName);var functionBody="return function "+functionName+"(handle, name, destructors, args) {\n";var offset=0;for(var i=0;i<argCount-1;++i){functionBody+=" var arg"+i+" = argType"+i+".readValueFromPointer(args"+(offset?"+"+offset:"")+");\n";offset+=types[i+1]["argPackAdvance"];}functionBody+=" var rv = handle[name]("+argsList+");\n";for(var i=0;i<argCount-1;++i){if(types[i+1]["deleteObject"]){functionBody+=" argType"+i+".deleteObject(arg"+i+");\n";}}if(!retType.isVoid){functionBody+=" return retType.toWireType(destructors, rv);\n";}functionBody+="};\n";params.push(functionBody);var invokerFunction=new_(Function,params).apply(null,args);return __emval_addMethodCaller(invokerFunction);}function __emval_get_module_property(name){name=getStringOrSymbol(name);return __emval_register(Module[name]);}function __emval_get_property(handle,key){handle=requireHandle(handle);key=requireHandle(key);return __emval_register(handle[key]);}function __emval_incref(handle){if(handle>4){emval_handle_array[handle].refcount+=1;}}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;i<argCount;++i){argsList+=(i!==0?", ":"")+"arg"+i;}var functionBody="return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n";for(var i=0;i<argCount;++i){functionBody+="var argType"+i+" = requireRegisteredType(HEAP32[(argTypes >> 2) + "+i+'], "parameter '+i+'");\n'+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n";}functionBody+="var obj = new constructor("+argsList+");\n"+"return __emval_register(obj);\n"+"}\n";return new Function("requireRegisteredType","HEAP32","__emval_register",functionBody)(requireRegisteredType,HEAP32,__emval_register);}var emval_newers={};function __emval_new(handle,argCount,argTypes,args){handle=requireHandle(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer;}return newer(handle,argTypes,args);}function __emval_new_cstring(v){return __emval_register(getStringOrSymbol(v));}function __emval_run_destructors(handle){var destructors=emval_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle);}function __emval_take_value(type,argv){type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](argv);return __emval_register(v);}function _abort(){Module["abort"]();}function _llvm_cttz_i64(l,h){var ret=_llvm_cttz_i32(l);if(ret==32)ret+=_llvm_cttz_i32(h);return(setTempRet0(0),ret)|0;}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest;}var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0;}var PTHREAD_SPECIFIC_NEXT_KEY=1;function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL;}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0;}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1;}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL;}PTHREAD_SPECIFIC[key]=value;return 0;}FS.staticInit();__ATINIT__.unshift(function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();});__ATMAIN__.push(function(){FS.ignorePermissions=false;});__ATEXIT__.push(function(){FS.quit();});__ATINIT__.unshift(function(){TTY.init();});__ATEXIT__.push(function(){TTY.shutdown();});if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit();}embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array;}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.");}chr&=255;}ret.push(String.fromCharCode(chr));}return ret.join("");}var decodeBase64=typeof atob==="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2);}if(enc4!==64){output=output+String.fromCharCode(chr3);}}while(i<input.length);return output;};function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE==="boolean"&&ENVIRONMENT_IS_NODE){var buf;try{buf=Buffer.from(s,"base64");}catch(_){buf=new Buffer(s,"base64");}return new Uint8Array(buf.buffer,buf.byteOffset,buf.byteLength);}try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i);}return bytes;}catch(_){throw new Error("Converting base64 string to bytes failed.");}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return;}return intArrayFromBase64(filename.slice(dataURIPrefix.length));}function invoke_i(index){var sp=_stackSave();try{return Module["dynCall_i"](index);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_ii(index,a1){var sp=_stackSave();try{return Module["dynCall_ii"](index,a1);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iii(index,a1,a2){var sp=_stackSave();try{return Module["dynCall_iii"](index,a1,a2);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiii(index,a1,a2,a3){var sp=_stackSave();try{return Module["dynCall_iiii"](index,a1,a2,a3);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=_stackSave();try{return Module["dynCall_iiiii"](index,a1,a2,a3,a4);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=_stackSave();try{return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=_stackSave();try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_v(index){var sp=_stackSave();try{Module["dynCall_v"](index);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_vi(index,a1){var sp=_stackSave();try{Module["dynCall_vi"](index,a1);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_vii(index,a1,a2){var sp=_stackSave();try{Module["dynCall_vii"](index,a1,a2);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viii(index,a1,a2,a3){var sp=_stackSave();try{Module["dynCall_viii"](index,a1,a2,a3);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viiii(index,a1,a2,a3,a4){var sp=_stackSave();try{Module["dynCall_viiii"](index,a1,a2,a3,a4);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=_stackSave();try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=_stackSave();try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_i":invoke_i,"invoke_ii":invoke_ii,"invoke_iii":invoke_iii,"invoke_iiii":invoke_iiii,"invoke_iiiii":invoke_iiiii,"invoke_iiiiii":invoke_iiiiii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_v":invoke_v,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_viii":invoke_viii,"invoke_viiii":invoke_viiii,"invoke_viiiii":invoke_viiiii,"invoke_viiiiii":invoke_viiiiii,"ClassHandle":ClassHandle,"ClassHandle_clone":ClassHandle_clone,"ClassHandle_delete":ClassHandle_delete,"ClassHandle_deleteLater":ClassHandle_deleteLater,"ClassHandle_isAliasOf":ClassHandle_isAliasOf,"ClassHandle_isDeleted":ClassHandle_isDeleted,"RegisteredClass":RegisteredClass,"RegisteredPointer":RegisteredPointer,"RegisteredPointer_deleteObject":RegisteredPointer_deleteObject,"RegisteredPointer_destructor":RegisteredPointer_destructor,"RegisteredPointer_fromWireType":RegisteredPointer_fromWireType,"RegisteredPointer_getPointee":RegisteredPointer_getPointee,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"___cxa_allocate_exception":___cxa_allocate_exception,"___cxa_begin_catch":___cxa_begin_catch,"___cxa_find_matching_catch":___cxa_find_matching_catch,"___cxa_throw":___cxa_throw,"___gxx_personality_v0":___gxx_personality_v0,"___lock":___lock,"___resumeException":___resumeException,"___setErrNo":___setErrNo,"___syscall140":___syscall140,"___syscall145":___syscall145,"___syscall146":___syscall146,"___syscall221":___syscall221,"___syscall5":___syscall5,"___syscall54":___syscall54,"___syscall6":___syscall6,"___unlock":___unlock,"__embind_register_bool":__embind_register_bool,"__embind_register_class":__embind_register_class,"__embind_register_class_constructor":__embind_register_class_constructor,"__embind_register_class_function":__embind_register_class_function,"__embind_register_emval":__embind_register_emval,"__embind_register_float":__embind_register_float,"__embind_register_function":__embind_register_function,"__embind_register_integer":__embind_register_integer,"__embind_register_memory_view":__embind_register_memory_view,"__embind_register_std_string":__embind_register_std_string,"__embind_register_std_wstring":__embind_register_std_wstring,"__embind_register_void":__embind_register_void,"__emval_addMethodCaller":__emval_addMethodCaller,"__emval_allocateDestructors":__emval_allocateDestructors,"__emval_as":__emval_as,"__emval_call":__emval_call,"__emval_call_void_method":__emval_call_void_method,"__emval_decref":__emval_decref,"__emval_get_method_caller":__emval_get_method_caller,"__emval_get_module_property":__emval_get_module_property,"__emval_get_property":__emval_get_property,"__emval_incref":__emval_incref,"__emval_lookupTypes":__emval_lookupTypes,"__emval_new":__emval_new,"__emval_new_cstring":__emval_new_cstring,"__emval_register":__emval_register,"__emval_run_destructors":__emval_run_destructors,"__emval_take_value":__emval_take_value,"_abort":_abort,"_embind_repr":_embind_repr,"_emscripten_memcpy_big":_emscripten_memcpy_big,"_llvm_cttz_i64":_llvm_cttz_i64,"_pthread_getspecific":_pthread_getspecific,"_pthread_key_create":_pthread_key_create,"_pthread_once":_pthread_once,"_pthread_setspecific":_pthread_setspecific,"constNoSmartPtrRawPointerToWireType":constNoSmartPtrRawPointerToWireType,"count_emval_handles":count_emval_handles,"craftEmvalAllocator":craftEmvalAllocator,"craftInvokerFunction":craftInvokerFunction,"createNamedFunction":createNamedFunction,"downcastPointer":downcastPointer,"embind__requireFunction":embind__requireFunction,"embind_init_charCodes":embind_init_charCodes,"ensureOverloadTable":ensureOverloadTable,"exposePublicSymbol":exposePublicSymbol,"extendError":extendError,"floatReadValueFromPointer":floatReadValueFromPointer,"flushPendingDeletes":flushPendingDeletes,"genericPointerToWireType":genericPointerToWireType,"getBasestPointer":getBasestPointer,"getInheritedInstance":getInheritedInstance,"getInheritedInstanceCount":getInheritedInstanceCount,"getLiveInheritedInstances":getLiveInheritedInstances,"getShiftFromSize":getShiftFromSize,"getStringOrSymbol":getStringOrSymbol,"getTypeName":getTypeName,"get_first_emval":get_first_emval,"heap32VectorToArray":heap32VectorToArray,"init_ClassHandle":init_ClassHandle,"init_RegisteredPointer":init_RegisteredPointer,"init_embind":init_embind,"init_emval":init_emval,"integerReadValueFromPointer":integerReadValueFromPointer,"makeClassHandle":makeClassHandle,"makeLegalFunctionName":makeLegalFunctionName,"new_":new_,"nonConstNoSmartPtrRawPointerToWireType":nonConstNoSmartPtrRawPointerToWireType,"readLatin1String":readLatin1String,"registerType":registerType,"replacePublicSymbol":replacePublicSymbol,"requireHandle":requireHandle,"requireRegisteredType":requireRegisteredType,"runDestructor":runDestructor,"runDestructors":runDestructors,"setDelayFunction":setDelayFunction,"shallowCopyInternalPointer":shallowCopyInternalPointer,"simpleReadValueFromPointer":simpleReadValueFromPointer,"throwBindingError":throwBindingError,"throwInstanceAlreadyDeleted":throwInstanceAlreadyDeleted,"throwInternalError":throwInternalError,"throwUnboundTypeError":throwUnboundTypeError,"upcastPointer":upcastPointer,"whenDependentTypesAreResolved":whenDependentTypesAreResolved,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX};// EMSCRIPTEN_START_ASM
  25. var asm=/** @suppress {uselessCode} */function(global,env,buffer){"use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.DYNAMICTOP_PTR|0;var j=env.tempDoublePtr|0;var k=env.ABORT|0;var l=env.STACKTOP|0;var m=env.STACK_MAX|0;var n=0;var o=0;var p=0;var q=0;var r=global.NaN,s=global.Infinity;var t=0,u=0,v=0,w=0,x=0.0;var y=0;var z=global.Math.floor;var A=global.Math.abs;var B=global.Math.sqrt;var C=global.Math.pow;var D=global.Math.cos;var E=global.Math.sin;var F=global.Math.tan;var G=global.Math.acos;var H=global.Math.asin;var I=global.Math.atan;var J=global.Math.atan2;var K=global.Math.exp;var L=global.Math.log;var M=global.Math.ceil;var N=global.Math.imul;var O=global.Math.min;var P=global.Math.max;var Q=global.Math.clz32;var R=env.abort;var S=env.assert;var T=env.enlargeMemory;var U=env.getTotalMemory;var V=env.abortOnCannotGrowMemory;var W=env.invoke_i;var X=env.invoke_ii;var Y=env.invoke_iii;var Z=env.invoke_iiii;var _=env.invoke_iiiii;var $=env.invoke_iiiiii;var aa=env.invoke_iiiiiii;var ba=env.invoke_v;var ca=env.invoke_vi;var da=env.invoke_vii;var ea=env.invoke_viii;var fa=env.invoke_viiii;var ga=env.invoke_viiiii;var ha=env.invoke_viiiiii;var ia=env.ClassHandle;var ja=env.ClassHandle_clone;var ka=env.ClassHandle_delete;var la=env.ClassHandle_deleteLater;var ma=env.ClassHandle_isAliasOf;var na=env.ClassHandle_isDeleted;var oa=env.RegisteredClass;var pa=env.RegisteredPointer;var qa=env.RegisteredPointer_deleteObject;var ra=env.RegisteredPointer_destructor;var sa=env.RegisteredPointer_fromWireType;var ta=env.RegisteredPointer_getPointee;var ua=env.__ZSt18uncaught_exceptionv;var va=env.___cxa_allocate_exception;var wa=env.___cxa_begin_catch;var xa=env.___cxa_find_matching_catch;var ya=env.___cxa_throw;var za=env.___gxx_personality_v0;var Aa=env.___lock;var Ba=env.___resumeException;var Ca=env.___setErrNo;var Da=env.___syscall140;var Ea=env.___syscall145;var Fa=env.___syscall146;var Ga=env.___syscall221;var Ha=env.___syscall5;var Ia=env.___syscall54;var Ja=env.___syscall6;var Ka=env.___unlock;var La=env.__embind_register_bool;var Ma=env.__embind_register_class;var Na=env.__embind_register_class_constructor;var Oa=env.__embind_register_class_function;var Pa=env.__embind_register_emval;var Qa=env.__embind_register_float;var Ra=env.__embind_register_function;var Sa=env.__embind_register_integer;var Ta=env.__embind_register_memory_view;var Ua=env.__embind_register_std_string;var Va=env.__embind_register_std_wstring;var Wa=env.__embind_register_void;var Xa=env.__emval_addMethodCaller;var Ya=env.__emval_allocateDestructors;var Za=env.__emval_as;var _a=env.__emval_call;var $a=env.__emval_call_void_method;var ab=env.__emval_decref;var bb=env.__emval_get_method_caller;var cb=env.__emval_get_module_property;var db=env.__emval_get_property;var eb=env.__emval_incref;var fb=env.__emval_lookupTypes;var gb=env.__emval_new;var hb=env.__emval_new_cstring;var ib=env.__emval_register;var jb=env.__emval_run_destructors;var kb=env.__emval_take_value;var lb=env._abort;var mb=env._embind_repr;var nb=env._emscripten_memcpy_big;var ob=env._llvm_cttz_i64;var pb=env._pthread_getspecific;var qb=env._pthread_key_create;var rb=env._pthread_once;var sb=env._pthread_setspecific;var tb=env.constNoSmartPtrRawPointerToWireType;var ub=env.count_emval_handles;var vb=env.craftEmvalAllocator;var wb=env.craftInvokerFunction;var xb=env.createNamedFunction;var yb=env.downcastPointer;var zb=env.embind__requireFunction;var Ab=env.embind_init_charCodes;var Bb=env.ensureOverloadTable;var Cb=env.exposePublicSymbol;var Db=env.extendError;var Eb=env.floatReadValueFromPointer;var Fb=env.flushPendingDeletes;var Gb=env.genericPointerToWireType;var Hb=env.getBasestPointer;var Ib=env.getInheritedInstance;var Jb=env.getInheritedInstanceCount;var Kb=env.getLiveInheritedInstances;var Lb=env.getShiftFromSize;var Mb=env.getStringOrSymbol;var Nb=env.getTypeName;var Ob=env.get_first_emval;var Pb=env.heap32VectorToArray;var Qb=env.init_ClassHandle;var Rb=env.init_RegisteredPointer;var Sb=env.init_embind;var Tb=env.init_emval;var Ub=env.integerReadValueFromPointer;var Vb=env.makeClassHandle;var Wb=env.makeLegalFunctionName;var Xb=env.new_;var Yb=env.nonConstNoSmartPtrRawPointerToWireType;var Zb=env.readLatin1String;var _b=env.registerType;var $b=env.replacePublicSymbol;var ac=env.requireHandle;var bc=env.requireRegisteredType;var cc=env.runDestructor;var dc=env.runDestructors;var ec=env.setDelayFunction;var fc=env.shallowCopyInternalPointer;var gc=env.simpleReadValueFromPointer;var hc=env.throwBindingError;var ic=env.throwInstanceAlreadyDeleted;var jc=env.throwInternalError;var kc=env.throwUnboundTypeError;var lc=env.upcastPointer;var mc=env.whenDependentTypesAreResolved;var nc=0.0;// EMSCRIPTEN_START_FUNCS
  26. function Ds(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+17|0;n=g+16|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;if((c[k>>2]|0)>>>0<1){f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[h>>2]=-72;o=c[h>>2]|0;l=g;return o|0;}f=(c[k>>2]|0)>>>0>=4;c[(c[i>>2]|0)+12>>2]=c[j>>2];do{if(f){c[(c[i>>2]|0)+8>>2]=(c[j>>2]|0)+(c[k>>2]|0)+-4;e=Qs(c[(c[i>>2]|0)+8>>2]|0)|0;c[c[i>>2]>>2]=e;a[m>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[m>>0]|0|0)p=8-(Rs(d[m>>0]|0)|0)|0;else p=0;c[(c[i>>2]|0)+4>>2]=p;if(!(d[m>>0]|0)){c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}}else{c[(c[i>>2]|0)+8>>2]=c[(c[i>>2]|0)+12>>2];c[c[i>>2]>>2]=d[c[(c[i>>2]|0)+12>>2]>>0];switch(c[k>>2]|0){case 7:{e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+6>>0]|0)<<16);q=10;break;}case 6:{q=10;break;}case 5:{q=11;break;}case 4:{q=12;break;}case 3:{q=13;break;}case 2:{q=14;break;}default:{}}if((q|0)==10){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)<<8);q=11;}if((q|0)==11){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+4>>0]|0)<<0);q=12;}if((q|0)==12){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+3>>0]|0)<<24);q=13;}if((q|0)==13){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+2>>0]|0)<<16);q=14;}if((q|0)==14){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+1>>0]|0)<<8);}a[n>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[n>>0]|0|0)r=8-(Rs(d[n>>0]|0)|0)|0;else r=0;c[(c[i>>2]|0)+4>>2]=r;if(d[n>>0]|0|0){e=(c[i>>2]|0)+4|0;c[e>>2]=(c[e>>2]|0)+(4-(c[k>>2]|0)<<3);break;}c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}}while(0);c[h>>2]=c[k>>2];o=c[h>>2]|0;l=g;return o|0;}function Es(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=c[i>>2];c[k>>2]=c[j>>2];j=Ms(c[h>>2]|0,e[c[k>>2]>>1]|0)|0;c[c[g>>2]>>2]=j;Fs(c[h>>2]|0)|0;c[(c[g>>2]|0)+4>>2]=(c[i>>2]|0)+4;l=f;return;}function Fs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=((c[(c[e>>2]|0)+12>>2]|0)+4|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=Qs(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=Qs(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function Gs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=l;l=l+64|0;e=d+48|0;f=d+36|0;g=d+32|0;h=d+28|0;i=d+24|0;j=d+20|0;k=d+16|0;m=d+12|0;n=d+8|0;o=d+4|0;p=d;c[e>>2]=b;c[g>>2]=(Ls((c[e>>2]|0)+16|0)|0)&255;c[h>>2]=(Ls((c[e>>2]|0)+32|0)|0)&255;c[i>>2]=(Ls((c[e>>2]|0)+24|0)|0)&255;c[j>>2]=c[5696+(c[g>>2]<<2)>>2];c[k>>2]=c[5840+(c[h>>2]<<2)>>2];c[m>>2]=c[i>>2];c[n>>2]=(c[j>>2]|0)+(c[k>>2]|0)+(c[m>>2]|0);if(c[i>>2]|0){b=c[5088+(c[i>>2]<<2)>>2]|0;c[o>>2]=b+(Ms(c[e>>2]|0,c[m>>2]|0)|0);if(Dq()|0)Fs(c[e>>2]|0)|0;}else c[o>>2]=0;do{if((c[i>>2]|0)>>>0<=1){if((c[g>>2]|0)==0&(c[o>>2]|0)>>>0<=1|0)c[o>>2]=1-(c[o>>2]|0);m=(c[e>>2]|0)+40|0;if(!(c[o>>2]|0)){c[o>>2]=c[m>>2];break;}c[p>>2]=c[m+(c[o>>2]<<2)>>2];if((c[o>>2]|0)!=1)c[(c[e>>2]|0)+40+8>>2]=c[(c[e>>2]|0)+40+4>>2];c[(c[e>>2]|0)+40+4>>2]=c[(c[e>>2]|0)+40>>2];m=c[p>>2]|0;c[o>>2]=m;c[(c[e>>2]|0)+40>>2]=m;}else{c[(c[e>>2]|0)+40+8>>2]=c[(c[e>>2]|0)+40+4>>2];c[(c[e>>2]|0)+40+4>>2]=c[(c[e>>2]|0)+40>>2];c[(c[e>>2]|0)+40>>2]=c[o>>2];}}while(0);c[f+8>>2]=c[o>>2];o=c[5216+(c[h>>2]<<2)>>2]|0;if((c[h>>2]|0)>>>0>31)q=Ms(c[e>>2]|0,c[k>>2]|0)|0;else q=0;c[f+4>>2]=o+q;if(Dq()|0?((c[k>>2]|0)+(c[j>>2]|0)|0)>>>0>24:0)Fs(c[e>>2]|0)|0;k=c[6416+(c[g>>2]<<2)>>2]|0;if((c[g>>2]|0)>>>0>15)r=Ms(c[e>>2]|0,c[j>>2]|0)|0;else r=0;c[f>>2]=k+r;r=(Dq()|0)!=0;if(r|(c[n>>2]|0)>>>0>31)Fs(c[e>>2]|0)|0;Ns((c[e>>2]|0)+16|0,c[e>>2]|0);Ns((c[e>>2]|0)+32|0,c[e>>2]|0);if(!(Dq()|0)){s=c[e>>2]|0;t=s+24|0;u=c[e>>2]|0;Ns(t,u);c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];l=d;return;}Fs(c[e>>2]|0)|0;s=c[e>>2]|0;t=s+24|0;u=c[e>>2]|0;Ns(t,u);c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];l=d;return;}function Hs(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;k=l;l=l+64|0;m=k+60|0;n=k+56|0;o=k+52|0;p=k+48|0;q=k+44|0;r=k+40|0;s=k+36|0;t=k+32|0;u=k+28|0;v=k+24|0;w=k+20|0;x=k+16|0;y=k+12|0;z=k+8|0;A=k+4|0;B=k;c[n>>2]=b;c[o>>2]=d;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=(c[n>>2]|0)+(c[e>>2]|0);c[v>>2]=(c[e>>2]|0)+(c[e+4>>2]|0);c[w>>2]=(c[n>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[o>>2]|0)+-8;c[y>>2]=(c[c[p>>2]>>2]|0)+(c[e>>2]|0);c[z>>2]=(c[u>>2]|0)+(0-(c[e+8>>2]|0));if(((c[u>>2]|0)>>>0>(c[x>>2]|0)>>>0?1:(c[w>>2]|0)>>>0>(c[o>>2]|0)>>>0)|0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}Is(c[n>>2]|0,c[c[p>>2]>>2]|0,c[e>>2]|0);c[n>>2]=c[u>>2];c[c[p>>2]>>2]=c[y>>2];do{if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[r>>2]|0)|0)>>>0){if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[s>>2]|0)|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}c[z>>2]=(c[t>>2]|0)+(0-((c[r>>2]|0)-(c[z>>2]|0)));if(((c[z>>2]|0)+(c[e+4>>2]|0)|0)>>>0<=(c[t>>2]|0)>>>0){nE(c[u>>2]|0,c[z>>2]|0,c[e+4>>2]|0)|0;c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}c[A>>2]=(c[t>>2]|0)-(c[z>>2]|0);nE(c[u>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;c[n>>2]=(c[u>>2]|0)+(c[A>>2]|0);y=e+4|0;c[y>>2]=(c[y>>2]|0)-(c[A>>2]|0);c[z>>2]=c[r>>2];if((c[n>>2]|0)>>>0<=(c[x>>2]|0)>>>0?(c[e+4>>2]|0)>>>0>=3:0)break;while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;y=c[z>>2]|0;c[z>>2]=y+1;p=a[y>>0]|0;y=c[n>>2]|0;c[n>>2]=y+1;a[y>>0]=p;}c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}}while(0);if((c[e+8>>2]|0)>>>0<8){c[B>>2]=c[6816+(c[e+8>>2]<<2)>>2];a[c[n>>2]>>0]=a[c[z>>2]>>0]|0;a[(c[n>>2]|0)+1>>0]=a[(c[z>>2]|0)+1>>0]|0;a[(c[n>>2]|0)+2>>0]=a[(c[z>>2]|0)+2>>0]|0;a[(c[n>>2]|0)+3>>0]=a[(c[z>>2]|0)+3>>0]|0;c[z>>2]=(c[z>>2]|0)+(c[6848+(c[e+8>>2]<<2)>>2]|0);Js((c[n>>2]|0)+4|0,c[z>>2]|0);c[z>>2]=(c[z>>2]|0)+(0-(c[B>>2]|0));}else Ks(c[n>>2]|0,c[z>>2]|0);c[n>>2]=(c[n>>2]|0)+8;c[z>>2]=(c[z>>2]|0)+8;B=c[n>>2]|0;a:do{if((c[w>>2]|0)>>>0>((c[o>>2]|0)+-13|0)>>>0){if(B>>>0<(c[x>>2]|0)>>>0){Is(c[n>>2]|0,c[z>>2]|0,(c[x>>2]|0)-(c[n>>2]|0)|0);c[z>>2]=(c[z>>2]|0)+((c[x>>2]|0)-(c[n>>2]|0));c[n>>2]=c[x>>2];}while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;r=c[z>>2]|0;c[z>>2]=r+1;A=a[r>>0]|0;r=c[n>>2]|0;c[n>>2]=r+1;a[r>>0]=A;}}else Is(B,c[z>>2]|0,(c[e+4>>2]|0)-8|0);}while(0);c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}function Is(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{Ks(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function Js(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;l=e;return;}function Ks(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function Ls(d){d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=(c[(c[f>>2]|0)+4>>2]|0)+(c[c[f>>2]>>2]<<2)|0;b[g>>1]=b[d>>1]|0;b[g+2>>1]=b[d+2>>1]|0;l=e;return a[g+2>>0]|0;}function Ms(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Os(c[e>>2]|0,c[f>>2]|0)|0;Ps(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function Ns(a,f){a=a|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+16|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=f;f=(c[(c[h>>2]|0)+4>>2]|0)+(c[c[h>>2]>>2]<<2)|0;b[j>>1]=b[f>>1]|0;b[j+2>>1]=b[f+2>>1]|0;c[k>>2]=d[j+3>>0];c[m>>2]=Ms(c[i>>2]|0,c[k>>2]|0)|0;c[c[h>>2]>>2]=(e[j>>1]|0)+(c[m>>2]|0);l=g;return;}function Os(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>1>>>(31-(c[f>>2]|0)&31)|0;}function Ps(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function Qs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Dq()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=Bq(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=Fq(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Rs(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Ss(b,e,f,g,h,i,j,k,m){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;n=l;l=l+160|0;o=n+152|0;p=n+148|0;q=n+144|0;r=n+140|0;s=n+136|0;t=n+132|0;u=n+128|0;v=n+124|0;w=n+120|0;x=n+116|0;y=n+112|0;z=n;A=n+108|0;c[p>>2]=b;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=i;c[v>>2]=j;c[w>>2]=k;c[x>>2]=m;a:do{switch(c[q>>2]|0){case 1:{if(!(c[u>>2]|0)){c[o>>2]=-72;break a;}if((d[c[t>>2]>>0]|0)>>>0>(c[r>>2]|0)>>>0){c[o>>2]=-20;break a;}else{Ts(c[p>>2]|0,a[c[t>>2]>>0]|0)|0;c[o>>2]=1;break a;}break;}case 0:{Us(c[p>>2]|0,c[v>>2]|0,c[r>>2]|0,c[w>>2]|0)|0;c[o>>2]=0;break;}case 2:{if(c[x>>2]|0){c[o>>2]=0;break a;}else{c[o>>2]=-20;break a;}break;}default:{c[A>>2]=Vs(z,r,y,c[t>>2]|0,c[u>>2]|0)|0;if(hr(c[A>>2]|0)|0){c[o>>2]=-20;break a;}if((c[y>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[o>>2]=-20;break a;}else{Us(c[p>>2]|0,z,c[r>>2]|0,c[y>>2]|0)|0;c[o>>2]=c[A>>2];break a;}}}}while(0);l=n;return c[o>>2]|0;}function Ts(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+20|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=d;a[h>>0]=e;c[i>>2]=c[g>>2];c[j>>2]=c[i>>2];c[k>>2]=(c[g>>2]|0)+4;c[m>>2]=c[k>>2];b[c[j>>2]>>1]=0;b[(c[j>>2]|0)+2>>1]=0;b[c[m>>2]>>1]=0;a[(c[m>>2]|0)+2>>0]=a[h>>0]|0;a[(c[m>>2]|0)+3>>0]=0;l=f;return 0;}function Us(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;j=l;l=l+592|0;k=j+576|0;m=j+572|0;n=j+568|0;o=j+564|0;p=j+560|0;q=j+556|0;r=j+552|0;s=j;t=j+548|0;u=j+544|0;v=j+540|0;w=j+584|0;x=j+582|0;y=j+536|0;z=j+532|0;A=j+528|0;B=j+524|0;C=j+520|0;D=j+516|0;E=j+512|0;F=j+588|0;G=j+580|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=i;c[q>>2]=(c[m>>2]|0)+4;c[r>>2]=c[q>>2];c[t>>2]=(c[o>>2]|0)+1;c[u>>2]=1<<c[p>>2];c[v>>2]=(c[u>>2]|0)-1;if((c[o>>2]|0)>>>0>255){c[k>>2]=-46;H=c[k>>2]|0;l=j;return H|0;}if((c[p>>2]|0)>>>0>12){c[k>>2]=-44;H=c[k>>2]|0;l=j;return H|0;}b[w>>1]=c[p>>2];b[w+2>>1]=1;b[x>>1]=1<<(c[p>>2]|0)-1;c[y>>2]=0;while(1){if((c[y>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;if((b[(c[n>>2]|0)+(c[y>>2]<<1)>>1]|0)==-1){o=c[y>>2]&255;q=c[r>>2]|0;i=c[v>>2]|0;c[v>>2]=i+-1;a[q+(i<<2)+2>>0]=o;b[s+(c[y>>2]<<1)>>1]=1;}else{if((b[(c[n>>2]|0)+(c[y>>2]<<1)>>1]|0)>=(b[x>>1]|0))b[w+2>>1]=0;b[s+(c[y>>2]<<1)>>1]=b[(c[n>>2]|0)+(c[y>>2]<<1)>>1]|0;}c[y>>2]=(c[y>>2]|0)+1;}y=c[m>>2]|0;b[y>>1]=b[w>>1]|0;b[y+2>>1]=b[w+2>>1]|0;c[z>>2]=(c[u>>2]|0)-1;c[A>>2]=((c[u>>2]|0)>>>1)+((c[u>>2]|0)>>>3)+3;c[C>>2]=0;c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;c[D>>2]=0;while(1){I=c[B>>2]|0;if((c[D>>2]|0)>=(b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0))break;a[(c[r>>2]|0)+(c[C>>2]<<2)+2>>0]=I;c[C>>2]=(c[C>>2]|0)+(c[A>>2]|0)&c[z>>2];while(1){if((c[C>>2]|0)>>>0<=(c[v>>2]|0)>>>0)break;c[C>>2]=(c[C>>2]|0)+(c[A>>2]|0)&c[z>>2];}c[D>>2]=(c[D>>2]|0)+1;}c[B>>2]=I+1;}if(c[C>>2]|0){c[k>>2]=-1;H=c[k>>2]|0;l=j;return H|0;}c[E>>2]=0;while(1){if((c[E>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;a[F>>0]=a[(c[r>>2]|0)+(c[E>>2]<<2)+2>>0]|0;C=s+(d[F>>0]<<1)|0;I=b[C>>1]|0;b[C>>1]=I+1<<16>>16;b[G>>1]=I;I=c[p>>2]|0;C=I-(Rs(e[G>>1]|0)|0)&255;a[(c[r>>2]|0)+(c[E>>2]<<2)+3>>0]=C;b[(c[r>>2]|0)+(c[E>>2]<<2)>>1]=(e[G>>1]<<d[(c[r>>2]|0)+(c[E>>2]<<2)+3>>0])-(c[u>>2]|0);c[E>>2]=(c[E>>2]|0)+1;}c[k>>2]=0;H=c[k>>2]|0;l=j;return H|0;}function Vs(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+20|0;v=h+16|0;w=h+12|0;x=h+8|0;y=h+4|0;z=h;A=h+70|0;B=h+68|0;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[p>>2];c[x>>2]=0;c[y>>2]=0;if((c[o>>2]|0)>>>0<4){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=Bq(c[r>>2]|0)|0;c[s>>2]=(c[v>>2]&15)+5;if((c[s>>2]|0)>15){c[i>>2]=-44;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=(c[v>>2]|0)>>>4;c[w>>2]=4;c[c[m>>2]>>2]=c[s>>2];c[t>>2]=(1<<c[s>>2])+1;c[u>>2]=1<<c[s>>2];c[s>>2]=(c[s>>2]|0)+1;a:while(1){if((c[t>>2]|0)<=1)break;if((c[x>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0)break;do{if(c[y>>2]|0){c[z>>2]=c[x>>2];while(1){if((c[v>>2]&65535|0)!=65535)break;c[z>>2]=(c[z>>2]|0)+24;if((c[r>>2]|0)>>>0<((c[q>>2]|0)+-5|0)>>>0){c[r>>2]=(c[r>>2]|0)+2;m=Bq(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]|0);}else{c[v>>2]=(c[v>>2]|0)>>>16;c[w>>2]=(c[w>>2]|0)+16;}}while(1){if((c[v>>2]&3|0)!=3)break;c[z>>2]=(c[z>>2]|0)+3;c[v>>2]=(c[v>>2]|0)>>>2;c[w>>2]=(c[w>>2]|0)+2;}c[z>>2]=(c[z>>2]|0)+(c[v>>2]&3);c[w>>2]=(c[w>>2]|0)+2;if((c[z>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0){D=19;break a;}while(1){if((c[x>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break;m=c[j>>2]|0;n=c[x>>2]|0;c[x>>2]=n+1;b[m+(n<<1)>>1]=0;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[v>>2]=(c[v>>2]|0)>>>2;break;}c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;n=Bq(c[r>>2]|0)|0;c[v>>2]=n>>>(c[w>>2]|0);}}while(0);b[A>>1]=(c[u>>2]<<1)-1-(c[t>>2]|0);n=c[v>>2]|0;m=c[u>>2]|0;if((c[v>>2]&(c[u>>2]|0)-1)>>>0<(b[A>>1]|0)>>>0){b[B>>1]=n&m-1;c[w>>2]=(c[w>>2]|0)+((c[s>>2]|0)-1);}else{b[B>>1]=n&(m<<1)-1;if((b[B>>1]|0)>=(c[u>>2]|0))b[B>>1]=(b[B>>1]|0)-(b[A>>1]|0);c[w>>2]=(c[w>>2]|0)+(c[s>>2]|0);}b[B>>1]=(b[B>>1]|0)+-1<<16>>16;m=(Ws(b[B>>1]|0)|0)<<16>>16;c[t>>2]=(c[t>>2]|0)-m;m=b[B>>1]|0;n=c[j>>2]|0;g=c[x>>2]|0;c[x>>2]=g+1;b[n+(g<<1)>>1]=m;c[y>>2]=((b[B>>1]|0)!=0^1)&1;while(1){if((c[t>>2]|0)>=(c[u>>2]|0))break;c[s>>2]=(c[s>>2]|0)+-1;c[u>>2]=c[u>>2]>>1;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[w>>2]=(c[w>>2]|0)-((c[q>>2]|0)+-4-(c[r>>2]|0)<<3);c[r>>2]=(c[q>>2]|0)+-4;}else{c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;}m=Bq(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]&31);}if((D|0)==19){c[i>>2]=-48;C=c[i>>2]|0;l=h;return C|0;}if((c[t>>2]|0)!=1){c[i>>2]=-1;C=c[i>>2]|0;l=h;return C|0;}c[c[k>>2]>>2]=(c[x>>2]|0)-1;c[r>>2]=(c[r>>2]|0)+((c[w>>2]|0)+7>>3);if(((c[r>>2]|0)-(c[p>>2]|0)|0)>>>0>(c[o>>2]|0)>>>0){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}else{c[i>>2]=(c[r>>2]|0)-(c[p>>2]|0);C=c[i>>2]|0;l=h;return C|0;}return 0;}function Ws(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=a;a=b[d>>1]|0;l=c;return((b[d>>1]|0)<0?0-a|0:a)&65535|0;}function Xs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=kt(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(at(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[n>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=Bt(c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0,c[i>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function Ys(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+24|0;i=g+20|0;j=g+16|0;k=g+12|0;m=g+8|0;n=g+4|0;o=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if(!(c[k>>2]|0)){c[h>>2]=-70;p=c[h>>2]|0;l=g;return p|0;}if((c[n>>2]|0)>>>0<=1?1:(c[n>>2]|0)>>>0>=(c[k>>2]|0)>>>0){c[h>>2]=-20;p=c[h>>2]|0;l=g;return p|0;}c[o>>2]=ht(c[k>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;i=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;if(c[o>>2]|0)q=it(f,i,j,k,m)|0;else q=jt(f,i,j,k,m)|0;c[h>>2]=q;p=c[h>>2]|0;l=g;return p|0;}function Zs(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;p=h+24|0;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;_s(p,c[o>>2]|0);if((d[p+1>>0]|0|0)!=1){c[i>>2]=-1;q=c[i>>2]|0;l=h;return q|0;}else{c[i>>2]=$s(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function _s(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=c[f>>2]|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;a[b>>0]=a[g>>0]|0;a[b+1>>0]=a[g+1>>0]|0;a[b+2>>0]=a[g+2>>0]|0;a[b+3>>0]=a[g+3>>0]|0;l=e;return;}function $s(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=l;l=l+80|0;i=h+60|0;j=h+56|0;k=h+52|0;m=h+48|0;n=h+44|0;o=h+40|0;p=h+24|0;q=h+16|0;r=h+12|0;s=h+8|0;t=h+4|0;u=h;v=h+64|0;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[q>>2]=Ds(p,c[m>>2]|0,c[n>>2]|0)|0;if(at(c[q>>2]|0)|0){c[i>>2]=c[q>>2];w=c[i>>2]|0;l=h;return w|0;}c[r>>2]=c[j>>2];c[s>>2]=(c[r>>2]|0)+(c[k>>2]|0);c[t>>2]=(c[o>>2]|0)+4;c[u>>2]=c[t>>2];_s(v,c[o>>2]|0);bt(c[r>>2]|0,p,c[s>>2]|0,c[u>>2]|0,d[v+2>>0]|0)|0;if(ct(p)|0){c[i>>2]=c[k>>2];w=c[i>>2]|0;l=h;return w|0;}else{c[i>>2]=-20;w=c[i>>2]|0;l=h;return w|0;}return 0;}function at(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=hr(c[d>>2]|0)|0;l=b;return a|0;}function bt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[h>>2];while(1){if(Fs(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>=((c[j>>2]|0)+-7|0)>>>0)break;if(dt()|0){f=et(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}dt()|0;f=et(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;if(dt()|0){f=et(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}f=et(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){if(Fs(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=et(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){o=c[h>>2]|0;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=et(o,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}if(o>>>0>=(c[j>>2]|0)>>>0){p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}j=ft(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+j;p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}function ct(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;c[d>>2]=a;if((c[(c[d>>2]|0)+8>>2]|0)!=(c[(c[d>>2]|0)+12>>2]|0)){e=0;f=e&1;l=b;return f|0;}e=(c[(c[d>>2]|0)+4>>2]|0)==32;f=e&1;l=b;return f|0;}function dt(){return 0;}function et(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=gt(c[j>>2]|0,c[m>>2]|0)|0;m=c[i>>2]|0;i=(c[k>>2]|0)+(c[n>>2]<<2)|0;a[m>>0]=a[i>>0]|0;a[m+1>>0]=a[i+1>>0]|0;Ps(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0;}function ft(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=gt(c[j>>2]|0,c[m>>2]|0)|0;a[c[i>>2]>>0]=a[(c[k>>2]|0)+(c[n>>2]<<2)>>0]|0;i=c[j>>2]|0;if((d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0)==1){Ps(i,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return 1;}if((c[i+4>>2]|0)>>>0>=32){l=h;return 1;}Ps(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);if((c[(c[j>>2]|0)+4>>2]|0)>>>0<=32){l=h;return 1;}c[(c[j>>2]|0)+4>>2]=32;l=h;return 1;}function gt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function ht(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d+20|0;f=d+16|0;g=d+12|0;h=d+8|0;i=d+4|0;j=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=(c[f>>2]<<4>>>0)/((c[e>>2]|0)>>>0)|0;c[h>>2]=(c[e>>2]|0)>>>8;c[i>>2]=(c[7008+((c[g>>2]|0)*24|0)>>2]|0)+(N(c[7008+((c[g>>2]|0)*24|0)+4>>2]|0,c[h>>2]|0)|0);c[j>>2]=(c[7008+((c[g>>2]|0)*24|0)+8>>2]|0)+(N(c[7008+((c[g>>2]|0)*24|0)+8+4>>2]|0,c[h>>2]|0)|0);c[j>>2]=(c[j>>2]|0)+((c[j>>2]|0)>>>3);l=d;return(c[j>>2]|0)>>>0<(c[i>>2]|0)>>>0|0;}function it(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=vt(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(at(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[n>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=wt(c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0,c[i>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function jt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=kt(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(at(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[n>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=lt(c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0,c[i>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function kt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;g=l;l=l+416|0;h=g+396|0;i=g+392|0;j=g+388|0;k=g+384|0;m=g+80|0;n=g;o=g+380|0;p=g+376|0;q=g+372|0;r=g+368|0;s=g+364|0;t=g+404|0;u=g+360|0;v=g+356|0;w=g+352|0;x=g+348|0;y=g+344|0;z=g+340|0;A=g+336|0;B=g+400|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[o>>2]=0;c[p>>2]=0;c[r>>2]=(c[i>>2]|0)+4;c[s>>2]=c[r>>2];c[q>>2]=ot(m,256,n,p,o,c[j>>2]|0,c[k>>2]|0)|0;if(at(c[q>>2]|0)|0){c[h>>2]=c[q>>2];C=c[h>>2]|0;l=g;return C|0;}_s(t,c[i>>2]|0);if((c[o>>2]|0)>>>0>((d[t>>0]|0)+1|0)>>>0){c[h>>2]=-44;C=c[h>>2]|0;l=g;return C|0;}a[t+1>>0]=0;a[t+2>>0]=c[o>>2];k=c[i>>2]|0;a[k>>0]=a[t>>0]|0;a[k+1>>0]=a[t+1>>0]|0;a[k+2>>0]=a[t+2>>0]|0;a[k+3>>0]=a[t+3>>0]|0;c[v>>2]=0;c[u>>2]=1;while(1){if((c[u>>2]|0)>>>0>=((c[o>>2]|0)+1|0)>>>0)break;c[w>>2]=c[v>>2];c[v>>2]=(c[v>>2]|0)+(c[n+(c[u>>2]<<2)>>2]<<(c[u>>2]|0)-1);c[n+(c[u>>2]<<2)>>2]=c[w>>2];c[u>>2]=(c[u>>2]|0)+1;}c[x>>2]=0;while(1){if((c[x>>2]|0)>>>0>=(c[p>>2]|0)>>>0)break;c[y>>2]=d[m+(c[x>>2]|0)>>0];c[z>>2]=1<<c[y>>2]>>1;a[B>>0]=c[x>>2];a[B+1>>0]=(c[o>>2]|0)+1-(c[y>>2]|0);c[A>>2]=c[n+(c[y>>2]<<2)>>2];while(1){if((c[A>>2]|0)>>>0>=((c[n+(c[y>>2]<<2)>>2]|0)+(c[z>>2]|0)|0)>>>0)break;u=(c[s>>2]|0)+(c[A>>2]<<1)|0;a[u>>0]=a[B>>0]|0;a[u+1>>0]=a[B+1>>0]|0;c[A>>2]=(c[A>>2]|0)+1;}u=n+(c[y>>2]<<2)|0;c[u>>2]=(c[u>>2]|0)+(c[z>>2]|0);c[x>>2]=(c[x>>2]|0)+1;}c[h>>2]=c[q>>2];C=c[h>>2]|0;l=g;return C|0;}function lt(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;i=l;l=l+208|0;j=i+192|0;k=i+188|0;m=i+184|0;n=i+180|0;o=i+176|0;p=i+172|0;q=i+168|0;r=i+164|0;s=i+160|0;t=i+156|0;u=i+152|0;v=i+136|0;w=i+120|0;x=i+104|0;y=i+88|0;z=i+84|0;A=i+80|0;B=i+76|0;C=i+72|0;D=i+68|0;E=i+64|0;F=i+60|0;G=i+56|0;H=i+52|0;I=i+48|0;J=i+44|0;K=i+40|0;L=i+36|0;M=i+32|0;N=i+28|0;O=i+24|0;P=i+20|0;Q=i+196|0;R=i+16|0;S=i+12|0;T=i+8|0;U=i+4|0;V=i;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;if((c[o>>2]|0)>>>0<10){c[j>>2]=-20;W=c[j>>2]|0;l=i;return W|0;}c[q>>2]=c[n>>2];c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=(c[p>>2]|0)+4;c[u>>2]=c[t>>2];c[z>>2]=(Eq(c[q>>2]|0)|0)&65535;c[A>>2]=(Eq((c[q>>2]|0)+2|0)|0)&65535;c[B>>2]=(Eq((c[q>>2]|0)+4|0)|0)&65535;c[C>>2]=(c[o>>2]|0)-((c[z>>2]|0)+(c[A>>2]|0)+(c[B>>2]|0)+6);c[D>>2]=(c[q>>2]|0)+6;c[E>>2]=(c[D>>2]|0)+(c[z>>2]|0);c[F>>2]=(c[E>>2]|0)+(c[A>>2]|0);c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(((c[m>>2]|0)+3|0)>>>0)/4|0;c[I>>2]=(c[r>>2]|0)+(c[H>>2]|0);c[J>>2]=(c[I>>2]|0)+(c[H>>2]|0);c[K>>2]=(c[J>>2]|0)+(c[H>>2]|0);c[L>>2]=c[r>>2];c[M>>2]=c[I>>2];c[N>>2]=c[J>>2];c[O>>2]=c[K>>2];_s(Q,c[p>>2]|0);c[R>>2]=d[Q+2>>0];if((c[C>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[j>>2]=-20;W=c[j>>2]|0;l=i;return W|0;}c[S>>2]=Ds(v,c[D>>2]|0,c[z>>2]|0)|0;if(at(c[S>>2]|0)|0){c[j>>2]=c[S>>2];W=c[j>>2]|0;l=i;return W|0;}c[T>>2]=Ds(w,c[E>>2]|0,c[A>>2]|0)|0;if(at(c[T>>2]|0)|0){c[j>>2]=c[T>>2];W=c[j>>2]|0;l=i;return W|0;}c[U>>2]=Ds(x,c[F>>2]|0,c[B>>2]|0)|0;if(at(c[U>>2]|0)|0){c[j>>2]=c[U>>2];W=c[j>>2]|0;l=i;return W|0;}c[V>>2]=Ds(y,c[G>>2]|0,c[C>>2]|0)|0;if(at(c[V>>2]|0)|0){c[j>>2]=c[V>>2];W=c[j>>2]|0;l=i;return W|0;}V=Fs(v)|0;C=V|(Fs(w)|0);V=C|(Fs(x)|0);c[P>>2]=V|(Fs(y)|0);while(1){if(c[P>>2]|0)break;if((c[O>>2]|0)>>>0>=((c[s>>2]|0)+-7|0)>>>0)break;if(dt()|0){V=mt(v,c[u>>2]|0,c[R>>2]|0)|0;C=c[L>>2]|0;c[L>>2]=C+1;a[C>>0]=V;}if(dt()|0){V=mt(w,c[u>>2]|0,c[R>>2]|0)|0;C=c[M>>2]|0;c[M>>2]=C+1;a[C>>0]=V;}if(dt()|0){V=mt(x,c[u>>2]|0,c[R>>2]|0)|0;C=c[N>>2]|0;c[N>>2]=C+1;a[C>>0]=V;}if(dt()|0){V=mt(y,c[u>>2]|0,c[R>>2]|0)|0;C=c[O>>2]|0;c[O>>2]=C+1;a[C>>0]=V;}dt()|0;V=mt(v,c[u>>2]|0,c[R>>2]|0)|0;C=c[L>>2]|0;c[L>>2]=C+1;a[C>>0]=V;dt()|0;V=mt(w,c[u>>2]|0,c[R>>2]|0)|0;C=c[M>>2]|0;c[M>>2]=C+1;a[C>>0]=V;dt()|0;V=mt(x,c[u>>2]|0,c[R>>2]|0)|0;C=c[N>>2]|0;c[N>>2]=C+1;a[C>>0]=V;dt()|0;V=mt(y,c[u>>2]|0,c[R>>2]|0)|0;C=c[O>>2]|0;c[O>>2]=C+1;a[C>>0]=V;if(dt()|0){V=mt(v,c[u>>2]|0,c[R>>2]|0)|0;C=c[L>>2]|0;c[L>>2]=C+1;a[C>>0]=V;}if(dt()|0){V=mt(w,c[u>>2]|0,c[R>>2]|0)|0;C=c[M>>2]|0;c[M>>2]=C+1;a[C>>0]=V;}if(dt()|0){V=mt(x,c[u>>2]|0,c[R>>2]|0)|0;C=c[N>>2]|0;c[N>>2]=C+1;a[C>>0]=V;}if(dt()|0){V=mt(y,c[u>>2]|0,c[R>>2]|0)|0;C=c[O>>2]|0;c[O>>2]=C+1;a[C>>0]=V;}V=mt(v,c[u>>2]|0,c[R>>2]|0)|0;C=c[L>>2]|0;c[L>>2]=C+1;a[C>>0]=V;V=mt(w,c[u>>2]|0,c[R>>2]|0)|0;C=c[M>>2]|0;c[M>>2]=C+1;a[C>>0]=V;V=mt(x,c[u>>2]|0,c[R>>2]|0)|0;C=c[N>>2]|0;c[N>>2]=C+1;a[C>>0]=V;V=mt(y,c[u>>2]|0,c[R>>2]|0)|0;C=c[O>>2]|0;c[O>>2]=C+1;a[C>>0]=V;V=Fs(v)|0;C=V|(Fs(w)|0);V=C|(Fs(x)|0);c[P>>2]=V|(Fs(y)|0);}if((c[L>>2]|0)>>>0>(c[I>>2]|0)>>>0){c[j>>2]=-20;W=c[j>>2]|0;l=i;return W|0;}if((c[M>>2]|0)>>>0>(c[J>>2]|0)>>>0){c[j>>2]=-20;W=c[j>>2]|0;l=i;return W|0;}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[j>>2]=-20;W=c[j>>2]|0;l=i;return W|0;}nt(c[L>>2]|0,v,c[I>>2]|0,c[u>>2]|0,c[R>>2]|0)|0;nt(c[M>>2]|0,w,c[J>>2]|0,c[u>>2]|0,c[R>>2]|0)|0;nt(c[N>>2]|0,x,c[K>>2]|0,c[u>>2]|0,c[R>>2]|0)|0;nt(c[O>>2]|0,y,c[s>>2]|0,c[u>>2]|0,c[R>>2]|0)|0;R=ct(v)|0;v=R&(ct(w)|0);w=v&(ct(x)|0);c[P>>2]=w&(ct(y)|0);if(c[P>>2]|0){c[j>>2]=c[m>>2];W=c[j>>2]|0;l=i;return W|0;}else{c[j>>2]=-20;W=c[j>>2]|0;l=i;return W|0;}return 0;}function mt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+16|0;c[h>>2]=b;c[i>>2]=e;c[j>>2]=f;c[k>>2]=gt(c[h>>2]|0,c[j>>2]|0)|0;a[m>>0]=a[(c[i>>2]|0)+(c[k>>2]<<1)>>0]|0;Ps(c[h>>2]|0,d[(c[i>>2]|0)+(c[k>>2]<<1)+1>>0]|0);l=g;return a[m>>0]|0;}function nt(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[i>>2];while(1){if(Fs(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>((c[k>>2]|0)+-4|0)>>>0)break;if(dt()|0){g=mt(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}dt()|0;g=mt(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;if(dt()|0){g=mt(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}g=mt(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if(Fs(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=mt(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=mt(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}l=h;return(c[k>>2]|0)-(c[o>>2]|0)|0;}function ot(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;k=l;l=l+80|0;m=k+72|0;n=k+68|0;o=k+64|0;p=k+60|0;q=k+56|0;r=k+52|0;s=k+48|0;t=k+44|0;u=k+40|0;v=k+36|0;w=k+32|0;x=k+28|0;y=k+24|0;z=k+20|0;A=k+16|0;B=k+12|0;C=k+8|0;D=k+4|0;E=k;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[v>>2]=c[s>>2];if(!(c[t>>2]|0)){c[m>>2]=-72;F=c[m>>2]|0;l=k;return F|0;}c[w>>2]=d[c[v>>2]>>0];s=c[w>>2]|0;a:do{if((c[w>>2]|0)>>>0<128){if((s+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;F=c[m>>2]|0;l=k;return F|0;}c[x>>2]=pt(c[n>>2]|0,(c[o>>2]|0)-1|0,(c[v>>2]|0)+1|0,c[w>>2]|0)|0;if(qt(c[x>>2]|0)|0){c[m>>2]=c[x>>2];F=c[m>>2]|0;l=k;return F|0;}}else{j=c[w>>2]|0;if(s>>>0>=242){c[x>>2]=c[7392+(j-242<<2)>>2];oE(c[n>>2]|0,1,c[o>>2]|0)|0;c[w>>2]=0;break;}c[x>>2]=j-127;c[w>>2]=(((c[x>>2]|0)+1|0)>>>0)/2|0;if(((c[w>>2]|0)+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;F=c[m>>2]|0;l=k;return F|0;}if((c[x>>2]|0)>>>0>=(c[o>>2]|0)>>>0){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}c[v>>2]=(c[v>>2]|0)+1;c[y>>2]=0;while(1){if((c[y>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break a;a[(c[n>>2]|0)+(c[y>>2]|0)>>0]=(d[(c[v>>2]|0)+(((c[y>>2]|0)>>>0)/2|0)>>0]|0)>>4;a[(c[n>>2]|0)+((c[y>>2]|0)+1)>>0]=(d[(c[v>>2]|0)+(((c[y>>2]|0)>>>0)/2|0)>>0]|0)&15;c[y>>2]=(c[y>>2]|0)+2;}}}while(0);y=c[p>>2]|0;v=y+68|0;do{c[y>>2]=0;y=y+4|0;}while((y|0)<(v|0));c[u>>2]=0;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break;if((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0|0)>=16){G=20;break;}y=(c[p>>2]|0)+((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)<<2)|0;c[y>>2]=(c[y>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+(1<<(d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)>>1);c[z>>2]=(c[z>>2]|0)+1;}if((G|0)==20){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}if(!(c[u>>2]|0)){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}c[A>>2]=(Rs(c[u>>2]|0)|0)+1;if((c[A>>2]|0)>>>0>16){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}c[c[r>>2]>>2]=c[A>>2];c[B>>2]=1<<c[A>>2];c[C>>2]=(c[B>>2]|0)-(c[u>>2]|0);c[D>>2]=1<<(Rs(c[C>>2]|0)|0);c[E>>2]=(Rs(c[C>>2]|0)|0)+1;if((c[D>>2]|0)!=(c[C>>2]|0)){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}a[(c[n>>2]|0)+(c[x>>2]|0)>>0]=c[E>>2];n=(c[p>>2]|0)+(c[E>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;if((c[(c[p>>2]|0)+4>>2]|0)>>>0>=2?(c[(c[p>>2]|0)+4>>2]&1|0)==0:0){c[c[q>>2]>>2]=(c[x>>2]|0)+1;c[m>>2]=(c[w>>2]|0)+1;F=c[m>>2]|0;l=k;return F|0;}c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}function pt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+16960|0;g=f+16952|0;h=f+16948|0;i=f+16944|0;j=f+16940|0;k=f+16936|0;m=f+16932|0;n=f+16928|0;o=f+16400|0;p=f;q=f+16924|0;r=f+16920|0;s=f+16916|0;t=f+16912|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[j>>2];c[n>>2]=c[m>>2];c[r>>2]=255;if((c[k>>2]|0)>>>0<2){c[g>>2]=-72;u=c[g>>2]|0;l=f;return u|0;}c[s>>2]=Vs(o,r,q,c[m>>2]|0,c[k>>2]|0)|0;m=(hr(c[s>>2]|0)|0)!=0;j=c[s>>2]|0;if(m){c[g>>2]=j;u=c[g>>2]|0;l=f;return u|0;}if(j>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;u=c[g>>2]|0;l=f;return u|0;}c[n>>2]=(c[n>>2]|0)+(c[s>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[s>>2]|0);c[t>>2]=Us(p,o,c[r>>2]|0,c[q>>2]|0)|0;if(hr(c[t>>2]|0)|0){c[g>>2]=c[t>>2];u=c[g>>2]|0;l=f;return u|0;}else{c[g>>2]=rt(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,p)|0;u=c[g>>2]|0;l=f;return u|0;}return 0;}function qt(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=hr(c[d>>2]|0)|0;l=b;return a|0;}function rt(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;i=l;l=l+208|0;j=i+192|0;k=i+188|0;m=i+184|0;n=i+180|0;o=i+176|0;p=i+172|0;q=i+168|0;r=i+164|0;s=i+160|0;t=i+156|0;u=i+152|0;v=i+136|0;w=i+128|0;x=i+120|0;y=i+116|0;z=i+112|0;A=i+108|0;B=i+104|0;C=i+100|0;D=i+96|0;E=i+92|0;F=i+88|0;G=i+84|0;H=i+80|0;I=i+76|0;J=i+72|0;K=i+56|0;L=i+48|0;M=i+40|0;N=i+36|0;O=i+32|0;P=i+28|0;Q=i+24|0;R=i+20|0;S=i+16|0;T=i+12|0;U=i+8|0;V=i+4|0;W=i;c[P>>2]=b;c[Q>>2]=d;c[R>>2]=f;c[S>>2]=g;c[T>>2]=h;c[U>>2]=c[T>>2];c[V>>2]=c[U>>2];c[W>>2]=e[(c[V>>2]|0)+2>>1];V=c[P>>2]|0;P=c[Q>>2]|0;Q=c[R>>2]|0;R=c[S>>2]|0;S=c[T>>2]|0;if(c[W>>2]|0){c[A>>2]=V;c[B>>2]=P;c[C>>2]=Q;c[D>>2]=R;c[E>>2]=S;c[F>>2]=1;c[G>>2]=c[A>>2];c[H>>2]=c[G>>2];c[I>>2]=(c[H>>2]|0)+(c[B>>2]|0);c[J>>2]=(c[I>>2]|0)+-3;c[N>>2]=Ds(K,c[C>>2]|0,c[D>>2]|0)|0;do{if(hr(c[N>>2]|0)|0)c[z>>2]=c[N>>2];else{Es(L,K,c[E>>2]|0);Es(M,K,c[E>>2]|0);while(1){if(Fs(K)|0)break;if((c[H>>2]|0)>>>0>=(c[J>>2]|0)>>>0)break;if(c[F>>2]|0)X=(st(L,K)|0)&255;else X=(tt(L,K)|0)&255;a[c[H>>2]>>0]=X;if(c[F>>2]|0)Y=(st(M,K)|0)&255;else Y=(tt(M,K)|0)&255;a[(c[H>>2]|0)+1>>0]=Y;if((Fs(K)|0)>>>0>0){Z=14;break;}if(c[F>>2]|0)_=(st(L,K)|0)&255;else _=(tt(L,K)|0)&255;a[(c[H>>2]|0)+2>>0]=_;if(c[F>>2]|0)$=(st(M,K)|0)&255;else $=(tt(M,K)|0)&255;a[(c[H>>2]|0)+3>>0]=$;c[H>>2]=(c[H>>2]|0)+4;}if((Z|0)==14)c[H>>2]=(c[H>>2]|0)+2;while(1){if((c[H>>2]|0)>>>0>((c[I>>2]|0)+-2|0)>>>0){Z=24;break;}if(c[F>>2]|0)aa=(st(L,K)|0)&255;else aa=(tt(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=aa;if((Fs(K)|0)==3){Z=29;break;}if((c[H>>2]|0)>>>0>((c[I>>2]|0)+-2|0)>>>0){Z=34;break;}if(c[F>>2]|0)ba=(st(M,K)|0)&255;else ba=(tt(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ba;if((Fs(K)|0)==3){Z=39;break;}}if((Z|0)==24){c[z>>2]=-70;break;}else if((Z|0)==29){if(c[F>>2]|0)ca=(st(M,K)|0)&255;else ca=(tt(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ca;}else if((Z|0)==34){c[z>>2]=-70;break;}else if((Z|0)==39){if(c[F>>2]|0)da=(st(L,K)|0)&255;else da=(tt(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=da;}c[z>>2]=(c[H>>2]|0)-(c[G>>2]|0);}}while(0);c[O>>2]=c[z>>2];ea=c[O>>2]|0;l=i;return ea|0;}else{c[k>>2]=V;c[m>>2]=P;c[n>>2]=Q;c[o>>2]=R;c[p>>2]=S;c[q>>2]=0;c[r>>2]=c[k>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[s>>2]|0)+(c[m>>2]|0);c[u>>2]=(c[t>>2]|0)+-3;c[y>>2]=Ds(v,c[n>>2]|0,c[o>>2]|0)|0;do{if(hr(c[y>>2]|0)|0)c[j>>2]=c[y>>2];else{Es(w,v,c[p>>2]|0);Es(x,v,c[p>>2]|0);while(1){if(Fs(v)|0)break;if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;if(c[q>>2]|0)fa=(st(w,v)|0)&255;else fa=(tt(w,v)|0)&255;a[c[s>>2]>>0]=fa;if(c[q>>2]|0)ga=(st(x,v)|0)&255;else ga=(tt(x,v)|0)&255;a[(c[s>>2]|0)+1>>0]=ga;if((Fs(v)|0)>>>0>0){Z=58;break;}if(c[q>>2]|0)ha=(st(w,v)|0)&255;else ha=(tt(w,v)|0)&255;a[(c[s>>2]|0)+2>>0]=ha;if(c[q>>2]|0)ia=(st(x,v)|0)&255;else ia=(tt(x,v)|0)&255;a[(c[s>>2]|0)+3>>0]=ia;c[s>>2]=(c[s>>2]|0)+4;}if((Z|0)==58)c[s>>2]=(c[s>>2]|0)+2;while(1){if((c[s>>2]|0)>>>0>((c[t>>2]|0)+-2|0)>>>0){Z=68;break;}if(c[q>>2]|0)ja=(st(w,v)|0)&255;else ja=(tt(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ja;if((Fs(v)|0)==3){Z=73;break;}if((c[s>>2]|0)>>>0>((c[t>>2]|0)+-2|0)>>>0){Z=78;break;}if(c[q>>2]|0)ka=(st(x,v)|0)&255;else ka=(tt(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ka;if((Fs(v)|0)==3){Z=83;break;}}if((Z|0)==68){c[j>>2]=-70;break;}else if((Z|0)==73){if(c[q>>2]|0)la=(st(x,v)|0)&255;else la=(tt(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=la;}else if((Z|0)==78){c[j>>2]=-70;break;}else if((Z|0)==83){if(c[q>>2]|0)ma=(st(w,v)|0)&255;else ma=(tt(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ma;}c[j>>2]=(c[s>>2]|0)-(c[r>>2]|0);}}while(0);c[O>>2]=c[j>>2];ea=c[O>>2]|0;l=i;return ea|0;}return 0;}function st(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=ut(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function tt(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=Ms(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function ut(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=gt(c[e>>2]|0,c[f>>2]|0)|0;Ps(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function vt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;g=l;l=l+2144|0;h=g+2124|0;i=g+2120|0;j=g+2116|0;k=g+2112|0;m=g+1760|0;n=g+1248|0;o=g+1168|0;p=g+1088|0;q=g+2108|0;r=g;s=g+2104|0;t=g+2100|0;u=g+2096|0;v=g+2092|0;w=g+2128|0;x=g+2088|0;y=g+2084|0;z=g+2080|0;A=g+2076|0;B=g+2072|0;C=g+2068|0;D=g+2064|0;E=g+2060|0;F=g+2056|0;G=g+2052|0;H=g+2048|0;I=g+2044|0;J=g+2040|0;K=g+2036|0;L=g+2032|0;M=g+2028|0;N=g+2024|0;O=g+2020|0;P=g+2016|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;f=o;e=f+68|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));f=p;e=f+72|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));c[q>>2]=p+4;_s(w,c[i>>2]|0);c[x>>2]=d[w>>0];c[z>>2]=(c[i>>2]|0)+4;c[A>>2]=c[z>>2];if((c[x>>2]|0)>>>0>16){c[h>>2]=-44;Q=c[h>>2]|0;l=g;return Q|0;}c[y>>2]=ot(m,256,o,v,s,c[j>>2]|0,c[k>>2]|0)|0;if(at(c[y>>2]|0)|0){c[h>>2]=c[y>>2];Q=c[h>>2]|0;l=g;return Q|0;}if((c[s>>2]|0)>>>0>(c[x>>2]|0)>>>0){c[h>>2]=-44;Q=c[h>>2]|0;l=g;return Q|0;}c[t>>2]=c[s>>2];while(1){if(c[o+(c[t>>2]<<2)>>2]|0)break;c[t>>2]=(c[t>>2]|0)+-1;}c[C>>2]=0;c[B>>2]=1;while(1){R=c[C>>2]|0;if((c[B>>2]|0)>>>0>=((c[t>>2]|0)+1|0)>>>0)break;c[D>>2]=R;c[C>>2]=(c[C>>2]|0)+(c[o+(c[B>>2]<<2)>>2]|0);c[(c[q>>2]|0)+(c[B>>2]<<2)>>2]=c[D>>2];c[B>>2]=(c[B>>2]|0)+1;}c[c[q>>2]>>2]=R;c[u>>2]=c[C>>2];c[E>>2]=0;while(1){if((c[E>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;c[F>>2]=d[m+(c[E>>2]|0)>>0];C=(c[q>>2]|0)+(c[F>>2]<<2)|0;R=c[C>>2]|0;c[C>>2]=R+1;c[G>>2]=R;a[n+(c[G>>2]<<1)>>0]=c[E>>2];a[n+(c[G>>2]<<1)+1>>0]=c[F>>2];c[E>>2]=(c[E>>2]|0)+1;}c[c[q>>2]>>2]=0;c[H>>2]=r;c[I>>2]=(c[x>>2]|0)-(c[s>>2]|0)-1;c[J>>2]=0;c[K>>2]=1;while(1){if((c[K>>2]|0)>>>0>=((c[t>>2]|0)+1|0)>>>0)break;c[L>>2]=c[J>>2];c[J>>2]=(c[J>>2]|0)+(c[o+(c[K>>2]<<2)>>2]<<(c[K>>2]|0)+(c[I>>2]|0));c[(c[H>>2]|0)+(c[K>>2]<<2)>>2]=c[L>>2];c[K>>2]=(c[K>>2]|0)+1;}c[M>>2]=(c[s>>2]|0)+1-(c[t>>2]|0);c[N>>2]=c[M>>2];while(1){if((c[N>>2]|0)>>>0>=((c[x>>2]|0)-(c[M>>2]|0)+1|0)>>>0)break;c[O>>2]=r+((c[N>>2]|0)*68|0);c[P>>2]=1;while(1){if((c[P>>2]|0)>>>0>=((c[t>>2]|0)+1|0)>>>0)break;c[(c[O>>2]|0)+(c[P>>2]<<2)>>2]=(c[(c[H>>2]|0)+(c[P>>2]<<2)>>2]|0)>>>(c[N>>2]|0);c[P>>2]=(c[P>>2]|0)+1;}c[N>>2]=(c[N>>2]|0)+1;}xt(c[A>>2]|0,c[x>>2]|0,n,c[u>>2]|0,p,r,c[t>>2]|0,(c[s>>2]|0)+1|0);a[w+2>>0]=c[x>>2];a[w+1>>0]=1;x=c[i>>2]|0;a[x>>0]=a[w>>0]|0;a[x+1>>0]=a[w+1>>0]|0;a[x+2>>0]=a[w+2>>0]|0;a[x+3>>0]=a[w+3>>0]|0;c[h>>2]=c[y>>2];Q=c[h>>2]|0;l=g;return Q|0;}function wt(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;h=l;l=l+208|0;i=h+200|0;j=h+196|0;k=h+192|0;m=h+188|0;n=h+184|0;o=h+180|0;p=h+176|0;q=h+172|0;r=h+168|0;s=h+164|0;t=h+160|0;u=h+144|0;v=h+128|0;w=h+112|0;x=h+96|0;y=h+88|0;z=h+84|0;A=h+80|0;B=h+76|0;C=h+72|0;D=h+68|0;E=h+64|0;F=h+60|0;G=h+56|0;H=h+52|0;I=h+48|0;J=h+44|0;K=h+40|0;L=h+36|0;M=h+32|0;N=h+28|0;O=h+24|0;P=h+204|0;Q=h+20|0;R=h+16|0;S=h+12|0;T=h+8|0;U=h+4|0;V=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;if((c[n>>2]|0)>>>0<10){c[i>>2]=-20;W=c[i>>2]|0;l=h;return W|0;}c[p>>2]=c[m>>2];c[q>>2]=c[j>>2];c[r>>2]=(c[q>>2]|0)+(c[k>>2]|0);c[s>>2]=(c[o>>2]|0)+4;c[t>>2]=c[s>>2];c[y>>2]=(Eq(c[p>>2]|0)|0)&65535;c[z>>2]=(Eq((c[p>>2]|0)+2|0)|0)&65535;c[A>>2]=(Eq((c[p>>2]|0)+4|0)|0)&65535;c[B>>2]=(c[n>>2]|0)-((c[y>>2]|0)+(c[z>>2]|0)+(c[A>>2]|0)+6);c[C>>2]=(c[p>>2]|0)+6;c[D>>2]=(c[C>>2]|0)+(c[y>>2]|0);c[E>>2]=(c[D>>2]|0)+(c[z>>2]|0);c[F>>2]=(c[E>>2]|0)+(c[A>>2]|0);c[G>>2]=(((c[k>>2]|0)+3|0)>>>0)/4|0;c[H>>2]=(c[q>>2]|0)+(c[G>>2]|0);c[I>>2]=(c[H>>2]|0)+(c[G>>2]|0);c[J>>2]=(c[I>>2]|0)+(c[G>>2]|0);c[K>>2]=c[q>>2];c[L>>2]=c[H>>2];c[M>>2]=c[I>>2];c[N>>2]=c[J>>2];_s(P,c[o>>2]|0);c[Q>>2]=d[P+2>>0];if((c[B>>2]|0)>>>0>(c[n>>2]|0)>>>0){c[i>>2]=-20;W=c[i>>2]|0;l=h;return W|0;}c[R>>2]=Ds(u,c[C>>2]|0,c[y>>2]|0)|0;if(at(c[R>>2]|0)|0){c[i>>2]=c[R>>2];W=c[i>>2]|0;l=h;return W|0;}c[S>>2]=Ds(v,c[D>>2]|0,c[z>>2]|0)|0;if(at(c[S>>2]|0)|0){c[i>>2]=c[S>>2];W=c[i>>2]|0;l=h;return W|0;}c[T>>2]=Ds(w,c[E>>2]|0,c[A>>2]|0)|0;if(at(c[T>>2]|0)|0){c[i>>2]=c[T>>2];W=c[i>>2]|0;l=h;return W|0;}c[U>>2]=Ds(x,c[F>>2]|0,c[B>>2]|0)|0;if(at(c[U>>2]|0)|0){c[i>>2]=c[U>>2];W=c[i>>2]|0;l=h;return W|0;}U=Fs(u)|0;B=U|(Fs(v)|0);U=B|(Fs(w)|0);c[O>>2]=U|(Fs(x)|0);while(1){if(c[O>>2]|0)break;if((c[N>>2]|0)>>>0>=((c[r>>2]|0)+-7|0)>>>0)break;if(dt()|0){U=et(c[K>>2]|0,u,c[t>>2]|0,c[Q>>2]|0)|0;c[K>>2]=(c[K>>2]|0)+U;}if(dt()|0){U=et(c[L>>2]|0,v,c[t>>2]|0,c[Q>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+U;}if(dt()|0){U=et(c[M>>2]|0,w,c[t>>2]|0,c[Q>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+U;}if(dt()|0){U=et(c[N>>2]|0,x,c[t>>2]|0,c[Q>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+U;}dt()|0;U=et(c[K>>2]|0,u,c[t>>2]|0,c[Q>>2]|0)|0;c[K>>2]=(c[K>>2]|0)+U;dt()|0;U=et(c[L>>2]|0,v,c[t>>2]|0,c[Q>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+U;dt()|0;U=et(c[M>>2]|0,w,c[t>>2]|0,c[Q>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+U;dt()|0;U=et(c[N>>2]|0,x,c[t>>2]|0,c[Q>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+U;if(dt()|0){U=et(c[K>>2]|0,u,c[t>>2]|0,c[Q>>2]|0)|0;c[K>>2]=(c[K>>2]|0)+U;}if(dt()|0){U=et(c[L>>2]|0,v,c[t>>2]|0,c[Q>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+U;}if(dt()|0){U=et(c[M>>2]|0,w,c[t>>2]|0,c[Q>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+U;}if(dt()|0){U=et(c[N>>2]|0,x,c[t>>2]|0,c[Q>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+U;}U=et(c[K>>2]|0,u,c[t>>2]|0,c[Q>>2]|0)|0;c[K>>2]=(c[K>>2]|0)+U;U=et(c[L>>2]|0,v,c[t>>2]|0,c[Q>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+U;U=et(c[M>>2]|0,w,c[t>>2]|0,c[Q>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+U;U=et(c[N>>2]|0,x,c[t>>2]|0,c[Q>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+U;U=Fs(u)|0;B=U|(Fs(v)|0);U=B|(Fs(w)|0);c[O>>2]=U|(Fs(x)|0);}if((c[K>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[i>>2]=-20;W=c[i>>2]|0;l=h;return W|0;}if((c[L>>2]|0)>>>0>(c[I>>2]|0)>>>0){c[i>>2]=-20;W=c[i>>2]|0;l=h;return W|0;}if((c[M>>2]|0)>>>0>(c[J>>2]|0)>>>0){c[i>>2]=-20;W=c[i>>2]|0;l=h;return W|0;}bt(c[K>>2]|0,u,c[H>>2]|0,c[t>>2]|0,c[Q>>2]|0)|0;bt(c[L>>2]|0,v,c[I>>2]|0,c[t>>2]|0,c[Q>>2]|0)|0;bt(c[M>>2]|0,w,c[J>>2]|0,c[t>>2]|0,c[Q>>2]|0)|0;bt(c[N>>2]|0,x,c[r>>2]|0,c[t>>2]|0,c[Q>>2]|0)|0;Q=ct(u)|0;u=Q&(ct(v)|0);v=u&(ct(w)|0);c[V>>2]=v&(ct(x)|0);if(c[V>>2]|0){c[i>>2]=c[k>>2];W=c[i>>2]|0;l=h;return W|0;}else{c[i>>2]=-20;W=c[i>>2]|0;l=h;return W|0;}return 0;}function xt(e,f,g,h,i,j,k,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;n=l;l=l+160|0;o=n+140|0;p=n+136|0;q=n+132|0;r=n+128|0;s=n+124|0;t=n+120|0;u=n+116|0;v=n+112|0;w=n;x=n+108|0;y=n+104|0;z=n+100|0;A=n+148|0;B=n+96|0;C=n+92|0;D=n+88|0;E=n+84|0;F=n+80|0;G=n+76|0;H=n+144|0;I=n+72|0;J=n+68|0;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=k;c[v>>2]=m;c[x>>2]=(c[v>>2]|0)-(c[p>>2]|0);c[y>>2]=(c[v>>2]|0)-(c[u>>2]|0);u=w;m=c[t>>2]|0;k=u+68|0;do{c[u>>2]=c[m>>2];u=u+4|0;m=m+4|0;}while((u|0)<(k|0));c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;b[A>>1]=d[(c[q>>2]|0)+(c[z>>2]<<1)>>0]|0;c[B>>2]=d[(c[q>>2]|0)+(c[z>>2]<<1)+1>>0];c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);c[D>>2]=c[w+(c[B>>2]<<2)>>2];c[E>>2]=1<<(c[p>>2]|0)-(c[C>>2]|0);a:do{if(((c[p>>2]|0)-(c[C>>2]|0)|0)>>>0>=(c[y>>2]|0)>>>0){m=(c[C>>2]|0)+(c[x>>2]|0)|0;c[G>>2]=m;c[G>>2]=(c[G>>2]|0)<1?1:m;c[F>>2]=c[(c[s>>2]|0)+(c[G>>2]<<2)>>2];yt((c[o>>2]|0)+(c[D>>2]<<2)|0,(c[p>>2]|0)-(c[C>>2]|0)|0,c[C>>2]|0,(c[t>>2]|0)+((c[C>>2]|0)*68|0)|0,c[G>>2]|0,(c[q>>2]|0)+(c[F>>2]<<1)|0,(c[r>>2]|0)-(c[F>>2]|0)|0,c[v>>2]|0,b[A>>1]|0);}else{zt(H,b[A>>1]|0);a[H+2>>0]=c[C>>2];a[H+3>>0]=1;c[J>>2]=(c[D>>2]|0)+(c[E>>2]|0);c[I>>2]=c[D>>2];while(1){if((c[I>>2]|0)>>>0>=(c[J>>2]|0)>>>0)break a;m=(c[o>>2]|0)+(c[I>>2]<<2)|0;b[m>>1]=b[H>>1]|0;b[m+2>>1]=b[H+2>>1]|0;c[I>>2]=(c[I>>2]|0)+1;}}}while(0);m=w+(c[B>>2]<<2)|0;c[m>>2]=(c[m>>2]|0)+(c[E>>2]|0);c[z>>2]=(c[z>>2]|0)+1;}l=n;return;}function yt(f,g,h,i,j,k,m,n,o){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;p=l;l=l+160|0;q=p+136|0;r=p+132|0;s=p+128|0;t=p+124|0;u=p+120|0;v=p+116|0;w=p+112|0;x=p+108|0;y=p+144|0;z=p+140|0;A=p;B=p+104|0;C=p+100|0;D=p+96|0;E=p+92|0;F=p+88|0;G=p+84|0;H=p+80|0;I=p+76|0;J=p+72|0;K=p+68|0;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;c[v>>2]=k;c[w>>2]=m;c[x>>2]=n;b[y>>1]=o;o=A;n=c[t>>2]|0;t=o+68|0;do{c[o>>2]=c[n>>2];o=o+4|0;n=n+4|0;}while((o|0)<(t|0));a:do{if((c[u>>2]|0)>1){c[C>>2]=c[A+(c[u>>2]<<2)>>2];zt(z,b[y>>1]|0);a[z+2>>0]=c[s>>2];a[z+3>>0]=1;c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[C>>2]|0)>>>0)break a;n=(c[q>>2]|0)+(c[B>>2]<<2)|0;b[n>>1]=b[z>>1]|0;b[n+2>>1]=b[z+2>>1]|0;c[B>>2]=(c[B>>2]|0)+1;}}}while(0);c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[E>>2]=d[(c[v>>2]|0)+(c[D>>2]<<1)>>0];c[F>>2]=d[(c[v>>2]|0)+(c[D>>2]<<1)+1>>0];c[G>>2]=(c[x>>2]|0)-(c[F>>2]|0);c[H>>2]=1<<(c[r>>2]|0)-(c[G>>2]|0);c[I>>2]=c[A+(c[F>>2]<<2)>>2];c[J>>2]=c[I>>2];c[K>>2]=(c[I>>2]|0)+(c[H>>2]|0);zt(z,(e[y>>1]|0)+(c[E>>2]<<8)&65535);a[z+2>>0]=(c[G>>2]|0)+(c[s>>2]|0);a[z+3>>0]=2;do{B=c[q>>2]|0;C=c[J>>2]|0;c[J>>2]=C+1;u=B+(C<<2)|0;b[u>>1]=b[z>>1]|0;b[u+2>>1]=b[z+2>>1]|0;}while((c[J>>2]|0)>>>0<(c[K>>2]|0)>>>0);u=A+(c[F>>2]<<2)|0;c[u>>2]=(c[u>>2]|0)+(c[H>>2]|0);c[D>>2]=(c[D>>2]|0)+1;}l=p;return;}function zt(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(Gq()|0)!=0;d=c[h>>2]|0;if(f){At(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function At(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=c[g>>2]|0;a[e>>0]=a[h>>0]|0;a[e+1>>0]=a[h+1>>0]|0;l=f;return;}function Bt(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+80|0;i=h+60|0;j=h+56|0;k=h+52|0;m=h+48|0;n=h+44|0;o=h+40|0;p=h+36|0;q=h+32|0;r=h+28|0;s=h+24|0;t=h+8|0;u=h+64|0;v=h+4|0;w=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[j>>2];c[q>>2]=(c[p>>2]|0)+(c[k>>2]|0);c[r>>2]=(c[o>>2]|0)+4;c[s>>2]=c[r>>2];_s(u,c[o>>2]|0);c[v>>2]=d[u+2>>0];c[w>>2]=Ds(t,c[m>>2]|0,c[n>>2]|0)|0;if(at(c[w>>2]|0)|0){c[i>>2]=c[w>>2];x=c[i>>2]|0;l=h;return x|0;}nt(c[p>>2]|0,t,c[q>>2]|0,c[s>>2]|0,c[v>>2]|0)|0;if(ct(t)|0){c[i>>2]=c[k>>2];x=c[i>>2]|0;l=h;return x|0;}else{c[i>>2]=-20;x=c[i>>2]|0;l=h;return x|0;}return 0;}function Ct(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[(c[d>>2]|0)+21536>>2]=5;c[(c[d>>2]|0)+21580>>2]=0;c[(c[d>>2]|0)+21520>>2]=0;c[(c[d>>2]|0)+21524>>2]=0;c[(c[d>>2]|0)+21528>>2]=0;c[(c[d>>2]|0)+21532>>2]=0;c[(c[d>>2]|0)+5132>>2]=201326604;c[(c[d>>2]|0)+21588>>2]=0;c[(c[d>>2]|0)+21584>>2]=0;c[(c[d>>2]|0)+21684>>2]=0;c[e>>2]=0;while(1){if((c[e>>2]|0)>=3)break;c[(c[d>>2]|0)+21540+(c[e>>2]<<2)>>2]=c[11940+(c[e>>2]<<2)>>2];c[e>>2]=(c[e>>2]|0)+1;}l=b;return 0;}function Dt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[i>>2]|0)>>>0<8){c[f>>2]=Et(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;m=c[f>>2]|0;l=e;return m|0;}c[j>>2]=Bq(c[h>>2]|0)|0;if((c[j>>2]|0)!=-332356553){c[f>>2]=Et(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;m=c[f>>2]|0;l=e;return m|0;}j=Bq((c[h>>2]|0)+4|0)|0;c[(c[g>>2]|0)+21684>>2]=j;c[h>>2]=(c[h>>2]|0)+8;c[i>>2]=(c[i>>2]|0)-8;c[k>>2]=Ft(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;if(hr(c[k>>2]|0)|0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}else{c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);c[f>>2]=Et(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;m=c[f>>2]|0;l=e;return m|0;}return 0;}function Et(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+21532>>2]=c[(c[f>>2]|0)+21520>>2];c[(c[f>>2]|0)+21528>>2]=(c[g>>2]|0)+(0-((c[(c[f>>2]|0)+21520>>2]|0)-(c[(c[f>>2]|0)+21524>>2]|0)));c[(c[f>>2]|0)+21524>>2]=c[g>>2];c[(c[f>>2]|0)+21520>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return 0;}function Ft(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;e=l;l=l+336|0;f=e+324|0;g=e+320|0;h=e+316|0;i=e+312|0;j=e+308|0;k=e+304|0;m=e+300|0;n=e+192|0;o=e+296|0;p=e+292|0;q=e+288|0;r=e+284|0;s=e+80|0;t=e+280|0;u=e+276|0;v=e+272|0;w=e+268|0;x=e;y=e+264|0;z=e+260|0;A=e+256|0;B=e+252|0;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=c[h>>2];c[k>>2]=(c[j>>2]|0)+(c[i>>2]|0);c[m>>2]=vt((c[g>>2]|0)+5132|0,c[h>>2]|0,c[i>>2]|0)|0;if(hr(c[m>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[j>>2]=(c[j>>2]|0)+(c[m>>2]|0);c[o>>2]=28;c[q>>2]=Vs(n,o,p,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;if(hr(c[q>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[p>>2]|0)>>>0>8){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[r>>2]=Us((c[g>>2]|0)+2052|0,n,c[o>>2]|0,c[p>>2]|0)|0;if(hr(c[r>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[j>>2]=(c[j>>2]|0)+(c[q>>2]|0);c[t>>2]=52;c[v>>2]=Vs(s,t,u,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;if(hr(c[v>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[u>>2]|0)>>>0>9){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[w>>2]=Us((c[g>>2]|0)+3080|0,s,c[t>>2]|0,c[u>>2]|0)|0;if(hr(c[w>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[j>>2]=(c[j>>2]|0)+(c[v>>2]|0);c[y>>2]=35;c[A>>2]=Vs(x,y,z,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;if(hr(c[A>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[z>>2]|0)>>>0>9){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[B>>2]=Us(c[g>>2]|0,x,c[y>>2]|0,c[z>>2]|0)|0;if(hr(c[B>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[j>>2]=(c[j>>2]|0)+(c[A>>2]|0);if(((c[j>>2]|0)+12|0)>>>0>(c[k>>2]|0)>>>0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}k=Bq(c[j>>2]|0)|0;c[(c[g>>2]|0)+21540>>2]=k;if(c[(c[g>>2]|0)+21540>>2]|0?(c[(c[g>>2]|0)+21540>>2]|0)>>>0<(c[i>>2]|0)>>>0:0){k=Bq((c[j>>2]|0)+4|0)|0;c[(c[g>>2]|0)+21540+4>>2]=k;if(c[(c[g>>2]|0)+21540+4>>2]|0?(c[(c[g>>2]|0)+21540+4>>2]|0)>>>0<(c[i>>2]|0)>>>0:0){k=Bq((c[j>>2]|0)+8|0)|0;c[(c[g>>2]|0)+21540+8>>2]=k;if(c[(c[g>>2]|0)+21540+8>>2]|0?(c[(c[g>>2]|0)+21540+8>>2]|0)>>>0<(c[i>>2]|0)>>>0:0){c[j>>2]=(c[j>>2]|0)+12;c[(c[g>>2]|0)+21588>>2]=1;c[(c[g>>2]|0)+21584>>2]=1;c[f>>2]=(c[j>>2]|0)-(c[h>>2]|0);C=c[f>>2]|0;l=e;return C|0;}c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}function Gt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;if((c[a>>2]|0)==0?(c[a+4>>2]|0)==0:0){c[a>>2]=c[2988];c[a+4>>2]=c[2989];c[a+8>>2]=c[2990];}if(c[a>>2]|0?c[a+4>>2]|0:0){c[e>>2]=qc[c[a>>2]&63](c[a+8>>2]|0,152808)|0;if(c[e>>2]|0){f=(c[e>>2]|0)+21692|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];Ct(c[e>>2]|0)|0;c[d>>2]=c[e>>2];g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=0;g=c[d>>2]|0;l=b;return g|0;}}c[d>>2]=0;g=c[d>>2]|0;l=b;return g|0;}function Ht(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[d+8>>2]=a;c[e>>2]=b;c[f>>2]=Cy(c[e>>2]|0)|0;l=d;return c[f>>2]|0;}function It(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[d+4>>2]=a;c[e>>2]=b;Dy(c[e>>2]|0);l=d;return;}function Jt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=Ou(c[g>>2]|0)|0;if(jr(c[j>>2]|0)|0){c[f>>2]=c[j>>2];m=c[f>>2]|0;l=e;return m|0;}if((c[h>>2]|0)!=0&(c[i>>2]|0)!=0?(c[k>>2]=Pu(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0,jr(c[k>>2]|0)|0):0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}function Kt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)==(c[(c[e>>2]|0)+21520>>2]|0)){l=d;return;}c[(c[e>>2]|0)+21532>>2]=c[(c[e>>2]|0)+21520>>2];c[(c[e>>2]|0)+21528>>2]=(c[f>>2]|0)+(0-((c[(c[e>>2]|0)+21520>>2]|0)-(c[(c[e>>2]|0)+21524>>2]|0)));c[(c[e>>2]|0)+21524>>2]=c[f>>2];c[(c[e>>2]|0)+21520>>2]=c[f>>2];l=d;return;}function Lt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;g=l;l=l+80|0;h=g+68|0;i=g+64|0;j=g+60|0;k=g+56|0;m=g+52|0;n=g+48|0;o=g+44|0;p=g+40|0;q=g+36|0;r=g+32|0;s=g+28|0;t=g+24|0;u=g+16|0;v=g+8|0;w=g+4|0;x=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=(c[o>>2]|0)+(c[n>>2]|0);c[q>>2]=c[j>>2];c[r>>2]=c[q>>2];c[s>>2]=(c[q>>2]|0)+(c[k>>2]|0);c[t>>2]=c[n>>2];c[u>>2]=0;c[u+4>>2]=0;if((c[n>>2]|0)>>>0<8){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}c[v>>2]=Nq(c[m>>2]|0,5)|0;if(jr(c[v>>2]|0)|0){c[h>>2]=c[v>>2];y=c[h>>2]|0;l=g;return y|0;}if((c[n>>2]|0)>>>0<((c[v>>2]|0)+3|0)>>>0){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}if(Mt(c[i>>2]|0,c[m>>2]|0,c[v>>2]|0)|0){c[h>>2]=-20;y=c[h>>2]|0;l=g;return y|0;}c[o>>2]=(c[o>>2]|0)+(c[v>>2]|0);c[t>>2]=(c[t>>2]|0)-(c[v>>2]|0);a:while(1){c[w>>2]=0;c[x>>2]=kr(c[o>>2]|0,(c[p>>2]|0)-(c[o>>2]|0)|0,u)|0;if(jr(c[x>>2]|0)|0){z=11;break;}c[o>>2]=(c[o>>2]|0)+3;c[t>>2]=(c[t>>2]|0)-3;if((c[x>>2]|0)>>>0>(c[t>>2]|0)>>>0){z=13;break;}switch(c[u>>2]|0){case 2:{z=17;break a;break;}case 0:{c[w>>2]=Nt(c[i>>2]|0,c[r>>2]|0,(c[s>>2]|0)-(c[r>>2]|0)|0,c[o>>2]|0,c[x>>2]|0)|0;break;}case 1:{c[w>>2]=Ot(c[r>>2]|0,(c[s>>2]|0)-(c[r>>2]|0)|0,c[o>>2]|0,c[x>>2]|0)|0;break;}case 3:{if(c[t>>2]|0){z=19;break a;}break;}default:{z=20;break a;}}if(!(c[x>>2]|0)){z=25;break;}v=(jr(c[w>>2]|0)|0)!=0;A=c[w>>2]|0;if(v){z=23;break;}c[r>>2]=(c[r>>2]|0)+A;c[o>>2]=(c[o>>2]|0)+(c[x>>2]|0);c[t>>2]=(c[t>>2]|0)-(c[x>>2]|0);}if((z|0)==11){c[h>>2]=c[x>>2];y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==13){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==17){c[h>>2]=-1;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==19){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==20){c[h>>2]=-1;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==23){c[h>>2]=A;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==25){c[h>>2]=(c[r>>2]|0)-(c[q>>2]|0);y=c[h>>2]|0;l=g;return y|0;}return 0;}function Mt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=zq((c[g>>2]|0)+21544|0,c[h>>2]|0,c[i>>2]|0)|0;if(au()|0?(c[(c[g>>2]|0)+21544+8>>2]|0)>>>0>25:0){c[f>>2]=-14;k=c[f>>2]|0;l=e;return k|0;}c[f>>2]=c[j>>2];k=c[f>>2]|0;l=e;return k|0;}function Nt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];if((c[n>>2]|0)>>>0>=131072){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}c[p>>2]=Pt(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(jr(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+f;c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=Qt(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function Ot(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){c[g>>2]=-70;m=c[g>>2]|0;l=f;return m|0;}else{mE(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[g>>2]=c[k>>2];m=c[g>>2]|0;l=f;return m|0;}return 0;}function Pt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;g=l;l=l+80|0;h=g+64|0;i=g+60|0;j=g+56|0;k=g+52|0;m=g+48|0;n=g+44|0;o=g+40|0;p=g+36|0;q=g+32|0;r=g+28|0;s=g+24|0;t=g+20|0;u=g+16|0;v=g+12|0;w=g+8|0;x=g+4|0;y=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[j>>2];if((c[k>>2]|0)>>>0<3){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}switch((d[c[m>>2]>>0]|0)>>6|0){case 0:{c[p>>2]=0;c[q>>2]=(d[c[m>>2]>>0]|0)>>4&3;if((c[k>>2]|0)>>>0<5){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}switch(c[q>>2]|0){case 3:{c[q>>2]=5;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<14)+((d[(c[m>>2]|0)+1>>0]|0)<<6)+((d[(c[m>>2]|0)+2>>0]|0)>>2);c[o>>2]=(((d[(c[m>>2]|0)+2>>0]|0)&3)<<16)+((d[(c[m>>2]|0)+3>>0]|0)<<8)+(d[(c[m>>2]|0)+4>>0]|0);break;}case 2:{c[q>>2]=4;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<10)+((d[(c[m>>2]|0)+1>>0]|0)<<2)+((d[(c[m>>2]|0)+2>>0]|0)>>6);c[o>>2]=(((d[(c[m>>2]|0)+2>>0]|0)&63)<<8)+(d[(c[m>>2]|0)+3>>0]|0);break;}default:{c[q>>2]=3;c[p>>2]=(d[c[m>>2]>>0]|0)&16;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<6)+((d[(c[m>>2]|0)+1>>0]|0)>>2);c[o>>2]=(((d[(c[m>>2]|0)+1>>0]|0)&3)<<8)+(d[(c[m>>2]|0)+2>>0]|0);}}if((c[n>>2]|0)>>>0>131072){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}if(((c[o>>2]|0)+(c[q>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}j=(c[i>>2]|0)+21580|0;f=c[n>>2]|0;e=(c[m>>2]|0)+(c[q>>2]|0)|0;b=c[o>>2]|0;if(c[p>>2]|0)A=lu(j,f,e,b)|0;else A=mu(j,f,e,b)|0;if(jr(A)|0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{c[(c[i>>2]|0)+21572>>2]=(c[i>>2]|0)+21580;c[(c[i>>2]|0)+21576>>2]=c[n>>2];n=(c[i>>2]|0)+21580+(c[(c[i>>2]|0)+21576>>2]|0)|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;a[n+4>>0]=0;a[n+5>>0]=0;a[n+6>>0]=0;a[n+7>>0]=0;c[h>>2]=(c[o>>2]|0)+(c[q>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 1:{c[t>>2]=(d[c[m>>2]>>0]|0)>>4&3;if((c[t>>2]|0)!=1){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}if(!(c[(c[i>>2]|0)+21568>>2]|0)){c[h>>2]=-30;z=c[h>>2]|0;l=g;return z|0;}c[t>>2]=3;c[r>>2]=(((d[c[m>>2]>>0]|0)&15)<<6)+((d[(c[m>>2]|0)+1>>0]|0)>>2);c[s>>2]=(((d[(c[m>>2]|0)+1>>0]|0)&3)<<8)+(d[(c[m>>2]|0)+2>>0]|0);if(((c[s>>2]|0)+(c[t>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}c[u>>2]=nu((c[i>>2]|0)+21580|0,c[r>>2]|0,(c[m>>2]|0)+(c[t>>2]|0)|0,c[s>>2]|0,(c[i>>2]|0)+5132|0)|0;if(jr(c[u>>2]|0)|0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{c[(c[i>>2]|0)+21572>>2]=(c[i>>2]|0)+21580;c[(c[i>>2]|0)+21576>>2]=c[r>>2];r=(c[i>>2]|0)+21580+(c[(c[i>>2]|0)+21576>>2]|0)|0;a[r>>0]=0;a[r+1>>0]=0;a[r+2>>0]=0;a[r+3>>0]=0;a[r+4>>0]=0;a[r+5>>0]=0;a[r+6>>0]=0;a[r+7>>0]=0;c[h>>2]=(c[s>>2]|0)+(c[t>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 2:{c[w>>2]=(d[c[m>>2]>>0]|0)>>4&3;switch(c[w>>2]|0){case 3:{c[v>>2]=(((d[c[m>>2]>>0]|0)&15)<<16)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(d[(c[m>>2]|0)+2>>0]|0);break;}case 2:{c[v>>2]=(((d[c[m>>2]>>0]|0)&15)<<8)+(d[(c[m>>2]|0)+1>>0]|0);break;}default:{c[w>>2]=1;c[v>>2]=(d[c[m>>2]>>0]|0)&31;}}if(((c[w>>2]|0)+(c[v>>2]|0)+8|0)>>>0<=(c[k>>2]|0)>>>0){c[(c[i>>2]|0)+21572>>2]=(c[m>>2]|0)+(c[w>>2]|0);c[(c[i>>2]|0)+21576>>2]=c[v>>2];c[h>>2]=(c[w>>2]|0)+(c[v>>2]|0);z=c[h>>2]|0;l=g;return z|0;}if(((c[v>>2]|0)+(c[w>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{mE((c[i>>2]|0)+21580|0,(c[m>>2]|0)+(c[w>>2]|0)|0,c[v>>2]|0)|0;c[(c[i>>2]|0)+21572>>2]=(c[i>>2]|0)+21580;c[(c[i>>2]|0)+21576>>2]=c[v>>2];t=(c[i>>2]|0)+21580+(c[(c[i>>2]|0)+21576>>2]|0)|0;a[t>>0]=0;a[t+1>>0]=0;a[t+2>>0]=0;a[t+3>>0]=0;a[t+4>>0]=0;a[t+5>>0]=0;a[t+6>>0]=0;a[t+7>>0]=0;c[h>>2]=(c[w>>2]|0)+(c[v>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 3:{c[y>>2]=(d[c[m>>2]>>0]|0)>>4&3;switch(c[y>>2]|0){case 3:{c[x>>2]=(((d[c[m>>2]>>0]|0)&15)<<16)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(d[(c[m>>2]|0)+2>>0]|0);if((c[k>>2]|0)>>>0<4){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}break;}case 2:{c[x>>2]=(((d[c[m>>2]>>0]|0)&15)<<8)+(d[(c[m>>2]|0)+1>>0]|0);break;}default:{c[y>>2]=1;c[x>>2]=(d[c[m>>2]>>0]|0)&31;}}if((c[x>>2]|0)>>>0>131072){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{oE((c[i>>2]|0)+21580|0,(d[(c[m>>2]|0)+(c[y>>2]|0)>>0]|0)&255|0,(c[x>>2]|0)+8|0)|0;c[(c[i>>2]|0)+21572>>2]=(c[i>>2]|0)+21580;c[(c[i>>2]|0)+21576>>2]=c[x>>2];c[h>>2]=(c[y>>2]|0)+1;z=c[h>>2]|0;l=g;return z|0;}break;}default:{}}return 0;}function Qt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;g=l;l=l+176|0;h=g+164|0;i=g+160|0;j=g+156|0;k=g+152|0;m=g+148|0;n=g+144|0;o=g+140|0;p=g+136|0;q=g+132|0;r=g+128|0;s=g+124|0;t=g+120|0;u=g+116|0;v=g+112|0;w=g+108|0;x=g+104|0;y=g+100|0;z=g+96|0;A=g+92|0;B=g+88|0;C=g+84|0;D=g+80|0;E=g+68|0;F=g+16|0;G=g+12|0;H=g+8|0;I=g+4|0;J=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=c[r>>2];c[u>>2]=c[(c[j>>2]|0)+21572>>2];c[v>>2]=(c[u>>2]|0)+(c[(c[j>>2]|0)+21576>>2]|0);c[w>>2]=c[j>>2];c[x>>2]=(c[j>>2]|0)+3080;c[y>>2]=(c[j>>2]|0)+2052;c[z>>2]=c[(c[j>>2]|0)+21524>>2];c[A>>2]=c[(c[j>>2]|0)+21528>>2];c[B>>2]=c[(c[j>>2]|0)+21532>>2];c[D>>2]=Rt(C,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,c[(c[j>>2]|0)+21568>>2]|0,c[p>>2]|0,c[o>>2]|0)|0;o=(jr(c[D>>2]|0)|0)!=0;m=c[D>>2]|0;if(o){c[i>>2]=m;K=c[i>>2]|0;l=g;return K|0;}c[p>>2]=(c[p>>2]|0)+m;c[(c[j>>2]|0)+21568>>2]=0;if(c[C>>2]|0){c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+8>>2]=1;c[G>>2]=0;while(1){if((c[G>>2]|0)>>>0>=3)break;c[F+40+(c[G>>2]<<2)>>2]=1;c[G>>2]=(c[G>>2]|0)+1;}c[H>>2]=St(F,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;if(jr(c[H>>2]|0)|0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}Tt(F+16|0,F,c[w>>2]|0);Tt(F+24|0,F,c[y>>2]|0);Tt(F+32|0,F,c[x>>2]|0);while(1){x=(Ut(F)|0)>>>0<=2;L=c[C>>2]|0;if(!(x?(c[C>>2]|0)!=0:0))break;c[C>>2]=L+-1;Vt(E,F);x=c[t>>2]|0;y=c[s>>2]|0;w=c[v>>2]|0;H=c[z>>2]|0;p=c[A>>2]|0;q=c[B>>2]|0;c[h>>2]=c[E>>2];c[h+4>>2]=c[E+4>>2];c[h+8>>2]=c[E+8>>2];c[I>>2]=Wt(x,y,h,u,w,H,p,q)|0;q=(jr(c[I>>2]|0)|0)!=0;M=c[I>>2]|0;if(q){N=12;break;}c[t>>2]=(c[t>>2]|0)+M;}if((N|0)==12){c[i>>2]=M;K=c[i>>2]|0;l=g;return K|0;}if(L|0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}}c[J>>2]=(c[v>>2]|0)-(c[u>>2]|0);if((c[u>>2]|0)>>>0>(c[v>>2]|0)>>>0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}if(((c[t>>2]|0)+(c[J>>2]|0)|0)>>>0>(c[s>>2]|0)>>>0){c[i>>2]=-70;K=c[i>>2]|0;l=g;return K|0;}else{mE(c[t>>2]|0,c[u>>2]|0,c[J>>2]|0)|0;c[t>>2]=(c[t>>2]|0)+(c[J>>2]|0);c[i>>2]=(c[t>>2]|0)-(c[r>>2]|0);K=c[i>>2]|0;l=g;return K|0;}return 0;}function Rt(a,b,e,f,g,h,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;j=l;l=l+80|0;k=j+68|0;m=j+64|0;n=j+60|0;o=j+56|0;p=j+52|0;q=j+48|0;r=j+44|0;s=j+40|0;t=j+36|0;u=j+32|0;v=j+28|0;w=j+24|0;x=j+20|0;y=j+16|0;z=j+12|0;A=j+8|0;B=j+4|0;C=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=c[r>>2];c[u>>2]=(c[t>>2]|0)+(c[s>>2]|0);c[v>>2]=c[t>>2];if((c[s>>2]|0)>>>0<1){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}s=c[v>>2]|0;c[v>>2]=s+1;c[w>>2]=d[s>>0];if(!(c[w>>2]|0)){c[c[m>>2]>>2]=0;c[k>>2]=1;D=c[k>>2]|0;l=j;return D|0;}do{if((c[w>>2]|0)>127){s=c[v>>2]|0;if((c[w>>2]|0)==255){if((s+2|0)>>>0<=(c[u>>2]|0)>>>0){c[w>>2]=((Oq(c[v>>2]|0)|0)&65535)+32512;c[v>>2]=(c[v>>2]|0)+2;break;}c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}else{if(s>>>0<(c[u>>2]|0)>>>0){s=(c[w>>2]|0)-128<<8;r=c[v>>2]|0;c[v>>2]=r+1;c[w>>2]=s+(d[r>>0]|0);break;}c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}}}while(0);c[c[m>>2]>>2]=c[w>>2];c[x>>2]=(d[c[v>>2]>>0]|0)>>6;c[y>>2]=(d[c[v>>2]>>0]|0)>>4&3;c[z>>2]=(d[c[v>>2]>>0]|0)>>2&3;c[v>>2]=(c[v>>2]|0)+1;if((c[v>>2]|0)>>>0>((c[u>>2]|0)+-3|0)>>>0){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}c[A>>2]=gu(c[n>>2]|0,c[x>>2]|0,35,9,c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,6560,6,c[q>>2]|0)|0;if(jr(c[A>>2]|0)|0){c[k>>2]=-20;D=c[k>>2]|0;l=j;return D|0;}c[v>>2]=(c[v>>2]|0)+(c[A>>2]|0);c[B>>2]=gu(c[p>>2]|0,c[y>>2]|0,28,8,c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,6640,5,c[q>>2]|0)|0;if(jr(c[B>>2]|0)|0){c[k>>2]=-20;D=c[k>>2]|0;l=j;return D|0;}c[v>>2]=(c[v>>2]|0)+(c[B>>2]|0);c[C>>2]=gu(c[o>>2]|0,c[z>>2]|0,52,9,c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,6704,6,c[q>>2]|0)|0;if(jr(c[C>>2]|0)|0){c[k>>2]=-20;D=c[k>>2]|0;l=j;return D|0;}else{c[v>>2]=(c[v>>2]|0)+(c[C>>2]|0);c[k>>2]=(c[v>>2]|0)-(c[t>>2]|0);D=c[k>>2]|0;l=j;return D|0;}return 0;}function St(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+17|0;n=g+16|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;if((c[k>>2]|0)>>>0<1){f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[h>>2]=-72;o=c[h>>2]|0;l=g;return o|0;}f=(c[k>>2]|0)>>>0>=4;c[(c[i>>2]|0)+12>>2]=c[j>>2];do{if(f){c[(c[i>>2]|0)+8>>2]=(c[j>>2]|0)+(c[k>>2]|0)+-4;e=eu(c[(c[i>>2]|0)+8>>2]|0)|0;c[c[i>>2]>>2]=e;a[m>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[m>>0]|0|0){e=8-(fu(d[m>>0]|0)|0)|0;c[(c[i>>2]|0)+4>>2]=e;break;}c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}else{c[(c[i>>2]|0)+8>>2]=c[(c[i>>2]|0)+12>>2];c[c[i>>2]>>2]=d[c[(c[i>>2]|0)+12>>2]>>0];switch(c[k>>2]|0){case 7:{e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+6>>0]|0)<<16);p=9;break;}case 6:{p=9;break;}case 5:{p=10;break;}case 4:{p=11;break;}case 3:{p=12;break;}case 2:{p=13;break;}default:{}}if((p|0)==9){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)<<8);p=10;}if((p|0)==10){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+4>>0]|0)<<0);p=11;}if((p|0)==11){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+3>>0]|0)<<24);p=12;}if((p|0)==12){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+2>>0]|0)<<16);p=13;}if((p|0)==13){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+1>>0]|0)<<8);}a[n>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[n>>0]|0|0){e=8-(fu(d[n>>0]|0)|0)|0;c[(c[i>>2]|0)+4>>2]=e;e=(c[i>>2]|0)+4|0;c[e>>2]=(c[e>>2]|0)+(4-(c[k>>2]|0)<<3);break;}c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}}while(0);c[h>>2]=c[k>>2];o=c[h>>2]|0;l=g;return o|0;}function Tt(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=c[i>>2];c[k>>2]=c[j>>2];j=$t(c[h>>2]|0,e[c[k>>2]>>1]|0)|0;c[c[g>>2]>>2]=j;Ut(c[h>>2]|0)|0;c[(c[g>>2]|0)+4>>2]=(c[i>>2]|0)+4;l=f;return;}function Ut(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=((c[(c[e>>2]|0)+12>>2]|0)+4|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=eu(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=eu(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function Vt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=l;l=l+48|0;e=d+40|0;f=d+36|0;g=d+32|0;h=d+28|0;i=d+24|0;j=d+20|0;k=d+16|0;m=d+12|0;n=d+8|0;o=d+4|0;p=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=(_t((c[f>>2]|0)+16|0)|0)&255;c[h>>2]=(_t((c[f>>2]|0)+32|0)|0)&255;c[i>>2]=(_t((c[f>>2]|0)+24|0)|0)&255;c[j>>2]=c[5696+(c[g>>2]<<2)>>2];c[k>>2]=c[5840+(c[h>>2]<<2)>>2];c[m>>2]=c[i>>2];c[n>>2]=(c[j>>2]|0)+(c[k>>2]|0)+(c[m>>2]|0);if(c[i>>2]|0){b=c[6064+(c[i>>2]<<2)>>2]|0;c[o>>2]=b+($t(c[f>>2]|0,c[m>>2]|0)|0);if(au()|0)Ut(c[f>>2]|0)|0;}else c[o>>2]=0;do{if((c[o>>2]|0)>>>0<3){if((c[g>>2]|0)==0&(c[o>>2]|0)>>>0<=1)c[o>>2]=1-(c[o>>2]|0);m=(c[f>>2]|0)+40|0;if(!(c[o>>2]|0)){c[o>>2]=c[m>>2];break;}c[p>>2]=c[m+(c[o>>2]<<2)>>2];if((c[o>>2]|0)!=1)c[(c[f>>2]|0)+40+8>>2]=c[(c[f>>2]|0)+40+4>>2];c[(c[f>>2]|0)+40+4>>2]=c[(c[f>>2]|0)+40>>2];m=c[p>>2]|0;c[o>>2]=m;c[(c[f>>2]|0)+40>>2]=m;}else{c[o>>2]=(c[o>>2]|0)-2;c[(c[f>>2]|0)+40+8>>2]=c[(c[f>>2]|0)+40+4>>2];c[(c[f>>2]|0)+40+4>>2]=c[(c[f>>2]|0)+40>>2];c[(c[f>>2]|0)+40>>2]=c[o>>2];}}while(0);c[(c[e>>2]|0)+8>>2]=c[o>>2];o=(c[6192+(c[h>>2]<<2)>>2]|0)+3|0;if((c[h>>2]|0)>>>0>31)q=$t(c[f>>2]|0,c[k>>2]|0)|0;else q=0;c[(c[e>>2]|0)+4>>2]=o+q;if(au()|0?((c[k>>2]|0)+(c[j>>2]|0)|0)>>>0>24:0)Ut(c[f>>2]|0)|0;k=c[6416+(c[g>>2]<<2)>>2]|0;if((c[g>>2]|0)>>>0>15)r=$t(c[f>>2]|0,c[j>>2]|0)|0;else r=0;c[c[e>>2]>>2]=k+r;r=(au()|0)!=0;if(r|(c[n>>2]|0)>>>0>31)Ut(c[f>>2]|0)|0;bu((c[f>>2]|0)+16|0,c[f>>2]|0);bu((c[f>>2]|0)+32|0,c[f>>2]|0);if(!(au()|0)){s=c[f>>2]|0;t=s+24|0;u=c[f>>2]|0;bu(t,u);l=d;return;}Ut(c[f>>2]|0)|0;s=c[f>>2]|0;t=s+24|0;u=c[f>>2]|0;bu(t,u);l=d;return;}function Wt(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;k=l;l=l+64|0;m=k+60|0;n=k+56|0;o=k+52|0;p=k+48|0;q=k+44|0;r=k+40|0;s=k+36|0;t=k+32|0;u=k+28|0;v=k+24|0;w=k+20|0;x=k+16|0;y=k+12|0;z=k+8|0;A=k+4|0;B=k;c[n>>2]=b;c[o>>2]=d;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=(c[n>>2]|0)+(c[e>>2]|0);c[v>>2]=(c[e>>2]|0)+(c[e+4>>2]|0);c[w>>2]=(c[n>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[o>>2]|0)+-8;c[y>>2]=(c[c[p>>2]>>2]|0)+(c[e>>2]|0);c[z>>2]=(c[u>>2]|0)+(0-(c[e+8>>2]|0));if((c[u>>2]|0)>>>0>(c[x>>2]|0)>>>0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[w>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}Xt(c[n>>2]|0,c[c[p>>2]>>2]|0,c[e>>2]|0);c[n>>2]=c[u>>2];c[c[p>>2]>>2]=c[y>>2];do{if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[r>>2]|0)|0)>>>0){if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[s>>2]|0)|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}c[z>>2]=(c[t>>2]|0)+(0-((c[r>>2]|0)-(c[z>>2]|0)));if(((c[z>>2]|0)+(c[e+4>>2]|0)|0)>>>0<=(c[t>>2]|0)>>>0){nE(c[u>>2]|0,c[z>>2]|0,c[e+4>>2]|0)|0;c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}c[A>>2]=(c[t>>2]|0)-(c[z>>2]|0);nE(c[u>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;c[n>>2]=(c[u>>2]|0)+(c[A>>2]|0);y=e+4|0;c[y>>2]=(c[y>>2]|0)-(c[A>>2]|0);c[z>>2]=c[r>>2];if((c[n>>2]|0)>>>0<=(c[x>>2]|0)>>>0?(c[e+4>>2]|0)>>>0>=3:0)break;while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;y=c[z>>2]|0;c[z>>2]=y+1;p=a[y>>0]|0;y=c[n>>2]|0;c[n>>2]=y+1;a[y>>0]=p;}c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}}while(0);if((c[e+8>>2]|0)>>>0<8){c[B>>2]=c[6816+(c[e+8>>2]<<2)>>2];a[c[n>>2]>>0]=a[c[z>>2]>>0]|0;a[(c[n>>2]|0)+1>>0]=a[(c[z>>2]|0)+1>>0]|0;a[(c[n>>2]|0)+2>>0]=a[(c[z>>2]|0)+2>>0]|0;a[(c[n>>2]|0)+3>>0]=a[(c[z>>2]|0)+3>>0]|0;c[z>>2]=(c[z>>2]|0)+(c[6848+(c[e+8>>2]<<2)>>2]|0);Yt((c[n>>2]|0)+4|0,c[z>>2]|0);c[z>>2]=(c[z>>2]|0)+(0-(c[B>>2]|0));}else Zt(c[n>>2]|0,c[z>>2]|0);c[n>>2]=(c[n>>2]|0)+8;c[z>>2]=(c[z>>2]|0)+8;B=c[n>>2]|0;a:do{if((c[w>>2]|0)>>>0>((c[o>>2]|0)+-13|0)>>>0){if(B>>>0<(c[x>>2]|0)>>>0){Xt(c[n>>2]|0,c[z>>2]|0,(c[x>>2]|0)-(c[n>>2]|0)|0);c[z>>2]=(c[z>>2]|0)+((c[x>>2]|0)-(c[n>>2]|0));c[n>>2]=c[x>>2];}while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;r=c[z>>2]|0;c[z>>2]=r+1;A=a[r>>0]|0;r=c[n>>2]|0;c[n>>2]=r+1;a[r>>0]=A;}}else Xt(B,c[z>>2]|0,(c[e+4>>2]|0)-8|0);}while(0);c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}function Xt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{Zt(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function Yt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;l=e;return;}function Zt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function _t(d){d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=(c[(c[f>>2]|0)+4>>2]|0)+(c[c[f>>2]>>2]<<2)|0;b[g>>1]=b[d>>1]|0;b[g+2>>1]=b[d+2>>1]|0;l=e;return a[g+2>>0]|0;}function $t(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=cu(c[e>>2]|0,c[f>>2]|0)|0;du(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function au(){return 1;}function bu(a,f){a=a|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+16|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=f;f=(c[(c[h>>2]|0)+4>>2]|0)+(c[c[h>>2]>>2]<<2)|0;b[j>>1]=b[f>>1]|0;b[j+2>>1]=b[f+2>>1]|0;c[k>>2]=d[j+3>>0];c[m>>2]=$t(c[i>>2]|0,c[k>>2]|0)|0;c[c[h>>2]>>2]=(e[j>>1]|0)+(c[m>>2]|0);l=g;return;}function cu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>1>>>(31-(c[f>>2]|0)&31)|0;}function du(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function eu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(au()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=Mq(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=Pq(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function fu(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function gu(b,e,f,g,h,i,j,k,m){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;n=l;l=l+160|0;o=n+152|0;p=n+148|0;q=n+144|0;r=n+140|0;s=n+136|0;t=n+132|0;u=n+128|0;v=n+124|0;w=n+120|0;x=n+116|0;y=n+112|0;z=n;A=n+108|0;c[p>>2]=b;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=i;c[v>>2]=j;c[w>>2]=k;c[x>>2]=m;a:do{switch(c[q>>2]|0){case 1:{if(!(c[u>>2]|0)){c[o>>2]=-72;break a;}if((d[c[t>>2]>>0]|0)>>>0>(c[r>>2]|0)>>>0){c[o>>2]=-20;break a;}else{hu(c[p>>2]|0,a[c[t>>2]>>0]|0)|0;c[o>>2]=1;break a;}break;}case 0:{iu(c[p>>2]|0,c[v>>2]|0,c[r>>2]|0,c[w>>2]|0)|0;c[o>>2]=0;break;}case 2:{if(c[x>>2]|0){c[o>>2]=0;break a;}else{c[o>>2]=-20;break a;}break;}default:{c[A>>2]=ju(z,r,y,c[t>>2]|0,c[u>>2]|0)|0;if(jr(c[A>>2]|0)|0){c[o>>2]=-20;break a;}if((c[y>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[o>>2]=-20;break a;}else{iu(c[p>>2]|0,z,c[r>>2]|0,c[y>>2]|0)|0;c[o>>2]=c[A>>2];break a;}}}}while(0);l=n;return c[o>>2]|0;}function hu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+20|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=d;a[h>>0]=e;c[i>>2]=c[g>>2];c[j>>2]=c[i>>2];c[k>>2]=(c[g>>2]|0)+4;c[m>>2]=c[k>>2];b[c[j>>2]>>1]=0;b[(c[j>>2]|0)+2>>1]=0;b[c[m>>2]>>1]=0;a[(c[m>>2]|0)+2>>0]=a[h>>0]|0;a[(c[m>>2]|0)+3>>0]=0;l=f;return 0;}function iu(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;j=l;l=l+592|0;k=j+576|0;m=j+572|0;n=j+568|0;o=j+564|0;p=j+560|0;q=j+556|0;r=j+552|0;s=j;t=j+548|0;u=j+544|0;v=j+540|0;w=j+584|0;x=j+582|0;y=j+536|0;z=j+532|0;A=j+528|0;B=j+524|0;C=j+520|0;D=j+516|0;E=j+512|0;F=j+588|0;G=j+580|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=i;c[q>>2]=(c[m>>2]|0)+4;c[r>>2]=c[q>>2];c[t>>2]=(c[o>>2]|0)+1;c[u>>2]=1<<c[p>>2];c[v>>2]=(c[u>>2]|0)-1;if((c[o>>2]|0)>>>0>255){c[k>>2]=-46;H=c[k>>2]|0;l=j;return H|0;}if((c[p>>2]|0)>>>0>12){c[k>>2]=-44;H=c[k>>2]|0;l=j;return H|0;}b[w>>1]=c[p>>2];b[w+2>>1]=1;b[x>>1]=1<<(c[p>>2]|0)-1;c[y>>2]=0;while(1){if((c[y>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;if((b[(c[n>>2]|0)+(c[y>>2]<<1)>>1]|0)==-1){o=c[y>>2]&255;q=c[r>>2]|0;i=c[v>>2]|0;c[v>>2]=i+-1;a[q+(i<<2)+2>>0]=o;b[s+(c[y>>2]<<1)>>1]=1;}else{if((b[(c[n>>2]|0)+(c[y>>2]<<1)>>1]|0)>=(b[x>>1]|0))b[w+2>>1]=0;b[s+(c[y>>2]<<1)>>1]=b[(c[n>>2]|0)+(c[y>>2]<<1)>>1]|0;}c[y>>2]=(c[y>>2]|0)+1;}y=c[m>>2]|0;b[y>>1]=b[w>>1]|0;b[y+2>>1]=b[w+2>>1]|0;c[z>>2]=(c[u>>2]|0)-1;c[A>>2]=((c[u>>2]|0)>>>1)+((c[u>>2]|0)>>>3)+3;c[C>>2]=0;c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;c[D>>2]=0;while(1){I=c[B>>2]|0;if((c[D>>2]|0)>=(b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0))break;a[(c[r>>2]|0)+(c[C>>2]<<2)+2>>0]=I;c[C>>2]=(c[C>>2]|0)+(c[A>>2]|0)&c[z>>2];while(1){if((c[C>>2]|0)>>>0<=(c[v>>2]|0)>>>0)break;c[C>>2]=(c[C>>2]|0)+(c[A>>2]|0)&c[z>>2];}c[D>>2]=(c[D>>2]|0)+1;}c[B>>2]=I+1;}if(c[C>>2]|0){c[k>>2]=-1;H=c[k>>2]|0;l=j;return H|0;}c[E>>2]=0;while(1){if((c[E>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;a[F>>0]=a[(c[r>>2]|0)+(c[E>>2]<<2)+2>>0]|0;C=s+(d[F>>0]<<1)|0;I=b[C>>1]|0;b[C>>1]=I+1<<16>>16;b[G>>1]=I;I=c[p>>2]|0;C=I-(fu(e[G>>1]|0)|0)&255;a[(c[r>>2]|0)+(c[E>>2]<<2)+3>>0]=C;b[(c[r>>2]|0)+(c[E>>2]<<2)>>1]=(e[G>>1]<<d[(c[r>>2]|0)+(c[E>>2]<<2)+3>>0])-(c[u>>2]|0);c[E>>2]=(c[E>>2]|0)+1;}c[k>>2]=0;H=c[k>>2]|0;l=j;return H|0;}function ju(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+20|0;v=h+16|0;w=h+12|0;x=h+8|0;y=h+4|0;z=h;A=h+70|0;B=h+68|0;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[p>>2];c[x>>2]=0;c[y>>2]=0;if((c[o>>2]|0)>>>0<4){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=Mq(c[r>>2]|0)|0;c[s>>2]=(c[v>>2]&15)+5;if((c[s>>2]|0)>15){c[i>>2]=-44;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=(c[v>>2]|0)>>>4;c[w>>2]=4;c[c[m>>2]>>2]=c[s>>2];c[t>>2]=(1<<c[s>>2])+1;c[u>>2]=1<<c[s>>2];c[s>>2]=(c[s>>2]|0)+1;a:while(1){if((c[t>>2]|0)<=1)break;if((c[x>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0)break;do{if(c[y>>2]|0){c[z>>2]=c[x>>2];while(1){if((c[v>>2]&65535|0)!=65535)break;c[z>>2]=(c[z>>2]|0)+24;if((c[r>>2]|0)>>>0<((c[q>>2]|0)+-5|0)>>>0){c[r>>2]=(c[r>>2]|0)+2;m=Mq(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]|0);}else{c[v>>2]=(c[v>>2]|0)>>>16;c[w>>2]=(c[w>>2]|0)+16;}}while(1){if((c[v>>2]&3|0)!=3)break;c[z>>2]=(c[z>>2]|0)+3;c[v>>2]=(c[v>>2]|0)>>>2;c[w>>2]=(c[w>>2]|0)+2;}c[z>>2]=(c[z>>2]|0)+(c[v>>2]&3);c[w>>2]=(c[w>>2]|0)+2;if((c[z>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0){D=19;break a;}while(1){if((c[x>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break;m=c[j>>2]|0;n=c[x>>2]|0;c[x>>2]=n+1;b[m+(n<<1)>>1]=0;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[v>>2]=(c[v>>2]|0)>>>2;break;}c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;n=Mq(c[r>>2]|0)|0;c[v>>2]=n>>>(c[w>>2]|0);}}while(0);b[A>>1]=(c[u>>2]<<1)-1-(c[t>>2]|0);n=c[v>>2]|0;m=c[u>>2]|0;if((c[v>>2]&(c[u>>2]|0)-1)>>>0<(b[A>>1]|0)>>>0){b[B>>1]=n&m-1;c[w>>2]=(c[w>>2]|0)+((c[s>>2]|0)-1);}else{b[B>>1]=n&(m<<1)-1;if((b[B>>1]|0)>=(c[u>>2]|0))b[B>>1]=(b[B>>1]|0)-(b[A>>1]|0);c[w>>2]=(c[w>>2]|0)+(c[s>>2]|0);}b[B>>1]=(b[B>>1]|0)+-1<<16>>16;m=(ku(b[B>>1]|0)|0)<<16>>16;c[t>>2]=(c[t>>2]|0)-m;m=b[B>>1]|0;n=c[j>>2]|0;g=c[x>>2]|0;c[x>>2]=g+1;b[n+(g<<1)>>1]=m;c[y>>2]=((b[B>>1]|0)!=0^1)&1;while(1){if((c[t>>2]|0)>=(c[u>>2]|0))break;c[s>>2]=(c[s>>2]|0)+-1;c[u>>2]=c[u>>2]>>1;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[w>>2]=(c[w>>2]|0)-((c[q>>2]|0)+-4-(c[r>>2]|0)<<3);c[r>>2]=(c[q>>2]|0)+-4;}else{c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;}m=Mq(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]&31);}if((D|0)==19){c[i>>2]=-48;C=c[i>>2]|0;l=h;return C|0;}if((c[t>>2]|0)!=1){c[i>>2]=-1;C=c[i>>2]|0;l=h;return C|0;}c[c[k>>2]>>2]=(c[x>>2]|0)-1;c[r>>2]=(c[r>>2]|0)+((c[w>>2]|0)+7>>3);if(((c[r>>2]|0)-(c[p>>2]|0)|0)>>>0>(c[o>>2]|0)>>>0){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}else{c[i>>2]=(c[r>>2]|0)-(c[p>>2]|0);C=c[i>>2]|0;l=h;return C|0;}return 0;}function ku(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=a;a=b[d>>1]|0;l=c;return((b[d>>1]|0)<0?0-a|0:a)&65535|0;}function lu(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+8224|0;h=g+8220|0;i=g+8216|0;j=g+8212|0;k=g+8208|0;m=g+8204|0;n=g;o=g+8200|0;p=g+8196|0;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;oE(n|0,0,8194)|0;b[n>>1]=12;c[o>>2]=c[k>>2];c[p>>2]=Ju(n,c[k>>2]|0,c[m>>2]|0)|0;k=(ou(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(k){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[m>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);c[h>>2]=Nu(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0,c[m>>2]|0,n)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function mu(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=l;l=l+48|0;h=g+44|0;i=g+40|0;j=g+36|0;k=g+32|0;m=g+28|0;n=g+16|0;o=g+12|0;p=g+8|0;q=g+4|0;r=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;if(!(c[j>>2]|0)){c[h>>2]=-70;s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)>>>0>(c[j>>2]|0)>>>0){c[h>>2]=-20;s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)==(c[j>>2]|0)){mE(c[i>>2]|0,c[k>>2]|0,c[j>>2]|0)|0;c[h>>2]=c[j>>2];s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)==1){oE(c[i>>2]|0,(d[c[k>>2]>>0]|0)&255|0,c[j>>2]|0)|0;c[h>>2]=c[j>>2];s=c[h>>2]|0;l=g;return s|0;}c[o>>2]=(c[m>>2]<<4>>>0)/((c[j>>2]|0)>>>0)|0;c[p>>2]=(c[j>>2]|0)>>>8;c[q>>2]=0;while(1){if((c[q>>2]|0)>>>0>=3)break;f=(c[7008+((c[o>>2]|0)*24|0)+(c[q>>2]<<3)>>2]|0)+(N(c[7008+((c[o>>2]|0)*24|0)+(c[q>>2]<<3)+4>>2]|0,c[p>>2]|0)|0)|0;c[n+(c[q>>2]<<2)>>2]=f;c[q>>2]=(c[q>>2]|0)+1;}q=n+4|0;c[q>>2]=(c[q>>2]|0)+((c[n+4>>2]|0)>>>4);q=n+8|0;c[q>>2]=(c[q>>2]|0)+((c[n+8>>2]|0)>>>3);c[r>>2]=0;c[r>>2]=(c[n+4>>2]|0)>>>0<(c[n>>2]|0)>>>0?1:0;c[h>>2]=sc[c[11964+(c[r>>2]<<2)>>2]&15](c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;s=c[h>>2]|0;l=g;return s|0;}function nu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;g=l;l=l+80|0;h=g+68|0;i=g+64|0;j=g+60|0;k=g+56|0;m=g+52|0;n=g+48|0;o=g+44|0;p=g+40|0;q=g+36|0;r=g+32|0;s=g+28|0;t=g+24|0;u=g+8|0;v=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[k>>2];c[p>>2]=c[i>>2];c[q>>2]=(c[p>>2]|0)+(c[j>>2]|0);c[r>>2]=c[c[n>>2]>>2];c[s>>2]=c[n>>2];c[t>>2]=(c[s>>2]|0)+4;c[v>>2]=St(u,c[o>>2]|0,c[m>>2]|0)|0;if(ou(c[v>>2]|0)|0){c[h>>2]=c[v>>2];w=c[h>>2]|0;l=g;return w|0;}pu(c[p>>2]|0,u,c[q>>2]|0,c[t>>2]|0,c[r>>2]|0)|0;if(qu(u)|0){c[h>>2]=c[j>>2];w=c[h>>2]|0;l=g;return w|0;}else{c[h>>2]=-20;w=c[h>>2]|0;l=g;return w|0;}return 0;}function ou(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=jr(c[d>>2]|0)|0;l=b;return a|0;}function pu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[h>>2];while(1){if(Ut(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>=((c[j>>2]|0)+-7|0)>>>0)break;if(ru()|0){f=su(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}ru()|0;f=su(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;if(ru()|0){f=su(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}f=su(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){if(Ut(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=su(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){o=c[h>>2]|0;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=su(o,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}if(o>>>0>=(c[j>>2]|0)>>>0){p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}j=tu(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+j;p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}function qu(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;c[d>>2]=a;if((c[(c[d>>2]|0)+8>>2]|0)!=(c[(c[d>>2]|0)+12>>2]|0)){e=0;f=e&1;l=b;return f|0;}e=(c[(c[d>>2]|0)+4>>2]|0)==32;f=e&1;l=b;return f|0;}function ru(){return 0;}function su(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=uu(c[j>>2]|0,c[m>>2]|0)|0;m=c[i>>2]|0;i=(c[k>>2]|0)+(c[n>>2]<<2)|0;a[m>>0]=a[i>>0]|0;a[m+1>>0]=a[i+1>>0]|0;du(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0;}function tu(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=uu(c[j>>2]|0,c[m>>2]|0)|0;a[c[i>>2]>>0]=a[(c[k>>2]|0)+(c[n>>2]<<2)>>0]|0;i=c[j>>2]|0;if((d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0)==1){du(i,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return 1;}if((c[i+4>>2]|0)>>>0>=32){l=h;return 1;}du(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);if((c[(c[j>>2]|0)+4>>2]|0)>>>0<=32){l=h;return 1;}c[(c[j>>2]|0)+4>>2]=32;l=h;return 1;}function uu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function vu(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+8224|0;h=g+8220|0;i=g+8216|0;j=g+8212|0;k=g+8208|0;m=g+8204|0;n=g;o=g+8200|0;p=g+8196|0;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;oE(n|0,0,8194)|0;b[n>>1]=12;c[o>>2]=c[k>>2];c[p>>2]=Ju(n,c[k>>2]|0,c[m>>2]|0)|0;k=(ou(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(k){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[m>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);c[h>>2]=Ku(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0,c[m>>2]|0,n)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function wu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+16416|0;g=f+16412|0;h=f+16408|0;i=f+16404|0;j=f+16400|0;k=f+16396|0;m=f;n=f+16392|0;o=f+16388|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;oE(m|0,0,16388)|0;c[m>>2]=12;c[n>>2]=c[j>>2];c[o>>2]=xu(m,c[j>>2]|0,c[k>>2]|0)|0;j=(ou(c[o>>2]|0)|0)!=0;e=c[o>>2]|0;if(j){c[g>>2]=e;p=c[g>>2]|0;l=f;return p|0;}if(e>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;p=c[g>>2]|0;l=f;return p|0;}else{c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[o>>2]|0);c[g>>2]=yu(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,m)|0;p=c[g>>2]|0;l=f;return p|0;}return 0;}function xu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+2128|0;h=g+2124|0;i=g+2120|0;j=g+2116|0;k=g+2112|0;m=g+1760|0;n=g+1248|0;o=g+1168|0;p=g+1088|0;q=g+2108|0;r=g;s=g+2104|0;t=g+2100|0;u=g+2096|0;v=g+2092|0;w=g+2088|0;x=g+2084|0;y=g+2080|0;z=g+2076|0;A=g+2072|0;B=g+2068|0;C=g+2064|0;D=g+2060|0;E=g+2056|0;F=g+2052|0;G=g+2048|0;H=g+2044|0;I=g+2040|0;J=g+2036|0;K=g+2032|0;L=g+2028|0;M=g+2024|0;N=g+2020|0;O=g+2016|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;f=o;e=f+68|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));f=p;e=f+72|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));c[q>>2]=p+4;c[w>>2]=c[c[i>>2]>>2];c[y>>2]=c[i>>2];c[z>>2]=(c[y>>2]|0)+4;if((c[w>>2]|0)>>>0>16){c[h>>2]=-44;P=c[h>>2]|0;l=g;return P|0;}c[x>>2]=zu(m,256,o,v,s,c[j>>2]|0,c[k>>2]|0)|0;if(ou(c[x>>2]|0)|0){c[h>>2]=c[x>>2];P=c[h>>2]|0;l=g;return P|0;}if((c[s>>2]|0)>>>0>(c[w>>2]|0)>>>0){c[h>>2]=-44;P=c[h>>2]|0;l=g;return P|0;}c[t>>2]=c[s>>2];while(1){if(c[o+(c[t>>2]<<2)>>2]|0)break;c[t>>2]=(c[t>>2]|0)+-1;}c[B>>2]=0;c[A>>2]=1;while(1){Q=c[B>>2]|0;if((c[A>>2]|0)>>>0>=((c[t>>2]|0)+1|0)>>>0)break;c[C>>2]=Q;c[B>>2]=(c[B>>2]|0)+(c[o+(c[A>>2]<<2)>>2]|0);c[(c[q>>2]|0)+(c[A>>2]<<2)>>2]=c[C>>2];c[A>>2]=(c[A>>2]|0)+1;}c[c[q>>2]>>2]=Q;c[u>>2]=c[B>>2];c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;c[E>>2]=d[m+(c[D>>2]|0)>>0];B=(c[q>>2]|0)+(c[E>>2]<<2)|0;Q=c[B>>2]|0;c[B>>2]=Q+1;c[F>>2]=Q;a[n+(c[F>>2]<<1)>>0]=c[D>>2];a[n+(c[F>>2]<<1)+1>>0]=c[E>>2];c[D>>2]=(c[D>>2]|0)+1;}c[c[q>>2]>>2]=0;c[G>>2]=r;c[H>>2]=(c[w>>2]|0)-(c[s>>2]|0)-1;c[I>>2]=0;c[J>>2]=1;while(1){if((c[J>>2]|0)>>>0>=((c[t>>2]|0)+1|0)>>>0)break;c[K>>2]=c[I>>2];c[I>>2]=(c[I>>2]|0)+(c[o+(c[J>>2]<<2)>>2]<<(c[J>>2]|0)+(c[H>>2]|0));c[(c[G>>2]|0)+(c[J>>2]<<2)>>2]=c[K>>2];c[J>>2]=(c[J>>2]|0)+1;}c[L>>2]=(c[s>>2]|0)+1-(c[t>>2]|0);c[M>>2]=c[L>>2];while(1){if((c[M>>2]|0)>>>0>=((c[w>>2]|0)-(c[L>>2]|0)+1|0)>>>0)break;c[N>>2]=r+((c[M>>2]|0)*68|0);c[O>>2]=1;while(1){if((c[O>>2]|0)>>>0>=((c[t>>2]|0)+1|0)>>>0)break;c[(c[N>>2]|0)+(c[O>>2]<<2)>>2]=(c[(c[G>>2]|0)+(c[O>>2]<<2)>>2]|0)>>>(c[M>>2]|0);c[O>>2]=(c[O>>2]|0)+1;}c[M>>2]=(c[M>>2]|0)+1;}Au(c[z>>2]|0,c[w>>2]|0,n,c[u>>2]|0,p,r,c[t>>2]|0,(c[s>>2]|0)+1|0);c[h>>2]=c[x>>2];P=c[h>>2]|0;l=g;return P|0;}function yu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+192|0;h=g+184|0;i=g+180|0;j=g+176|0;k=g+172|0;m=g+168|0;n=g+164|0;o=g+160|0;p=g+156|0;q=g+152|0;r=g+148|0;s=g+144|0;t=g+140|0;u=g+136|0;v=g+120|0;w=g+104|0;x=g+88|0;y=g+72|0;z=g+64|0;A=g+60|0;B=g+56|0;C=g+52|0;D=g+48|0;E=g+44|0;F=g+40|0;G=g+36|0;H=g+32|0;I=g+28|0;J=g+24|0;K=g+20|0;L=g+16|0;M=g+12|0;N=g+8|0;O=g+4|0;P=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[m>>2]|0)>>>0<10){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}c[o>>2]=c[k>>2];c[p>>2]=c[i>>2];c[q>>2]=(c[p>>2]|0)+(c[j>>2]|0);c[r>>2]=c[n>>2];c[s>>2]=(c[r>>2]|0)+4;c[t>>2]=c[c[n>>2]>>2];c[z>>2]=(Oq(c[o>>2]|0)|0)&65535;c[A>>2]=(Oq((c[o>>2]|0)+2|0)|0)&65535;c[B>>2]=(Oq((c[o>>2]|0)+4|0)|0)&65535;c[D>>2]=(c[o>>2]|0)+6;c[E>>2]=(c[D>>2]|0)+(c[z>>2]|0);c[F>>2]=(c[E>>2]|0)+(c[A>>2]|0);c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(((c[j>>2]|0)+3|0)>>>0)/4|0;c[I>>2]=(c[p>>2]|0)+(c[H>>2]|0);c[J>>2]=(c[I>>2]|0)+(c[H>>2]|0);c[K>>2]=(c[J>>2]|0)+(c[H>>2]|0);c[L>>2]=c[p>>2];c[M>>2]=c[I>>2];c[N>>2]=c[J>>2];c[O>>2]=c[K>>2];c[C>>2]=(c[m>>2]|0)-((c[z>>2]|0)+(c[A>>2]|0)+(c[B>>2]|0)+6);if((c[C>>2]|0)>>>0>(c[m>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=St(v,c[D>>2]|0,c[z>>2]|0)|0;if(ou(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=St(w,c[E>>2]|0,c[A>>2]|0)|0;if(ou(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=St(x,c[F>>2]|0,c[B>>2]|0)|0;if(ou(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=St(y,c[G>>2]|0,c[C>>2]|0)|0;if(ou(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}u=Ut(v)|0;C=u|(Ut(w)|0);u=C|(Ut(x)|0);c[P>>2]=u|(Ut(y)|0);while(1){if(c[P>>2]|0)break;if((c[O>>2]|0)>>>0>=((c[q>>2]|0)+-7|0)>>>0)break;if(ru()|0){u=su(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;}if(ru()|0){u=su(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;}if(ru()|0){u=su(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;}if(ru()|0){u=su(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;}ru()|0;u=su(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;ru()|0;u=su(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;ru()|0;u=su(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;ru()|0;u=su(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;if(ru()|0){u=su(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;}if(ru()|0){u=su(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;}if(ru()|0){u=su(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;}if(ru()|0){u=su(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;}u=su(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;u=su(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;u=su(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;u=su(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;u=Ut(v)|0;C=u|(Ut(w)|0);u=C|(Ut(x)|0);c[P>>2]=u|(Ut(y)|0);}if((c[L>>2]|0)>>>0>(c[I>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}if((c[M>>2]|0)>>>0>(c[J>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}pu(c[L>>2]|0,v,c[I>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;pu(c[M>>2]|0,w,c[J>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;pu(c[N>>2]|0,x,c[K>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;pu(c[O>>2]|0,y,c[q>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;t=qu(v)|0;v=t&(qu(w)|0);w=v&(qu(x)|0);c[P>>2]=w&(qu(y)|0);if(c[P>>2]|0){c[h>>2]=c[j>>2];Q=c[h>>2]|0;l=g;return Q|0;}else{c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}return 0;}function zu(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;k=l;l=l+80|0;m=k+72|0;n=k+68|0;o=k+64|0;p=k+60|0;q=k+56|0;r=k+52|0;s=k+48|0;t=k+44|0;u=k+40|0;v=k+36|0;w=k+32|0;x=k+28|0;y=k+24|0;z=k+20|0;A=k+16|0;B=k+12|0;C=k+8|0;D=k+4|0;E=k;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[v>>2]=c[s>>2];if(!(c[t>>2]|0)){c[m>>2]=-72;F=c[m>>2]|0;l=k;return F|0;}c[w>>2]=d[c[v>>2]>>0];s=c[w>>2]|0;a:do{if((c[w>>2]|0)>>>0<128){if((s+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;F=c[m>>2]|0;l=k;return F|0;}c[x>>2]=Eu(c[n>>2]|0,(c[o>>2]|0)-1|0,(c[v>>2]|0)+1|0,c[w>>2]|0)|0;if(jr(c[x>>2]|0)|0){c[m>>2]=c[x>>2];F=c[m>>2]|0;l=k;return F|0;}}else{j=c[w>>2]|0;if(s>>>0>=242){c[x>>2]=c[7392+(j-242<<2)>>2];oE(c[n>>2]|0,1,c[o>>2]|0)|0;c[w>>2]=0;break;}c[x>>2]=j-127;c[w>>2]=(((c[x>>2]|0)+1|0)>>>0)/2|0;if(((c[w>>2]|0)+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;F=c[m>>2]|0;l=k;return F|0;}if((c[x>>2]|0)>>>0>=(c[o>>2]|0)>>>0){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}c[v>>2]=(c[v>>2]|0)+1;c[y>>2]=0;while(1){if((c[y>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break a;a[(c[n>>2]|0)+(c[y>>2]|0)>>0]=(d[(c[v>>2]|0)+(((c[y>>2]|0)>>>0)/2|0)>>0]|0)>>4;a[(c[n>>2]|0)+((c[y>>2]|0)+1)>>0]=(d[(c[v>>2]|0)+(((c[y>>2]|0)>>>0)/2|0)>>0]|0)&15;c[y>>2]=(c[y>>2]|0)+2;}}}while(0);y=c[p>>2]|0;v=y+68|0;do{c[y>>2]=0;y=y+4|0;}while((y|0)<(v|0));c[u>>2]=0;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break;if((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0|0)>=16){G=20;break;}y=(c[p>>2]|0)+((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)<<2)|0;c[y>>2]=(c[y>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+(1<<(d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)>>1);c[z>>2]=(c[z>>2]|0)+1;}if((G|0)==20){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}if(!(c[u>>2]|0)){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}c[A>>2]=(fu(c[u>>2]|0)|0)+1;if((c[A>>2]|0)>>>0>16){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}c[c[r>>2]>>2]=c[A>>2];c[B>>2]=1<<c[A>>2];c[C>>2]=(c[B>>2]|0)-(c[u>>2]|0);c[D>>2]=1<<(fu(c[C>>2]|0)|0);c[E>>2]=(fu(c[C>>2]|0)|0)+1;if((c[D>>2]|0)!=(c[C>>2]|0)){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}a[(c[n>>2]|0)+(c[x>>2]|0)>>0]=c[E>>2];n=(c[p>>2]|0)+(c[E>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;if((c[(c[p>>2]|0)+4>>2]|0)>>>0>=2?(c[(c[p>>2]|0)+4>>2]&1|0)==0:0){c[c[q>>2]>>2]=(c[x>>2]|0)+1;c[m>>2]=(c[w>>2]|0)+1;F=c[m>>2]|0;l=k;return F|0;}c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}function Au(e,f,g,h,i,j,k,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;n=l;l=l+160|0;o=n+140|0;p=n+136|0;q=n+132|0;r=n+128|0;s=n+124|0;t=n+120|0;u=n+116|0;v=n+112|0;w=n;x=n+108|0;y=n+104|0;z=n+100|0;A=n+148|0;B=n+96|0;C=n+92|0;D=n+88|0;E=n+84|0;F=n+80|0;G=n+76|0;H=n+144|0;I=n+72|0;J=n+68|0;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=k;c[v>>2]=m;c[x>>2]=(c[v>>2]|0)-(c[p>>2]|0);c[y>>2]=(c[v>>2]|0)-(c[u>>2]|0);u=w;m=c[t>>2]|0;k=u+68|0;do{c[u>>2]=c[m>>2];u=u+4|0;m=m+4|0;}while((u|0)<(k|0));c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;b[A>>1]=d[(c[q>>2]|0)+(c[z>>2]<<1)>>0]|0;c[B>>2]=d[(c[q>>2]|0)+(c[z>>2]<<1)+1>>0];c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);c[D>>2]=c[w+(c[B>>2]<<2)>>2];c[E>>2]=1<<(c[p>>2]|0)-(c[C>>2]|0);a:do{if(((c[p>>2]|0)-(c[C>>2]|0)|0)>>>0>=(c[y>>2]|0)>>>0){m=(c[C>>2]|0)+(c[x>>2]|0)|0;c[G>>2]=m;c[G>>2]=(c[G>>2]|0)<1?1:m;c[F>>2]=c[(c[s>>2]|0)+(c[G>>2]<<2)>>2];Bu((c[o>>2]|0)+(c[D>>2]<<2)|0,(c[p>>2]|0)-(c[C>>2]|0)|0,c[C>>2]|0,(c[t>>2]|0)+((c[C>>2]|0)*68|0)|0,c[G>>2]|0,(c[q>>2]|0)+(c[F>>2]<<1)|0,(c[r>>2]|0)-(c[F>>2]|0)|0,c[v>>2]|0,b[A>>1]|0);}else{Cu(H,b[A>>1]|0);a[H+2>>0]=c[C>>2];a[H+3>>0]=1;c[J>>2]=(c[D>>2]|0)+(c[E>>2]|0);c[I>>2]=c[D>>2];while(1){if((c[I>>2]|0)>>>0>=(c[J>>2]|0)>>>0)break a;m=(c[o>>2]|0)+(c[I>>2]<<2)|0;b[m>>1]=b[H>>1]|0;b[m+2>>1]=b[H+2>>1]|0;c[I>>2]=(c[I>>2]|0)+1;}}}while(0);m=w+(c[B>>2]<<2)|0;c[m>>2]=(c[m>>2]|0)+(c[E>>2]|0);c[z>>2]=(c[z>>2]|0)+1;}l=n;return;}function Bu(f,g,h,i,j,k,m,n,o){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;p=l;l=l+160|0;q=p+136|0;r=p+132|0;s=p+128|0;t=p+124|0;u=p+120|0;v=p+116|0;w=p+112|0;x=p+108|0;y=p+144|0;z=p+140|0;A=p;B=p+104|0;C=p+100|0;D=p+96|0;E=p+92|0;F=p+88|0;G=p+84|0;H=p+80|0;I=p+76|0;J=p+72|0;K=p+68|0;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;c[v>>2]=k;c[w>>2]=m;c[x>>2]=n;b[y>>1]=o;o=A;n=c[t>>2]|0;t=o+68|0;do{c[o>>2]=c[n>>2];o=o+4|0;n=n+4|0;}while((o|0)<(t|0));a:do{if((c[u>>2]|0)>1){c[C>>2]=c[A+(c[u>>2]<<2)>>2];Cu(z,b[y>>1]|0);a[z+2>>0]=c[s>>2];a[z+3>>0]=1;c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[C>>2]|0)>>>0)break a;n=(c[q>>2]|0)+(c[B>>2]<<2)|0;b[n>>1]=b[z>>1]|0;b[n+2>>1]=b[z+2>>1]|0;c[B>>2]=(c[B>>2]|0)+1;}}}while(0);c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[E>>2]=d[(c[v>>2]|0)+(c[D>>2]<<1)>>0];c[F>>2]=d[(c[v>>2]|0)+(c[D>>2]<<1)+1>>0];c[G>>2]=(c[x>>2]|0)-(c[F>>2]|0);c[H>>2]=1<<(c[r>>2]|0)-(c[G>>2]|0);c[I>>2]=c[A+(c[F>>2]<<2)>>2];c[J>>2]=c[I>>2];c[K>>2]=(c[I>>2]|0)+(c[H>>2]|0);Cu(z,(e[y>>1]|0)+(c[E>>2]<<8)&65535);a[z+2>>0]=(c[G>>2]|0)+(c[s>>2]|0);a[z+3>>0]=2;do{B=c[q>>2]|0;C=c[J>>2]|0;c[J>>2]=C+1;u=B+(C<<2)|0;b[u>>1]=b[z>>1]|0;b[u+2>>1]=b[z+2>>1]|0;}while((c[J>>2]|0)>>>0<(c[K>>2]|0)>>>0);u=A+(c[F>>2]<<2)|0;c[u>>2]=(c[u>>2]|0)+(c[H>>2]|0);c[D>>2]=(c[D>>2]|0)+1;}l=p;return;}function Cu(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(Qq()|0)!=0;d=c[h>>2]|0;if(f){Du(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function Du(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=c[g>>2]|0;a[e>>0]=a[h>>0]|0;a[e+1>>0]=a[h+1>>0]|0;l=f;return;}function Eu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+16960|0;g=f+16952|0;h=f+16948|0;i=f+16944|0;j=f+16940|0;k=f+16936|0;m=f+16932|0;n=f+16928|0;o=f+16400|0;p=f;q=f+16924|0;r=f+16920|0;s=f+16916|0;t=f+16912|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[j>>2];c[n>>2]=c[m>>2];c[r>>2]=255;if((c[k>>2]|0)>>>0<2){c[g>>2]=-72;u=c[g>>2]|0;l=f;return u|0;}c[s>>2]=ju(o,r,q,c[m>>2]|0,c[k>>2]|0)|0;m=(jr(c[s>>2]|0)|0)!=0;j=c[s>>2]|0;if(m){c[g>>2]=j;u=c[g>>2]|0;l=f;return u|0;}if(j>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;u=c[g>>2]|0;l=f;return u|0;}c[n>>2]=(c[n>>2]|0)+(c[s>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[s>>2]|0);c[t>>2]=iu(p,o,c[r>>2]|0,c[q>>2]|0)|0;if(jr(c[t>>2]|0)|0){c[g>>2]=c[t>>2];u=c[g>>2]|0;l=f;return u|0;}else{c[g>>2]=Fu(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,p)|0;u=c[g>>2]|0;l=f;return u|0;}return 0;}function Fu(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;i=l;l=l+208|0;j=i+192|0;k=i+188|0;m=i+184|0;n=i+180|0;o=i+176|0;p=i+172|0;q=i+168|0;r=i+164|0;s=i+160|0;t=i+156|0;u=i+152|0;v=i+136|0;w=i+128|0;x=i+120|0;y=i+116|0;z=i+112|0;A=i+108|0;B=i+104|0;C=i+100|0;D=i+96|0;E=i+92|0;F=i+88|0;G=i+84|0;H=i+80|0;I=i+76|0;J=i+72|0;K=i+56|0;L=i+48|0;M=i+40|0;N=i+36|0;O=i+32|0;P=i+28|0;Q=i+24|0;R=i+20|0;S=i+16|0;T=i+12|0;U=i+8|0;V=i+4|0;W=i;c[P>>2]=b;c[Q>>2]=d;c[R>>2]=f;c[S>>2]=g;c[T>>2]=h;c[U>>2]=c[T>>2];c[V>>2]=c[U>>2];c[W>>2]=e[(c[V>>2]|0)+2>>1];V=c[P>>2]|0;P=c[Q>>2]|0;Q=c[R>>2]|0;R=c[S>>2]|0;S=c[T>>2]|0;if(c[W>>2]|0){c[A>>2]=V;c[B>>2]=P;c[C>>2]=Q;c[D>>2]=R;c[E>>2]=S;c[F>>2]=1;c[G>>2]=c[A>>2];c[H>>2]=c[G>>2];c[I>>2]=(c[H>>2]|0)+(c[B>>2]|0);c[J>>2]=(c[I>>2]|0)+-3;c[N>>2]=St(K,c[C>>2]|0,c[D>>2]|0)|0;do{if(jr(c[N>>2]|0)|0)c[z>>2]=c[N>>2];else{Tt(L,K,c[E>>2]|0);Tt(M,K,c[E>>2]|0);while(1){if(Ut(K)|0)break;if((c[H>>2]|0)>>>0>=(c[J>>2]|0)>>>0)break;if(c[F>>2]|0)X=(Gu(L,K)|0)&255;else X=(Hu(L,K)|0)&255;a[c[H>>2]>>0]=X;if(c[F>>2]|0)Y=(Gu(M,K)|0)&255;else Y=(Hu(M,K)|0)&255;a[(c[H>>2]|0)+1>>0]=Y;if((Ut(K)|0)>>>0>0){Z=14;break;}if(c[F>>2]|0)_=(Gu(L,K)|0)&255;else _=(Hu(L,K)|0)&255;a[(c[H>>2]|0)+2>>0]=_;if(c[F>>2]|0)$=(Gu(M,K)|0)&255;else $=(Hu(M,K)|0)&255;a[(c[H>>2]|0)+3>>0]=$;c[H>>2]=(c[H>>2]|0)+4;}if((Z|0)==14)c[H>>2]=(c[H>>2]|0)+2;while(1){if((c[H>>2]|0)>>>0>((c[I>>2]|0)+-2|0)>>>0){Z=24;break;}if(c[F>>2]|0)aa=(Gu(L,K)|0)&255;else aa=(Hu(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=aa;if((Ut(K)|0)==3){Z=29;break;}if((c[H>>2]|0)>>>0>((c[I>>2]|0)+-2|0)>>>0){Z=34;break;}if(c[F>>2]|0)ba=(Gu(M,K)|0)&255;else ba=(Hu(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ba;if((Ut(K)|0)==3){Z=39;break;}}if((Z|0)==24){c[z>>2]=-70;break;}else if((Z|0)==29){if(c[F>>2]|0)ca=(Gu(M,K)|0)&255;else ca=(Hu(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ca;}else if((Z|0)==34){c[z>>2]=-70;break;}else if((Z|0)==39){if(c[F>>2]|0)da=(Gu(L,K)|0)&255;else da=(Hu(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=da;}c[z>>2]=(c[H>>2]|0)-(c[G>>2]|0);}}while(0);c[O>>2]=c[z>>2];ea=c[O>>2]|0;l=i;return ea|0;}else{c[k>>2]=V;c[m>>2]=P;c[n>>2]=Q;c[o>>2]=R;c[p>>2]=S;c[q>>2]=0;c[r>>2]=c[k>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[s>>2]|0)+(c[m>>2]|0);c[u>>2]=(c[t>>2]|0)+-3;c[y>>2]=St(v,c[n>>2]|0,c[o>>2]|0)|0;do{if(jr(c[y>>2]|0)|0)c[j>>2]=c[y>>2];else{Tt(w,v,c[p>>2]|0);Tt(x,v,c[p>>2]|0);while(1){if(Ut(v)|0)break;if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;if(c[q>>2]|0)fa=(Gu(w,v)|0)&255;else fa=(Hu(w,v)|0)&255;a[c[s>>2]>>0]=fa;if(c[q>>2]|0)ga=(Gu(x,v)|0)&255;else ga=(Hu(x,v)|0)&255;a[(c[s>>2]|0)+1>>0]=ga;if((Ut(v)|0)>>>0>0){Z=58;break;}if(c[q>>2]|0)ha=(Gu(w,v)|0)&255;else ha=(Hu(w,v)|0)&255;a[(c[s>>2]|0)+2>>0]=ha;if(c[q>>2]|0)ia=(Gu(x,v)|0)&255;else ia=(Hu(x,v)|0)&255;a[(c[s>>2]|0)+3>>0]=ia;c[s>>2]=(c[s>>2]|0)+4;}if((Z|0)==58)c[s>>2]=(c[s>>2]|0)+2;while(1){if((c[s>>2]|0)>>>0>((c[t>>2]|0)+-2|0)>>>0){Z=68;break;}if(c[q>>2]|0)ja=(Gu(w,v)|0)&255;else ja=(Hu(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ja;if((Ut(v)|0)==3){Z=73;break;}if((c[s>>2]|0)>>>0>((c[t>>2]|0)+-2|0)>>>0){Z=78;break;}if(c[q>>2]|0)ka=(Gu(x,v)|0)&255;else ka=(Hu(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ka;if((Ut(v)|0)==3){Z=83;break;}}if((Z|0)==68){c[j>>2]=-70;break;}else if((Z|0)==73){if(c[q>>2]|0)la=(Gu(x,v)|0)&255;else la=(Hu(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=la;}else if((Z|0)==78){c[j>>2]=-70;break;}else if((Z|0)==83){if(c[q>>2]|0)ma=(Gu(w,v)|0)&255;else ma=(Hu(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ma;}c[j>>2]=(c[s>>2]|0)-(c[r>>2]|0);}}while(0);c[O>>2]=c[j>>2];ea=c[O>>2]|0;l=i;return ea|0;}return 0;}function Gu(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=Iu(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function Hu(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=$t(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function Iu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=uu(c[e>>2]|0,c[f>>2]|0)|0;du(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function Ju(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;i=l;l=l+400|0;j=i+392|0;k=i+388|0;m=i+384|0;n=i+380|0;o=i+80|0;p=i;q=i+376|0;r=i+372|0;s=i+368|0;t=i+364|0;u=i+360|0;v=i+356|0;w=i+352|0;x=i+348|0;y=i+344|0;z=i+340|0;A=i+336|0;B=i+396|0;c[k>>2]=f;c[m>>2]=g;c[n>>2]=h;c[q>>2]=0;c[s>>2]=0;c[v>>2]=(c[k>>2]|0)+2;c[w>>2]=c[v>>2];c[r>>2]=zu(o,256,p,s,q,c[m>>2]|0,c[n>>2]|0)|0;if(ou(c[r>>2]|0)|0){c[j>>2]=c[r>>2];C=c[j>>2]|0;l=i;return C|0;}if((c[q>>2]|0)>>>0>(e[c[k>>2]>>1]|0)>>>0){c[j>>2]=-44;C=c[j>>2]|0;l=i;return C|0;}b[c[k>>2]>>1]=c[q>>2];c[u>>2]=0;c[t>>2]=1;while(1){if((c[t>>2]|0)>>>0>=((c[q>>2]|0)+1|0)>>>0)break;c[x>>2]=c[u>>2];c[u>>2]=(c[u>>2]|0)+(c[p+(c[t>>2]<<2)>>2]<<(c[t>>2]|0)-1);c[p+(c[t>>2]<<2)>>2]=c[x>>2];c[t>>2]=(c[t>>2]|0)+1;}c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;c[y>>2]=d[o+(c[t>>2]|0)>>0];c[z>>2]=1<<c[y>>2]>>1;a[B>>0]=c[t>>2];a[B+1>>0]=(c[q>>2]|0)+1-(c[y>>2]|0);c[A>>2]=c[p+(c[y>>2]<<2)>>2];while(1){if((c[A>>2]|0)>>>0>=((c[p+(c[y>>2]<<2)>>2]|0)+(c[z>>2]|0)|0)>>>0)break;x=(c[w>>2]|0)+(c[A>>2]<<1)|0;a[x>>0]=a[B>>0]|0;a[x+1>>0]=a[B+1>>0]|0;c[A>>2]=(c[A>>2]|0)+1;}x=p+(c[y>>2]<<2)|0;c[x>>2]=(c[x>>2]|0)+(c[z>>2]|0);c[t>>2]=(c[t>>2]|0)+1;}c[j>>2]=c[r>>2];C=c[j>>2]|0;l=i;return C|0;}function Ku(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;i=l;l=l+192|0;j=i+184|0;k=i+180|0;m=i+176|0;n=i+172|0;o=i+168|0;p=i+164|0;q=i+160|0;r=i+156|0;s=i+152|0;t=i+148|0;u=i+144|0;v=i+140|0;w=i+136|0;x=i+120|0;y=i+104|0;z=i+88|0;A=i+72|0;B=i+64|0;C=i+60|0;D=i+56|0;E=i+52|0;F=i+48|0;G=i+44|0;H=i+40|0;I=i+36|0;J=i+32|0;K=i+28|0;L=i+24|0;M=i+20|0;N=i+16|0;O=i+12|0;P=i+8|0;Q=i+4|0;R=i;c[k>>2]=b;c[m>>2]=d;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;if((c[o>>2]|0)>>>0<10){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}c[q>>2]=c[n>>2];c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=c[p>>2];c[u>>2]=(c[t>>2]|0)+2;c[v>>2]=e[c[p>>2]>>1];c[B>>2]=(Oq(c[q>>2]|0)|0)&65535;c[C>>2]=(Oq((c[q>>2]|0)+2|0)|0)&65535;c[D>>2]=(Oq((c[q>>2]|0)+4|0)|0)&65535;c[F>>2]=(c[q>>2]|0)+6;c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(c[G>>2]|0)+(c[C>>2]|0);c[I>>2]=(c[H>>2]|0)+(c[D>>2]|0);c[J>>2]=(((c[m>>2]|0)+3|0)>>>0)/4|0;c[K>>2]=(c[r>>2]|0)+(c[J>>2]|0);c[L>>2]=(c[K>>2]|0)+(c[J>>2]|0);c[M>>2]=(c[L>>2]|0)+(c[J>>2]|0);c[N>>2]=c[r>>2];c[O>>2]=c[K>>2];c[P>>2]=c[L>>2];c[Q>>2]=c[M>>2];c[E>>2]=(c[o>>2]|0)-((c[B>>2]|0)+(c[C>>2]|0)+(c[D>>2]|0)+6);if((c[E>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=St(x,c[F>>2]|0,c[B>>2]|0)|0;if(ou(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=St(y,c[G>>2]|0,c[C>>2]|0)|0;if(ou(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=St(z,c[H>>2]|0,c[D>>2]|0)|0;if(ou(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=St(A,c[I>>2]|0,c[E>>2]|0)|0;if(ou(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}w=Ut(x)|0;E=w|(Ut(y)|0);w=E|(Ut(z)|0);c[R>>2]=w|(Ut(A)|0);while(1){if(c[R>>2]|0)break;if((c[Q>>2]|0)>>>0>=((c[s>>2]|0)+-7|0)>>>0)break;if(ru()|0){w=Lu(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;}if(ru()|0){w=Lu(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;}if(ru()|0){w=Lu(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;}if(ru()|0){w=Lu(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;}ru()|0;w=Lu(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;ru()|0;w=Lu(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;ru()|0;w=Lu(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;ru()|0;w=Lu(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;if(ru()|0){w=Lu(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;}if(ru()|0){w=Lu(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;}if(ru()|0){w=Lu(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;}if(ru()|0){w=Lu(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;}w=Lu(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;w=Lu(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;w=Lu(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;w=Lu(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;w=Ut(x)|0;E=w|(Ut(y)|0);w=E|(Ut(z)|0);c[R>>2]=w|(Ut(A)|0);}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}if((c[O>>2]|0)>>>0>(c[L>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}if((c[P>>2]|0)>>>0>(c[M>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}Mu(c[N>>2]|0,x,c[K>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;Mu(c[O>>2]|0,y,c[L>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;Mu(c[P>>2]|0,z,c[M>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;Mu(c[Q>>2]|0,A,c[s>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;v=qu(x)|0;x=v&(qu(y)|0);y=x&(qu(z)|0);c[R>>2]=y&(qu(A)|0);if(c[R>>2]|0){c[j>>2]=c[m>>2];S=c[j>>2]|0;l=i;return S|0;}else{c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}return 0;}function Lu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+16|0;c[h>>2]=b;c[i>>2]=e;c[j>>2]=f;c[k>>2]=uu(c[h>>2]|0,c[j>>2]|0)|0;a[m>>0]=a[(c[i>>2]|0)+(c[k>>2]<<1)>>0]|0;du(c[h>>2]|0,d[(c[i>>2]|0)+(c[k>>2]<<1)+1>>0]|0);l=g;return a[m>>0]|0;}function Mu(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[i>>2];while(1){if(Ut(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>((c[k>>2]|0)+-4|0)>>>0)break;if(ru()|0){g=Lu(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}ru()|0;g=Lu(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;if(ru()|0){g=Lu(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}g=Lu(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if(Ut(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=Lu(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=Lu(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}l=h;return(c[k>>2]|0)-(c[o>>2]|0)|0;}function Nu(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+8|0;v=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[j>>2];c[q>>2]=(c[p>>2]|0)+(c[k>>2]|0);c[r>>2]=e[c[o>>2]>>1];c[s>>2]=c[o>>2];c[t>>2]=(c[s>>2]|0)+2;c[v>>2]=St(u,c[m>>2]|0,c[n>>2]|0)|0;if(ou(c[v>>2]|0)|0){c[i>>2]=c[v>>2];w=c[i>>2]|0;l=h;return w|0;}Mu(c[p>>2]|0,u,c[q>>2]|0,c[t>>2]|0,c[r>>2]|0)|0;if(qu(u)|0){c[i>>2]=c[k>>2];w=c[i>>2]|0;l=h;return w|0;}else{c[i>>2]=-20;w=c[i>>2]|0;l=h;return w|0;}return 0;}function Ou(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+21536>>2]=5;c[(c[d>>2]|0)+21564>>2]=0;c[(c[d>>2]|0)+21520>>2]=0;c[(c[d>>2]|0)+21524>>2]=0;c[(c[d>>2]|0)+21528>>2]=0;c[(c[d>>2]|0)+21532>>2]=0;c[(c[d>>2]|0)+5132>>2]=12;c[(c[d>>2]|0)+21568>>2]=0;l=b;return 0;}function Pu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[k>>2]=Mq(c[h>>2]|0)|0;if((c[k>>2]|0)!=-332356554){Qu(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0);c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)-4;c[j>>2]=Ru(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;if(jr(c[j>>2]|0)|0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}else{c[h>>2]=(c[h>>2]|0)+(c[j>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[j>>2]|0);Qu(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0);c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}return 0;}function Qu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+21532>>2]=c[(c[f>>2]|0)+21520>>2];c[(c[f>>2]|0)+21528>>2]=(c[g>>2]|0)+(0-((c[(c[f>>2]|0)+21520>>2]|0)-(c[(c[f>>2]|0)+21524>>2]|0)));c[(c[f>>2]|0)+21524>>2]=c[g>>2];c[(c[f>>2]|0)+21520>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function Ru(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;e=l;l=l+320|0;f=e+316|0;g=e+312|0;h=e+308|0;i=e+304|0;j=e+300|0;k=e+296|0;m=e+292|0;n=e+288|0;o=e+192|0;p=e+284|0;q=e+280|0;r=e+276|0;s=e+80|0;t=e+272|0;u=e+268|0;v=e+264|0;w=e;x=e+260|0;y=e+256|0;z=e+252|0;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=xu((c[g>>2]|0)+5132|0,c[h>>2]|0,c[i>>2]|0)|0;if(jr(c[j>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}c[h>>2]=(c[h>>2]|0)+(c[j>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[j>>2]|0);c[p>>2]=28;c[k>>2]=ju(o,p,q,c[h>>2]|0,c[i>>2]|0)|0;if(jr(c[k>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}if((c[q>>2]|0)>>>0>8){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}c[r>>2]=iu((c[g>>2]|0)+2052|0,o,c[p>>2]|0,c[q>>2]|0)|0;if(jr(c[r>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);c[t>>2]=52;c[m>>2]=ju(s,t,u,c[h>>2]|0,c[i>>2]|0)|0;if(jr(c[m>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}if((c[u>>2]|0)>>>0>9){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}c[v>>2]=iu((c[g>>2]|0)+3080|0,s,c[t>>2]|0,c[u>>2]|0)|0;if(jr(c[v>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}c[h>>2]=(c[h>>2]|0)+(c[m>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[m>>2]|0);c[x>>2]=35;c[n>>2]=ju(w,x,y,c[h>>2]|0,c[i>>2]|0)|0;if(jr(c[n>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}if((c[y>>2]|0)>>>0>9){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}c[z>>2]=iu(c[g>>2]|0,w,c[x>>2]|0,c[y>>2]|0)|0;if(jr(c[z>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}else{c[(c[g>>2]|0)+21568>>2]=1;c[f>>2]=(c[j>>2]|0)+(c[k>>2]|0)+(c[m>>2]|0)+(c[n>>2]|0);A=c[f>>2]|0;l=e;return A|0;}return 0;}function Su(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=dw(c[g>>2]|0)|0;if(mr(c[j>>2]|0)|0){c[f>>2]=c[j>>2];k=c[f>>2]|0;l=e;return k|0;}if((c[h>>2]|0)!=0&(c[i>>2]|0)!=0?(c[j>>2]=ew(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0,mr(c[j>>2]|0)|0):0){c[f>>2]=-30;k=c[f>>2]|0;l=e;return k|0;}c[f>>2]=0;k=c[f>>2]|0;l=e;return k|0;}function Tu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)==(c[(c[e>>2]|0)+26640>>2]|0)){l=d;return;}c[(c[e>>2]|0)+26652>>2]=c[(c[e>>2]|0)+26640>>2];c[(c[e>>2]|0)+26648>>2]=(c[f>>2]|0)+(0-((c[(c[e>>2]|0)+26640>>2]|0)-(c[(c[e>>2]|0)+26644>>2]|0)));c[(c[e>>2]|0)+26644>>2]=c[f>>2];c[(c[e>>2]|0)+26640>>2]=c[f>>2];l=d;return;}function Uu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;g=l;l=l+80|0;h=g+68|0;i=g+64|0;j=g+60|0;k=g+56|0;m=g+52|0;n=g+48|0;o=g+44|0;p=g+40|0;q=g+36|0;r=g+32|0;s=g+28|0;t=g+24|0;u=g+16|0;v=g+8|0;w=g+4|0;x=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=(c[o>>2]|0)+(c[n>>2]|0);c[q>>2]=c[j>>2];c[r>>2]=c[q>>2];c[s>>2]=(c[q>>2]|0)+(c[k>>2]|0);c[t>>2]=c[n>>2];if((c[n>>2]|0)>>>0<8){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}c[v>>2]=Vu(c[i>>2]|0,c[m>>2]|0,5)|0;if(mr(c[v>>2]|0)|0){c[h>>2]=c[v>>2];y=c[h>>2]|0;l=g;return y|0;}if((c[n>>2]|0)>>>0<((c[v>>2]|0)+3|0)>>>0){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}c[o>>2]=(c[o>>2]|0)+(c[v>>2]|0);c[t>>2]=(c[t>>2]|0)-(c[v>>2]|0);c[v>>2]=Wu(c[i>>2]|0,c[m>>2]|0,c[v>>2]|0)|0;if(mr(c[v>>2]|0)|0){c[h>>2]=c[v>>2];y=c[h>>2]|0;l=g;return y|0;}a:while(1){c[w>>2]=0;c[x>>2]=lr(c[o>>2]|0,(c[p>>2]|0)-(c[o>>2]|0)|0,u)|0;if(mr(c[x>>2]|0)|0){z=11;break;}c[o>>2]=(c[o>>2]|0)+3;c[t>>2]=(c[t>>2]|0)-3;if((c[x>>2]|0)>>>0>(c[t>>2]|0)>>>0){z=13;break;}switch(c[u>>2]|0){case 2:{z=17;break a;break;}case 0:{c[w>>2]=Xu(c[i>>2]|0,c[r>>2]|0,(c[s>>2]|0)-(c[r>>2]|0)|0,c[o>>2]|0,c[x>>2]|0)|0;break;}case 1:{c[w>>2]=Yu(c[r>>2]|0,(c[s>>2]|0)-(c[r>>2]|0)|0,c[o>>2]|0,c[x>>2]|0)|0;break;}case 3:{if(c[t>>2]|0){z=19;break a;}break;}default:{z=20;break a;}}if(!(c[x>>2]|0)){z=25;break;}v=(mr(c[w>>2]|0)|0)!=0;A=c[w>>2]|0;if(v){z=23;break;}c[r>>2]=(c[r>>2]|0)+A;c[o>>2]=(c[o>>2]|0)+(c[x>>2]|0);c[t>>2]=(c[t>>2]|0)-(c[x>>2]|0);}if((z|0)==11){c[h>>2]=c[x>>2];y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==13){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==17){c[h>>2]=-1;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==19){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==20){c[h>>2]=-1;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==23){c[h>>2]=A;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==25){c[h>>2]=(c[r>>2]|0)-(c[q>>2]|0);y=c[h>>2]|0;l=g;return y|0;}return 0;}function Vu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[i>>2]|0)!=5){c[f>>2]=-72;k=c[f>>2]|0;l=e;return k|0;}c[j>>2]=Wq(c[h>>2]|0)|0;if((c[j>>2]|0)!=-47205083){c[f>>2]=-10;k=c[f>>2]|0;l=e;return k|0;}else{c[(c[g>>2]|0)+26660>>2]=5;c[f>>2]=c[(c[g>>2]|0)+26660>>2];k=c[f>>2]|0;l=e;return k|0;}return 0;}function Wu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[i>>2]|0)!=(c[(c[g>>2]|0)+26660>>2]|0)){c[f>>2]=-72;k=c[f>>2]|0;l=e;return k|0;}c[j>>2]=yq((c[g>>2]|0)+26664|0,c[h>>2]|0,c[i>>2]|0)|0;if(kv()|0?(c[(c[g>>2]|0)+26664+8>>2]|0)>>>0>25:0){c[f>>2]=-14;k=c[f>>2]|0;l=e;return k|0;}c[f>>2]=c[j>>2];k=c[f>>2]|0;l=e;return k|0;}function Xu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];if((c[n>>2]|0)>>>0>=131072){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}c[p>>2]=Zu(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(mr(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+f;c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=_u(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function Yu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){c[g>>2]=-70;m=c[g>>2]|0;l=f;return m|0;}else{mE(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[g>>2]=c[k>>2];m=c[g>>2]|0;l=f;return m|0;}return 0;}function Zu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;g=l;l=l+80|0;h=g+64|0;i=g+60|0;j=g+56|0;k=g+52|0;m=g+48|0;n=g+44|0;o=g+40|0;p=g+36|0;q=g+32|0;r=g+28|0;s=g+24|0;t=g+20|0;u=g+16|0;v=g+12|0;w=g+8|0;x=g+4|0;y=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[j>>2];if((c[k>>2]|0)>>>0<3){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}switch((d[c[m>>2]>>0]|0)>>6|0){case 0:{c[p>>2]=0;c[q>>2]=(d[c[m>>2]>>0]|0)>>4&3;if((c[k>>2]|0)>>>0<5){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}switch(c[q>>2]|0){case 3:{c[q>>2]=5;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<14)+((d[(c[m>>2]|0)+1>>0]|0)<<6)+((d[(c[m>>2]|0)+2>>0]|0)>>2);c[o>>2]=(((d[(c[m>>2]|0)+2>>0]|0)&3)<<16)+((d[(c[m>>2]|0)+3>>0]|0)<<8)+(d[(c[m>>2]|0)+4>>0]|0);break;}case 2:{c[q>>2]=4;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<10)+((d[(c[m>>2]|0)+1>>0]|0)<<2)+((d[(c[m>>2]|0)+2>>0]|0)>>6);c[o>>2]=(((d[(c[m>>2]|0)+2>>0]|0)&63)<<8)+(d[(c[m>>2]|0)+3>>0]|0);break;}default:{c[q>>2]=3;c[p>>2]=(d[c[m>>2]>>0]|0)&16;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<6)+((d[(c[m>>2]|0)+1>>0]|0)>>2);c[o>>2]=(((d[(c[m>>2]|0)+1>>0]|0)&3)<<8)+(d[(c[m>>2]|0)+2>>0]|0);}}if((c[n>>2]|0)>>>0>131072){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}if(((c[o>>2]|0)+(c[q>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}j=(c[i>>2]|0)+26724|0;f=c[n>>2]|0;e=(c[m>>2]|0)+(c[q>>2]|0)|0;b=c[o>>2]|0;if(c[p>>2]|0)A=Av(j,f,e,b)|0;else A=Bv(j,f,e,b)|0;if(Cv(A)|0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{c[(c[i>>2]|0)+26716>>2]=(c[i>>2]|0)+26724;c[(c[i>>2]|0)+26720>>2]=c[n>>2];n=(c[i>>2]|0)+26724+(c[(c[i>>2]|0)+26720>>2]|0)|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;a[n+4>>0]=0;a[n+5>>0]=0;a[n+6>>0]=0;a[n+7>>0]=0;c[h>>2]=(c[o>>2]|0)+(c[q>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 1:{c[u>>2]=(d[c[m>>2]>>0]|0)>>4&3;if((c[u>>2]|0)!=1){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}if(!(c[(c[i>>2]|0)+26712>>2]|0)){c[h>>2]=-30;z=c[h>>2]|0;l=g;return z|0;}c[u>>2]=3;c[s>>2]=(((d[c[m>>2]>>0]|0)&15)<<6)+((d[(c[m>>2]|0)+1>>0]|0)>>2);c[t>>2]=(((d[(c[m>>2]|0)+1>>0]|0)&3)<<8)+(d[(c[m>>2]|0)+2>>0]|0);if(((c[t>>2]|0)+(c[u>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}c[r>>2]=Dv((c[i>>2]|0)+26724|0,c[s>>2]|0,(c[m>>2]|0)+(c[u>>2]|0)|0,c[t>>2]|0,(c[i>>2]|0)+10252|0)|0;if(Cv(c[r>>2]|0)|0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{c[(c[i>>2]|0)+26716>>2]=(c[i>>2]|0)+26724;c[(c[i>>2]|0)+26720>>2]=c[s>>2];s=(c[i>>2]|0)+26724+(c[(c[i>>2]|0)+26720>>2]|0)|0;a[s>>0]=0;a[s+1>>0]=0;a[s+2>>0]=0;a[s+3>>0]=0;a[s+4>>0]=0;a[s+5>>0]=0;a[s+6>>0]=0;a[s+7>>0]=0;c[h>>2]=(c[t>>2]|0)+(c[u>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 2:{c[w>>2]=(d[c[m>>2]>>0]|0)>>4&3;switch(c[w>>2]|0){case 3:{c[v>>2]=(((d[c[m>>2]>>0]|0)&15)<<16)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(d[(c[m>>2]|0)+2>>0]|0);break;}case 2:{c[v>>2]=(((d[c[m>>2]>>0]|0)&15)<<8)+(d[(c[m>>2]|0)+1>>0]|0);break;}default:{c[w>>2]=1;c[v>>2]=(d[c[m>>2]>>0]|0)&31;}}if(((c[w>>2]|0)+(c[v>>2]|0)+8|0)>>>0<=(c[k>>2]|0)>>>0){c[(c[i>>2]|0)+26716>>2]=(c[m>>2]|0)+(c[w>>2]|0);c[(c[i>>2]|0)+26720>>2]=c[v>>2];c[h>>2]=(c[w>>2]|0)+(c[v>>2]|0);z=c[h>>2]|0;l=g;return z|0;}if(((c[v>>2]|0)+(c[w>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{mE((c[i>>2]|0)+26724|0,(c[m>>2]|0)+(c[w>>2]|0)|0,c[v>>2]|0)|0;c[(c[i>>2]|0)+26716>>2]=(c[i>>2]|0)+26724;c[(c[i>>2]|0)+26720>>2]=c[v>>2];u=(c[i>>2]|0)+26724+(c[(c[i>>2]|0)+26720>>2]|0)|0;a[u>>0]=0;a[u+1>>0]=0;a[u+2>>0]=0;a[u+3>>0]=0;a[u+4>>0]=0;a[u+5>>0]=0;a[u+6>>0]=0;a[u+7>>0]=0;c[h>>2]=(c[w>>2]|0)+(c[v>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 3:{c[y>>2]=(d[c[m>>2]>>0]|0)>>4&3;switch(c[y>>2]|0){case 3:{c[x>>2]=(((d[c[m>>2]>>0]|0)&15)<<16)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(d[(c[m>>2]|0)+2>>0]|0);if((c[k>>2]|0)>>>0<4){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}break;}case 2:{c[x>>2]=(((d[c[m>>2]>>0]|0)&15)<<8)+(d[(c[m>>2]|0)+1>>0]|0);break;}default:{c[y>>2]=1;c[x>>2]=(d[c[m>>2]>>0]|0)&31;}}if((c[x>>2]|0)>>>0>131072){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{oE((c[i>>2]|0)+26724|0,(d[(c[m>>2]|0)+(c[y>>2]|0)>>0]|0)&255|0,(c[x>>2]|0)+8|0)|0;c[(c[i>>2]|0)+26716>>2]=(c[i>>2]|0)+26724;c[(c[i>>2]|0)+26720>>2]=c[x>>2];c[h>>2]=(c[y>>2]|0)+1;z=c[h>>2]|0;l=g;return z|0;}break;}default:{}}return 0;}function _u(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;g=l;l=l+176|0;h=g+164|0;i=g+160|0;j=g+156|0;k=g+152|0;m=g+148|0;n=g+144|0;o=g+140|0;p=g+136|0;q=g+132|0;r=g+128|0;s=g+124|0;t=g+120|0;u=g+116|0;v=g+112|0;w=g+108|0;x=g+104|0;y=g+100|0;z=g+96|0;A=g+92|0;B=g+88|0;C=g+84|0;D=g+80|0;E=g+76|0;F=g+72|0;G=g+60|0;H=g+8|0;I=g+4|0;J=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[k>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[w>>2]=c[(c[j>>2]|0)+26716>>2];c[x>>2]=(c[w>>2]|0)+(c[(c[j>>2]|0)+26720>>2]|0);c[A>>2]=c[j>>2];c[B>>2]=(c[j>>2]|0)+6152;c[C>>2]=(c[j>>2]|0)+4100;c[D>>2]=c[(c[j>>2]|0)+26644>>2];c[E>>2]=c[(c[j>>2]|0)+26648>>2];c[F>>2]=c[(c[j>>2]|0)+26652>>2];c[u>>2]=$u(y,z,v,c[A>>2]|0,c[B>>2]|0,c[C>>2]|0,c[p>>2]|0,c[o>>2]|0,c[(c[j>>2]|0)+26712>>2]|0)|0;j=(mr(c[u>>2]|0)|0)!=0;o=c[u>>2]|0;if(j){c[i>>2]=o;K=c[i>>2]|0;l=g;return K|0;}c[p>>2]=(c[p>>2]|0)+o;if(c[y>>2]|0){c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+8>>2]=1;c[H+44>>2]=c[z>>2];c[H+48>>2]=(c[z>>2]|0)+(c[v>>2]|0);c[H+40>>2]=1;c[u>>2]=av(H,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;if(nr(c[u>>2]|0)|0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}bv(H+16|0,H,c[A>>2]|0);bv(H+24|0,H,c[C>>2]|0);bv(H+32|0,H,c[B>>2]|0);while(1){B=(cv(H)|0)>>>0<=2;L=c[y>>2]|0;if(!(B?(c[y>>2]|0)!=0:0))break;c[y>>2]=L+-1;dv(G,H);B=c[s>>2]|0;C=c[t>>2]|0;A=c[x>>2]|0;u=c[D>>2]|0;p=c[E>>2]|0;q=c[F>>2]|0;c[h>>2]=c[G>>2];c[h+4>>2]=c[G+4>>2];c[h+8>>2]=c[G+8>>2];c[I>>2]=ev(B,C,h,w,A,u,p,q)|0;q=(mr(c[I>>2]|0)|0)!=0;M=c[I>>2]|0;if(q){N=9;break;}c[s>>2]=(c[s>>2]|0)+M;}if((N|0)==9){c[i>>2]=M;K=c[i>>2]|0;l=g;return K|0;}if(L|0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}}c[J>>2]=(c[x>>2]|0)-(c[w>>2]|0);if((c[w>>2]|0)>>>0>(c[x>>2]|0)>>>0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}if(((c[s>>2]|0)+(c[J>>2]|0)|0)>>>0>(c[t>>2]|0)>>>0){c[i>>2]=-70;K=c[i>>2]|0;l=g;return K|0;}else{mE(c[s>>2]|0,c[w>>2]|0,c[J>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[J>>2]|0);c[i>>2]=(c[s>>2]|0)-(c[r>>2]|0);K=c[i>>2]|0;l=g;return K|0;}return 0;}function $u(b,e,f,g,h,i,j,k,m){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;n=l;l=l+352|0;o=n+348|0;p=n+344|0;q=n+340|0;r=n+336|0;s=n+332|0;t=n+328|0;u=n+324|0;v=n+320|0;w=n+316|0;x=n+312|0;y=n+308|0;z=n+304|0;A=n+300|0;B=n+296|0;C=n+292|0;D=n+288|0;E=n+284|0;F=n+280|0;G=n+276|0;H=n+272|0;I=n;J=n+268|0;K=n+264|0;L=n+260|0;M=n+256|0;c[p>>2]=b;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=i;c[v>>2]=j;c[w>>2]=k;c[x>>2]=m;c[y>>2]=c[v>>2];c[z>>2]=c[y>>2];c[A>>2]=(c[y>>2]|0)+(c[w>>2]|0);if((c[w>>2]|0)>>>0<1){c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}w=c[z>>2]|0;c[z>>2]=w+1;c[c[p>>2]>>2]=d[w>>0];if(!(c[c[p>>2]>>2]|0)){c[o>>2]=1;N=c[o>>2]|0;l=n;return N|0;}do{if((c[c[p>>2]>>2]|0)>=128){if((c[z>>2]|0)>>>0<(c[A>>2]|0)>>>0){w=(c[c[p>>2]>>2]|0)-128<<8;v=c[z>>2]|0;c[z>>2]=v+1;c[c[p>>2]>>2]=w+(d[v>>0]|0);break;}c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}}while(0);if((c[z>>2]|0)>>>0>=(c[A>>2]|0)>>>0){c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}c[B>>2]=(d[c[z>>2]>>0]|0)>>6;c[C>>2]=(d[c[z>>2]>>0]|0)>>4&3;c[D>>2]=(d[c[z>>2]>>0]|0)>>2&3;p=c[z>>2]|0;do{if((d[c[z>>2]>>0]|0)&2|0){if((p+3|0)>>>0<=(c[A>>2]|0)>>>0){c[H>>2]=d[(c[z>>2]|0)+2>>0];c[H>>2]=(c[H>>2]|0)+((d[(c[z>>2]|0)+1>>0]|0)<<8);c[z>>2]=(c[z>>2]|0)+3;break;}c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}else{if((p+2|0)>>>0<=(c[A>>2]|0)>>>0){c[H>>2]=d[(c[z>>2]|0)+1>>0];c[H>>2]=(c[H>>2]|0)+(((d[c[z>>2]>>0]|0)&1)<<8);c[z>>2]=(c[z>>2]|0)+2;break;}c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}}while(0);c[c[q>>2]>>2]=c[z>>2];c[z>>2]=(c[z>>2]|0)+(c[H>>2]|0);c[c[r>>2]>>2]=c[H>>2];if((c[z>>2]|0)>>>0>((c[A>>2]|0)+-3|0)>>>0){c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}a:do{switch(c[B>>2]|0){case 1:{c[E>>2]=0;H=c[s>>2]|0;r=c[z>>2]|0;c[z>>2]=r+1;tv(H,a[r>>0]|0)|0;break;}case 0:{c[E>>2]=6;uv(c[s>>2]|0,6)|0;break;}case 2:{if(!(c[x>>2]|0)){c[o>>2]=-20;N=c[o>>2]|0;l=n;return N|0;}break;}default:{c[K>>2]=63;c[J>>2]=vv(I,K,E,c[z>>2]|0,(c[A>>2]|0)-(c[z>>2]|0)|0)|0;if(wv(c[J>>2]|0)|0){c[o>>2]=-1;N=c[o>>2]|0;l=n;return N|0;}if((c[E>>2]|0)>>>0<=10){c[z>>2]=(c[z>>2]|0)+(c[J>>2]|0);xv(c[s>>2]|0,I,c[K>>2]|0,c[E>>2]|0)|0;break a;}c[o>>2]=-20;N=c[o>>2]|0;l=n;return N|0;}}}while(0);b:do{switch(c[C>>2]|0){case 1:{c[F>>2]=0;if((c[z>>2]|0)>>>0<=((c[A>>2]|0)+-2|0)>>>0){E=c[u>>2]|0;K=c[z>>2]|0;c[z>>2]=K+1;tv(E,(d[K>>0]|0)&31)|0;break b;}c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}case 0:{c[F>>2]=5;uv(c[u>>2]|0,5)|0;break;}case 2:{if(!(c[x>>2]|0)){c[o>>2]=-20;N=c[o>>2]|0;l=n;return N|0;}break;}default:{c[L>>2]=31;c[J>>2]=vv(I,L,F,c[z>>2]|0,(c[A>>2]|0)-(c[z>>2]|0)|0)|0;if(wv(c[J>>2]|0)|0){c[o>>2]=-1;N=c[o>>2]|0;l=n;return N|0;}if((c[F>>2]|0)>>>0<=9){c[z>>2]=(c[z>>2]|0)+(c[J>>2]|0);xv(c[u>>2]|0,I,c[L>>2]|0,c[F>>2]|0)|0;break b;}c[o>>2]=-20;N=c[o>>2]|0;l=n;return N|0;}}}while(0);c:do{switch(c[D>>2]|0){case 1:{c[G>>2]=0;if((c[z>>2]|0)>>>0<=((c[A>>2]|0)+-2|0)>>>0){F=c[t>>2]|0;L=c[z>>2]|0;c[z>>2]=L+1;tv(F,a[L>>0]|0)|0;break c;}c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}case 0:{c[G>>2]=7;uv(c[t>>2]|0,7)|0;break;}case 2:{if(!(c[x>>2]|0)){c[o>>2]=-20;N=c[o>>2]|0;l=n;return N|0;}break;}default:{c[M>>2]=127;c[J>>2]=vv(I,M,G,c[z>>2]|0,(c[A>>2]|0)-(c[z>>2]|0)|0)|0;if(wv(c[J>>2]|0)|0){c[o>>2]=-1;N=c[o>>2]|0;l=n;return N|0;}if((c[G>>2]|0)>>>0<=10){c[z>>2]=(c[z>>2]|0)+(c[J>>2]|0);xv(c[t>>2]|0,I,c[M>>2]|0,c[G>>2]|0)|0;break c;}c[o>>2]=-20;N=c[o>>2]|0;l=n;return N|0;}}}while(0);c[o>>2]=(c[z>>2]|0)-(c[y>>2]|0);N=c[o>>2]|0;l=n;return N|0;}function av(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;if((c[j>>2]|0)>>>0<1){e=c[h>>2]|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[g>>2]=-72;n=c[g>>2]|0;l=f;return n|0;}e=(c[j>>2]|0)>>>0>=4;c[(c[h>>2]|0)+12>>2]=c[i>>2];do{if(e){c[(c[h>>2]|0)+8>>2]=(c[i>>2]|0)+(c[j>>2]|0)+-4;b=ov(c[(c[h>>2]|0)+8>>2]|0)|0;c[c[h>>2]>>2]=b;c[k>>2]=d[(c[i>>2]|0)+((c[j>>2]|0)-1)>>0];if(c[k>>2]|0){b=8-(sv(c[k>>2]|0)|0)|0;c[(c[h>>2]|0)+4>>2]=b;break;}c[g>>2]=-1;n=c[g>>2]|0;l=f;return n|0;}else{c[(c[h>>2]|0)+8>>2]=c[(c[h>>2]|0)+12>>2];c[c[h>>2]>>2]=d[c[(c[h>>2]|0)+12>>2]>>0];switch(c[j>>2]|0){case 7:{b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+6>>0]|0)<<16);o=9;break;}case 6:{o=9;break;}case 5:{o=10;break;}case 4:{o=11;break;}case 3:{o=12;break;}case 2:{o=13;break;}default:{}}if((o|0)==9){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+5>>0]|0)<<8);o=10;}if((o|0)==10){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+4>>0]|0)<<0);o=11;}if((o|0)==11){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+3>>0]|0)<<24);o=12;}if((o|0)==12){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+2>>0]|0)<<16);o=13;}if((o|0)==13){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+1>>0]|0)<<8);}c[m>>2]=d[(c[i>>2]|0)+((c[j>>2]|0)-1)>>0];if(c[m>>2]|0){b=8-(sv(c[m>>2]|0)|0)|0;c[(c[h>>2]|0)+4>>2]=b;b=(c[h>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(4-(c[j>>2]|0)<<3);break;}c[g>>2]=-1;n=c[g>>2]|0;l=f;return n|0;}}while(0);c[g>>2]=c[j>>2];n=c[g>>2]|0;l=f;return n|0;}function bv(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=c[i>>2];c[k>>2]=c[j>>2];j=jv(c[h>>2]|0,e[c[k>>2]>>1]|0)|0;c[c[g>>2]>>2]=j;cv(c[h>>2]|0)|0;c[(c[g>>2]|0)+4>>2]=(c[i>>2]|0)+4;l=f;return;}function cv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=((c[(c[e>>2]|0)+12>>2]|0)+4|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=ov(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=ov(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function dv(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;e=l;l=l+48|0;f=e+44|0;g=e+40|0;h=e+36|0;i=e+32|0;j=e+28|0;k=e+24|0;m=e+20|0;n=e+16|0;o=e+12|0;p=e+8|0;q=e+4|0;r=e;c[f>>2]=a;c[g>>2]=b;c[m>>2]=c[(c[g>>2]|0)+44>>2];c[n>>2]=c[(c[g>>2]|0)+48>>2];c[h>>2]=(iv((c[g>>2]|0)+16|0)|0)&255;if(c[h>>2]|0)s=c[(c[f>>2]|0)+8>>2]|0;else s=c[(c[g>>2]|0)+40>>2]|0;c[i>>2]=s;if((c[h>>2]|0)==63){s=c[m>>2]|0;c[m>>2]=s+1;c[o>>2]=d[s>>0];do{if((c[o>>2]|0)>>>0>=255){c[h>>2]=(Wq(c[m>>2]|0)|0)&16777215;s=c[h>>2]|0;if(c[h>>2]&1|0){c[h>>2]=s>>>1;c[m>>2]=(c[m>>2]|0)+3;break;}else{c[h>>2]=(s&65535)>>1;c[m>>2]=(c[m>>2]|0)+2;break;}}else c[h>>2]=(c[h>>2]|0)+(c[o>>2]|0);}while(0);if((c[m>>2]|0)>>>0>(c[n>>2]|0)>>>0)c[h>>2]=318;if((c[m>>2]|0)>>>0>=(c[n>>2]|0)>>>0)c[m>>2]=(c[n>>2]|0)+-1;}c[p>>2]=(iv((c[g>>2]|0)+24|0)|0)&255;o=(c[p>>2]|0)-1|0;c[q>>2]=o;c[q>>2]=(c[p>>2]|0)==0?0:o;o=c[6880+(c[p>>2]<<2)>>2]|0;c[j>>2]=o+(jv(c[g>>2]|0,c[q>>2]|0)|0);if(kv()|0)cv(c[g>>2]|0)|0;if(!(c[p>>2]|0))c[j>>2]=c[i>>2];if(c[p>>2]|((c[h>>2]|0)!=0^1)&1|0)c[(c[g>>2]|0)+40>>2]=c[(c[f>>2]|0)+8>>2];lv((c[g>>2]|0)+24|0,c[g>>2]|0)|0;lv((c[g>>2]|0)+16|0,c[g>>2]|0)|0;if(kv()|0)cv(c[g>>2]|0)|0;c[k>>2]=(lv((c[g>>2]|0)+32|0,c[g>>2]|0)|0)&255;if((c[k>>2]|0)!=127){t=c[k>>2]|0;u=t+4|0;c[k>>2]=u;v=c[h>>2]|0;w=c[f>>2]|0;c[w>>2]=v;x=c[j>>2]|0;y=c[f>>2]|0;z=y+8|0;c[z>>2]=x;A=c[k>>2]|0;B=c[f>>2]|0;C=B+4|0;c[C>>2]=A;D=c[m>>2]|0;E=c[g>>2]|0;F=E+44|0;c[F>>2]=D;l=e;return;}p=c[m>>2]|0;c[m>>2]=p+1;c[r>>2]=d[p>>0];do{if((c[r>>2]|0)>>>0>=255){c[k>>2]=(Wq(c[m>>2]|0)|0)&16777215;p=c[k>>2]|0;if(c[k>>2]&1|0){c[k>>2]=p>>>1;c[m>>2]=(c[m>>2]|0)+3;break;}else{c[k>>2]=(p&65535)>>1;c[m>>2]=(c[m>>2]|0)+2;break;}}else c[k>>2]=(c[k>>2]|0)+(c[r>>2]|0);}while(0);if((c[m>>2]|0)>>>0>(c[n>>2]|0)>>>0)c[k>>2]=382;if((c[m>>2]|0)>>>0<(c[n>>2]|0)>>>0){t=c[k>>2]|0;u=t+4|0;c[k>>2]=u;v=c[h>>2]|0;w=c[f>>2]|0;c[w>>2]=v;x=c[j>>2]|0;y=c[f>>2]|0;z=y+8|0;c[z>>2]=x;A=c[k>>2]|0;B=c[f>>2]|0;C=B+4|0;c[C>>2]=A;D=c[m>>2]|0;E=c[g>>2]|0;F=E+44|0;c[F>>2]=D;l=e;return;}c[m>>2]=(c[n>>2]|0)+-1;t=c[k>>2]|0;u=t+4|0;c[k>>2]=u;v=c[h>>2]|0;w=c[f>>2]|0;c[w>>2]=v;x=c[j>>2]|0;y=c[f>>2]|0;z=y+8|0;c[z>>2]=x;A=c[k>>2]|0;B=c[f>>2]|0;C=B+4|0;c[C>>2]=A;D=c[m>>2]|0;E=c[g>>2]|0;F=E+44|0;c[F>>2]=D;l=e;return;}function ev(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;k=l;l=l+64|0;m=k+60|0;n=k+56|0;o=k+52|0;p=k+48|0;q=k+44|0;r=k+40|0;s=k+36|0;t=k+32|0;u=k+28|0;v=k+24|0;w=k+20|0;x=k+16|0;y=k+12|0;z=k+8|0;A=k+4|0;B=k;c[n>>2]=b;c[o>>2]=d;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=(c[n>>2]|0)+(c[e>>2]|0);c[v>>2]=(c[e>>2]|0)+(c[e+4>>2]|0);c[w>>2]=(c[n>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[o>>2]|0)+-8;c[y>>2]=(c[c[p>>2]>>2]|0)+(c[e>>2]|0);c[z>>2]=(c[u>>2]|0)+(0-(c[e+8>>2]|0));if((c[u>>2]|0)>>>0>(c[x>>2]|0)>>>0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[w>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}fv(c[n>>2]|0,c[c[p>>2]>>2]|0,c[e>>2]|0);c[n>>2]=c[u>>2];c[c[p>>2]>>2]=c[y>>2];do{if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[r>>2]|0)|0)>>>0){if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[s>>2]|0)|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}c[z>>2]=(c[t>>2]|0)+(0-((c[r>>2]|0)-(c[z>>2]|0)));if(((c[z>>2]|0)+(c[e+4>>2]|0)|0)>>>0<=(c[t>>2]|0)>>>0){nE(c[u>>2]|0,c[z>>2]|0,c[e+4>>2]|0)|0;c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}c[A>>2]=(c[t>>2]|0)-(c[z>>2]|0);nE(c[u>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;c[n>>2]=(c[u>>2]|0)+(c[A>>2]|0);y=e+4|0;c[y>>2]=(c[y>>2]|0)-(c[A>>2]|0);c[z>>2]=c[r>>2];if((c[n>>2]|0)>>>0<=(c[x>>2]|0)>>>0?(c[e+4>>2]|0)>>>0>=4:0)break;while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;y=c[z>>2]|0;c[z>>2]=y+1;p=a[y>>0]|0;y=c[n>>2]|0;c[n>>2]=y+1;a[y>>0]=p;}c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}}while(0);if((c[e+8>>2]|0)>>>0<8){c[B>>2]=c[6816+(c[e+8>>2]<<2)>>2];a[c[n>>2]>>0]=a[c[z>>2]>>0]|0;a[(c[n>>2]|0)+1>>0]=a[(c[z>>2]|0)+1>>0]|0;a[(c[n>>2]|0)+2>>0]=a[(c[z>>2]|0)+2>>0]|0;a[(c[n>>2]|0)+3>>0]=a[(c[z>>2]|0)+3>>0]|0;c[z>>2]=(c[z>>2]|0)+(c[6848+(c[e+8>>2]<<2)>>2]|0);gv((c[n>>2]|0)+4|0,c[z>>2]|0);c[z>>2]=(c[z>>2]|0)+(0-(c[B>>2]|0));}else hv(c[n>>2]|0,c[z>>2]|0);c[n>>2]=(c[n>>2]|0)+8;c[z>>2]=(c[z>>2]|0)+8;B=c[n>>2]|0;a:do{if((c[w>>2]|0)>>>0>((c[o>>2]|0)+-12|0)>>>0){if(B>>>0<(c[x>>2]|0)>>>0){fv(c[n>>2]|0,c[z>>2]|0,(c[x>>2]|0)-(c[n>>2]|0)|0);c[z>>2]=(c[z>>2]|0)+((c[x>>2]|0)-(c[n>>2]|0));c[n>>2]=c[x>>2];}while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;r=c[z>>2]|0;c[z>>2]=r+1;A=a[r>>0]|0;r=c[n>>2]|0;c[n>>2]=r+1;a[r>>0]=A;}}else fv(B,c[z>>2]|0,(c[e+4>>2]|0)-8|0);}while(0);c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}function fv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{hv(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function gv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;l=e;return;}function hv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function iv(d){d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=(c[(c[f>>2]|0)+4>>2]|0)+(c[c[f>>2]>>2]<<2)|0;b[g>>1]=b[d>>1]|0;b[g+2>>1]=b[d+2>>1]|0;l=e;return a[g+2>>0]|0;}function jv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=mv(c[e>>2]|0,c[f>>2]|0)|0;nv(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function kv(){return 1;}function lv(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=jv(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function mv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>1>>>(31-(c[f>>2]|0)&31)|0;}function nv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function ov(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(kv()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=Wq(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=pv(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function pv(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(Xq()|0)!=0;f=qv(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=rv(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function qv(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function rv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function sv(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function tv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+20|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=d;a[h>>0]=e;c[i>>2]=c[g>>2];c[j>>2]=c[i>>2];c[k>>2]=(c[g>>2]|0)+4;c[m>>2]=c[k>>2];b[c[j>>2]>>1]=0;b[(c[j>>2]|0)+2>>1]=0;b[c[m>>2]>>1]=0;a[(c[m>>2]|0)+2>>0]=a[h>>0]|0;a[(c[m>>2]|0)+3>>0]=0;l=f;return 0;}function uv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+48|0;g=f+40|0;h=f+36|0;i=f+32|0;j=f+28|0;k=f+24|0;m=f+20|0;n=f+16|0;o=f+12|0;p=f+8|0;q=f+4|0;r=f;c[h>>2]=d;c[i>>2]=e;c[j>>2]=c[h>>2];c[k>>2]=c[j>>2];c[m>>2]=(c[h>>2]|0)+4;c[n>>2]=c[m>>2];c[o>>2]=1<<c[i>>2];c[p>>2]=(c[o>>2]|0)-1;c[q>>2]=c[p>>2];if((c[i>>2]|0)>>>0<1){c[g>>2]=-1;s=c[g>>2]|0;l=f;return s|0;}b[c[k>>2]>>1]=c[i>>2];b[(c[k>>2]|0)+2>>1]=1;c[r>>2]=0;while(1){if((c[r>>2]|0)>>>0>(c[q>>2]|0)>>>0)break;b[(c[n>>2]|0)+(c[r>>2]<<2)>>1]=0;a[(c[n>>2]|0)+(c[r>>2]<<2)+2>>0]=c[r>>2];a[(c[n>>2]|0)+(c[r>>2]<<2)+3>>0]=c[i>>2];c[r>>2]=(c[r>>2]|0)+1;}c[g>>2]=0;s=c[g>>2]|0;l=f;return s|0;}function vv(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+20|0;v=h+16|0;w=h+12|0;x=h+8|0;y=h+4|0;z=h;A=h+70|0;B=h+68|0;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[p>>2];c[x>>2]=0;c[y>>2]=0;if((c[o>>2]|0)>>>0<4){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=Wq(c[r>>2]|0)|0;c[s>>2]=(c[v>>2]&15)+5;if((c[s>>2]|0)>15){c[i>>2]=-44;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=(c[v>>2]|0)>>>4;c[w>>2]=4;c[c[m>>2]>>2]=c[s>>2];c[t>>2]=(1<<c[s>>2])+1;c[u>>2]=1<<c[s>>2];c[s>>2]=(c[s>>2]|0)+1;a:while(1){if((c[t>>2]|0)<=1)break;if((c[x>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0)break;do{if(c[y>>2]|0){c[z>>2]=c[x>>2];while(1){if((c[v>>2]&65535|0)!=65535)break;c[z>>2]=(c[z>>2]|0)+24;if((c[r>>2]|0)>>>0<((c[q>>2]|0)+-5|0)>>>0){c[r>>2]=(c[r>>2]|0)+2;m=Wq(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]|0);}else{c[v>>2]=(c[v>>2]|0)>>>16;c[w>>2]=(c[w>>2]|0)+16;}}while(1){if((c[v>>2]&3|0)!=3)break;c[z>>2]=(c[z>>2]|0)+3;c[v>>2]=(c[v>>2]|0)>>>2;c[w>>2]=(c[w>>2]|0)+2;}c[z>>2]=(c[z>>2]|0)+(c[v>>2]&3);c[w>>2]=(c[w>>2]|0)+2;if((c[z>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0){D=19;break a;}while(1){if((c[x>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break;m=c[j>>2]|0;n=c[x>>2]|0;c[x>>2]=n+1;b[m+(n<<1)>>1]=0;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[v>>2]=(c[v>>2]|0)>>>2;break;}c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;n=Wq(c[r>>2]|0)|0;c[v>>2]=n>>>(c[w>>2]|0);}}while(0);b[A>>1]=(c[u>>2]<<1)-1-(c[t>>2]|0);n=c[v>>2]|0;m=c[u>>2]|0;if((c[v>>2]&(c[u>>2]|0)-1)>>>0<(b[A>>1]|0)>>>0){b[B>>1]=n&m-1;c[w>>2]=(c[w>>2]|0)+((c[s>>2]|0)-1);}else{b[B>>1]=n&(m<<1)-1;if((b[B>>1]|0)>=(c[u>>2]|0))b[B>>1]=(b[B>>1]|0)-(b[A>>1]|0);c[w>>2]=(c[w>>2]|0)+(c[s>>2]|0);}b[B>>1]=(b[B>>1]|0)+-1<<16>>16;m=(zv(b[B>>1]|0)|0)<<16>>16;c[t>>2]=(c[t>>2]|0)-m;m=b[B>>1]|0;n=c[j>>2]|0;g=c[x>>2]|0;c[x>>2]=g+1;b[n+(g<<1)>>1]=m;c[y>>2]=((b[B>>1]|0)!=0^1)&1;while(1){if((c[t>>2]|0)>=(c[u>>2]|0))break;c[s>>2]=(c[s>>2]|0)+-1;c[u>>2]=c[u>>2]>>1;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[w>>2]=(c[w>>2]|0)-((c[q>>2]|0)+-4-(c[r>>2]|0)<<3);c[r>>2]=(c[q>>2]|0)+-4;}else{c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;}m=Wq(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]&31);}if((D|0)==19){c[i>>2]=-48;C=c[i>>2]|0;l=h;return C|0;}if((c[t>>2]|0)!=1){c[i>>2]=-1;C=c[i>>2]|0;l=h;return C|0;}c[c[k>>2]>>2]=(c[x>>2]|0)-1;c[r>>2]=(c[r>>2]|0)+((c[w>>2]|0)+7>>3);if(((c[r>>2]|0)-(c[p>>2]|0)|0)>>>0>(c[o>>2]|0)>>>0){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}else{c[i>>2]=(c[r>>2]|0)-(c[p>>2]|0);C=c[i>>2]|0;l=h;return C|0;}return 0;}function wv(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=nr(c[d>>2]|0)|0;l=b;return a|0;}function xv(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;j=l;l=l+592|0;k=j+572|0;m=j+568|0;n=j+564|0;o=j+560|0;p=j+556|0;q=j+580|0;r=j+552|0;s=j+548|0;t=j+544|0;u=j+540|0;v=j+536|0;w=j;x=j+532|0;y=j+528|0;z=j+578|0;A=j+524|0;B=j+520|0;C=j+516|0;D=j+512|0;E=j+584|0;F=j+576|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=i;c[r>>2]=(c[m>>2]|0)+4;c[s>>2]=c[r>>2];c[t>>2]=1<<c[p>>2];c[u>>2]=(c[t>>2]|0)-1;c[v>>2]=yv(c[t>>2]|0)|0;c[x>>2]=0;c[y>>2]=(c[t>>2]|0)-1;b[z>>1]=1<<(c[p>>2]|0)-1;c[A>>2]=1;if((c[o>>2]|0)>>>0>255){c[k>>2]=-46;G=c[k>>2]|0;l=j;return G|0;}if((c[p>>2]|0)>>>0>12){c[k>>2]=-44;G=c[k>>2]|0;l=j;return G|0;}b[q>>1]=c[p>>2];c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;if((b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0)==-1){r=c[B>>2]&255;i=c[s>>2]|0;h=c[y>>2]|0;c[y>>2]=h+-1;a[i+(h<<2)+2>>0]=r;b[w+(c[B>>2]<<1)>>1]=1;}else{if((b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0)>=(b[z>>1]|0))c[A>>2]=0;b[w+(c[B>>2]<<1)>>1]=b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0;}c[B>>2]=(c[B>>2]|0)+1;}c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;c[C>>2]=0;while(1){H=c[B>>2]|0;if((c[C>>2]|0)>=(b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0))break;a[(c[s>>2]|0)+(c[x>>2]<<2)+2>>0]=H;c[x>>2]=(c[x>>2]|0)+(c[v>>2]|0)&c[u>>2];while(1){if((c[x>>2]|0)>>>0<=(c[y>>2]|0)>>>0)break;c[x>>2]=(c[x>>2]|0)+(c[v>>2]|0)&c[u>>2];}c[C>>2]=(c[C>>2]|0)+1;}c[B>>2]=H+1;}if(c[x>>2]|0){c[k>>2]=-1;G=c[k>>2]|0;l=j;return G|0;}c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;a[E>>0]=a[(c[s>>2]|0)+(c[D>>2]<<2)+2>>0]|0;x=w+(d[E>>0]<<1)|0;H=b[x>>1]|0;b[x>>1]=H+1<<16>>16;b[F>>1]=H;H=c[p>>2]|0;x=H-(sv(e[F>>1]|0)|0)&255;a[(c[s>>2]|0)+(c[D>>2]<<2)+3>>0]=x;b[(c[s>>2]|0)+(c[D>>2]<<2)>>1]=(e[F>>1]<<d[(c[s>>2]|0)+(c[D>>2]<<2)+3>>0])-(c[t>>2]|0);c[D>>2]=(c[D>>2]|0)+1;}b[q+2>>1]=c[A>>2];A=c[m>>2]|0;b[A>>1]=b[q>>1]|0;b[A+2>>1]=b[q+2>>1]|0;c[k>>2]=0;G=c[k>>2]|0;l=j;return G|0;}function yv(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return((c[d>>2]|0)>>>1)+((c[d>>2]|0)>>>3)+3|0;}function zv(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=a;a=b[d>>1]|0;l=c;return((b[d>>1]|0)<0?0-a|0:a)&65535|0;}function Av(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+8224|0;h=g+8220|0;i=g+8216|0;j=g+8212|0;k=g+8208|0;m=g+8204|0;n=g;o=g+8200|0;p=g+8196|0;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;oE(n|0,0,8194)|0;b[n>>1]=12;c[o>>2]=c[k>>2];c[p>>2]=_v(n,c[k>>2]|0,c[m>>2]|0)|0;k=(Cv(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(k){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[m>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);c[h>>2]=cw(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0,c[m>>2]|0,n)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function Bv(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=l;l=l+48|0;h=g+44|0;i=g+40|0;j=g+36|0;k=g+32|0;m=g+28|0;n=g+24|0;o=g+20|0;p=g+8|0;q=g+4|0;r=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;c[o>>2]=(c[j>>2]|0)>>>8;c[q>>2]=0;if(!(c[j>>2]|0)){c[h>>2]=-70;s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)>>>0>=(c[j>>2]|0)>>>0){c[h>>2]=-20;s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)==1){oE(c[i>>2]|0,(d[c[k>>2]>>0]|0)&255|0,c[j>>2]|0)|0;c[h>>2]=c[j>>2];s=c[h>>2]|0;l=g;return s|0;}c[n>>2]=(c[m>>2]<<4>>>0)/((c[j>>2]|0)>>>0)|0;c[r>>2]=0;while(1){if((c[r>>2]|0)>=3)break;f=(c[7008+((c[n>>2]|0)*24|0)+(c[r>>2]<<3)>>2]|0)+(N(c[7008+((c[n>>2]|0)*24|0)+(c[r>>2]<<3)+4>>2]|0,c[o>>2]|0)|0)|0;c[p+(c[r>>2]<<2)>>2]=f;c[r>>2]=(c[r>>2]|0)+1;}r=p+4|0;c[r>>2]=(c[r>>2]|0)+((c[p+4>>2]|0)>>>4);r=p+8|0;c[r>>2]=(c[r>>2]|0)+((c[p+8>>2]|0)>>>3);if((c[p+4>>2]|0)>>>0<(c[p>>2]|0)>>>0)c[q>>2]=1;c[h>>2]=sc[c[11976+(c[q>>2]<<2)>>2]&15](c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;s=c[h>>2]|0;l=g;return s|0;}function Cv(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=nr(c[d>>2]|0)|0;l=b;return a|0;}function Dv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;g=l;l=l+80|0;h=g+64|0;i=g+60|0;j=g+56|0;k=g+52|0;m=g+48|0;n=g+44|0;o=g+40|0;p=g+36|0;q=g+32|0;r=g+28|0;s=g+24|0;t=g+20|0;u=g+16|0;v=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[k>>2];c[p>>2]=c[i>>2];c[q>>2]=(c[p>>2]|0)+(c[j>>2]|0);c[r>>2]=c[c[n>>2]>>2];c[s>>2]=c[n>>2];c[t>>2]=(c[s>>2]|0)+4;c[u>>2]=av(v,c[o>>2]|0,c[m>>2]|0)|0;if(Cv(c[u>>2]|0)|0){c[h>>2]=c[u>>2];w=c[h>>2]|0;l=g;return w|0;}Ev(c[p>>2]|0,v,c[q>>2]|0,c[t>>2]|0,c[r>>2]|0)|0;if(Fv(v)|0){c[h>>2]=c[j>>2];w=c[h>>2]|0;l=g;return w|0;}else{c[h>>2]=-20;w=c[h>>2]|0;l=g;return w|0;}return 0;}function Ev(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[h>>2];while(1){if(cv(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>=((c[j>>2]|0)+-7|0)>>>0)break;if(Gv()|0){f=Hv(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}Gv()|0;f=Hv(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;if(Gv()|0){f=Hv(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}f=Hv(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){if(cv(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=Hv(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){o=c[h>>2]|0;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=Hv(o,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}if(o>>>0>=(c[j>>2]|0)>>>0){p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}j=Iv(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+j;p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}function Fv(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;c[d>>2]=a;if((c[(c[d>>2]|0)+8>>2]|0)!=(c[(c[d>>2]|0)+12>>2]|0)){e=0;f=e&1;l=b;return f|0;}e=(c[(c[d>>2]|0)+4>>2]|0)==32;f=e&1;l=b;return f|0;}function Gv(){return 0;}function Hv(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=Jv(c[j>>2]|0,c[m>>2]|0)|0;m=c[i>>2]|0;i=(c[k>>2]|0)+(c[n>>2]<<2)|0;a[m>>0]=a[i>>0]|0;a[m+1>>0]=a[i+1>>0]|0;nv(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0;}function Iv(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=Jv(c[j>>2]|0,c[m>>2]|0)|0;a[c[i>>2]>>0]=a[(c[k>>2]|0)+(c[n>>2]<<2)>>0]|0;i=c[j>>2]|0;if((d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0)==1){nv(i,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return 1;}if((c[i+4>>2]|0)>>>0>=32){l=h;return 1;}nv(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);if((c[(c[j>>2]|0)+4>>2]|0)>>>0<=32){l=h;return 1;}c[(c[j>>2]|0)+4>>2]=32;l=h;return 1;}function Jv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function Kv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+8224|0;h=g+8220|0;i=g+8216|0;j=g+8212|0;k=g+8208|0;m=g+8204|0;n=g;o=g+8200|0;p=g+8196|0;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;oE(n|0,0,8194)|0;b[n>>1]=12;c[o>>2]=c[k>>2];c[p>>2]=_v(n,c[k>>2]|0,c[m>>2]|0)|0;k=(Cv(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(k){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[m>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);c[h>>2]=$v(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0,c[m>>2]|0,n)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function Lv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+16416|0;g=f+16412|0;h=f+16408|0;i=f+16404|0;j=f+16400|0;k=f+16396|0;m=f;n=f+16392|0;o=f+16388|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;oE(m|0,0,16388)|0;c[m>>2]=12;c[n>>2]=c[j>>2];c[o>>2]=Mv(m,c[j>>2]|0,c[k>>2]|0)|0;j=(Cv(c[o>>2]|0)|0)!=0;e=c[o>>2]|0;if(j){c[g>>2]=e;p=c[g>>2]|0;l=f;return p|0;}if(e>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;p=c[g>>2]|0;l=f;return p|0;}else{c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[o>>2]|0);c[g>>2]=Nv(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,m)|0;p=c[g>>2]|0;l=f;return p|0;}return 0;}function Mv(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;g=l;l=l+2128|0;h=g+2120|0;i=g+2116|0;j=g+2112|0;k=g+2108|0;m=g+1760|0;n=g+1248|0;o=g+1168|0;p=g+1088|0;q=g+2104|0;r=g;s=g+2100|0;t=g+2096|0;u=g+2092|0;v=g+2088|0;w=g+2084|0;x=g+2080|0;y=g+2076|0;z=g+2072|0;A=g+2068|0;B=g+2064|0;C=g+2060|0;D=g+2056|0;E=g+2052|0;F=g+2048|0;G=g+2044|0;H=g+2040|0;I=g+2036|0;J=g+2032|0;K=g+2028|0;L=g+2024|0;M=g+2020|0;N=g+2016|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;f=o;e=f+68|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));f=p;e=f+72|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));c[q>>2]=p+4;c[w>>2]=c[c[i>>2]>>2];c[y>>2]=c[i>>2];c[z>>2]=(c[y>>2]|0)+4;if((c[w>>2]|0)>>>0>16){c[h>>2]=-44;O=c[h>>2]|0;l=g;return O|0;}c[x>>2]=Qv(m,256,o,v,s,c[j>>2]|0,c[k>>2]|0)|0;if(Cv(c[x>>2]|0)|0){c[h>>2]=c[x>>2];O=c[h>>2]|0;l=g;return O|0;}if((c[s>>2]|0)>>>0>(c[w>>2]|0)>>>0){c[h>>2]=-44;O=c[h>>2]|0;l=g;return O|0;}c[t>>2]=c[s>>2];while(1){if(c[o+(c[t>>2]<<2)>>2]|0)break;c[t>>2]=(c[t>>2]|0)+-1;}c[B>>2]=0;c[A>>2]=1;while(1){P=c[B>>2]|0;if((c[A>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[C>>2]=P;c[B>>2]=(c[B>>2]|0)+(c[o+(c[A>>2]<<2)>>2]|0);c[(c[q>>2]|0)+(c[A>>2]<<2)>>2]=c[C>>2];c[A>>2]=(c[A>>2]|0)+1;}c[c[q>>2]>>2]=P;c[u>>2]=c[B>>2];c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;c[E>>2]=d[m+(c[D>>2]|0)>>0];B=(c[q>>2]|0)+(c[E>>2]<<2)|0;P=c[B>>2]|0;c[B>>2]=P+1;c[F>>2]=P;a[n+(c[F>>2]<<1)>>0]=c[D>>2];a[n+(c[F>>2]<<1)+1>>0]=c[E>>2];c[D>>2]=(c[D>>2]|0)+1;}c[c[q>>2]>>2]=0;c[G>>2]=(c[s>>2]|0)+1-(c[t>>2]|0);c[H>>2]=0;c[K>>2]=(c[w>>2]|0)-(c[s>>2]|0)-1;c[L>>2]=r;c[I>>2]=1;while(1){if((c[I>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[M>>2]=c[H>>2];c[H>>2]=(c[H>>2]|0)+(c[o+(c[I>>2]<<2)>>2]<<(c[I>>2]|0)+(c[K>>2]|0));c[(c[L>>2]|0)+(c[I>>2]<<2)>>2]=c[M>>2];c[I>>2]=(c[I>>2]|0)+1;}c[J>>2]=c[G>>2];while(1){if((c[J>>2]|0)>>>0>((c[w>>2]|0)-(c[G>>2]|0)|0)>>>0)break;c[N>>2]=r+((c[J>>2]|0)*68|0);c[I>>2]=1;while(1){if((c[I>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[(c[N>>2]|0)+(c[I>>2]<<2)>>2]=(c[(c[L>>2]|0)+(c[I>>2]<<2)>>2]|0)>>>(c[J>>2]|0);c[I>>2]=(c[I>>2]|0)+1;}c[J>>2]=(c[J>>2]|0)+1;}Rv(c[z>>2]|0,c[w>>2]|0,n,c[u>>2]|0,p,r,c[t>>2]|0,(c[s>>2]|0)+1|0);c[h>>2]=c[x>>2];O=c[h>>2]|0;l=g;return O|0;}function Nv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+192|0;h=g+184|0;i=g+180|0;j=g+176|0;k=g+172|0;m=g+168|0;n=g+164|0;o=g+160|0;p=g+156|0;q=g+152|0;r=g+148|0;s=g+144|0;t=g+140|0;u=g+136|0;v=g+120|0;w=g+104|0;x=g+88|0;y=g+72|0;z=g+64|0;A=g+60|0;B=g+56|0;C=g+52|0;D=g+48|0;E=g+44|0;F=g+40|0;G=g+36|0;H=g+32|0;I=g+28|0;J=g+24|0;K=g+20|0;L=g+16|0;M=g+12|0;N=g+8|0;O=g+4|0;P=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[m>>2]|0)>>>0<10){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}c[o>>2]=c[k>>2];c[p>>2]=c[i>>2];c[q>>2]=(c[p>>2]|0)+(c[j>>2]|0);c[r>>2]=c[n>>2];c[s>>2]=(c[r>>2]|0)+4;c[t>>2]=c[c[n>>2]>>2];c[z>>2]=(Ov(c[o>>2]|0)|0)&65535;c[A>>2]=(Ov((c[o>>2]|0)+2|0)|0)&65535;c[B>>2]=(Ov((c[o>>2]|0)+4|0)|0)&65535;c[D>>2]=(c[o>>2]|0)+6;c[E>>2]=(c[D>>2]|0)+(c[z>>2]|0);c[F>>2]=(c[E>>2]|0)+(c[A>>2]|0);c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(((c[j>>2]|0)+3|0)>>>0)/4|0;c[I>>2]=(c[p>>2]|0)+(c[H>>2]|0);c[J>>2]=(c[I>>2]|0)+(c[H>>2]|0);c[K>>2]=(c[J>>2]|0)+(c[H>>2]|0);c[L>>2]=c[p>>2];c[M>>2]=c[I>>2];c[N>>2]=c[J>>2];c[O>>2]=c[K>>2];c[C>>2]=(c[m>>2]|0)-((c[z>>2]|0)+(c[A>>2]|0)+(c[B>>2]|0)+6);if((c[C>>2]|0)>>>0>(c[m>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=av(v,c[D>>2]|0,c[z>>2]|0)|0;if(Cv(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=av(w,c[E>>2]|0,c[A>>2]|0)|0;if(Cv(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=av(x,c[F>>2]|0,c[B>>2]|0)|0;if(Cv(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=av(y,c[G>>2]|0,c[C>>2]|0)|0;if(Cv(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}u=cv(v)|0;C=u|(cv(w)|0);u=C|(cv(x)|0);c[P>>2]=u|(cv(y)|0);while(1){if(c[P>>2]|0)break;if((c[O>>2]|0)>>>0>=((c[q>>2]|0)+-7|0)>>>0)break;if(Gv()|0){u=Hv(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;}if(Gv()|0){u=Hv(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;}if(Gv()|0){u=Hv(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;}if(Gv()|0){u=Hv(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;}Gv()|0;u=Hv(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;Gv()|0;u=Hv(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;Gv()|0;u=Hv(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;Gv()|0;u=Hv(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;if(Gv()|0){u=Hv(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;}if(Gv()|0){u=Hv(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;}if(Gv()|0){u=Hv(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;}if(Gv()|0){u=Hv(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;}u=Hv(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;u=Hv(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;u=Hv(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;u=Hv(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;u=cv(v)|0;C=u|(cv(w)|0);u=C|(cv(x)|0);c[P>>2]=u|(cv(y)|0);}if((c[L>>2]|0)>>>0>(c[I>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}if((c[M>>2]|0)>>>0>(c[J>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}Ev(c[L>>2]|0,v,c[I>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;Ev(c[M>>2]|0,w,c[J>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;Ev(c[N>>2]|0,x,c[K>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;Ev(c[O>>2]|0,y,c[q>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;t=Fv(v)|0;v=t&(Fv(w)|0);w=v&(Fv(x)|0);c[P>>2]=w&(Fv(y)|0);if(c[P>>2]|0){c[h>>2]=c[j>>2];Q=c[h>>2]|0;l=g;return Q|0;}else{c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}return 0;}function Ov(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=a;a=(Xq()|0)!=0;i=c[g>>2]|0;if(a){b[f>>1]=Pv(i)|0;j=b[f>>1]|0;l=e;return j|0;}else{c[h>>2]=i;b[f>>1]=(d[c[h>>2]>>0]|0)+((d[(c[h>>2]|0)+1>>0]|0)<<8);j=b[f>>1]|0;l=e;return j|0;}return 0;}function Pv(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function Qv(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;k=l;l=l+80|0;m=k+68|0;n=k+64|0;o=k+60|0;p=k+56|0;q=k+52|0;r=k+48|0;s=k+44|0;t=k+40|0;u=k+36|0;v=k+32|0;w=k+28|0;x=k+24|0;y=k+20|0;z=k+16|0;A=k+12|0;B=k+8|0;C=k+4|0;D=k;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[w>>2]=c[s>>2];if(!(c[t>>2]|0)){c[m>>2]=-72;E=c[m>>2]|0;l=k;return E|0;}c[x>>2]=d[c[w>>2]>>0];s=c[x>>2]|0;a:do{if((c[x>>2]|0)>>>0<128){if((s+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;E=c[m>>2]|0;l=k;return E|0;}c[y>>2]=Vv(c[n>>2]|0,(c[o>>2]|0)-1|0,(c[w>>2]|0)+1|0,c[x>>2]|0)|0;if(wv(c[y>>2]|0)|0){c[m>>2]=c[y>>2];E=c[m>>2]|0;l=k;return E|0;}}else{j=c[x>>2]|0;if(s>>>0>=242){c[y>>2]=c[7392+(j-242<<2)>>2];oE(c[n>>2]|0,1,c[o>>2]|0)|0;c[x>>2]=0;break;}c[y>>2]=j-127;c[x>>2]=(((c[y>>2]|0)+1|0)>>>0)/2|0;if(((c[x>>2]|0)+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;E=c[m>>2]|0;l=k;return E|0;}if((c[y>>2]|0)>>>0>=(c[o>>2]|0)>>>0){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}c[w>>2]=(c[w>>2]|0)+1;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break a;a[(c[n>>2]|0)+(c[z>>2]|0)>>0]=(d[(c[w>>2]|0)+(((c[z>>2]|0)>>>0)/2|0)>>0]|0)>>4;a[(c[n>>2]|0)+((c[z>>2]|0)+1)>>0]=(d[(c[w>>2]|0)+(((c[z>>2]|0)>>>0)/2|0)>>0]|0)&15;c[z>>2]=(c[z>>2]|0)+2;}}}while(0);w=c[p>>2]|0;o=w+68|0;do{c[w>>2]=0;w=w+4|0;}while((w|0)<(o|0));c[u>>2]=0;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break;if((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0|0)>=16){F=20;break;}w=(c[p>>2]|0)+((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)<<2)|0;c[w>>2]=(c[w>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+(1<<(d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)>>1);c[z>>2]=(c[z>>2]|0)+1;}if((F|0)==20){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}if(!(c[u>>2]|0)){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}c[v>>2]=(sv(c[u>>2]|0)|0)+1;if((c[v>>2]|0)>>>0>16){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}c[A>>2]=1<<c[v>>2];c[B>>2]=(c[A>>2]|0)-(c[u>>2]|0);c[C>>2]=1<<(sv(c[B>>2]|0)|0);c[D>>2]=(sv(c[B>>2]|0)|0)+1;if((c[C>>2]|0)!=(c[B>>2]|0)){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}a[(c[n>>2]|0)+(c[y>>2]|0)>>0]=c[D>>2];n=(c[p>>2]|0)+(c[D>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;if((c[(c[p>>2]|0)+4>>2]|0)>>>0>=2?(c[(c[p>>2]|0)+4>>2]&1|0)==0:0){c[c[q>>2]>>2]=(c[y>>2]|0)+1;c[c[r>>2]>>2]=c[v>>2];c[m>>2]=(c[x>>2]|0)+1;E=c[m>>2]|0;l=k;return E|0;}c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}function Rv(e,f,g,h,i,j,k,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;n=l;l=l+160|0;o=n+140|0;p=n+136|0;q=n+132|0;r=n+128|0;s=n+124|0;t=n+120|0;u=n+116|0;v=n+112|0;w=n;x=n+108|0;y=n+104|0;z=n+100|0;A=n+148|0;B=n+96|0;C=n+92|0;D=n+88|0;E=n+84|0;F=n+80|0;G=n+76|0;H=n+72|0;I=n+68|0;J=n+144|0;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=k;c[v>>2]=m;c[x>>2]=(c[v>>2]|0)-(c[p>>2]|0);c[y>>2]=(c[v>>2]|0)-(c[u>>2]|0);u=w;m=c[t>>2]|0;k=u+68|0;do{c[u>>2]=c[m>>2];u=u+4|0;m=m+4|0;}while((u|0)<(k|0));c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;b[A>>1]=d[(c[q>>2]|0)+(c[z>>2]<<1)>>0]|0;c[B>>2]=d[(c[q>>2]|0)+(c[z>>2]<<1)+1>>0];c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);c[D>>2]=c[w+(c[B>>2]<<2)>>2];c[E>>2]=1<<(c[p>>2]|0)-(c[C>>2]|0);a:do{if(((c[p>>2]|0)-(c[C>>2]|0)|0)>>>0>=(c[y>>2]|0)>>>0){m=(c[C>>2]|0)+(c[x>>2]|0)|0;c[G>>2]=m;c[G>>2]=(c[G>>2]|0)<1?1:m;c[F>>2]=c[(c[s>>2]|0)+(c[G>>2]<<2)>>2];Sv((c[o>>2]|0)+(c[D>>2]<<2)|0,(c[p>>2]|0)-(c[C>>2]|0)|0,c[C>>2]|0,(c[t>>2]|0)+((c[C>>2]|0)*68|0)|0,c[G>>2]|0,(c[q>>2]|0)+(c[F>>2]<<1)|0,(c[r>>2]|0)-(c[F>>2]|0)|0,c[v>>2]|0,b[A>>1]|0);}else{c[I>>2]=(c[D>>2]|0)+(c[E>>2]|0);Tv(J,b[A>>1]|0);a[J+2>>0]=c[C>>2];a[J+3>>0]=1;c[H>>2]=c[D>>2];while(1){if((c[H>>2]|0)>>>0>=(c[I>>2]|0)>>>0)break a;m=(c[o>>2]|0)+(c[H>>2]<<2)|0;b[m>>1]=b[J>>1]|0;b[m+2>>1]=b[J+2>>1]|0;c[H>>2]=(c[H>>2]|0)+1;}}}while(0);m=w+(c[B>>2]<<2)|0;c[m>>2]=(c[m>>2]|0)+(c[E>>2]|0);c[z>>2]=(c[z>>2]|0)+1;}l=n;return;}function Sv(f,g,h,i,j,k,m,n,o){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;p=l;l=l+160|0;q=p+136|0;r=p+132|0;s=p+128|0;t=p+124|0;u=p+120|0;v=p+116|0;w=p+112|0;x=p+108|0;y=p+144|0;z=p+140|0;A=p;B=p+104|0;C=p+100|0;D=p+96|0;E=p+92|0;F=p+88|0;G=p+84|0;H=p+80|0;I=p+76|0;J=p+72|0;K=p+68|0;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;c[v>>2]=k;c[w>>2]=m;c[x>>2]=n;b[y>>1]=o;o=A;n=c[t>>2]|0;t=o+68|0;do{c[o>>2]=c[n>>2];o=o+4|0;n=n+4|0;}while((o|0)<(t|0));a:do{if((c[u>>2]|0)>1){c[D>>2]=c[A+(c[u>>2]<<2)>>2];Tv(z,b[y>>1]|0);a[z+2>>0]=c[s>>2];a[z+3>>0]=1;c[C>>2]=0;while(1){if((c[C>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break a;n=(c[q>>2]|0)+(c[C>>2]<<2)|0;b[n>>1]=b[z>>1]|0;b[n+2>>1]=b[z+2>>1]|0;c[C>>2]=(c[C>>2]|0)+1;}}}while(0);c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[E>>2]=d[(c[v>>2]|0)+(c[B>>2]<<1)>>0];c[F>>2]=d[(c[v>>2]|0)+(c[B>>2]<<1)+1>>0];c[G>>2]=(c[x>>2]|0)-(c[F>>2]|0);c[H>>2]=1<<(c[r>>2]|0)-(c[G>>2]|0);c[I>>2]=c[A+(c[F>>2]<<2)>>2];c[J>>2]=c[I>>2];c[K>>2]=(c[I>>2]|0)+(c[H>>2]|0);Tv(z,(e[y>>1]|0)+(c[E>>2]<<8)&65535);a[z+2>>0]=(c[G>>2]|0)+(c[s>>2]|0);a[z+3>>0]=2;do{C=c[q>>2]|0;D=c[J>>2]|0;c[J>>2]=D+1;u=C+(D<<2)|0;b[u>>1]=b[z>>1]|0;b[u+2>>1]=b[z+2>>1]|0;}while((c[J>>2]|0)>>>0<(c[K>>2]|0)>>>0);u=A+(c[F>>2]<<2)|0;c[u>>2]=(c[u>>2]|0)+(c[H>>2]|0);c[B>>2]=(c[B>>2]|0)+1;}l=p;return;}function Tv(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(Xq()|0)!=0;d=c[h>>2]|0;if(f){Uv(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function Uv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=b[h>>1]|0;h=c[g>>2]|0;a[h>>0]=e;a[h+1>>0]=e>>8;l=f;return;}function Vv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=l;l=l+16960|0;g=f+16948|0;h=f+16944|0;i=f+16940|0;j=f+16936|0;k=f+16932|0;m=f+16928|0;n=f+16924|0;o=f+16400|0;p=f;q=f+16920|0;r=f+16916|0;s=f+16912|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[j>>2];c[n>>2]=c[m>>2];c[r>>2]=255;if((c[k>>2]|0)>>>0<2){c[g>>2]=-72;t=c[g>>2]|0;l=f;return t|0;}c[s>>2]=vv(o,r,q,c[m>>2]|0,c[k>>2]|0)|0;m=(wv(c[s>>2]|0)|0)!=0;j=c[s>>2]|0;if(m){c[g>>2]=j;t=c[g>>2]|0;l=f;return t|0;}if(j>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;t=c[g>>2]|0;l=f;return t|0;}c[n>>2]=(c[n>>2]|0)+(c[s>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[s>>2]|0);c[s>>2]=xv(p,o,c[r>>2]|0,c[q>>2]|0)|0;if(wv(c[s>>2]|0)|0){c[g>>2]=c[s>>2];t=c[g>>2]|0;l=f;return t|0;}else{c[g>>2]=Wv(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,p)|0;t=c[g>>2]|0;l=f;return t|0;}return 0;}function Wv(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;i=l;l=l+208|0;j=i+192|0;k=i+188|0;m=i+184|0;n=i+180|0;o=i+176|0;p=i+172|0;q=i+168|0;r=i+164|0;s=i+160|0;t=i+156|0;u=i+152|0;v=i+136|0;w=i+128|0;x=i+120|0;y=i+116|0;z=i+112|0;A=i+108|0;B=i+104|0;C=i+100|0;D=i+96|0;E=i+92|0;F=i+88|0;G=i+84|0;H=i+80|0;I=i+76|0;J=i+72|0;K=i+56|0;L=i+48|0;M=i+40|0;N=i+36|0;O=i+32|0;P=i+28|0;Q=i+24|0;R=i+20|0;S=i+16|0;T=i+12|0;U=i+8|0;V=i+4|0;W=i;c[P>>2]=b;c[Q>>2]=d;c[R>>2]=f;c[S>>2]=g;c[T>>2]=h;c[U>>2]=c[T>>2];c[V>>2]=c[U>>2];c[W>>2]=e[(c[V>>2]|0)+2>>1];V=c[P>>2]|0;P=c[Q>>2]|0;Q=c[R>>2]|0;R=c[S>>2]|0;S=c[T>>2]|0;if(c[W>>2]|0){c[A>>2]=V;c[B>>2]=P;c[C>>2]=Q;c[D>>2]=R;c[E>>2]=S;c[F>>2]=1;c[G>>2]=c[A>>2];c[H>>2]=c[G>>2];c[I>>2]=(c[H>>2]|0)+(c[B>>2]|0);c[J>>2]=(c[I>>2]|0)+-3;c[N>>2]=av(K,c[C>>2]|0,c[D>>2]|0)|0;do{if(!(wv(c[N>>2]|0)|0)){bv(L,K,c[E>>2]|0);bv(M,K,c[E>>2]|0);while(1){if(cv(K)|0)break;if((c[H>>2]|0)>>>0>=(c[J>>2]|0)>>>0)break;if(c[F>>2]|0)X=(Xv(L,K)|0)&255;else X=(lv(L,K)|0)&255;a[c[H>>2]>>0]=X;if(c[F>>2]|0)Y=(Xv(M,K)|0)&255;else Y=(lv(M,K)|0)&255;a[(c[H>>2]|0)+1>>0]=Y;if((cv(K)|0)>>>0>0){Z=14;break;}if(c[F>>2]|0)_=(Xv(L,K)|0)&255;else _=(lv(L,K)|0)&255;a[(c[H>>2]|0)+2>>0]=_;if(c[F>>2]|0)$=(Xv(M,K)|0)&255;else $=(lv(M,K)|0)&255;a[(c[H>>2]|0)+3>>0]=$;c[H>>2]=(c[H>>2]|0)+4;}if((Z|0)==14)c[H>>2]=(c[H>>2]|0)+2;while(1){if((cv(K)|0)>>>0>2)break;if((c[H>>2]|0)==(c[I>>2]|0))break;if(Fv(K)|0){if(c[F>>2]|0)break;if(Yv(L)|0)break;}if(c[F>>2]|0)aa=(Xv(L,K)|0)&255;else aa=(lv(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=aa;if((cv(K)|0)>>>0>2)break;if((c[H>>2]|0)==(c[I>>2]|0))break;if(Fv(K)|0){if(c[F>>2]|0)break;if(Yv(M)|0)break;}if(c[F>>2]|0)ba=(Xv(M,K)|0)&255;else ba=(lv(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ba;}if((Fv(K)|0?Yv(L)|0:0)?Yv(M)|0:0){c[z>>2]=(c[H>>2]|0)-(c[G>>2]|0);break;}if((c[H>>2]|0)==(c[I>>2]|0)){c[z>>2]=-70;break;}else{c[z>>2]=-20;break;}}else c[z>>2]=c[N>>2];}while(0);c[O>>2]=c[z>>2];ca=c[O>>2]|0;l=i;return ca|0;}else{c[k>>2]=V;c[m>>2]=P;c[n>>2]=Q;c[o>>2]=R;c[p>>2]=S;c[q>>2]=0;c[r>>2]=c[k>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[s>>2]|0)+(c[m>>2]|0);c[u>>2]=(c[t>>2]|0)+-3;c[y>>2]=av(v,c[n>>2]|0,c[o>>2]|0)|0;do{if(!(wv(c[y>>2]|0)|0)){bv(w,v,c[p>>2]|0);bv(x,v,c[p>>2]|0);while(1){if(cv(v)|0)break;if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;if(c[q>>2]|0)da=(Xv(w,v)|0)&255;else da=(lv(w,v)|0)&255;a[c[s>>2]>>0]=da;if(c[q>>2]|0)ea=(Xv(x,v)|0)&255;else ea=(lv(x,v)|0)&255;a[(c[s>>2]|0)+1>>0]=ea;if((cv(v)|0)>>>0>0){Z=60;break;}if(c[q>>2]|0)fa=(Xv(w,v)|0)&255;else fa=(lv(w,v)|0)&255;a[(c[s>>2]|0)+2>>0]=fa;if(c[q>>2]|0)ga=(Xv(x,v)|0)&255;else ga=(lv(x,v)|0)&255;a[(c[s>>2]|0)+3>>0]=ga;c[s>>2]=(c[s>>2]|0)+4;}if((Z|0)==60)c[s>>2]=(c[s>>2]|0)+2;while(1){if((cv(v)|0)>>>0>2)break;if((c[s>>2]|0)==(c[t>>2]|0))break;if(Fv(v)|0){if(c[q>>2]|0)break;if(Yv(w)|0)break;}if(c[q>>2]|0)ha=(Xv(w,v)|0)&255;else ha=(lv(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ha;if((cv(v)|0)>>>0>2)break;if((c[s>>2]|0)==(c[t>>2]|0))break;if(Fv(v)|0){if(c[q>>2]|0)break;if(Yv(x)|0)break;}if(c[q>>2]|0)ia=(Xv(x,v)|0)&255;else ia=(lv(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ia;}if((Fv(v)|0?Yv(w)|0:0)?Yv(x)|0:0){c[j>>2]=(c[s>>2]|0)-(c[r>>2]|0);break;}if((c[s>>2]|0)==(c[t>>2]|0)){c[j>>2]=-70;break;}else{c[j>>2]=-20;break;}}else c[j>>2]=c[y>>2];}while(0);c[O>>2]=c[j>>2];ca=c[O>>2]|0;l=i;return ca|0;}return 0;}function Xv(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=Zv(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function Yv(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[c[d>>2]>>2]|0)==0|0;}function Zv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Jv(c[e>>2]|0,c[f>>2]|0)|0;nv(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function _v(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;i=l;l=l+400|0;j=i+392|0;k=i+388|0;m=i+384|0;n=i+380|0;o=i+80|0;p=i;q=i+376|0;r=i+372|0;s=i+368|0;t=i+364|0;u=i+360|0;v=i+356|0;w=i+352|0;x=i+348|0;y=i+344|0;z=i+340|0;A=i+336|0;B=i+396|0;c[k>>2]=f;c[m>>2]=g;c[n>>2]=h;c[q>>2]=0;c[s>>2]=0;c[v>>2]=(c[k>>2]|0)+2;c[w>>2]=c[v>>2];c[r>>2]=Qv(o,256,p,s,q,c[m>>2]|0,c[n>>2]|0)|0;if(Cv(c[r>>2]|0)|0){c[j>>2]=c[r>>2];C=c[j>>2]|0;l=i;return C|0;}if((c[q>>2]|0)>>>0>(e[c[k>>2]>>1]|0)>>>0){c[j>>2]=-44;C=c[j>>2]|0;l=i;return C|0;}b[c[k>>2]>>1]=c[q>>2];c[u>>2]=0;c[t>>2]=1;while(1){if((c[t>>2]|0)>>>0>(c[q>>2]|0)>>>0)break;c[x>>2]=c[u>>2];c[u>>2]=(c[u>>2]|0)+(c[p+(c[t>>2]<<2)>>2]<<(c[t>>2]|0)-1);c[p+(c[t>>2]<<2)>>2]=c[x>>2];c[t>>2]=(c[t>>2]|0)+1;}c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;c[y>>2]=d[o+(c[t>>2]|0)>>0];c[z>>2]=1<<c[y>>2]>>1;a[B>>0]=c[t>>2];a[B+1>>0]=(c[q>>2]|0)+1-(c[y>>2]|0);c[A>>2]=c[p+(c[y>>2]<<2)>>2];while(1){if((c[A>>2]|0)>>>0>=((c[p+(c[y>>2]<<2)>>2]|0)+(c[z>>2]|0)|0)>>>0)break;x=(c[w>>2]|0)+(c[A>>2]<<1)|0;a[x>>0]=a[B>>0]|0;a[x+1>>0]=a[B+1>>0]|0;c[A>>2]=(c[A>>2]|0)+1;}x=p+(c[y>>2]<<2)|0;c[x>>2]=(c[x>>2]|0)+(c[z>>2]|0);c[t>>2]=(c[t>>2]|0)+1;}c[j>>2]=c[r>>2];C=c[j>>2]|0;l=i;return C|0;}function $v(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;i=l;l=l+192|0;j=i+184|0;k=i+180|0;m=i+176|0;n=i+172|0;o=i+168|0;p=i+164|0;q=i+160|0;r=i+156|0;s=i+152|0;t=i+148|0;u=i+144|0;v=i+140|0;w=i+136|0;x=i+120|0;y=i+104|0;z=i+88|0;A=i+72|0;B=i+64|0;C=i+60|0;D=i+56|0;E=i+52|0;F=i+48|0;G=i+44|0;H=i+40|0;I=i+36|0;J=i+32|0;K=i+28|0;L=i+24|0;M=i+20|0;N=i+16|0;O=i+12|0;P=i+8|0;Q=i+4|0;R=i;c[k>>2]=b;c[m>>2]=d;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=c[n>>2];c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=c[p>>2];c[u>>2]=(c[t>>2]|0)+2;c[v>>2]=e[c[p>>2]>>1];c[B>>2]=(Ov(c[q>>2]|0)|0)&65535;c[C>>2]=(Ov((c[q>>2]|0)+2|0)|0)&65535;c[D>>2]=(Ov((c[q>>2]|0)+4|0)|0)&65535;c[F>>2]=(c[q>>2]|0)+6;c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(c[G>>2]|0)+(c[C>>2]|0);c[I>>2]=(c[H>>2]|0)+(c[D>>2]|0);c[J>>2]=(((c[m>>2]|0)+3|0)>>>0)/4|0;c[K>>2]=(c[r>>2]|0)+(c[J>>2]|0);c[L>>2]=(c[K>>2]|0)+(c[J>>2]|0);c[M>>2]=(c[L>>2]|0)+(c[J>>2]|0);c[N>>2]=c[r>>2];c[O>>2]=c[K>>2];c[P>>2]=c[L>>2];c[Q>>2]=c[M>>2];if((c[o>>2]|0)>>>0<10){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}c[E>>2]=(c[o>>2]|0)-((c[B>>2]|0)+(c[C>>2]|0)+(c[D>>2]|0)+6);if((c[E>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=av(x,c[F>>2]|0,c[B>>2]|0)|0;if(Cv(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=av(y,c[G>>2]|0,c[C>>2]|0)|0;if(Cv(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=av(z,c[H>>2]|0,c[D>>2]|0)|0;if(Cv(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=av(A,c[I>>2]|0,c[E>>2]|0)|0;if(Cv(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}w=cv(x)|0;E=w|(cv(y)|0);w=E|(cv(z)|0);c[R>>2]=w|(cv(A)|0);while(1){if(c[R>>2]|0)break;if((c[Q>>2]|0)>>>0>=((c[s>>2]|0)+-7|0)>>>0)break;if(Gv()|0){w=aw(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;}if(Gv()|0){w=aw(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;}if(Gv()|0){w=aw(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;}if(Gv()|0){w=aw(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;}Gv()|0;w=aw(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;Gv()|0;w=aw(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;Gv()|0;w=aw(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;Gv()|0;w=aw(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;if(Gv()|0){w=aw(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;}if(Gv()|0){w=aw(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;}if(Gv()|0){w=aw(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;}if(Gv()|0){w=aw(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;}w=aw(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;w=aw(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;w=aw(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;w=aw(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;w=cv(x)|0;E=w|(cv(y)|0);w=E|(cv(z)|0);c[R>>2]=w|(cv(A)|0);}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}if((c[O>>2]|0)>>>0>(c[L>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}if((c[P>>2]|0)>>>0>(c[M>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}bw(c[N>>2]|0,x,c[K>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;bw(c[O>>2]|0,y,c[L>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;bw(c[P>>2]|0,z,c[M>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;bw(c[Q>>2]|0,A,c[s>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;v=Fv(x)|0;x=v&(Fv(y)|0);y=x&(Fv(z)|0);c[R>>2]=y&(Fv(A)|0);if(c[R>>2]|0){c[j>>2]=c[m>>2];S=c[j>>2]|0;l=i;return S|0;}else{c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}return 0;}function aw(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+16|0;c[h>>2]=b;c[i>>2]=e;c[j>>2]=f;c[k>>2]=Jv(c[h>>2]|0,c[j>>2]|0)|0;a[m>>0]=a[(c[i>>2]|0)+(c[k>>2]<<1)>>0]|0;nv(c[h>>2]|0,d[(c[i>>2]|0)+(c[k>>2]<<1)+1>>0]|0);l=g;return a[m>>0]|0;}function bw(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[i>>2];while(1){if(cv(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>((c[k>>2]|0)+-4|0)>>>0)break;if(Gv()|0){g=aw(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}Gv()|0;g=aw(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;if(Gv()|0){g=aw(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}g=aw(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if(cv(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=aw(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=aw(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}l=h;return(c[k>>2]|0)-(c[o>>2]|0)|0;}function cw(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+8|0;v=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[j>>2];c[q>>2]=(c[p>>2]|0)+(c[k>>2]|0);c[r>>2]=e[c[o>>2]>>1];c[s>>2]=c[o>>2];c[t>>2]=(c[s>>2]|0)+2;if((c[k>>2]|0)>>>0<=(c[n>>2]|0)>>>0){c[i>>2]=-70;w=c[i>>2]|0;l=h;return w|0;}c[v>>2]=av(u,c[m>>2]|0,c[n>>2]|0)|0;if(Cv(c[v>>2]|0)|0){c[i>>2]=c[v>>2];w=c[i>>2]|0;l=h;return w|0;}bw(c[p>>2]|0,u,c[q>>2]|0,c[t>>2]|0,c[r>>2]|0)|0;if(Fv(u)|0){c[i>>2]=c[k>>2];w=c[i>>2]|0;l=h;return w|0;}else{c[i>>2]=-20;w=c[i>>2]|0;l=h;return w|0;}return 0;}function dw(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+26656>>2]=5;c[(c[d>>2]|0)+26708>>2]=0;c[(c[d>>2]|0)+26640>>2]=0;c[(c[d>>2]|0)+26644>>2]=0;c[(c[d>>2]|0)+26648>>2]=0;c[(c[d>>2]|0)+26652>>2]=0;c[(c[d>>2]|0)+10252>>2]=12;c[(c[d>>2]|0)+26712>>2]=0;l=b;return 0;}function ew(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[k>>2]=Wq(c[h>>2]|0)|0;if((c[k>>2]|0)!=-332356555){fw(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0);c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)-4;c[j>>2]=gw(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;if(mr(c[j>>2]|0)|0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}else{c[h>>2]=(c[h>>2]|0)+(c[j>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[j>>2]|0);fw(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0);c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}return 0;}function fw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+26652>>2]=c[(c[f>>2]|0)+26640>>2];c[(c[f>>2]|0)+26648>>2]=(c[g>>2]|0)+(0-((c[(c[f>>2]|0)+26640>>2]|0)-(c[(c[f>>2]|0)+26644>>2]|0)));c[(c[f>>2]|0)+26644>>2]=c[g>>2];c[(c[f>>2]|0)+26640>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function gw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;e=l;l=l+512|0;f=e+504|0;g=e+500|0;h=e+496|0;i=e+492|0;j=e+488|0;k=e+484|0;m=e+480|0;n=e+476|0;o=e+472|0;p=e+384|0;q=e+468|0;r=e+464|0;s=e+128|0;t=e+460|0;u=e+456|0;v=e;w=e+452|0;x=e+448|0;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[q>>2]=31;c[t>>2]=127;c[w>>2]=63;c[j>>2]=Mv((c[g>>2]|0)+10252|0,c[h>>2]|0,c[i>>2]|0)|0;if(Cv(c[j>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}c[h>>2]=(c[h>>2]|0)+(c[j>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[j>>2]|0);c[k>>2]=vv(p,q,r,c[h>>2]|0,c[i>>2]|0)|0;if(wv(c[k>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}if((c[r>>2]|0)>>>0>9){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}c[n>>2]=xv((c[g>>2]|0)+4100|0,p,c[q>>2]|0,c[r>>2]|0)|0;if(wv(c[n>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);c[m>>2]=vv(s,t,u,c[h>>2]|0,c[i>>2]|0)|0;if(wv(c[m>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}if((c[u>>2]|0)>>>0>10){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}c[n>>2]=xv((c[g>>2]|0)+6152|0,s,c[t>>2]|0,c[u>>2]|0)|0;if(wv(c[n>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}c[h>>2]=(c[h>>2]|0)+(c[m>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[m>>2]|0);c[o>>2]=vv(v,w,x,c[h>>2]|0,c[i>>2]|0)|0;if((c[x>>2]|0)>>>0>10){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}if(wv(c[o>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}c[n>>2]=xv(c[g>>2]|0,v,c[w>>2]|0,c[x>>2]|0)|0;if(wv(c[n>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}else{c[(c[g>>2]|0)+26712>>2]=1;c[f>>2]=(c[j>>2]|0)+(c[k>>2]|0)+(c[m>>2]|0)+(c[o>>2]|0);y=c[f>>2]|0;l=e;return y|0;}return 0;}function hw(){var a=0,b=0,d=0,e=0;a=l;l=l+16|0;b=a+4|0;d=a;c[d>>2]=Cy(141416)|0;if(!(c[d>>2]|0)){c[b>>2]=0;e=c[b>>2]|0;l=a;return e|0;}else{kw(c[d>>2]|0)|0;c[b>>2]=c[d>>2];e=c[b>>2]|0;l=a;return e|0;}return 0;}function iw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+16|0;i=g+12|0;j=g+8|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;f=jw(c[h>>2]|0,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,0,0)|0;l=g;return f|0;}function jw(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;i=l;l=l+80|0;j=i+76|0;k=i+72|0;m=i+68|0;n=i+64|0;o=i+60|0;p=i+56|0;q=i+52|0;r=i+48|0;s=i+44|0;t=i+40|0;u=i+36|0;v=i+32|0;w=i+28|0;x=i+24|0;y=i+16|0;z=i+8|0;A=i+4|0;B=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=c[o>>2];c[t>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[u>>2]=c[m>>2];c[v>>2]=c[u>>2];c[w>>2]=(c[u>>2]|0)+(c[n>>2]|0);c[x>>2]=c[p>>2];kw(c[k>>2]|0)|0;if(c[q>>2]|0){lw(c[k>>2]|0,c[q>>2]|0,c[r>>2]|0);c[(c[k>>2]|0)+10264>>2]=c[(c[k>>2]|0)+10252>>2];c[(c[k>>2]|0)+10260>>2]=(c[m>>2]|0)+(0-((c[(c[k>>2]|0)+10252>>2]|0)-(c[(c[k>>2]|0)+10256>>2]|0)));c[(c[k>>2]|0)+10256>>2]=c[m>>2];}else{r=c[m>>2]|0;c[(c[k>>2]|0)+10264>>2]=r;c[(c[k>>2]|0)+10256>>2]=r;c[(c[k>>2]|0)+10260>>2]=r;}if((c[p>>2]|0)>>>0<8){c[j>>2]=-72;C=c[j>>2]|0;l=i;return C|0;}c[z>>2]=mw(c[k>>2]|0,c[o>>2]|0,5)|0;if(rr(c[z>>2]|0)|0){c[j>>2]=c[z>>2];C=c[j>>2]|0;l=i;return C|0;}if((c[p>>2]|0)>>>0<((c[z>>2]|0)+3|0)>>>0){c[j>>2]=-72;C=c[j>>2]|0;l=i;return C|0;}c[s>>2]=(c[s>>2]|0)+(c[z>>2]|0);c[x>>2]=(c[x>>2]|0)-(c[z>>2]|0);c[z>>2]=nw(c[k>>2]|0,c[o>>2]|0,c[z>>2]|0)|0;if(rr(c[z>>2]|0)|0){c[j>>2]=c[z>>2];C=c[j>>2]|0;l=i;return C|0;}a:while(1){c[A>>2]=0;c[B>>2]=qr(c[s>>2]|0,(c[t>>2]|0)-(c[s>>2]|0)|0,y)|0;if(rr(c[B>>2]|0)|0){D=14;break;}c[s>>2]=(c[s>>2]|0)+3;c[x>>2]=(c[x>>2]|0)-3;if((c[B>>2]|0)>>>0>(c[x>>2]|0)>>>0){D=16;break;}switch(c[y>>2]|0){case 2:{D=20;break a;break;}case 0:{c[A>>2]=ow(c[k>>2]|0,c[v>>2]|0,(c[w>>2]|0)-(c[v>>2]|0)|0,c[s>>2]|0,c[B>>2]|0)|0;break;}case 1:{c[A>>2]=pw(c[v>>2]|0,(c[w>>2]|0)-(c[v>>2]|0)|0,c[s>>2]|0,c[B>>2]|0)|0;break;}case 3:{if(c[x>>2]|0){D=22;break a;}break;}default:{D=23;break a;}}if(!(c[B>>2]|0)){D=28;break;}z=(rr(c[A>>2]|0)|0)!=0;E=c[A>>2]|0;if(z){D=26;break;}c[v>>2]=(c[v>>2]|0)+E;c[s>>2]=(c[s>>2]|0)+(c[B>>2]|0);c[x>>2]=(c[x>>2]|0)-(c[B>>2]|0);}if((D|0)==14){c[j>>2]=c[B>>2];C=c[j>>2]|0;l=i;return C|0;}else if((D|0)==16){c[j>>2]=-72;C=c[j>>2]|0;l=i;return C|0;}else if((D|0)==20){c[j>>2]=-1;C=c[j>>2]|0;l=i;return C|0;}else if((D|0)==22){c[j>>2]=-72;C=c[j>>2]|0;l=i;return C|0;}else if((D|0)==23){c[j>>2]=-1;C=c[j>>2]|0;l=i;return C|0;}else if((D|0)==26){c[j>>2]=E;C=c[j>>2]|0;l=i;return C|0;}else if((D|0)==28){c[j>>2]=(c[v>>2]|0)-(c[u>>2]|0);C=c[j>>2]|0;l=i;return C|0;}return 0;}function kw(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+10268>>2]=5;c[(c[d>>2]|0)+10316>>2]=0;c[(c[d>>2]|0)+10252>>2]=0;c[(c[d>>2]|0)+10256>>2]=0;c[(c[d>>2]|0)+10260>>2]=0;c[(c[d>>2]|0)+10264>>2]=0;l=b;return 0;}function lw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+10264>>2]=c[(c[f>>2]|0)+10252>>2];c[(c[f>>2]|0)+10260>>2]=(c[g>>2]|0)+(0-((c[(c[f>>2]|0)+10252>>2]|0)-(c[(c[f>>2]|0)+10256>>2]|0)));c[(c[f>>2]|0)+10256>>2]=c[g>>2];c[(c[f>>2]|0)+10252>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function mw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[i>>2]|0)!=5){c[f>>2]=-72;k=c[f>>2]|0;l=e;return k|0;}c[j>>2]=pr(c[h>>2]|0)|0;if((c[j>>2]|0)!=-47205084){c[f>>2]=-10;k=c[f>>2]|0;l=e;return k|0;}else{c[(c[g>>2]|0)+10272>>2]=5;c[f>>2]=c[(c[g>>2]|0)+10272>>2];k=c[f>>2]|0;l=e;return k|0;}return 0;}function nw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[i>>2]|0)!=(c[(c[g>>2]|0)+10272>>2]|0)){c[f>>2]=-72;k=c[f>>2]|0;l=e;return k|0;}c[j>>2]=sx((c[g>>2]|0)+10280|0,c[h>>2]|0,c[i>>2]|0)|0;if(Dw()|0?(c[(c[g>>2]|0)+10280+8>>2]|0)>>>0>25:0){c[f>>2]=-14;k=c[f>>2]|0;l=e;return k|0;}c[f>>2]=c[j>>2];k=c[f>>2]|0;l=e;return k|0;}function ow(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=qw(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(rr(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+f;c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=rw(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function pw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){c[g>>2]=-70;m=c[g>>2]|0;l=f;return m|0;}else{mE(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[g>>2]=c[k>>2];m=c[g>>2]|0;l=f;return m|0;}return 0;}function qw(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+48|0;h=g+32|0;i=g+28|0;j=g+24|0;k=g+20|0;m=g+16|0;n=g+12|0;o=g+8|0;p=g+4|0;q=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[j>>2];if((c[k>>2]|0)>>>0<11){c[h>>2]=-20;r=c[h>>2]|0;l=g;return r|0;}switch((d[c[m>>2]>>0]|0)&3|0){case 0:{c[n>>2]=131072;c[o>>2]=Uw((c[i>>2]|0)+10328|0,n,c[j>>2]|0,c[k>>2]|0)|0;c[(c[i>>2]|0)+10320>>2]=(c[i>>2]|0)+10328;c[(c[i>>2]|0)+10324>>2]=c[n>>2];n=(c[i>>2]|0)+10328+(c[(c[i>>2]|0)+10324>>2]|0)|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;a[n+4>>0]=0;a[n+5>>0]=0;a[n+6>>0]=0;a[n+7>>0]=0;c[h>>2]=c[o>>2];r=c[h>>2]|0;l=g;return r|0;}case 1:{c[p>>2]=((pr(c[m>>2]|0)|0)&16777215)>>>2;if((c[p>>2]|0)>>>0<=((c[k>>2]|0)-11|0)>>>0){c[(c[i>>2]|0)+10320>>2]=(c[m>>2]|0)+3;c[(c[i>>2]|0)+10324>>2]=c[p>>2];c[h>>2]=(c[p>>2]|0)+3;r=c[h>>2]|0;l=g;return r|0;}if((c[p>>2]|0)>>>0>((c[k>>2]|0)-3|0)>>>0){c[h>>2]=-20;r=c[h>>2]|0;l=g;return r|0;}else{mE((c[i>>2]|0)+10328|0,c[m>>2]|0,c[p>>2]|0)|0;c[(c[i>>2]|0)+10320>>2]=(c[i>>2]|0)+10328;c[(c[i>>2]|0)+10324>>2]=c[p>>2];k=(c[i>>2]|0)+10328+(c[(c[i>>2]|0)+10324>>2]|0)|0;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;a[k+4>>0]=0;a[k+5>>0]=0;a[k+6>>0]=0;a[k+7>>0]=0;c[h>>2]=(c[p>>2]|0)+3;r=c[h>>2]|0;l=g;return r|0;}break;}case 2:{c[q>>2]=((pr(c[m>>2]|0)|0)&16777215)>>>2;if((c[q>>2]|0)>>>0>131072){c[h>>2]=-20;r=c[h>>2]|0;l=g;return r|0;}else{oE((c[i>>2]|0)+10328|0,(d[(c[m>>2]|0)+3>>0]|0)&255|0,(c[q>>2]|0)+8|0)|0;c[(c[i>>2]|0)+10320>>2]=(c[i>>2]|0)+10328;c[(c[i>>2]|0)+10324>>2]=c[q>>2];c[h>>2]=4;r=c[h>>2]|0;l=g;return r|0;}break;}default:{c[h>>2]=-20;r=c[h>>2]|0;l=g;return r|0;}}return 0;}function rw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;g=l;l=l+176|0;h=g+164|0;i=g+160|0;j=g+156|0;k=g+152|0;m=g+148|0;n=g+144|0;o=g+140|0;p=g+136|0;q=g+132|0;r=g+128|0;s=g+124|0;t=g+120|0;u=g+116|0;v=g+112|0;w=g+108|0;x=g+104|0;y=g+100|0;z=g+96|0;A=g+92|0;B=g+88|0;C=g+84|0;D=g+80|0;E=g+76|0;F=g+72|0;G=g+60|0;H=g+8|0;I=g+4|0;J=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[k>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[w>>2]=c[(c[j>>2]|0)+10320>>2];c[x>>2]=(c[w>>2]|0)+(c[(c[j>>2]|0)+10324>>2]|0);c[A>>2]=c[j>>2];c[B>>2]=(c[j>>2]|0)+6152;c[C>>2]=(c[j>>2]|0)+4100;c[D>>2]=c[(c[j>>2]|0)+10256>>2];c[E>>2]=c[(c[j>>2]|0)+10260>>2];c[F>>2]=c[(c[j>>2]|0)+10264>>2];c[u>>2]=sw(y,z,v,c[A>>2]|0,c[B>>2]|0,c[C>>2]|0,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;j=(rr(c[u>>2]|0)|0)!=0;m=c[u>>2]|0;if(j){c[i>>2]=m;K=c[i>>2]|0;l=g;return K|0;}c[p>>2]=(c[p>>2]|0)+m;c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+4>>2]=4;c[H+44>>2]=c[z>>2];c[H+48>>2]=(c[z>>2]|0)+(c[v>>2]|0);c[H+40>>2]=4;c[u>>2]=tw(H,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;if(sr(c[u>>2]|0)|0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}uw(H+16|0,H,c[A>>2]|0);uw(H+24|0,H,c[C>>2]|0);uw(H+32|0,H,c[B>>2]|0);while(1){B=(vw(H)|0)>>>0<=2;if(!(B?(c[y>>2]|0)!=0:0))break;c[y>>2]=(c[y>>2]|0)+-1;ww(G,H);B=c[s>>2]|0;C=c[t>>2]|0;A=c[x>>2]|0;u=c[D>>2]|0;p=c[E>>2]|0;q=c[F>>2]|0;c[h>>2]=c[G>>2];c[h+4>>2]=c[G+4>>2];c[h+8>>2]=c[G+8>>2];c[I>>2]=xw(B,C,h,w,A,u,p,q)|0;q=(rr(c[I>>2]|0)|0)!=0;L=c[I>>2]|0;if(q){M=8;break;}c[s>>2]=(c[s>>2]|0)+L;}if((M|0)==8){c[i>>2]=L;K=c[i>>2]|0;l=g;return K|0;}if(!(yw(H)|0)){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}c[J>>2]=(c[x>>2]|0)-(c[w>>2]|0);if((c[w>>2]|0)>>>0>(c[x>>2]|0)>>>0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}if(((c[s>>2]|0)+(c[J>>2]|0)|0)>>>0>(c[t>>2]|0)>>>0){c[i>>2]=-70;K=c[i>>2]|0;l=g;return K|0;}if((c[s>>2]|0)!=(c[w>>2]|0))mE(c[s>>2]|0,c[w>>2]|0,c[J>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[J>>2]|0);c[i>>2]=(c[s>>2]|0)-(c[r>>2]|0);K=c[i>>2]|0;l=g;return K|0;}function sw(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;m=l;l=l+352|0;n=m+344|0;o=m+340|0;p=m+336|0;q=m+332|0;r=m+328|0;s=m+324|0;t=m+320|0;u=m+316|0;v=m+312|0;w=m+308|0;x=m+304|0;y=m+300|0;z=m+296|0;A=m+292|0;B=m+288|0;C=m+284|0;D=m+280|0;E=m+276|0;F=m+272|0;G=m;H=m+268|0;I=m+264|0;J=m+260|0;K=m+256|0;c[o>>2]=b;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;c[v>>2]=k;c[w>>2]=c[u>>2];c[x>>2]=c[w>>2];c[y>>2]=(c[w>>2]|0)+(c[v>>2]|0);if((c[v>>2]|0)>>>0<5){c[n>>2]=-72;L=c[n>>2]|0;l=m;return L|0;}v=(Lw(c[x>>2]|0)|0)&65535;c[c[o>>2]>>2]=v;c[x>>2]=(c[x>>2]|0)+2;c[z>>2]=(d[c[x>>2]>>0]|0)>>6;c[A>>2]=(d[c[x>>2]>>0]|0)>>4&3;c[B>>2]=(d[c[x>>2]>>0]|0)>>2&3;v=c[x>>2]|0;if((d[c[x>>2]>>0]|0)&2|0){c[F>>2]=d[v+2>>0];c[F>>2]=(c[F>>2]|0)+((d[(c[x>>2]|0)+1>>0]|0)<<8);c[x>>2]=(c[x>>2]|0)+3;}else{c[F>>2]=d[v+1>>0];c[F>>2]=(c[F>>2]|0)+(((d[c[x>>2]>>0]|0)&1)<<8);c[x>>2]=(c[x>>2]|0)+2;}c[c[p>>2]>>2]=c[x>>2];c[x>>2]=(c[x>>2]|0)+(c[F>>2]|0);c[c[q>>2]>>2]=c[F>>2];if((c[x>>2]|0)>>>0>((c[y>>2]|0)+-3|0)>>>0){c[n>>2]=-72;L=c[n>>2]|0;l=m;return L|0;}a:do{switch(c[z>>2]|0){case 2:{c[C>>2]=0;F=c[r>>2]|0;q=c[x>>2]|0;c[x>>2]=q+1;Mw(F,a[q>>0]|0)|0;break;}case 1:{c[C>>2]=6;Nw(c[r>>2]|0,6)|0;break;}default:{c[I>>2]=63;c[H>>2]=Ow(G,I,C,c[x>>2]|0,(c[y>>2]|0)-(c[x>>2]|0)|0)|0;if(Pw(c[H>>2]|0)|0){c[n>>2]=-1;L=c[n>>2]|0;l=m;return L|0;}if((c[C>>2]|0)>>>0<=10){c[x>>2]=(c[x>>2]|0)+(c[H>>2]|0);Qw(c[r>>2]|0,G,c[I>>2]|0,c[C>>2]|0)|0;break a;}c[n>>2]=-20;L=c[n>>2]|0;l=m;return L|0;}}}while(0);b:do{switch(c[A>>2]|0){case 2:{c[D>>2]=0;if((c[x>>2]|0)>>>0<=((c[y>>2]|0)+-2|0)>>>0){C=c[t>>2]|0;I=c[x>>2]|0;c[x>>2]=I+1;Mw(C,(d[I>>0]|0)&31)|0;break b;}c[n>>2]=-72;L=c[n>>2]|0;l=m;return L|0;}case 1:{c[D>>2]=5;Nw(c[t>>2]|0,5)|0;break;}default:{c[J>>2]=31;c[H>>2]=Ow(G,J,D,c[x>>2]|0,(c[y>>2]|0)-(c[x>>2]|0)|0)|0;if(Pw(c[H>>2]|0)|0){c[n>>2]=-1;L=c[n>>2]|0;l=m;return L|0;}if((c[D>>2]|0)>>>0<=9){c[x>>2]=(c[x>>2]|0)+(c[H>>2]|0);Qw(c[t>>2]|0,G,c[J>>2]|0,c[D>>2]|0)|0;break b;}c[n>>2]=-20;L=c[n>>2]|0;l=m;return L|0;}}}while(0);c:do{switch(c[B>>2]|0){case 2:{c[E>>2]=0;if((c[x>>2]|0)>>>0<=((c[y>>2]|0)+-2|0)>>>0){D=c[s>>2]|0;J=c[x>>2]|0;c[x>>2]=J+1;Mw(D,a[J>>0]|0)|0;break c;}c[n>>2]=-72;L=c[n>>2]|0;l=m;return L|0;}case 1:{c[E>>2]=7;Nw(c[s>>2]|0,7)|0;break;}default:{c[K>>2]=127;c[H>>2]=Ow(G,K,E,c[x>>2]|0,(c[y>>2]|0)-(c[x>>2]|0)|0)|0;if(Pw(c[H>>2]|0)|0){c[n>>2]=-1;L=c[n>>2]|0;l=m;return L|0;}if((c[E>>2]|0)>>>0<=10){c[x>>2]=(c[x>>2]|0)+(c[H>>2]|0);Qw(c[s>>2]|0,G,c[K>>2]|0,c[E>>2]|0)|0;break c;}c[n>>2]=-20;L=c[n>>2]|0;l=m;return L|0;}}}while(0);c[n>>2]=(c[x>>2]|0)-(c[w>>2]|0);L=c[n>>2]|0;l=m;return L|0;}function tw(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;if((c[j>>2]|0)>>>0<1){e=c[h>>2]|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[g>>2]=-72;n=c[g>>2]|0;l=f;return n|0;}e=(c[j>>2]|0)>>>0>=4;c[(c[h>>2]|0)+12>>2]=c[i>>2];do{if(e){c[(c[h>>2]|0)+8>>2]=(c[i>>2]|0)+(c[j>>2]|0)+-4;b=Hw(c[(c[h>>2]|0)+8>>2]|0)|0;c[c[h>>2]>>2]=b;c[k>>2]=d[(c[i>>2]|0)+((c[j>>2]|0)-1)>>0];if(c[k>>2]|0){b=8-(Kw(c[k>>2]|0)|0)|0;c[(c[h>>2]|0)+4>>2]=b;break;}c[g>>2]=-1;n=c[g>>2]|0;l=f;return n|0;}else{c[(c[h>>2]|0)+8>>2]=c[(c[h>>2]|0)+12>>2];c[c[h>>2]>>2]=d[c[(c[h>>2]|0)+12>>2]>>0];switch(c[j>>2]|0){case 7:{b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+6>>0]|0)<<16);o=9;break;}case 6:{o=9;break;}case 5:{o=10;break;}case 4:{o=11;break;}case 3:{o=12;break;}case 2:{o=13;break;}default:{}}if((o|0)==9){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+5>>0]|0)<<8);o=10;}if((o|0)==10){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+4>>0]|0)<<0);o=11;}if((o|0)==11){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+3>>0]|0)<<24);o=12;}if((o|0)==12){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+2>>0]|0)<<16);o=13;}if((o|0)==13){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+1>>0]|0)<<8);}c[m>>2]=d[(c[i>>2]|0)+((c[j>>2]|0)-1)>>0];if(c[m>>2]|0){b=8-(Kw(c[m>>2]|0)|0)|0;c[(c[h>>2]|0)+4>>2]=b;b=(c[h>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(4-(c[j>>2]|0)<<3);break;}c[g>>2]=-1;n=c[g>>2]|0;l=f;return n|0;}}while(0);c[g>>2]=c[j>>2];n=c[g>>2]|0;l=f;return n|0;}function uw(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=l;l=l+16|0;h=g+8|0;i=g+4|0;j=g;k=g+12|0;c[h>>2]=a;c[i>>2]=d;c[j>>2]=f;f=c[j>>2]|0;b[k>>1]=b[f>>1]|0;b[k+2>>1]=b[f+2>>1]|0;f=Ew(c[i>>2]|0,e[k>>1]|0)|0;c[c[h>>2]>>2]=f;vw(c[i>>2]|0)|0;c[(c[h>>2]|0)+4>>2]=(c[j>>2]|0)+4;l=g;return;}function vw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=((c[(c[e>>2]|0)+12>>2]|0)+4|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=Hw(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=Hw(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function ww(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=l;l=l+48|0;f=e+44|0;g=e+40|0;h=e+36|0;i=e+32|0;j=e+28|0;k=e+24|0;m=e+20|0;n=e+16|0;o=e+12|0;p=e+8|0;q=e+4|0;r=e;c[f>>2]=a;c[g>>2]=b;c[m>>2]=c[(c[g>>2]|0)+44>>2];c[n>>2]=c[(c[g>>2]|0)+48>>2];c[h>>2]=(Cw((c[g>>2]|0)+16|0,c[g>>2]|0)|0)&255;if(c[h>>2]|0)s=c[(c[f>>2]|0)+4>>2]|0;else s=c[(c[g>>2]|0)+40>>2]|0;c[i>>2]=s;if((c[h>>2]|0)==63){s=c[m>>2]|0;c[m>>2]=s+1;c[o>>2]=d[s>>0];if((c[o>>2]|0)>>>0<255)c[h>>2]=(c[h>>2]|0)+(c[o>>2]|0);else{c[h>>2]=(d[c[m>>2]>>0]|0)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+((d[(c[m>>2]|0)+2>>0]|0)<<16);c[m>>2]=(c[m>>2]|0)+3;}if((c[m>>2]|0)>>>0>(c[n>>2]|0)>>>0)c[h>>2]=318;if((c[m>>2]|0)>>>0>=(c[n>>2]|0)>>>0)c[m>>2]=(c[n>>2]|0)+-1;}c[p>>2]=(Cw((c[g>>2]|0)+24|0,c[g>>2]|0)|0)&255;if(Dw()|0)vw(c[g>>2]|0)|0;o=(c[p>>2]|0)-1|0;c[q>>2]=o;c[q>>2]=(c[p>>2]|0)==0?0:o;o=c[6880+(c[p>>2]<<2)>>2]|0;c[j>>2]=o+(Ew(c[g>>2]|0,c[q>>2]|0)|0);if(Dw()|0)vw(c[g>>2]|0)|0;if(!(c[p>>2]|0))c[j>>2]=c[i>>2];if(c[p>>2]|((c[h>>2]|0)!=0^1)&1|0)c[(c[g>>2]|0)+40>>2]=c[(c[f>>2]|0)+4>>2];c[k>>2]=(Cw((c[g>>2]|0)+32|0,c[g>>2]|0)|0)&255;if((c[k>>2]|0)==127){p=c[m>>2]|0;c[m>>2]=p+1;c[r>>2]=d[p>>0];if((c[r>>2]|0)>>>0<255)c[k>>2]=(c[k>>2]|0)+(c[r>>2]|0);else{c[k>>2]=(d[c[m>>2]>>0]|0)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+((d[(c[m>>2]|0)+2>>0]|0)<<16);c[m>>2]=(c[m>>2]|0)+3;}if((c[m>>2]|0)>>>0>(c[n>>2]|0)>>>0)c[k>>2]=382;if((c[m>>2]|0)>>>0>=(c[n>>2]|0)>>>0)c[m>>2]=(c[n>>2]|0)+-1;}c[k>>2]=(c[k>>2]|0)+4;c[c[f>>2]>>2]=c[h>>2];c[(c[f>>2]|0)+4>>2]=c[j>>2];c[(c[f>>2]|0)+8>>2]=c[k>>2];c[(c[g>>2]|0)+44>>2]=c[m>>2];l=e;return;}function xw(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;k=l;l=l+64|0;m=k+60|0;n=k+56|0;o=k+52|0;p=k+48|0;q=k+44|0;r=k+40|0;s=k+36|0;t=k+32|0;u=k+28|0;v=k+24|0;w=k+20|0;x=k+16|0;y=k+12|0;z=k+8|0;A=k+4|0;B=k;c[n>>2]=b;c[o>>2]=d;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=(c[n>>2]|0)+(c[e>>2]|0);c[v>>2]=(c[e>>2]|0)+(c[e+8>>2]|0);c[w>>2]=(c[n>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[o>>2]|0)+-8;c[y>>2]=(c[c[p>>2]>>2]|0)+(c[e>>2]|0);c[z>>2]=(c[u>>2]|0)+(0-(c[e+4>>2]|0));if((c[u>>2]|0)>>>0>(c[x>>2]|0)>>>0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[w>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}zw(c[n>>2]|0,c[c[p>>2]>>2]|0,c[e>>2]|0);c[n>>2]=c[u>>2];c[c[p>>2]>>2]=c[y>>2];do{if((c[e+4>>2]|0)>>>0>((c[u>>2]|0)-(c[r>>2]|0)|0)>>>0){if((c[e+4>>2]|0)>>>0>((c[u>>2]|0)-(c[s>>2]|0)|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}c[z>>2]=(c[t>>2]|0)+(0-((c[r>>2]|0)-(c[z>>2]|0)));if(((c[z>>2]|0)+(c[e+8>>2]|0)|0)>>>0<=(c[t>>2]|0)>>>0){nE(c[u>>2]|0,c[z>>2]|0,c[e+8>>2]|0)|0;c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}c[A>>2]=(c[t>>2]|0)-(c[z>>2]|0);nE(c[u>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;c[n>>2]=(c[u>>2]|0)+(c[A>>2]|0);y=e+8|0;c[y>>2]=(c[y>>2]|0)-(c[A>>2]|0);c[z>>2]=c[r>>2];if((c[n>>2]|0)>>>0<=(c[x>>2]|0)>>>0?(c[e+8>>2]|0)>>>0>=4:0)break;while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;y=c[z>>2]|0;c[z>>2]=y+1;p=a[y>>0]|0;y=c[n>>2]|0;c[n>>2]=y+1;a[y>>0]=p;}c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}}while(0);if((c[e+4>>2]|0)>>>0<8){c[B>>2]=c[6816+(c[e+4>>2]<<2)>>2];a[c[n>>2]>>0]=a[c[z>>2]>>0]|0;a[(c[n>>2]|0)+1>>0]=a[(c[z>>2]|0)+1>>0]|0;a[(c[n>>2]|0)+2>>0]=a[(c[z>>2]|0)+2>>0]|0;a[(c[n>>2]|0)+3>>0]=a[(c[z>>2]|0)+3>>0]|0;c[z>>2]=(c[z>>2]|0)+(c[6848+(c[e+4>>2]<<2)>>2]|0);Aw((c[n>>2]|0)+4|0,c[z>>2]|0);c[z>>2]=(c[z>>2]|0)+(0-(c[B>>2]|0));}else Bw(c[n>>2]|0,c[z>>2]|0);c[n>>2]=(c[n>>2]|0)+8;c[z>>2]=(c[z>>2]|0)+8;B=c[n>>2]|0;a:do{if((c[w>>2]|0)>>>0>((c[o>>2]|0)+-12|0)>>>0){if(B>>>0<(c[x>>2]|0)>>>0){zw(c[n>>2]|0,c[z>>2]|0,(c[x>>2]|0)-(c[n>>2]|0)|0);c[z>>2]=(c[z>>2]|0)+((c[x>>2]|0)-(c[n>>2]|0));c[n>>2]=c[x>>2];}while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;r=c[z>>2]|0;c[z>>2]=r+1;A=a[r>>0]|0;r=c[n>>2]|0;c[n>>2]=r+1;a[r>>0]=A;}}else zw(B,c[z>>2]|0,(c[e+8>>2]|0)-8|0);}while(0);c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}function yw(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;c[d>>2]=a;if((c[(c[d>>2]|0)+8>>2]|0)!=(c[(c[d>>2]|0)+12>>2]|0)){e=0;f=e&1;l=b;return f|0;}e=(c[(c[d>>2]|0)+4>>2]|0)==32;f=e&1;l=b;return f|0;}function zw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{Bw(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function Aw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;l=e;return;}function Bw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function Cw(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=Ew(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function Dw(){return 1;}function Ew(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Fw(c[e>>2]|0,c[f>>2]|0)|0;Gw(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function Fw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>1>>>(31-(c[f>>2]|0)&31)|0;}function Gw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function Hw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Dw()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=pr(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=Iw(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Iw(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;b=l;l=l+16|0;e=b;f=b+12|0;g=b+8|0;c[f>>2]=a;a=(tr()|0)!=0;h=c[f>>2]|0;if(a){a=Jw(h)|0;f=e;c[f>>2]=a;c[f+4>>2]=y;i=e;j=i;k=c[j>>2]|0;m=i+4|0;n=m;o=c[n>>2]|0;y=o;l=b;return k|0;}else{c[g>>2]=h;h=d[c[g>>2]>>0]|0;f=jE(d[(c[g>>2]|0)+1>>0]|0|0,0,8)|0;a=dE(h|0,0,f|0,y|0)|0;f=y;h=jE(d[(c[g>>2]|0)+2>>0]|0|0,0,16)|0;p=dE(a|0,f|0,h|0,y|0)|0;h=y;f=jE(d[(c[g>>2]|0)+3>>0]|0|0,0,24)|0;a=dE(p|0,h|0,f|0,y|0)|0;f=dE(a|0,y|0,0,d[(c[g>>2]|0)+4>>0]|0|0)|0;a=y;h=jE(d[(c[g>>2]|0)+5>>0]|0|0,0,40)|0;p=dE(f|0,a|0,h|0,y|0)|0;h=y;a=jE(d[(c[g>>2]|0)+6>>0]|0|0,0,48)|0;f=dE(p|0,h|0,a|0,y|0)|0;a=y;h=jE(d[(c[g>>2]|0)+7>>0]|0|0,0,56)|0;g=dE(f|0,a|0,h|0,y|0)|0;h=e;c[h>>2]=g;c[h+4>>2]=y;i=e;j=i;k=c[j>>2]|0;m=i+4|0;n=m;o=c[n>>2]|0;y=o;l=b;return k|0;}return 0;}function Jw(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;a[f+4>>0]=a[b+4>>0]|0;a[f+5>>0]=a[b+5>>0]|0;a[f+6>>0]=a[b+6>>0]|0;a[f+7>>0]=a[b+7>>0]|0;b=f;y=c[b+4>>2]|0;l=d;return c[b>>2]|0;}function Kw(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Lw(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=a;a=(tr()|0)!=0;i=c[g>>2]|0;if(a){b[f>>1]=Tw(i)|0;j=b[f>>1]|0;l=e;return j|0;}else{c[h>>2]=i;b[f>>1]=(d[c[h>>2]>>0]|0)+((d[(c[h>>2]|0)+1>>0]|0)<<8);j=b[f>>1]|0;l=e;return j|0;}return 0;}function Mw(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+20|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=d;a[h>>0]=e;c[i>>2]=c[g>>2];c[j>>2]=c[i>>2];c[k>>2]=(c[g>>2]|0)+4;c[m>>2]=c[k>>2];b[c[j>>2]>>1]=0;b[(c[j>>2]|0)+2>>1]=0;b[c[m>>2]>>1]=0;a[(c[m>>2]|0)+2>>0]=a[h>>0]|0;a[(c[m>>2]|0)+3>>0]=0;l=f;return 0;}function Nw(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+48|0;g=f+40|0;h=f+36|0;i=f+32|0;j=f+28|0;k=f+24|0;m=f+20|0;n=f+16|0;o=f+12|0;p=f+8|0;q=f+4|0;r=f;c[h>>2]=d;c[i>>2]=e;c[j>>2]=c[h>>2];c[k>>2]=c[j>>2];c[m>>2]=(c[h>>2]|0)+4;c[n>>2]=c[m>>2];c[o>>2]=1<<c[i>>2];c[p>>2]=(c[o>>2]|0)-1;c[q>>2]=c[p>>2];if((c[i>>2]|0)>>>0<1){c[g>>2]=-1;s=c[g>>2]|0;l=f;return s|0;}b[c[k>>2]>>1]=c[i>>2];b[(c[k>>2]|0)+2>>1]=1;c[r>>2]=0;while(1){if((c[r>>2]|0)>>>0>(c[q>>2]|0)>>>0)break;b[(c[n>>2]|0)+(c[r>>2]<<2)>>1]=0;a[(c[n>>2]|0)+(c[r>>2]<<2)+2>>0]=c[r>>2];a[(c[n>>2]|0)+(c[r>>2]<<2)+3>>0]=c[i>>2];c[r>>2]=(c[r>>2]|0)+1;}c[g>>2]=0;s=c[g>>2]|0;l=f;return s|0;}function Ow(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+20|0;v=h+16|0;w=h+12|0;x=h+8|0;y=h+4|0;z=h;A=h+70|0;B=h+68|0;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[p>>2];c[x>>2]=0;c[y>>2]=0;if((c[o>>2]|0)>>>0<4){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=pr(c[r>>2]|0)|0;c[s>>2]=(c[v>>2]&15)+5;if((c[s>>2]|0)>15){c[i>>2]=-44;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=(c[v>>2]|0)>>>4;c[w>>2]=4;c[c[m>>2]>>2]=c[s>>2];c[t>>2]=(1<<c[s>>2])+1;c[u>>2]=1<<c[s>>2];c[s>>2]=(c[s>>2]|0)+1;a:while(1){if((c[t>>2]|0)<=1)break;if((c[x>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0)break;do{if(c[y>>2]|0){c[z>>2]=c[x>>2];while(1){if((c[v>>2]&65535|0)!=65535)break;c[z>>2]=(c[z>>2]|0)+24;if((c[r>>2]|0)>>>0<((c[q>>2]|0)+-5|0)>>>0){c[r>>2]=(c[r>>2]|0)+2;m=pr(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]|0);}else{c[v>>2]=(c[v>>2]|0)>>>16;c[w>>2]=(c[w>>2]|0)+16;}}while(1){if((c[v>>2]&3|0)!=3)break;c[z>>2]=(c[z>>2]|0)+3;c[v>>2]=(c[v>>2]|0)>>>2;c[w>>2]=(c[w>>2]|0)+2;}c[z>>2]=(c[z>>2]|0)+(c[v>>2]&3);c[w>>2]=(c[w>>2]|0)+2;if((c[z>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0){D=19;break a;}while(1){if((c[x>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break;m=c[j>>2]|0;n=c[x>>2]|0;c[x>>2]=n+1;b[m+(n<<1)>>1]=0;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[v>>2]=(c[v>>2]|0)>>>2;break;}c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;n=pr(c[r>>2]|0)|0;c[v>>2]=n>>>(c[w>>2]|0);}}while(0);b[A>>1]=(c[u>>2]<<1)-1-(c[t>>2]|0);n=c[v>>2]|0;m=c[u>>2]|0;if((c[v>>2]&(c[u>>2]|0)-1)>>>0<(b[A>>1]|0)>>>0){b[B>>1]=n&m-1;c[w>>2]=(c[w>>2]|0)+((c[s>>2]|0)-1);}else{b[B>>1]=n&(m<<1)-1;if((b[B>>1]|0)>=(c[u>>2]|0))b[B>>1]=(b[B>>1]|0)-(b[A>>1]|0);c[w>>2]=(c[w>>2]|0)+(c[s>>2]|0);}b[B>>1]=(b[B>>1]|0)+-1<<16>>16;m=(Sw(b[B>>1]|0)|0)<<16>>16;c[t>>2]=(c[t>>2]|0)-m;m=b[B>>1]|0;n=c[j>>2]|0;g=c[x>>2]|0;c[x>>2]=g+1;b[n+(g<<1)>>1]=m;c[y>>2]=((b[B>>1]|0)!=0^1)&1;while(1){if((c[t>>2]|0)>=(c[u>>2]|0))break;c[s>>2]=(c[s>>2]|0)+-1;c[u>>2]=c[u>>2]>>1;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[w>>2]=(c[w>>2]|0)-((c[q>>2]|0)+-4-(c[r>>2]|0)<<3);c[r>>2]=(c[q>>2]|0)+-4;}else{c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;}m=pr(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]&31);}if((D|0)==19){c[i>>2]=-48;C=c[i>>2]|0;l=h;return C|0;}if((c[t>>2]|0)!=1){c[i>>2]=-1;C=c[i>>2]|0;l=h;return C|0;}c[c[k>>2]>>2]=(c[x>>2]|0)-1;c[r>>2]=(c[r>>2]|0)+((c[w>>2]|0)+7>>3);if(((c[r>>2]|0)-(c[p>>2]|0)|0)>>>0>(c[o>>2]|0)>>>0){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}else{c[i>>2]=(c[r>>2]|0)-(c[p>>2]|0);C=c[i>>2]|0;l=h;return C|0;}return 0;}function Pw(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=sr(c[d>>2]|0)|0;l=b;return a|0;}function Qw(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;j=l;l=l+592|0;k=j+572|0;m=j+568|0;n=j+564|0;o=j+560|0;p=j+556|0;q=j+580|0;r=j+552|0;s=j+548|0;t=j+544|0;u=j+540|0;v=j+536|0;w=j;x=j+532|0;y=j+528|0;z=j+578|0;A=j+524|0;B=j+520|0;C=j+516|0;D=j+512|0;E=j+584|0;F=j+576|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=i;c[r>>2]=(c[m>>2]|0)+4;c[s>>2]=c[r>>2];c[t>>2]=1<<c[p>>2];c[u>>2]=(c[t>>2]|0)-1;c[v>>2]=Rw(c[t>>2]|0)|0;c[x>>2]=0;c[y>>2]=(c[t>>2]|0)-1;b[z>>1]=1<<(c[p>>2]|0)-1;c[A>>2]=1;if((c[o>>2]|0)>>>0>255){c[k>>2]=-46;G=c[k>>2]|0;l=j;return G|0;}if((c[p>>2]|0)>>>0>12){c[k>>2]=-44;G=c[k>>2]|0;l=j;return G|0;}b[q>>1]=c[p>>2];c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;if((b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0)==-1){r=c[B>>2]&255;i=c[s>>2]|0;h=c[y>>2]|0;c[y>>2]=h+-1;a[i+(h<<2)+2>>0]=r;b[w+(c[B>>2]<<1)>>1]=1;}else{if((b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0)>=(b[z>>1]|0))c[A>>2]=0;b[w+(c[B>>2]<<1)>>1]=b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0;}c[B>>2]=(c[B>>2]|0)+1;}c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;c[C>>2]=0;while(1){H=c[B>>2]|0;if((c[C>>2]|0)>=(b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0))break;a[(c[s>>2]|0)+(c[x>>2]<<2)+2>>0]=H;c[x>>2]=(c[x>>2]|0)+(c[v>>2]|0)&c[u>>2];while(1){if((c[x>>2]|0)>>>0<=(c[y>>2]|0)>>>0)break;c[x>>2]=(c[x>>2]|0)+(c[v>>2]|0)&c[u>>2];}c[C>>2]=(c[C>>2]|0)+1;}c[B>>2]=H+1;}if(c[x>>2]|0){c[k>>2]=-1;G=c[k>>2]|0;l=j;return G|0;}c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;a[E>>0]=a[(c[s>>2]|0)+(c[D>>2]<<2)+2>>0]|0;x=w+(d[E>>0]<<1)|0;H=b[x>>1]|0;b[x>>1]=H+1<<16>>16;b[F>>1]=H;H=c[p>>2]|0;x=H-(Kw(e[F>>1]|0)|0)&255;a[(c[s>>2]|0)+(c[D>>2]<<2)+3>>0]=x;b[(c[s>>2]|0)+(c[D>>2]<<2)>>1]=(e[F>>1]<<d[(c[s>>2]|0)+(c[D>>2]<<2)+3>>0])-(c[t>>2]|0);c[D>>2]=(c[D>>2]|0)+1;}b[q+2>>1]=c[A>>2];A=c[m>>2]|0;b[A>>1]=b[q>>1]|0;b[A+2>>1]=b[q+2>>1]|0;c[k>>2]=0;G=c[k>>2]|0;l=j;return G|0;}function Rw(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return((c[d>>2]|0)>>>1)+((c[d>>2]|0)>>>3)+3|0;}function Sw(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=a;a=b[d>>1]|0;l=c;return((b[d>>1]|0)<0?0-a|0:a)&65535|0;}function Tw(d){d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=c[f>>2]|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;l=e;return b[g>>1]|0;}function Uw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[j>>2];c[n>>2]=((pr(c[j>>2]|0)|0)&2097151)>>>2;c[o>>2]=((pr((c[m>>2]|0)+2|0)|0)&16777215)>>>5;if((c[n>>2]|0)>>>0>(c[c[i>>2]>>2]|0)>>>0){c[g>>2]=-20;p=c[g>>2]|0;l=f;return p|0;}if(((c[o>>2]|0)+5|0)>>>0>(c[k>>2]|0)>>>0){c[g>>2]=-20;p=c[g>>2]|0;l=f;return p|0;}if(Ww(Vw(c[h>>2]|0,c[n>>2]|0,(c[m>>2]|0)+5|0,c[o>>2]|0)|0)|0){c[g>>2]=-20;p=c[g>>2]|0;l=f;return p|0;}else{c[c[i>>2]>>2]=c[n>>2];c[g>>2]=(c[o>>2]|0)+5;p=c[g>>2]|0;l=f;return p|0;}return 0;}function Vw(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=l;l=l+48|0;h=g+44|0;i=g+40|0;j=g+36|0;k=g+32|0;m=g+28|0;n=g+24|0;o=g+20|0;p=g+8|0;q=g+4|0;r=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;c[o>>2]=(c[j>>2]|0)>>>8;c[q>>2]=0;if(!(c[j>>2]|0)){c[h>>2]=-70;s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)>>>0>(c[j>>2]|0)>>>0){c[h>>2]=-20;s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)==(c[j>>2]|0)){mE(c[i>>2]|0,c[k>>2]|0,c[j>>2]|0)|0;c[h>>2]=c[j>>2];s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)==1){oE(c[i>>2]|0,(d[c[k>>2]>>0]|0)&255|0,c[j>>2]|0)|0;c[h>>2]=c[j>>2];s=c[h>>2]|0;l=g;return s|0;}c[n>>2]=(c[m>>2]<<4>>>0)/((c[j>>2]|0)>>>0)|0;c[r>>2]=0;while(1){if((c[r>>2]|0)>=3)break;f=(c[7008+((c[n>>2]|0)*24|0)+(c[r>>2]<<3)>>2]|0)+(N(c[7008+((c[n>>2]|0)*24|0)+(c[r>>2]<<3)+4>>2]|0,c[o>>2]|0)|0)|0;c[p+(c[r>>2]<<2)>>2]=f;c[r>>2]=(c[r>>2]|0)+1;}r=p+4|0;c[r>>2]=(c[r>>2]|0)+((c[p+4>>2]|0)>>>4);r=p+8|0;c[r>>2]=(c[r>>2]|0)+((c[p+8>>2]|0)>>>3);if((c[p+4>>2]|0)>>>0<(c[p>>2]|0)>>>0)c[q>>2]=1;c[h>>2]=sc[c[11988+(c[q>>2]<<2)>>2]&15](c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;s=c[h>>2]|0;l=g;return s|0;}function Ww(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=sr(c[d>>2]|0)|0;l=b;return a|0;}function Xw(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+8224|0;h=g+8220|0;i=g+8216|0;j=g+8212|0;k=g+8208|0;m=g+8204|0;n=g;o=g+8200|0;p=g+8196|0;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;oE(n|0,0,8194)|0;b[n>>1]=12;c[o>>2]=c[k>>2];c[p>>2]=ox(n,c[k>>2]|0,c[m>>2]|0)|0;k=(Ww(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(k){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[m>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);c[h>>2]=px(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0,c[m>>2]|0,n)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function Yw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+16416|0;g=f+16412|0;h=f+16408|0;i=f+16404|0;j=f+16400|0;k=f+16396|0;m=f;n=f+16392|0;o=f+16388|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;oE(m|0,0,16388)|0;c[m>>2]=12;c[n>>2]=c[j>>2];c[o>>2]=Zw(m,c[j>>2]|0,c[k>>2]|0)|0;j=(Ww(c[o>>2]|0)|0)!=0;e=c[o>>2]|0;if(j){c[g>>2]=e;p=c[g>>2]|0;l=f;return p|0;}if(e>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;p=c[g>>2]|0;l=f;return p|0;}else{c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[o>>2]|0);c[g>>2]=_w(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,m)|0;p=c[g>>2]|0;l=f;return p|0;}return 0;}function Zw(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+2128|0;h=g+2120|0;i=g+2116|0;j=g+2112|0;k=g+2108|0;m=g+1760|0;n=g+1248|0;o=g+1168|0;p=g+1088|0;q=g+2104|0;r=g;s=g+2100|0;t=g+2096|0;u=g+2092|0;v=g+2088|0;w=g+2084|0;x=g+2080|0;y=g+2076|0;z=g+2072|0;A=g+2068|0;B=g+2064|0;C=g+2060|0;D=g+2056|0;E=g+2052|0;F=g+2048|0;G=g+2044|0;H=g+2040|0;I=g+2036|0;J=g+2032|0;K=g+2028|0;L=g+2024|0;M=g+2020|0;N=g+2016|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;f=o;e=f+68|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));f=p;e=f+72|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));c[q>>2]=p+4;c[w>>2]=c[c[i>>2]>>2];c[y>>2]=c[i>>2];c[z>>2]=(c[y>>2]|0)+4;if((c[w>>2]|0)>>>0>16){c[h>>2]=-44;O=c[h>>2]|0;l=g;return O|0;}c[x>>2]=ex(m,256,o,v,s,c[j>>2]|0,c[k>>2]|0)|0;if(Ww(c[x>>2]|0)|0){c[h>>2]=c[x>>2];O=c[h>>2]|0;l=g;return O|0;}if((c[s>>2]|0)>>>0>(c[w>>2]|0)>>>0){c[h>>2]=-44;O=c[h>>2]|0;l=g;return O|0;}c[t>>2]=c[s>>2];while(1){if(c[o+(c[t>>2]<<2)>>2]|0)break;if(!(c[t>>2]|0)){P=10;break;}c[t>>2]=(c[t>>2]|0)+-1;}if((P|0)==10){c[h>>2]=-1;O=c[h>>2]|0;l=g;return O|0;}c[B>>2]=0;c[A>>2]=1;while(1){Q=c[B>>2]|0;if((c[A>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[C>>2]=Q;c[B>>2]=(c[B>>2]|0)+(c[o+(c[A>>2]<<2)>>2]|0);c[(c[q>>2]|0)+(c[A>>2]<<2)>>2]=c[C>>2];c[A>>2]=(c[A>>2]|0)+1;}c[c[q>>2]>>2]=Q;c[u>>2]=c[B>>2];c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;c[E>>2]=d[m+(c[D>>2]|0)>>0];B=(c[q>>2]|0)+(c[E>>2]<<2)|0;Q=c[B>>2]|0;c[B>>2]=Q+1;c[F>>2]=Q;a[n+(c[F>>2]<<1)>>0]=c[D>>2];a[n+(c[F>>2]<<1)+1>>0]=c[E>>2];c[D>>2]=(c[D>>2]|0)+1;}c[c[q>>2]>>2]=0;c[G>>2]=(c[s>>2]|0)+1-(c[t>>2]|0);c[H>>2]=0;c[K>>2]=(c[w>>2]|0)-(c[s>>2]|0)-1;c[L>>2]=r;c[I>>2]=1;while(1){if((c[I>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[M>>2]=c[H>>2];c[H>>2]=(c[H>>2]|0)+(c[o+(c[I>>2]<<2)>>2]<<(c[I>>2]|0)+(c[K>>2]|0));c[(c[L>>2]|0)+(c[I>>2]<<2)>>2]=c[M>>2];c[I>>2]=(c[I>>2]|0)+1;}c[J>>2]=c[G>>2];while(1){if((c[J>>2]|0)>>>0>((c[w>>2]|0)-(c[G>>2]|0)|0)>>>0)break;c[N>>2]=r+((c[J>>2]|0)*68|0);c[I>>2]=1;while(1){if((c[I>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[(c[N>>2]|0)+(c[I>>2]<<2)>>2]=(c[(c[L>>2]|0)+(c[I>>2]<<2)>>2]|0)>>>(c[J>>2]|0);c[I>>2]=(c[I>>2]|0)+1;}c[J>>2]=(c[J>>2]|0)+1;}fx(c[z>>2]|0,c[w>>2]|0,n,c[u>>2]|0,p,r,c[t>>2]|0,(c[s>>2]|0)+1|0);c[h>>2]=c[x>>2];O=c[h>>2]|0;l=g;return O|0;}function _w(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+192|0;h=g+184|0;i=g+180|0;j=g+176|0;k=g+172|0;m=g+168|0;n=g+164|0;o=g+160|0;p=g+156|0;q=g+152|0;r=g+148|0;s=g+144|0;t=g+140|0;u=g+136|0;v=g+120|0;w=g+104|0;x=g+88|0;y=g+72|0;z=g+64|0;A=g+60|0;B=g+56|0;C=g+52|0;D=g+48|0;E=g+44|0;F=g+40|0;G=g+36|0;H=g+32|0;I=g+28|0;J=g+24|0;K=g+20|0;L=g+16|0;M=g+12|0;N=g+8|0;O=g+4|0;P=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[m>>2]|0)>>>0<10){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}c[o>>2]=c[k>>2];c[p>>2]=c[i>>2];c[q>>2]=(c[p>>2]|0)+(c[j>>2]|0);c[r>>2]=c[n>>2];c[s>>2]=(c[r>>2]|0)+4;c[t>>2]=c[c[n>>2]>>2];c[z>>2]=(Lw(c[o>>2]|0)|0)&65535;c[A>>2]=(Lw((c[o>>2]|0)+2|0)|0)&65535;c[B>>2]=(Lw((c[o>>2]|0)+4|0)|0)&65535;c[D>>2]=(c[o>>2]|0)+6;c[E>>2]=(c[D>>2]|0)+(c[z>>2]|0);c[F>>2]=(c[E>>2]|0)+(c[A>>2]|0);c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(((c[j>>2]|0)+3|0)>>>0)/4|0;c[I>>2]=(c[p>>2]|0)+(c[H>>2]|0);c[J>>2]=(c[I>>2]|0)+(c[H>>2]|0);c[K>>2]=(c[J>>2]|0)+(c[H>>2]|0);c[L>>2]=c[p>>2];c[M>>2]=c[I>>2];c[N>>2]=c[J>>2];c[O>>2]=c[K>>2];c[C>>2]=(c[m>>2]|0)-((c[z>>2]|0)+(c[A>>2]|0)+(c[B>>2]|0)+6);if((c[C>>2]|0)>>>0>(c[m>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=tw(v,c[D>>2]|0,c[z>>2]|0)|0;if(Ww(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=tw(w,c[E>>2]|0,c[A>>2]|0)|0;if(Ww(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=tw(x,c[F>>2]|0,c[B>>2]|0)|0;if(Ww(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=tw(y,c[G>>2]|0,c[C>>2]|0)|0;if(Ww(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}u=vw(v)|0;C=u|(vw(w)|0);u=C|(vw(x)|0);c[P>>2]=u|(vw(y)|0);while(1){if(c[P>>2]|0)break;if((c[O>>2]|0)>>>0>=((c[q>>2]|0)+-7|0)>>>0)break;if($w()|0){u=ax(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;}if($w()|0){u=ax(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;}if($w()|0){u=ax(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;}if($w()|0){u=ax(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;}$w()|0;u=ax(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;$w()|0;u=ax(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;$w()|0;u=ax(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;$w()|0;u=ax(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;if($w()|0){u=ax(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;}if($w()|0){u=ax(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;}if($w()|0){u=ax(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;}if($w()|0){u=ax(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;}u=ax(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;u=ax(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;u=ax(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;u=ax(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;u=vw(v)|0;C=u|(vw(w)|0);u=C|(vw(x)|0);c[P>>2]=u|(vw(y)|0);}if((c[L>>2]|0)>>>0>(c[I>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}if((c[M>>2]|0)>>>0>(c[J>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}bx(c[L>>2]|0,v,c[I>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;bx(c[M>>2]|0,w,c[J>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;bx(c[N>>2]|0,x,c[K>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;bx(c[O>>2]|0,y,c[q>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;t=yw(v)|0;v=t&(yw(w)|0);w=v&(yw(x)|0);c[P>>2]=w&(yw(y)|0);if(c[P>>2]|0){c[h>>2]=c[j>>2];Q=c[h>>2]|0;l=g;return Q|0;}else{c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}return 0;}function $w(){return 0;}function ax(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=dx(c[j>>2]|0,c[m>>2]|0)|0;m=c[i>>2]|0;i=(c[k>>2]|0)+(c[n>>2]<<2)|0;a[m>>0]=a[i>>0]|0;a[m+1>>0]=a[i+1>>0]|0;Gw(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0;}function bx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[h>>2];while(1){if(vw(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>=((c[j>>2]|0)+-7|0)>>>0)break;if($w()|0){f=ax(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}$w()|0;f=ax(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;if($w()|0){f=ax(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}f=ax(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){if(vw(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=ax(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){o=c[h>>2]|0;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=ax(o,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}if(o>>>0>=(c[j>>2]|0)>>>0){p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}j=cx(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+j;p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}function cx(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=dx(c[j>>2]|0,c[m>>2]|0)|0;a[c[i>>2]>>0]=a[(c[k>>2]|0)+(c[n>>2]<<2)>>0]|0;i=c[j>>2]|0;if((d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0)==1){Gw(i,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return 1;}if((c[i+4>>2]|0)>>>0>=32){l=h;return 1;}Gw(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);if((c[(c[j>>2]|0)+4>>2]|0)>>>0<=32){l=h;return 1;}c[(c[j>>2]|0)+4>>2]=32;l=h;return 1;}function dx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function ex(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;k=l;l=l+80|0;m=k+68|0;n=k+64|0;o=k+60|0;p=k+56|0;q=k+52|0;r=k+48|0;s=k+44|0;t=k+40|0;u=k+36|0;v=k+32|0;w=k+28|0;x=k+24|0;y=k+20|0;z=k+16|0;A=k+12|0;B=k+8|0;C=k+4|0;D=k;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[w>>2]=c[s>>2];if(!(c[t>>2]|0)){c[m>>2]=-72;E=c[m>>2]|0;l=k;return E|0;}c[x>>2]=d[c[w>>2]>>0];s=c[x>>2]|0;a:do{if((c[x>>2]|0)>>>0<128){if((s+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;E=c[m>>2]|0;l=k;return E|0;}c[y>>2]=jx(c[n>>2]|0,(c[o>>2]|0)-1|0,(c[w>>2]|0)+1|0,c[x>>2]|0)|0;if(Pw(c[y>>2]|0)|0){c[m>>2]=c[y>>2];E=c[m>>2]|0;l=k;return E|0;}}else{j=c[x>>2]|0;if(s>>>0>=242){c[y>>2]=c[7392+(j-242<<2)>>2];oE(c[n>>2]|0,1,c[o>>2]|0)|0;c[x>>2]=0;break;}c[y>>2]=j-127;c[x>>2]=(((c[y>>2]|0)+1|0)>>>0)/2|0;if(((c[x>>2]|0)+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;E=c[m>>2]|0;l=k;return E|0;}if((c[y>>2]|0)>>>0>=(c[o>>2]|0)>>>0){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}c[w>>2]=(c[w>>2]|0)+1;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break a;a[(c[n>>2]|0)+(c[z>>2]|0)>>0]=(d[(c[w>>2]|0)+(((c[z>>2]|0)>>>0)/2|0)>>0]|0)>>4;a[(c[n>>2]|0)+((c[z>>2]|0)+1)>>0]=(d[(c[w>>2]|0)+(((c[z>>2]|0)>>>0)/2|0)>>0]|0)&15;c[z>>2]=(c[z>>2]|0)+2;}}}while(0);w=c[p>>2]|0;o=w+68|0;do{c[w>>2]=0;w=w+4|0;}while((w|0)<(o|0));c[u>>2]=0;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break;if((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0|0)>=16){F=20;break;}w=(c[p>>2]|0)+((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)<<2)|0;c[w>>2]=(c[w>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+(1<<(d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)>>1);c[z>>2]=(c[z>>2]|0)+1;}if((F|0)==20){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}if(!(c[u>>2]|0)){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}c[v>>2]=(Kw(c[u>>2]|0)|0)+1;if((c[v>>2]|0)>>>0>16){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}c[A>>2]=1<<c[v>>2];c[B>>2]=(c[A>>2]|0)-(c[u>>2]|0);c[C>>2]=1<<(Kw(c[B>>2]|0)|0);c[D>>2]=(Kw(c[B>>2]|0)|0)+1;if((c[C>>2]|0)!=(c[B>>2]|0)){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}a[(c[n>>2]|0)+(c[y>>2]|0)>>0]=c[D>>2];n=(c[p>>2]|0)+(c[D>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;if((c[(c[p>>2]|0)+4>>2]|0)>>>0>=2?(c[(c[p>>2]|0)+4>>2]&1|0)==0:0){c[c[q>>2]>>2]=(c[y>>2]|0)+1;c[c[r>>2]>>2]=c[v>>2];c[m>>2]=(c[x>>2]|0)+1;E=c[m>>2]|0;l=k;return E|0;}c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}function fx(e,f,g,h,i,j,k,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;n=l;l=l+160|0;o=n+140|0;p=n+136|0;q=n+132|0;r=n+128|0;s=n+124|0;t=n+120|0;u=n+116|0;v=n+112|0;w=n;x=n+108|0;y=n+104|0;z=n+100|0;A=n+148|0;B=n+96|0;C=n+92|0;D=n+88|0;E=n+84|0;F=n+80|0;G=n+76|0;H=n+72|0;I=n+68|0;J=n+144|0;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=k;c[v>>2]=m;c[x>>2]=(c[v>>2]|0)-(c[p>>2]|0);c[y>>2]=(c[v>>2]|0)-(c[u>>2]|0);u=w;m=c[t>>2]|0;k=u+68|0;do{c[u>>2]=c[m>>2];u=u+4|0;m=m+4|0;}while((u|0)<(k|0));c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;b[A>>1]=d[(c[q>>2]|0)+(c[z>>2]<<1)>>0]|0;c[B>>2]=d[(c[q>>2]|0)+(c[z>>2]<<1)+1>>0];c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);c[D>>2]=c[w+(c[B>>2]<<2)>>2];c[E>>2]=1<<(c[p>>2]|0)-(c[C>>2]|0);a:do{if(((c[p>>2]|0)-(c[C>>2]|0)|0)>>>0>=(c[y>>2]|0)>>>0){m=(c[C>>2]|0)+(c[x>>2]|0)|0;c[G>>2]=m;c[G>>2]=(c[G>>2]|0)<1?1:m;c[F>>2]=c[(c[s>>2]|0)+(c[G>>2]<<2)>>2];gx((c[o>>2]|0)+(c[D>>2]<<2)|0,(c[p>>2]|0)-(c[C>>2]|0)|0,c[C>>2]|0,(c[t>>2]|0)+((c[C>>2]|0)*68|0)|0,c[G>>2]|0,(c[q>>2]|0)+(c[F>>2]<<1)|0,(c[r>>2]|0)-(c[F>>2]|0)|0,c[v>>2]|0,b[A>>1]|0);}else{c[I>>2]=(c[D>>2]|0)+(c[E>>2]|0);hx(J,b[A>>1]|0);a[J+2>>0]=c[C>>2];a[J+3>>0]=1;c[H>>2]=c[D>>2];while(1){if((c[H>>2]|0)>>>0>=(c[I>>2]|0)>>>0)break a;m=(c[o>>2]|0)+(c[H>>2]<<2)|0;b[m>>1]=b[J>>1]|0;b[m+2>>1]=b[J+2>>1]|0;c[H>>2]=(c[H>>2]|0)+1;}}}while(0);m=w+(c[B>>2]<<2)|0;c[m>>2]=(c[m>>2]|0)+(c[E>>2]|0);c[z>>2]=(c[z>>2]|0)+1;}l=n;return;}function gx(f,g,h,i,j,k,m,n,o){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;p=l;l=l+160|0;q=p+136|0;r=p+132|0;s=p+128|0;t=p+124|0;u=p+120|0;v=p+116|0;w=p+112|0;x=p+108|0;y=p+144|0;z=p+140|0;A=p;B=p+104|0;C=p+100|0;D=p+96|0;E=p+92|0;F=p+88|0;G=p+84|0;H=p+80|0;I=p+76|0;J=p+72|0;K=p+68|0;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;c[v>>2]=k;c[w>>2]=m;c[x>>2]=n;b[y>>1]=o;o=A;n=c[t>>2]|0;t=o+68|0;do{c[o>>2]=c[n>>2];o=o+4|0;n=n+4|0;}while((o|0)<(t|0));a:do{if((c[u>>2]|0)>1){c[D>>2]=c[A+(c[u>>2]<<2)>>2];hx(z,b[y>>1]|0);a[z+2>>0]=c[s>>2];a[z+3>>0]=1;c[C>>2]=0;while(1){if((c[C>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break a;n=(c[q>>2]|0)+(c[C>>2]<<2)|0;b[n>>1]=b[z>>1]|0;b[n+2>>1]=b[z+2>>1]|0;c[C>>2]=(c[C>>2]|0)+1;}}}while(0);c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[E>>2]=d[(c[v>>2]|0)+(c[B>>2]<<1)>>0];c[F>>2]=d[(c[v>>2]|0)+(c[B>>2]<<1)+1>>0];c[G>>2]=(c[x>>2]|0)-(c[F>>2]|0);c[H>>2]=1<<(c[r>>2]|0)-(c[G>>2]|0);c[I>>2]=c[A+(c[F>>2]<<2)>>2];c[J>>2]=c[I>>2];c[K>>2]=(c[I>>2]|0)+(c[H>>2]|0);hx(z,(e[y>>1]|0)+(c[E>>2]<<8)&65535);a[z+2>>0]=(c[G>>2]|0)+(c[s>>2]|0);a[z+3>>0]=2;do{C=c[q>>2]|0;D=c[J>>2]|0;c[J>>2]=D+1;u=C+(D<<2)|0;b[u>>1]=b[z>>1]|0;b[u+2>>1]=b[z+2>>1]|0;}while((c[J>>2]|0)>>>0<(c[K>>2]|0)>>>0);u=A+(c[F>>2]<<2)|0;c[u>>2]=(c[u>>2]|0)+(c[H>>2]|0);c[B>>2]=(c[B>>2]|0)+1;}l=p;return;}function hx(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(tr()|0)!=0;d=c[h>>2]|0;if(f){ix(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function ix(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=c[g>>2]|0;a[e>>0]=a[h>>0]|0;a[e+1>>0]=a[h+1>>0]|0;l=f;return;}function jx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=l;l=l+16960|0;g=f+16948|0;h=f+16944|0;i=f+16940|0;j=f+16936|0;k=f+16932|0;m=f+16928|0;n=f+16924|0;o=f+16400|0;p=f;q=f+16920|0;r=f+16916|0;s=f+16912|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[j>>2];c[n>>2]=c[m>>2];c[r>>2]=255;if((c[k>>2]|0)>>>0<2){c[g>>2]=-72;t=c[g>>2]|0;l=f;return t|0;}c[s>>2]=Ow(o,r,q,c[m>>2]|0,c[k>>2]|0)|0;m=(Pw(c[s>>2]|0)|0)!=0;j=c[s>>2]|0;if(m){c[g>>2]=j;t=c[g>>2]|0;l=f;return t|0;}if(j>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;t=c[g>>2]|0;l=f;return t|0;}c[n>>2]=(c[n>>2]|0)+(c[s>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[s>>2]|0);c[s>>2]=Qw(p,o,c[r>>2]|0,c[q>>2]|0)|0;if(Pw(c[s>>2]|0)|0){c[g>>2]=c[s>>2];t=c[g>>2]|0;l=f;return t|0;}else{c[g>>2]=kx(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,p)|0;t=c[g>>2]|0;l=f;return t|0;}return 0;}function kx(d,f,g,h,i){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;j=l;l=l+192|0;k=j+184|0;m=j+180|0;n=j+176|0;o=j+172|0;p=j+168|0;q=j+164|0;r=j+160|0;s=j+156|0;t=j+152|0;u=j+148|0;v=j+144|0;w=j+128|0;x=j+120|0;y=j+112|0;z=j+108|0;A=j+104|0;B=j+100|0;C=j+96|0;D=j+92|0;E=j+88|0;F=j+84|0;G=j+80|0;H=j+76|0;I=j+72|0;J=j+68|0;K=j+64|0;L=j+48|0;M=j+40|0;N=j+32|0;O=j+28|0;P=j+24|0;Q=j+20|0;R=j+16|0;S=j+12|0;T=j+8|0;U=j+4|0;V=j+188|0;W=j;c[Q>>2]=d;c[R>>2]=f;c[S>>2]=g;c[T>>2]=h;c[U>>2]=i;i=c[U>>2]|0;b[V>>1]=b[i>>1]|0;b[V+2>>1]=b[i+2>>1]|0;c[W>>2]=e[V+2>>1];V=c[Q>>2]|0;Q=c[R>>2]|0;R=c[S>>2]|0;S=c[T>>2]|0;T=c[U>>2]|0;if(c[W>>2]|0){c[B>>2]=V;c[C>>2]=Q;c[D>>2]=R;c[E>>2]=S;c[F>>2]=T;c[G>>2]=1;c[H>>2]=c[B>>2];c[I>>2]=c[H>>2];c[J>>2]=(c[I>>2]|0)+(c[C>>2]|0);c[K>>2]=(c[J>>2]|0)+-3;c[O>>2]=tw(L,c[D>>2]|0,c[E>>2]|0)|0;do{if(!(Pw(c[O>>2]|0)|0)){uw(M,L,c[F>>2]|0);uw(N,L,c[F>>2]|0);while(1){if(vw(L)|0)break;if((c[I>>2]|0)>>>0>=(c[K>>2]|0)>>>0)break;if(c[G>>2]|0)X=(lx(M,L)|0)&255;else X=(Cw(M,L)|0)&255;a[c[I>>2]>>0]=X;if(c[G>>2]|0)Y=(lx(N,L)|0)&255;else Y=(Cw(N,L)|0)&255;a[(c[I>>2]|0)+1>>0]=Y;if((vw(L)|0)>>>0>0){Z=14;break;}if(c[G>>2]|0)_=(lx(M,L)|0)&255;else _=(Cw(M,L)|0)&255;a[(c[I>>2]|0)+2>>0]=_;if(c[G>>2]|0)$=(lx(N,L)|0)&255;else $=(Cw(N,L)|0)&255;a[(c[I>>2]|0)+3>>0]=$;c[I>>2]=(c[I>>2]|0)+4;}if((Z|0)==14)c[I>>2]=(c[I>>2]|0)+2;while(1){if((vw(L)|0)>>>0>2)break;if((c[I>>2]|0)==(c[J>>2]|0))break;if(yw(L)|0){if(c[G>>2]|0)break;if(mx(M)|0)break;}if(c[G>>2]|0)aa=(lx(M,L)|0)&255;else aa=(Cw(M,L)|0)&255;E=c[I>>2]|0;c[I>>2]=E+1;a[E>>0]=aa;if((vw(L)|0)>>>0>2)break;if((c[I>>2]|0)==(c[J>>2]|0))break;if(yw(L)|0){if(c[G>>2]|0)break;if(mx(N)|0)break;}if(c[G>>2]|0)ba=(lx(N,L)|0)&255;else ba=(Cw(N,L)|0)&255;E=c[I>>2]|0;c[I>>2]=E+1;a[E>>0]=ba;}if((yw(L)|0?mx(M)|0:0)?mx(N)|0:0){c[A>>2]=(c[I>>2]|0)-(c[H>>2]|0);break;}if((c[I>>2]|0)==(c[J>>2]|0)){c[A>>2]=-70;break;}else{c[A>>2]=-20;break;}}else c[A>>2]=c[O>>2];}while(0);c[P>>2]=c[A>>2];ca=c[P>>2]|0;l=j;return ca|0;}else{c[m>>2]=V;c[n>>2]=Q;c[o>>2]=R;c[p>>2]=S;c[q>>2]=T;c[r>>2]=0;c[s>>2]=c[m>>2];c[t>>2]=c[s>>2];c[u>>2]=(c[t>>2]|0)+(c[n>>2]|0);c[v>>2]=(c[u>>2]|0)+-3;c[z>>2]=tw(w,c[o>>2]|0,c[p>>2]|0)|0;do{if(!(Pw(c[z>>2]|0)|0)){uw(x,w,c[q>>2]|0);uw(y,w,c[q>>2]|0);while(1){if(vw(w)|0)break;if((c[t>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;if(c[r>>2]|0)da=(lx(x,w)|0)&255;else da=(Cw(x,w)|0)&255;a[c[t>>2]>>0]=da;if(c[r>>2]|0)ea=(lx(y,w)|0)&255;else ea=(Cw(y,w)|0)&255;a[(c[t>>2]|0)+1>>0]=ea;if((vw(w)|0)>>>0>0){Z=60;break;}if(c[r>>2]|0)fa=(lx(x,w)|0)&255;else fa=(Cw(x,w)|0)&255;a[(c[t>>2]|0)+2>>0]=fa;if(c[r>>2]|0)ga=(lx(y,w)|0)&255;else ga=(Cw(y,w)|0)&255;a[(c[t>>2]|0)+3>>0]=ga;c[t>>2]=(c[t>>2]|0)+4;}if((Z|0)==60)c[t>>2]=(c[t>>2]|0)+2;while(1){if((vw(w)|0)>>>0>2)break;if((c[t>>2]|0)==(c[u>>2]|0))break;if(yw(w)|0){if(c[r>>2]|0)break;if(mx(x)|0)break;}if(c[r>>2]|0)ha=(lx(x,w)|0)&255;else ha=(Cw(x,w)|0)&255;p=c[t>>2]|0;c[t>>2]=p+1;a[p>>0]=ha;if((vw(w)|0)>>>0>2)break;if((c[t>>2]|0)==(c[u>>2]|0))break;if(yw(w)|0){if(c[r>>2]|0)break;if(mx(y)|0)break;}if(c[r>>2]|0)ia=(lx(y,w)|0)&255;else ia=(Cw(y,w)|0)&255;p=c[t>>2]|0;c[t>>2]=p+1;a[p>>0]=ia;}if((yw(w)|0?mx(x)|0:0)?mx(y)|0:0){c[k>>2]=(c[t>>2]|0)-(c[s>>2]|0);break;}if((c[t>>2]|0)==(c[u>>2]|0)){c[k>>2]=-70;break;}else{c[k>>2]=-20;break;}}else c[k>>2]=c[z>>2];}while(0);c[P>>2]=c[k>>2];ca=c[P>>2]|0;l=j;return ca|0;}return 0;}function lx(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=nx(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function mx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[c[d>>2]>>2]|0)==0|0;}function nx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=dx(c[e>>2]|0,c[f>>2]|0)|0;Gw(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function ox(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;i=l;l=l+400|0;j=i+392|0;k=i+388|0;m=i+384|0;n=i+380|0;o=i+80|0;p=i;q=i+376|0;r=i+372|0;s=i+368|0;t=i+364|0;u=i+360|0;v=i+356|0;w=i+352|0;x=i+348|0;y=i+344|0;z=i+340|0;A=i+336|0;B=i+396|0;c[k>>2]=f;c[m>>2]=g;c[n>>2]=h;c[q>>2]=0;c[s>>2]=0;c[v>>2]=(c[k>>2]|0)+2;c[w>>2]=c[v>>2];c[r>>2]=ex(o,256,p,s,q,c[m>>2]|0,c[n>>2]|0)|0;if(Ww(c[r>>2]|0)|0){c[j>>2]=c[r>>2];C=c[j>>2]|0;l=i;return C|0;}if((c[q>>2]|0)>>>0>(e[c[k>>2]>>1]|0)>>>0){c[j>>2]=-44;C=c[j>>2]|0;l=i;return C|0;}b[c[k>>2]>>1]=c[q>>2];c[u>>2]=0;c[t>>2]=1;while(1){if((c[t>>2]|0)>>>0>(c[q>>2]|0)>>>0)break;c[x>>2]=c[u>>2];c[u>>2]=(c[u>>2]|0)+(c[p+(c[t>>2]<<2)>>2]<<(c[t>>2]|0)-1);c[p+(c[t>>2]<<2)>>2]=c[x>>2];c[t>>2]=(c[t>>2]|0)+1;}c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;c[y>>2]=d[o+(c[t>>2]|0)>>0];c[z>>2]=1<<c[y>>2]>>1;a[B>>0]=c[t>>2];a[B+1>>0]=(c[q>>2]|0)+1-(c[y>>2]|0);c[A>>2]=c[p+(c[y>>2]<<2)>>2];while(1){if((c[A>>2]|0)>>>0>=((c[p+(c[y>>2]<<2)>>2]|0)+(c[z>>2]|0)|0)>>>0)break;x=(c[w>>2]|0)+(c[A>>2]<<1)|0;a[x>>0]=a[B>>0]|0;a[x+1>>0]=a[B+1>>0]|0;c[A>>2]=(c[A>>2]|0)+1;}x=p+(c[y>>2]<<2)|0;c[x>>2]=(c[x>>2]|0)+(c[z>>2]|0);c[t>>2]=(c[t>>2]|0)+1;}c[j>>2]=c[r>>2];C=c[j>>2]|0;l=i;return C|0;}function px(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;i=l;l=l+192|0;j=i+184|0;k=i+180|0;m=i+176|0;n=i+172|0;o=i+168|0;p=i+164|0;q=i+160|0;r=i+156|0;s=i+152|0;t=i+148|0;u=i+144|0;v=i+140|0;w=i+136|0;x=i+120|0;y=i+104|0;z=i+88|0;A=i+72|0;B=i+64|0;C=i+60|0;D=i+56|0;E=i+52|0;F=i+48|0;G=i+44|0;H=i+40|0;I=i+36|0;J=i+32|0;K=i+28|0;L=i+24|0;M=i+20|0;N=i+16|0;O=i+12|0;P=i+8|0;Q=i+4|0;R=i;c[k>>2]=b;c[m>>2]=d;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;if((c[o>>2]|0)>>>0<10){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}c[q>>2]=c[n>>2];c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=c[p>>2];c[u>>2]=(c[t>>2]|0)+2;c[v>>2]=e[c[p>>2]>>1];c[B>>2]=(Lw(c[q>>2]|0)|0)&65535;c[C>>2]=(Lw((c[q>>2]|0)+2|0)|0)&65535;c[D>>2]=(Lw((c[q>>2]|0)+4|0)|0)&65535;c[F>>2]=(c[q>>2]|0)+6;c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(c[G>>2]|0)+(c[C>>2]|0);c[I>>2]=(c[H>>2]|0)+(c[D>>2]|0);c[J>>2]=(((c[m>>2]|0)+3|0)>>>0)/4|0;c[K>>2]=(c[r>>2]|0)+(c[J>>2]|0);c[L>>2]=(c[K>>2]|0)+(c[J>>2]|0);c[M>>2]=(c[L>>2]|0)+(c[J>>2]|0);c[N>>2]=c[r>>2];c[O>>2]=c[K>>2];c[P>>2]=c[L>>2];c[Q>>2]=c[M>>2];c[E>>2]=(c[o>>2]|0)-((c[B>>2]|0)+(c[C>>2]|0)+(c[D>>2]|0)+6);if((c[E>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=tw(x,c[F>>2]|0,c[B>>2]|0)|0;if(Ww(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=tw(y,c[G>>2]|0,c[C>>2]|0)|0;if(Ww(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=tw(z,c[H>>2]|0,c[D>>2]|0)|0;if(Ww(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=tw(A,c[I>>2]|0,c[E>>2]|0)|0;if(Ww(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}w=vw(x)|0;E=w|(vw(y)|0);w=E|(vw(z)|0);c[R>>2]=w|(vw(A)|0);while(1){if(c[R>>2]|0)break;if((c[Q>>2]|0)>>>0>=((c[s>>2]|0)+-7|0)>>>0)break;if($w()|0){w=qx(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;}if($w()|0){w=qx(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;}if($w()|0){w=qx(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;}if($w()|0){w=qx(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;}$w()|0;w=qx(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;$w()|0;w=qx(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;$w()|0;w=qx(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;$w()|0;w=qx(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;if($w()|0){w=qx(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;}if($w()|0){w=qx(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;}if($w()|0){w=qx(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;}if($w()|0){w=qx(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;}w=qx(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;w=qx(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;w=qx(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;w=qx(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;w=vw(x)|0;E=w|(vw(y)|0);w=E|(vw(z)|0);c[R>>2]=w|(vw(A)|0);}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}if((c[O>>2]|0)>>>0>(c[L>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}if((c[P>>2]|0)>>>0>(c[M>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}rx(c[N>>2]|0,x,c[K>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;rx(c[O>>2]|0,y,c[L>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;rx(c[P>>2]|0,z,c[M>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;rx(c[Q>>2]|0,A,c[s>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;v=yw(x)|0;x=v&(yw(y)|0);y=x&(yw(z)|0);c[R>>2]=y&(yw(A)|0);if(c[R>>2]|0){c[j>>2]=c[m>>2];S=c[j>>2]|0;l=i;return S|0;}else{c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}return 0;}function qx(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+16|0;c[h>>2]=b;c[i>>2]=e;c[j>>2]=f;c[k>>2]=dx(c[h>>2]|0,c[j>>2]|0)|0;a[m>>0]=a[(c[i>>2]|0)+(c[k>>2]<<1)>>0]|0;Gw(c[h>>2]|0,d[(c[i>>2]|0)+(c[k>>2]<<1)+1>>0]|0);l=g;return a[m>>0]|0;}function rx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[i>>2];while(1){if(vw(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>((c[k>>2]|0)+-4|0)>>>0)break;if($w()|0){g=qx(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}$w()|0;g=qx(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;if($w()|0){g=qx(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}g=qx(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if(vw(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=qx(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=qx(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}l=h;return(c[k>>2]|0)-(c[o>>2]|0)|0;}function sx(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;if((c[j>>2]|0)>>>0<5){c[g>>2]=5;m=c[g>>2]|0;l=f;return m|0;}c[k>>2]=pr(c[i>>2]|0)|0;if((c[k>>2]|0)!=-47205084){c[g>>2]=-10;m=c[g>>2]|0;l=f;return m|0;}k=c[h>>2]|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;c[(c[h>>2]|0)+8>>2]=((d[(c[i>>2]|0)+4>>0]|0)&15)+11;if((d[(c[i>>2]|0)+4>>0]|0)>>4|0){c[g>>2]=-14;m=c[g>>2]|0;l=f;return m|0;}else{c[g>>2]=0;m=c[g>>2]|0;l=f;return m|0;}return 0;}function tx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+16|0;i=g+12|0;j=g+8|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;f=Zr(c[h>>2]|0,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,0,0)|0;l=g;return f|0;}function ux(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+12|0;k=f+8|0;m=f+4|0;n=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[n>>2]=Wp()|0;if(!(c[n>>2]|0)){c[g>>2]=-64;o=c[g>>2]|0;l=f;return o|0;}else{c[m>>2]=tx(c[n>>2]|0,c[h>>2]|0,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;Xp(c[n>>2]|0)|0;c[g>>2]=c[m>>2];o=c[g>>2]|0;l=f;return o|0;}return 0;}function vx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+28744>>2]|0;}function wx(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;switch(c[(c[e>>2]|0)+28804>>2]|0){case 6:case 7:{c[d>>2]=5;break;}case 2:{c[d>>2]=1;break;}case 3:{c[d>>2]=2;break;}case 4:{c[d>>2]=3;break;}case 5:{c[d>>2]=4;break;}default:c[d>>2]=0;}l=b;return c[d>>2]|0;}function xx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;g=l;l=l+64|0;h=g+52|0;i=g+48|0;j=g+44|0;k=g+40|0;m=g+36|0;n=g+32|0;o=g+28|0;p=g+16|0;q=g+12|0;r=g+8|0;s=g+4|0;t=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[n>>2]|0)!=(c[(c[i>>2]|0)+28744>>2]|0)){c[h>>2]=-72;u=c[h>>2]|0;l=g;return u|0;}if(c[k>>2]|0)Br(c[i>>2]|0,c[j>>2]|0);switch(c[(c[i>>2]|0)+28804>>2]|0){case 0:{if((c[(c[i>>2]|0)+28912>>2]|0)==0?((hq(c[m>>2]|0)|0)&-16|0)==407710288:0){mE((c[i>>2]|0)+160092|0,c[m>>2]|0,c[n>>2]|0)|0;c[(c[i>>2]|0)+28744>>2]=8-(c[n>>2]|0);c[(c[i>>2]|0)+28804>>2]=6;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}f=nq(c[m>>2]|0,c[n>>2]|0,c[(c[i>>2]|0)+28912>>2]|0)|0;c[(c[i>>2]|0)+28904>>2]=f;f=($q(c[(c[i>>2]|0)+28904>>2]|0)|0)!=0;e=c[i>>2]|0;if(f){c[h>>2]=c[e+28904>>2];u=c[h>>2]|0;l=g;return u|0;}else{mE(e+160092|0,c[m>>2]|0,c[n>>2]|0)|0;c[(c[i>>2]|0)+28744>>2]=(c[(c[i>>2]|0)+28904>>2]|0)-(c[n>>2]|0);c[(c[i>>2]|0)+28804>>2]=1;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}break;}case 1:{mE((c[i>>2]|0)+160092+((c[(c[i>>2]|0)+28904>>2]|0)-(c[n>>2]|0))|0,c[m>>2]|0,c[n>>2]|0)|0;c[o>>2]=fs(c[i>>2]|0,(c[i>>2]|0)+160092|0,c[(c[i>>2]|0)+28904>>2]|0)|0;if($q(c[o>>2]|0)|0){c[h>>2]=c[o>>2];u=c[h>>2]|0;l=g;return u|0;}else{c[(c[i>>2]|0)+28744>>2]=3;c[(c[i>>2]|0)+28804>>2]=2;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}break;}case 2:{c[q>>2]=br(c[m>>2]|0,3,p)|0;o=($q(c[q>>2]|0)|0)!=0;e=c[q>>2]|0;if(o){c[h>>2]=e;u=c[h>>2]|0;l=g;return u|0;}c[(c[i>>2]|0)+28744>>2]=e;c[(c[i>>2]|0)+28800>>2]=c[p>>2];c[(c[i>>2]|0)+28936>>2]=c[p+8>>2];e=(c[p+4>>2]|0)!=0;if(c[q>>2]|0){c[(c[i>>2]|0)+28804>>2]=e?4:3;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}q=c[i>>2]|0;do{if(e){p=(c[i>>2]|0)+28744|0;if(c[q+28752+32>>2]|0){c[p>>2]=4;c[(c[i>>2]|0)+28804>>2]=5;break;}else{c[p>>2]=0;c[(c[i>>2]|0)+28804>>2]=0;break;}}else{c[q+28744>>2]=3;c[(c[i>>2]|0)+28804>>2]=2;}}while(0);c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}case 3:case 4:{switch(c[(c[i>>2]|0)+28800>>2]|0){case 2:{c[r>>2]=Cr(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,1)|0;break;}case 0:{c[r>>2]=gs(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;break;}case 1:{c[r>>2]=yx(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[(c[i>>2]|0)+28936>>2]|0)|0;break;}default:{c[h>>2]=-20;u=c[h>>2]|0;l=g;return u|0;}}k=($q(c[r>>2]|0)|0)!=0;q=c[r>>2]|0;if(k){c[h>>2]=q;u=c[h>>2]|0;l=g;return u|0;}k=(c[i>>2]|0)+28792|0;e=k;p=k;c[p>>2]=dE(c[e>>2]|0,c[e+4>>2]|0,q|0,0)|0;c[p+4>>2]=y;if(c[(c[i>>2]|0)+28752+32>>2]|0)Nh((c[i>>2]|0)+28816|0,c[j>>2]|0,c[r>>2]|0)|0;p=c[i>>2]|0;do{if((c[(c[i>>2]|0)+28804>>2]|0)==4){q=p+28752|0;if(((c[q>>2]|0)!=-1?1:(c[q+4>>2]|0)!=-1)?(q=(c[i>>2]|0)+28792|0,e=(c[i>>2]|0)+28752|0,(c[q>>2]|0)!=(c[e>>2]|0)?1:(c[q+4>>2]|0)!=(c[e+4>>2]|0)):0){c[h>>2]=-20;u=c[h>>2]|0;l=g;return u|0;}e=(c[i>>2]|0)+28744|0;if(c[(c[i>>2]|0)+28752+32>>2]|0){c[e>>2]=4;c[(c[i>>2]|0)+28804>>2]=5;break;}else{c[e>>2]=0;c[(c[i>>2]|0)+28804>>2]=0;break;}}else{c[p+28804>>2]=2;c[(c[i>>2]|0)+28744>>2]=3;c[(c[i>>2]|0)+28728>>2]=(c[j>>2]|0)+(c[r>>2]|0);}}while(0);c[h>>2]=c[r>>2];u=c[h>>2]|0;l=g;return u|0;}case 5:{c[s>>2]=Oh((c[i>>2]|0)+28816|0)|0;c[t>>2]=hq(c[m>>2]|0)|0;if((c[t>>2]|0)!=(c[s>>2]|0)){c[h>>2]=-22;u=c[h>>2]|0;l=g;return u|0;}else{c[(c[i>>2]|0)+28744>>2]=0;c[(c[i>>2]|0)+28804>>2]=0;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}break;}case 6:{mE((c[i>>2]|0)+160092+(8-(c[n>>2]|0))|0,c[m>>2]|0,c[n>>2]|0)|0;n=hq((c[i>>2]|0)+160092+4|0)|0;c[(c[i>>2]|0)+28744>>2]=n;c[(c[i>>2]|0)+28804>>2]=7;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}case 7:{c[(c[i>>2]|0)+28744>>2]=0;c[(c[i>>2]|0)+28804>>2]=0;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}default:{c[h>>2]=-1;u=c[h>>2]|0;l=g;return u|0;}}return 0;}function yx(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;if((c[n>>2]|0)!=1){c[i>>2]=-72;p=c[i>>2]|0;l=h;return p|0;}if((c[o>>2]|0)>>>0>(c[k>>2]|0)>>>0){c[i>>2]=-70;p=c[i>>2]|0;l=h;return p|0;}else{oE(c[j>>2]|0,(d[c[m>>2]>>0]|0)&255|0,c[o>>2]|0)|0;c[i>>2]=c[o>>2];p=c[i>>2]|0;l=h;return p|0;}return 0;}function zx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+48|0;h=g+24|0;i=g+20|0;j=g+16|0;k=g+12|0;m=g+8|0;n=g+4|0;o=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;if(((c[f>>2]|0)!=0^1)&1^((c[f+4>>2]|0)!=0^1)&1|0){c[i>>2]=0;p=c[i>>2]|0;l=g;return p|0;};c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[o>>2]=Rh(28744,h)|0;if(!(c[o>>2]|0)){c[i>>2]=0;p=c[i>>2]|0;l=g;return p|0;}h=(c[o>>2]|0)+28732|0;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];f=($q(Ax(c[o>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0)|0)|0)!=0;n=c[o>>2]|0;if(f){Yp(n)|0;c[i>>2]=0;p=c[i>>2]|0;l=g;return p|0;}else{c[i>>2]=n;p=c[i>>2]|0;l=g;return p|0;}return 0;}function Ax(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+48|0;h=g+32|0;i=g+28|0;j=g+24|0;k=g+20|0;m=g+16|0;n=g+12|0;o=g+8|0;p=g+4|0;q=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;do{if((c[n>>2]|0)!=1&(c[k>>2]|0)!=0&(c[m>>2]|0)!=0){f=c[m>>2]|0;e=(c[j>>2]|0)+28732|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[p>>2]=Rh(f,h)|0;c[c[j>>2]>>2]=c[p>>2];c[(c[j>>2]|0)+4>>2]=c[p>>2];if(c[p>>2]|0){mE(c[p>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;break;}c[i>>2]=-64;r=c[i>>2]|0;l=g;return r|0;}else{c[c[j>>2]>>2]=0;c[(c[j>>2]|0)+4>>2]=c[k>>2];}}while(0);c[(c[j>>2]|0)+8>>2]=c[m>>2];c[(c[j>>2]|0)+12+10264>>2]=201326604;c[q>>2]=Bx(c[j>>2]|0,c[o>>2]|0)|0;if($q(c[q>>2]|0)|0){c[i>>2]=c[q>>2];r=c[i>>2]|0;l=g;return r|0;}else{c[i>>2]=0;r=c[i>>2]|0;l=g;return r|0;}return 0;}function Bx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=l;l=l+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;i=d;c[f>>2]=a;c[g>>2]=b;c[(c[f>>2]|0)+28724>>2]=0;c[(c[f>>2]|0)+28728>>2]=0;do{if((c[g>>2]|0)!=1){if((c[(c[f>>2]|0)+8>>2]|0)>>>0<8)if((c[g>>2]|0)==2){c[e>>2]=-30;break;}else{c[e>>2]=0;break;}c[h>>2]=hq(c[(c[f>>2]|0)+4>>2]|0)|0;if((c[h>>2]|0)!=-332356553){if((c[g>>2]|0)==2){c[e>>2]=-30;break;}else{c[e>>2]=0;break;}}else{b=hq((c[(c[f>>2]|0)+4>>2]|0)+4|0)|0;c[(c[f>>2]|0)+28724>>2]=b;c[i>>2]=ls((c[f>>2]|0)+12|0,c[(c[f>>2]|0)+4>>2]|0,c[(c[f>>2]|0)+8>>2]|0)|0;if($q(c[i>>2]|0)|0){c[e>>2]=-30;break;}else{c[(c[f>>2]|0)+28728>>2]=1;c[e>>2]=0;break;}}}else c[e>>2]=0;}while(0);l=d;return c[e>>2]|0;}function Cx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+32|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=a;c[g>>2]=b;b=c[f>>2]|0;f=c[g>>2]|0;c[e>>2]=c[5415];c[e+4>>2]=c[5416];c[e+8>>2]=c[5417];g=zx(b,f,0,0,e)|0;l=d;return g|0;}function Dx(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;g=_r(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,0,0,c[o>>2]|0)|0;l=h;return g|0;}function Ex(){var a=0,b=0,d=0;a=l;l=l+16|0;b=a;c[b>>2]=c[5412];c[b+4>>2]=c[5413];c[b+8>>2]=c[5414];d=Fx(b)|0;l=a;return d|0;}function Fx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];a=Vp(d)|0;l=b;return a|0;}function Gx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=Xp(c[d>>2]|0)|0;l=b;return a|0;}function Hx(){return 131075;}function Ix(){return 131072;}function Jx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+48|0;h=g+24|0;i=g+20|0;j=g+16|0;k=g+12|0;m=g+8|0;n=g+4|0;o=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;if(c[(c[j>>2]|0)+28956>>2]|0){c[i>>2]=-60;p=c[i>>2]|0;l=g;return p|0;}Yp(c[(c[j>>2]|0)+28948>>2]|0)|0;if((c[k>>2]|0)!=0&(c[m>>2]|0)>>>0>=8){f=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=(c[j>>2]|0)+28920|0;c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];o=zx(f,k,m,n,h)|0;c[(c[j>>2]|0)+28948>>2]=o;if(!(c[(c[j>>2]|0)+28948>>2]|0)){c[i>>2]=-64;p=c[i>>2]|0;l=g;return p|0;}}else c[(c[j>>2]|0)+28948>>2]=0;c[(c[j>>2]|0)+28952>>2]=c[(c[j>>2]|0)+28948>>2];c[i>>2]=0;p=c[i>>2]|0;l=g;return p|0;}function Kx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=Jx(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,0,0)|0;l=e;return d|0;}function Lx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[(c[g>>2]|0)+28956>>2]=0;c[j>>2]=Kx(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;if($q(c[j>>2]|0)|0){c[f>>2]=c[j>>2];k=c[f>>2]|0;l=e;return k|0;}else{c[f>>2]=5;k=c[f>>2]|0;l=e;return k|0;}return 0;}function Mx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=Lx(c[d>>2]|0,0,0)|0;l=b;return a|0;}function Nx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Mx(c[e>>2]|0)|0;c[(c[e>>2]|0)+28952>>2]=c[f>>2];l=d;return c[g>>2]|0;}function Ox(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+28956>>2]=1;c[(c[d>>2]|0)+28988>>2]=0;c[(c[d>>2]|0)+28984>>2]=0;c[(c[d>>2]|0)+28968>>2]=0;c[(c[d>>2]|0)+28992>>2]=0;c[(c[d>>2]|0)+29004>>2]=0;c[(c[d>>2]|0)+29008>>2]=0;l=b;return 5;}function Px(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+48|0;g=f+40|0;h=f+24|0;i=f+16|0;j=f+36|0;k=f+8|0;m=f;n=f+32|0;o=h;c[o>>2]=a;c[o+4>>2]=b;b=i;c[b>>2]=d;c[b+4>>2]=e;e=h;b=c[e+4>>2]|0;d=b>>>0<0|(b|0)==0&(c[e>>2]|0)>>>0<131072;e=h;b=c[e+4>>2]|0;b=d?c[e>>2]|0:131072;c[j>>2]=b;b=h;h=dE(c[b>>2]|0,c[b+4>>2]|0,c[j>>2]|0,0)|0;j=dE(h|0,y|0,16,0)|0;h=k;c[h>>2]=j;c[h+4>>2]=y;h=i;j=c[h+4>>2]|0;b=k;e=c[b+4>>2]|0;d=j>>>0<e>>>0|((j|0)==(e|0)?(c[h>>2]|0)>>>0<(c[b>>2]|0)>>>0:0);b=i;i=k;k=d?c[b+4>>2]|0:c[i+4>>2]|0;h=m;c[h>>2]=d?c[b>>2]|0:c[i>>2]|0;c[h+4>>2]=k;c[n>>2]=c[m>>2];k=m;if(0!=(c[k+4>>2]|0)?1:(c[n>>2]|0)!=(c[k>>2]|0)){c[g>>2]=-16;p=c[g>>2]|0;l=f;return p|0;}else{c[g>>2]=c[n>>2];p=c[g>>2]|0;l=f;return p|0;}return 0;}function Qx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;e=l;l=l+176|0;f=e+152|0;g=e+148|0;h=e+144|0;i=e+140|0;j=e+136|0;k=e+132|0;m=e+128|0;n=e+124|0;o=e+120|0;p=e+116|0;q=e+112|0;r=e+108|0;s=e+104|0;t=e+100|0;u=e+96|0;v=e+92|0;w=e+88|0;x=e+84|0;y=e+80|0;z=e+76|0;A=e+72|0;B=e+68|0;C=e+64|0;D=e+60|0;E=e+56|0;F=e+52|0;G=e+48|0;H=e+44|0;I=e+40|0;J=e+36|0;K=e+32|0;L=e+28|0;M=e+24|0;N=e+20|0;O=e+16|0;P=e+12|0;Q=e+8|0;R=e+4|0;S=e;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);c[m>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0);c[n>>2]=c[k>>2];c[o>>2]=(c[c[i>>2]>>2]|0)+(c[(c[i>>2]|0)+8>>2]|0);c[p>>2]=(c[c[i>>2]>>2]|0)+(c[(c[i>>2]|0)+4>>2]|0);c[q>>2]=c[o>>2];c[r>>2]=1;if((c[(c[j>>2]|0)+8>>2]|0)>>>0>(c[(c[j>>2]|0)+4>>2]|0)>>>0){c[g>>2]=-72;T=c[g>>2]|0;l=e;return T|0;}if((c[(c[i>>2]|0)+8>>2]|0)>>>0>(c[(c[i>>2]|0)+4>>2]|0)>>>0){c[g>>2]=-70;T=c[g>>2]|0;l=e;return T|0;}a:while(1){if(!(c[r>>2]|0)){U=98;break;}switch(c[(c[h>>2]|0)+28956>>2]|0){case 0:{Ox(c[h>>2]|0)|0;U=9;break;}case 1:{U=9;break;}case 2:{U=64;break;}case 3:{U=76;break;}case 4:{U=91;break;}default:{U=96;break a;}}do{if((U|0)==9){U=0;V=c[h>>2]|0;if(c[(c[h>>2]|0)+29004>>2]|0){U=10;break a;}c[t>>2]=qq(V+28752|0,(c[h>>2]|0)+160092|0,c[(c[h>>2]|0)+28992>>2]|0,c[(c[h>>2]|0)+28912>>2]|0)|0;if($q(c[t>>2]|0)|0){U=16;break a;}if(c[t>>2]|0){c[z>>2]=(c[t>>2]|0)-(c[(c[h>>2]|0)+28992>>2]|0);c[A>>2]=(c[m>>2]|0)-(c[n>>2]|0);if((c[z>>2]|0)>>>0>(c[A>>2]|0)>>>0){U=31;break a;}mE((c[h>>2]|0)+160092+(c[(c[h>>2]|0)+28992>>2]|0)|0,c[n>>2]|0,c[z>>2]|0)|0;c[(c[h>>2]|0)+28992>>2]=c[t>>2];c[n>>2]=(c[n>>2]|0)+(c[z>>2]|0);break;}d=(c[h>>2]|0)+28752|0;if((((c[d>>2]|0)!=0|(c[d+4>>2]|0)!=0?(d=(c[h>>2]|0)+28752+8|0,(c[d>>2]|0)!=0|(c[d+4>>2]|0)!=0):0)?(d=(c[h>>2]|0)+28752|0,b=c[d+4>>2]|0,0>b>>>0|(0==(b|0)?((c[p>>2]|0)-(c[q>>2]|0)|0)>>>0>=(c[d>>2]|0)>>>0:0)):0)?(c[B>>2]=_q(c[k>>2]|0,(c[m>>2]|0)-(c[k>>2]|0)|0)|0,(c[B>>2]|0)>>>0<=((c[m>>2]|0)-(c[k>>2]|0)|0)>>>0):0){c[C>>2]=Dx(c[h>>2]|0,c[q>>2]|0,(c[p>>2]|0)-(c[q>>2]|0)|0,c[k>>2]|0,c[B>>2]|0,c[(c[h>>2]|0)+28952>>2]|0)|0;if($q(c[C>>2]|0)|0){U=40;break a;}c[n>>2]=(c[k>>2]|0)+(c[B>>2]|0);c[q>>2]=(c[q>>2]|0)+(c[C>>2]|0);c[(c[h>>2]|0)+28744>>2]=0;c[(c[h>>2]|0)+28956>>2]=0;c[r>>2]=0;break;}c[D>>2]=cs(c[h>>2]|0,c[(c[h>>2]|0)+28952>>2]|0)|0;if($q(c[D>>2]|0)|0){U=43;break a;}d=((hq((c[h>>2]|0)+160092|0)|0)&-16|0)==407710288;b=c[h>>2]|0;if(d){d=hq(b+160092+4|0)|0;c[(c[h>>2]|0)+28744>>2]=d;c[(c[h>>2]|0)+28804>>2]=7;}else{c[E>>2]=fs(b,(c[h>>2]|0)+160092|0,c[(c[h>>2]|0)+28992>>2]|0)|0;if($q(c[E>>2]|0)|0){U=47;break a;}c[(c[h>>2]|0)+28744>>2]=3;c[(c[h>>2]|0)+28804>>2]=2;}b=(c[h>>2]|0)+28752+8|0;d=c[b+4>>2]|0;if(d>>>0>0|(d|0)==0&(c[b>>2]|0)>>>0>1024){b=(c[h>>2]|0)+28752+8|0;W=c[b>>2]|0;X=c[b+4>>2]|0;}else{W=1024;X=0;}b=(c[h>>2]|0)+28752+8|0;c[b>>2]=W;c[b+4>>2]=X;b=(c[h>>2]|0)+28752+8|0;d=c[b+4>>2]|0;if(d>>>0>0|((d|0)==0?(c[b>>2]|0)>>>0>(c[(c[h>>2]|0)+28972>>2]|0)>>>0:0)){U=52;break a;}if((c[(c[h>>2]|0)+28752+16>>2]|0)>>>0>4)Y=c[(c[h>>2]|0)+28752+16>>2]|0;else Y=4;c[F>>2]=Y;b=(c[h>>2]|0)+28752+8|0;d=(c[h>>2]|0)+28752|0;c[G>>2]=Px(c[b>>2]|0,c[b+4>>2]|0,c[d>>2]|0,c[d+4>>2]|0)|0;if(!((c[(c[h>>2]|0)+28964>>2]|0)>>>0>=(c[F>>2]|0)>>>0?(c[(c[h>>2]|0)+28980>>2]|0)>>>0>=(c[G>>2]|0)>>>0:0)){c[H>>2]=(c[F>>2]|0)+(c[G>>2]|0);if(c[(c[h>>2]|0)+28940>>2]|0){if((c[H>>2]|0)>>>0>((c[(c[h>>2]|0)+28940>>2]|0)-160112|0)>>>0){U=59;break a;}}else{d=c[(c[h>>2]|0)+28960>>2]|0;b=(c[h>>2]|0)+28920|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];Th(d,f);c[(c[h>>2]|0)+28964>>2]=0;c[(c[h>>2]|0)+28980>>2]=0;d=c[H>>2]|0;b=(c[h>>2]|0)+28920|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];b=Rh(d,f)|0;c[(c[h>>2]|0)+28960>>2]=b;if(!(c[(c[h>>2]|0)+28960>>2]|0)){U=61;break a;}}c[(c[h>>2]|0)+28964>>2]=c[F>>2];c[(c[h>>2]|0)+28976>>2]=(c[(c[h>>2]|0)+28960>>2]|0)+(c[(c[h>>2]|0)+28964>>2]|0);c[(c[h>>2]|0)+28980>>2]=c[G>>2];}c[(c[h>>2]|0)+28956>>2]=2;U=64;}}while(0);do{if((U|0)==64){U=0;c[I>>2]=vx(c[h>>2]|0)|0;if(!(c[I>>2]|0)){c[(c[h>>2]|0)+28956>>2]=0;c[r>>2]=0;break;}if(((c[m>>2]|0)-(c[n>>2]|0)|0)>>>0<(c[I>>2]|0)>>>0)if((c[n>>2]|0)==(c[m>>2]|0)){c[r>>2]=0;break;}else{c[(c[h>>2]|0)+28956>>2]=3;U=76;break;}c[J>>2]=Tx(c[h>>2]|0)|0;if(c[J>>2]|0)Z=0;else Z=(c[(c[h>>2]|0)+28980>>2]|0)-(c[(c[h>>2]|0)+28984>>2]|0)|0;c[K>>2]=xx(c[h>>2]|0,(c[(c[h>>2]|0)+28976>>2]|0)+(c[(c[h>>2]|0)+28984>>2]|0)|0,Z,c[n>>2]|0,c[I>>2]|0)|0;if($q(c[K>>2]|0)|0){U=70;break a;}c[n>>2]=(c[n>>2]|0)+(c[I>>2]|0);if((c[K>>2]|0)!=0|(c[J>>2]|0)!=0){c[(c[h>>2]|0)+28988>>2]=(c[(c[h>>2]|0)+28984>>2]|0)+(c[K>>2]|0);c[(c[h>>2]|0)+28956>>2]=4;}}}while(0);do{if((U|0)==76){U=0;c[L>>2]=vx(c[h>>2]|0)|0;c[M>>2]=(c[L>>2]|0)-(c[(c[h>>2]|0)+28968>>2]|0);c[N>>2]=Tx(c[h>>2]|0)|0;b=c[M>>2]|0;if(c[N>>2]|0){if(b>>>0<((c[m>>2]|0)-(c[n>>2]|0)|0)>>>0)_=c[M>>2]|0;else _=(c[m>>2]|0)-(c[n>>2]|0)|0;c[O>>2]=_;}else{if(b>>>0>((c[(c[h>>2]|0)+28964>>2]|0)-(c[(c[h>>2]|0)+28968>>2]|0)|0)>>>0){U=82;break a;}c[O>>2]=Ux((c[(c[h>>2]|0)+28960>>2]|0)+(c[(c[h>>2]|0)+28968>>2]|0)|0,c[M>>2]|0,c[n>>2]|0,(c[m>>2]|0)-(c[n>>2]|0)|0)|0;}c[n>>2]=(c[n>>2]|0)+(c[O>>2]|0);b=(c[h>>2]|0)+28968|0;c[b>>2]=(c[b>>2]|0)+(c[O>>2]|0);if((c[O>>2]|0)>>>0<(c[M>>2]|0)>>>0){c[r>>2]=0;break;}c[P>>2]=xx(c[h>>2]|0,(c[(c[h>>2]|0)+28976>>2]|0)+(c[(c[h>>2]|0)+28984>>2]|0)|0,(c[(c[h>>2]|0)+28980>>2]|0)-(c[(c[h>>2]|0)+28984>>2]|0)|0,c[(c[h>>2]|0)+28960>>2]|0,c[L>>2]|0)|0;if($q(c[P>>2]|0)|0){U=87;break a;}c[(c[h>>2]|0)+28968>>2]=0;b=c[h>>2]|0;if((c[P>>2]|0)!=0|(c[N>>2]|0)!=0){c[(c[h>>2]|0)+28988>>2]=(c[b+28984>>2]|0)+(c[P>>2]|0);c[(c[h>>2]|0)+28956>>2]=4;U=91;break;}else{c[b+28956>>2]=2;break;}}}while(0);do{if((U|0)==91){U=0;c[Q>>2]=(c[(c[h>>2]|0)+28988>>2]|0)-(c[(c[h>>2]|0)+28984>>2]|0);c[R>>2]=Ux(c[q>>2]|0,(c[p>>2]|0)-(c[q>>2]|0)|0,(c[(c[h>>2]|0)+28976>>2]|0)+(c[(c[h>>2]|0)+28984>>2]|0)|0,c[Q>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+(c[R>>2]|0);b=(c[h>>2]|0)+28984|0;c[b>>2]=(c[b>>2]|0)+(c[R>>2]|0);if((c[R>>2]|0)!=(c[Q>>2]|0)){c[r>>2]=0;break;}c[(c[h>>2]|0)+28956>>2]=2;b=(c[h>>2]|0)+28752|0;d=c[b+4>>2]|0;if(0<d>>>0|(0==(d|0)?(c[(c[h>>2]|0)+28980>>2]|0)>>>0<(c[b>>2]|0)>>>0:0)?((c[(c[h>>2]|0)+28984>>2]|0)+(c[(c[h>>2]|0)+28752+16>>2]|0)|0)>>>0>(c[(c[h>>2]|0)+28980>>2]|0)>>>0:0){c[(c[h>>2]|0)+28988>>2]=0;c[(c[h>>2]|0)+28984>>2]=0;}}}while(0);}switch(U|0){case 10:{if(c[V+28940>>2]|0){c[g>>2]=-64;T=c[g>>2]|0;l=e;return T|0;}c[s>>2]=Rx(c[(c[h>>2]|0)+28996>>2]|0,c[(c[h>>2]|0)+29004>>2]|0,c[i>>2]|0,c[j>>2]|0)|0;if(!(c[s>>2]|0))c[(c[h>>2]|0)+28956>>2]=0;c[g>>2]=c[s>>2];T=c[g>>2]|0;l=e;return T|0;}case 16:{c[u>>2]=iq(c[k>>2]|0,(c[m>>2]|0)-(c[k>>2]|0)|0)|0;if(!(c[u>>2]|0)){c[g>>2]=c[t>>2];T=c[g>>2]|0;l=e;return T|0;}if(c[(c[h>>2]|0)+28952>>2]|0)$=c[(c[(c[h>>2]|0)+28952>>2]|0)+4>>2]|0;else $=0;c[v>>2]=$;if(c[(c[h>>2]|0)+28952>>2]|0)aa=c[(c[(c[h>>2]|0)+28952>>2]|0)+8>>2]|0;else aa=0;c[w>>2]=aa;if(c[(c[h>>2]|0)+28940>>2]|0){c[g>>2]=-64;T=c[g>>2]|0;l=e;return T|0;}c[x>>2]=Sx((c[h>>2]|0)+28996|0,c[(c[h>>2]|0)+29e3>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;if($q(c[x>>2]|0)|0){c[g>>2]=c[x>>2];T=c[g>>2]|0;l=e;return T|0;}x=c[u>>2]|0;c[(c[h>>2]|0)+29e3>>2]=x;c[(c[h>>2]|0)+29004>>2]=x;c[y>>2]=Rx(c[(c[h>>2]|0)+28996>>2]|0,c[u>>2]|0,c[i>>2]|0,c[j>>2]|0)|0;if(!(c[y>>2]|0))c[(c[h>>2]|0)+28956>>2]=0;c[g>>2]=c[y>>2];T=c[g>>2]|0;l=e;return T|0;}case 31:{if((c[A>>2]|0)>>>0>0){mE((c[h>>2]|0)+160092+(c[(c[h>>2]|0)+28992>>2]|0)|0,c[n>>2]|0,c[A>>2]|0)|0;y=(c[h>>2]|0)+28992|0;c[y>>2]=(c[y>>2]|0)+(c[A>>2]|0);}c[(c[j>>2]|0)+8>>2]=c[(c[j>>2]|0)+4>>2];c[g>>2]=(6>(c[t>>2]|0)>>>0?6:c[t>>2]|0)-(c[(c[h>>2]|0)+28992>>2]|0)+3;T=c[g>>2]|0;l=e;return T|0;}case 40:{c[g>>2]=c[C>>2];T=c[g>>2]|0;l=e;return T|0;}case 43:{c[g>>2]=c[D>>2];T=c[g>>2]|0;l=e;return T|0;}case 47:{c[g>>2]=c[E>>2];T=c[g>>2]|0;l=e;return T|0;}case 52:{c[g>>2]=-16;T=c[g>>2]|0;l=e;return T|0;}case 59:{c[g>>2]=-64;T=c[g>>2]|0;l=e;return T|0;}case 61:{c[g>>2]=-64;T=c[g>>2]|0;l=e;return T|0;}case 70:{c[g>>2]=c[K>>2];T=c[g>>2]|0;l=e;return T|0;}case 82:{c[g>>2]=-20;T=c[g>>2]|0;l=e;return T|0;}case 87:{c[g>>2]=c[P>>2];T=c[g>>2]|0;l=e;return T|0;}case 96:{c[g>>2]=-1;T=c[g>>2]|0;l=e;return T|0;}case 98:{P=(c[j>>2]|0)+8|0;c[P>>2]=(c[P>>2]|0)+((c[n>>2]|0)-(c[k>>2]|0));k=(c[i>>2]|0)+8|0;c[k>>2]=(c[k>>2]|0)+((c[q>>2]|0)-(c[o>>2]|0));c[S>>2]=vx(c[h>>2]|0)|0;o=c[h>>2]|0;if(c[S>>2]|0){q=((wx(o)|0)==2&1)*3|0;c[S>>2]=(c[S>>2]|0)+q;c[S>>2]=(c[S>>2]|0)-(c[(c[h>>2]|0)+28968>>2]|0);c[g>>2]=c[S>>2];T=c[g>>2]|0;l=e;return T|0;}S=(c[(c[h>>2]|0)+29008>>2]|0)!=0;if((c[o+28988>>2]|0)!=(c[(c[h>>2]|0)+28984>>2]|0)){if(!S){o=(c[j>>2]|0)+8|0;c[o>>2]=(c[o>>2]|0)+-1;c[(c[h>>2]|0)+29008>>2]=1;}c[g>>2]=1;T=c[g>>2]|0;l=e;return T|0;}do{if(S){if((c[(c[j>>2]|0)+8>>2]|0)>>>0<(c[(c[j>>2]|0)+4>>2]|0)>>>0){o=(c[j>>2]|0)+8|0;c[o>>2]=(c[o>>2]|0)+1;break;}c[(c[h>>2]|0)+28956>>2]=2;c[g>>2]=1;T=c[g>>2]|0;l=e;return T|0;}}while(0);c[g>>2]=0;T=c[g>>2]|0;l=e;return T|0;}}return 0;}function Rx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;f=l;l=l+128|0;g=f+112|0;h=f+108|0;i=f+104|0;j=f+100|0;k=f+96|0;m=f+92|0;n=f+88|0;o=f+84|0;p=f+80|0;q=f+76|0;r=f+72|0;s=f+68|0;t=f+64|0;u=f+60|0;v=f+56|0;w=f+52|0;x=f+48|0;y=f+44|0;z=f+40|0;A=f+36|0;B=f+32|0;C=f+28|0;D=f+24|0;E=f+20|0;F=f+16|0;G=f+12|0;H=f+8|0;I=f+4|0;J=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;switch(c[i>>2]|0){case 7:{c[E>>2]=c[h>>2];c[F>>2]=(c[c[k>>2]>>2]|0)+(c[(c[k>>2]|0)+8>>2]|0);c[G>>2]=(c[(c[k>>2]|0)+4>>2]|0)-(c[(c[k>>2]|0)+8>>2]|0);c[H>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);c[I>>2]=(c[(c[j>>2]|0)+4>>2]|0)-(c[(c[j>>2]|0)+8>>2]|0);c[J>>2]=jy(c[E>>2]|0,c[H>>2]|0,I,c[F>>2]|0,G)|0;F=(c[j>>2]|0)+8|0;c[F>>2]=(c[F>>2]|0)+(c[I>>2]|0);I=(c[k>>2]|0)+8|0;c[I>>2]=(c[I>>2]|0)+(c[G>>2]|0);c[g>>2]=c[J>>2];K=c[g>>2]|0;l=f;return K|0;}case 6:{c[y>>2]=c[h>>2];c[z>>2]=(c[c[k>>2]>>2]|0)+(c[(c[k>>2]|0)+8>>2]|0);c[A>>2]=(c[(c[k>>2]|0)+4>>2]|0)-(c[(c[k>>2]|0)+8>>2]|0);c[B>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);c[C>>2]=(c[(c[j>>2]|0)+4>>2]|0)-(c[(c[j>>2]|0)+8>>2]|0);c[D>>2]=iy(c[y>>2]|0,c[B>>2]|0,C,c[z>>2]|0,A)|0;z=(c[j>>2]|0)+8|0;c[z>>2]=(c[z>>2]|0)+(c[C>>2]|0);C=(c[k>>2]|0)+8|0;c[C>>2]=(c[C>>2]|0)+(c[A>>2]|0);c[g>>2]=c[D>>2];K=c[g>>2]|0;l=f;return K|0;}case 5:{c[s>>2]=c[h>>2];c[t>>2]=(c[c[k>>2]>>2]|0)+(c[(c[k>>2]|0)+8>>2]|0);c[u>>2]=(c[(c[k>>2]|0)+4>>2]|0)-(c[(c[k>>2]|0)+8>>2]|0);c[v>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);c[w>>2]=(c[(c[j>>2]|0)+4>>2]|0)-(c[(c[j>>2]|0)+8>>2]|0);c[x>>2]=hy(c[s>>2]|0,c[v>>2]|0,w,c[t>>2]|0,u)|0;t=(c[j>>2]|0)+8|0;c[t>>2]=(c[t>>2]|0)+(c[w>>2]|0);w=(c[k>>2]|0)+8|0;c[w>>2]=(c[w>>2]|0)+(c[u>>2]|0);c[g>>2]=c[x>>2];K=c[g>>2]|0;l=f;return K|0;}case 4:{c[m>>2]=c[h>>2];c[n>>2]=(c[c[k>>2]>>2]|0)+(c[(c[k>>2]|0)+8>>2]|0);c[o>>2]=(c[(c[k>>2]|0)+4>>2]|0)-(c[(c[k>>2]|0)+8>>2]|0);c[p>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);c[q>>2]=(c[(c[j>>2]|0)+4>>2]|0)-(c[(c[j>>2]|0)+8>>2]|0);c[r>>2]=gy(c[m>>2]|0,c[p>>2]|0,q,c[n>>2]|0,o)|0;n=(c[j>>2]|0)+8|0;c[n>>2]=(c[n>>2]|0)+(c[q>>2]|0);q=(c[k>>2]|0)+8|0;c[q>>2]=(c[q>>2]|0)+(c[o>>2]|0);c[g>>2]=c[r>>2];K=c[g>>2]|0;l=f;return K|0;}default:{c[g>>2]=-12;K=c[g>>2]|0;l=f;return K|0;}}return 0;}function Sx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;g=l;l=l+48|0;h=g+36|0;i=g+32|0;j=g+28|0;k=g+24|0;m=g+20|0;n=g+16|0;o=g+12|0;p=g+8|0;q=g+4|0;r=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[j>>2]|0)!=(c[k>>2]|0))Zp(c[c[i>>2]>>2]|0,c[j>>2]|0)|0;switch(c[k>>2]|0){case 7:{if((c[j>>2]|0)!=(c[k>>2]|0))s=ay()|0;else s=c[c[i>>2]>>2]|0;c[r>>2]=s;if(!(c[r>>2]|0)){c[h>>2]=-64;t=c[h>>2]|0;l=g;return t|0;}else{by(c[r>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;c[c[i>>2]>>2]=c[r>>2];c[h>>2]=0;t=c[h>>2]|0;l=g;return t|0;}break;}case 6:{if((c[j>>2]|0)!=(c[k>>2]|0))u=_x()|0;else u=c[c[i>>2]>>2]|0;c[q>>2]=u;if(!(c[q>>2]|0)){c[h>>2]=-64;t=c[h>>2]|0;l=g;return t|0;}else{$x(c[q>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;c[c[i>>2]>>2]=c[q>>2];c[h>>2]=0;t=c[h>>2]|0;l=g;return t|0;}break;}case 5:{if((c[j>>2]|0)!=(c[k>>2]|0))v=Yx()|0;else v=c[c[i>>2]>>2]|0;c[p>>2]=v;if(!(c[p>>2]|0)){c[h>>2]=-64;t=c[h>>2]|0;l=g;return t|0;}else{Zx(c[p>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;c[c[i>>2]>>2]=c[p>>2];c[h>>2]=0;t=c[h>>2]|0;l=g;return t|0;}break;}case 4:{if((c[j>>2]|0)!=(c[k>>2]|0))w=Vx()|0;else w=c[c[i>>2]>>2]|0;c[o>>2]=w;if(!(c[o>>2]|0)){c[h>>2]=-64;t=c[h>>2]|0;l=g;return t|0;}else{Wx(c[o>>2]|0)|0;Xx(c[o>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;c[c[i>>2]>>2]=c[o>>2];c[h>>2]=0;t=c[h>>2]|0;l=g;return t|0;}break;}default:{c[h>>2]=0;t=c[h>>2]|0;l=g;return t|0;}}return 0;}function Tx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[(c[d>>2]|0)+28804>>2]|0)==7|0;}function Ux(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?c[h>>2]|0:c[j>>2]|0;mE(c[g>>2]|0,c[i>>2]|0,c[k>>2]|0)|0;l=f;return c[k>>2]|0;}function Vx(){return fy()|0;}function Wx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=ey(c[d>>2]|0)|0;l=b;return a|0;}function Xx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=dy(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;l=e;return d|0;}function Yx(){var a=0,b=0,d=0,e=0,f=0,g=0;a=l;l=l+16|0;b=a+4|0;d=a;c[d>>2]=Cy(96)|0;if(!(c[d>>2]|0)){c[b>>2]=0;e=c[b>>2]|0;l=a;return e|0;}else{f=c[d>>2]|0;g=f+96|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(g|0));f=ns()|0;c[c[d>>2]>>2]=f;c[(c[d>>2]|0)+80>>2]=0;c[b>>2]=c[d>>2];e=c[b>>2]|0;l=a;return e|0;}return 0;}function Zx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+80>>2]=1;c[(c[f>>2]|0)+72>>2]=0;c[(c[f>>2]|0)+68>>2]=0;c[(c[f>>2]|0)+56>>2]=0;c[(c[f>>2]|0)+76>>2]=0;d=Su(c[c[f>>2]>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;l=e;return d|0;}function _x(){var a=0,b=0,d=0,e=0,f=0,g=0;a=l;l=l+16|0;b=a+4|0;d=a;c[d>>2]=Cy(80)|0;if(!(c[d>>2]|0)){c[b>>2]=0;e=c[b>>2]|0;l=a;return e|0;}else{f=c[d>>2]|0;g=f+80|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(g|0));f=ps()|0;c[c[d>>2]>>2]=f;c[(c[d>>2]|0)+24>>2]=0;c[b>>2]=c[d>>2];e=c[b>>2]|0;l=a;return e|0;}return 0;}function $x(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+24>>2]=1;c[(c[f>>2]|0)+52>>2]=0;c[(c[f>>2]|0)+48>>2]=0;c[(c[f>>2]|0)+36>>2]=0;c[(c[f>>2]|0)+76>>2]=0;d=Jt(c[c[f>>2]>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;l=e;return d|0;}function ay(){var a=0,b=0,d=0;a=l;l=l+16|0;b=a;c[b>>2]=c[2988];c[b+4>>2]=c[2989];c[b+8>>2]=c[2990];d=cy(b)|0;l=a;return d|0;}function by(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+32>>2]=1;c[(c[f>>2]|0)+60>>2]=0;c[(c[f>>2]|0)+56>>2]=0;c[(c[f>>2]|0)+44>>2]=0;c[(c[f>>2]|0)+88>>2]=0;d=ts(c[c[f>>2]>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;l=e;return d|0;}function cy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+32|0;d=b+8|0;e=b+4|0;f=b;if((c[a>>2]|0)==0?(c[a+4>>2]|0)==0:0){c[a>>2]=c[2988];c[a+4>>2]=c[2989];c[a+8>>2]=c[2990];}if(c[a>>2]|0?c[a+4>>2]|0:0){c[f>>2]=qc[c[a>>2]&63](c[a+8>>2]|0,104)|0;if(!(c[f>>2]|0)){c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;}h=c[f>>2]|0;i=h+104|0;do{c[h>>2]=0;h=h+4|0;}while((h|0)<(i|0));h=(c[f>>2]|0)+92|0;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];a=Gt(d)|0;c[c[f>>2]>>2]=a;a=c[f>>2]|0;if(!(c[c[f>>2]>>2]|0)){bq(a)|0;c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;}else{c[a+32>>2]=0;c[e>>2]=c[f>>2];g=c[e>>2]|0;l=b;return g|0;}}c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;}function dy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+72>>2]=c[g>>2];c[(c[f>>2]|0)+76>>2]=c[h>>2];l=e;return 0;}function ey(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+80>>2]=1;c[(c[d>>2]|0)+76>>2]=0;c[(c[d>>2]|0)+64>>2]=0;c[(c[d>>2]|0)+60>>2]=0;c[(c[d>>2]|0)+48>>2]=0;c[(c[d>>2]|0)+68>>2]=0;a=kw(c[c[d>>2]>>2]|0)|0;l=b;return a|0;}function fy(){var a=0,b=0,d=0,e=0,f=0,g=0;a=l;l=l+16|0;b=a+4|0;d=a;c[d>>2]=Cy(96)|0;if(!(c[d>>2]|0)){c[b>>2]=0;e=c[b>>2]|0;l=a;return e|0;}else{f=c[d>>2]|0;g=f+96|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(g|0));f=hw()|0;c[c[d>>2]>>2]=f;c[(c[d>>2]|0)+80>>2]=0;c[b>>2]=c[d>>2];e=c[b>>2]|0;l=a;return e|0;}return 0;}function gy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+16|0;i=g+12|0;j=g+8|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;f=uy(c[h>>2]|0,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;l=g;return f|0;}function Ko(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;i=l;l=l+48|0;j=i+32|0;k=i+28|0;m=i+24|0;n=i+20|0;o=i+16|0;p=i+12|0;q=i+8|0;r=i+4|0;s=i;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;g=c[m>>2]|0;f=c[r>>2]|0;r=c[q>>2]|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[s>>2]=Jo(g,f,j,r,0)|0;if(wj(c[s>>2]|0)|0){c[k>>2]=c[s>>2];t=c[k>>2]|0;l=i;return t|0;}else{c[k>>2]=Bo(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;t=c[k>>2]|0;l=i;return t|0;}return 0;}function Lo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;h=l;l=l+48|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;c[i>>2]=c[2981];c[i+4>>2]=c[2982];c[i+8>>2]=c[2983];p=Ko(g,j,k,m,n,o,i)|0;l=h;return p|0;}function Mo(){var a=0,b=0,d=0;a=l;l=l+16|0;b=a;c[b>>2]=c[5406];c[b+4>>2]=c[5407];c[b+8>>2]=c[5408];d=No(b)|0;l=a;return d|0;}function No(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];a=nj(d)|0;l=b;return a|0;}function Oo(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=qj(c[d>>2]|0)|0;l=b;return a|0;}function Po(){return 131072;}function Qo(){return(lj(131072)|0)+3+4|0;}function Ro(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=l;l=l+144|0;k=j+40|0;m=j+32|0;n=j+28|0;o=j+24|0;p=j+20|0;q=j+16|0;r=j+12|0;s=j;t=j+8|0;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;c[r>>2]=f;f=s;c[f>>2]=h;c[f+4>>2]=i;i=c[n>>2]|0;f=c[o>>2]|0;o=c[p>>2]|0;p=c[q>>2]|0;q=c[r>>2]|0;r=s;h=c[r>>2]|0;e=c[r+4>>2]|0;r=k;d=g;g=r+104|0;do{c[r>>2]=c[d>>2];r=r+4|0;d=d+4|0;}while((r|0)<(g|0));c[t>>2]=xo(i,f,o,p,q,k,h,e,1)|0;if(wj(c[t>>2]|0)|0){c[m>>2]=c[t>>2];u=c[m>>2]|0;l=j;return u|0;}else{c[(c[n>>2]|0)+600>>2]=0;c[(c[n>>2]|0)+604>>2]=0;t=s;c[(c[n>>2]|0)+608>>2]=(c[(c[n>>2]|0)+232>>2]|0)+((0==(c[t+4>>2]|0)?(c[(c[n>>2]|0)+232>>2]|0)==(c[t>>2]|0):0)&1);c[(c[n>>2]|0)+624>>2]=0;c[(c[n>>2]|0)+620>>2]=0;c[(c[n>>2]|0)+628>>2]=1;c[(c[n>>2]|0)+632>>2]=0;c[m>>2]=0;u=c[m>>2]|0;l=j;return u|0;}return 0;}function So(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;i=l;l=l+192|0;j=i+88|0;k=i+52|0;m=i+80|0;n=i+48|0;o=i+44|0;p=i+40|0;q=i+36|0;r=i;s=i+8|0;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;e=r;c[e>>2]=g;c[e+4>>2]=h;if((c[o>>2]|0)!=0&(c[p>>2]|0)>>>0>=8){if(c[(c[n>>2]|0)+364>>2]|0){c[m>>2]=-64;t=c[m>>2]|0;l=i;return t|0;}rj(c[(c[n>>2]|0)+636>>2]|0)|0;h=c[o>>2]|0;o=c[p>>2]|0;p=f+4|0;e=(c[n>>2]|0)+352|0;c[k>>2]=c[p>>2];c[k+4>>2]=c[p+4>>2];c[k+8>>2]=c[p+8>>2];c[k+12>>2]=c[p+12>>2];c[k+16>>2]=c[p+16>>2];c[k+20>>2]=c[p+20>>2];c[k+24>>2]=c[p+24>>2];c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];e=zj(h,o,0,0,k,j)|0;c[(c[n>>2]|0)+636>>2]=e;c[(c[n>>2]|0)+640>>2]=c[(c[n>>2]|0)+636>>2];if(!(c[(c[n>>2]|0)+636>>2]|0)){c[m>>2]=-64;t=c[m>>2]|0;l=i;return t|0;}}else{if(c[q>>2]|0){e=f+4|0;Io(s,c[q>>2]|0);c[e>>2]=c[s>>2];c[e+4>>2]=c[s+4>>2];c[e+8>>2]=c[s+8>>2];c[e+12>>2]=c[s+12>>2];c[e+16>>2]=c[s+16>>2];c[e+20>>2]=c[s+20>>2];c[e+24>>2]=c[s+24>>2];}rj(c[(c[n>>2]|0)+636>>2]|0)|0;c[(c[n>>2]|0)+636>>2]=0;c[(c[n>>2]|0)+640>>2]=c[q>>2];}q=c[n>>2]|0;s=c[(c[n>>2]|0)+640>>2]|0;n=r;r=c[n>>2]|0;e=c[n+4>>2]|0;n=j;k=f;f=n+104|0;do{c[n>>2]=c[k>>2];n=n+4|0;k=k+4|0;}while((n|0)<(f|0));c[m>>2]=Ro(q,0,0,0,s,j,r,e)|0;t=c[m>>2]|0;l=i;return t|0;}function To(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+272|0;h=g+160|0;i=g+152|0;j=g+148|0;k=g+144|0;m=g;n=g+40|0;o=g+8|0;c[j>>2]=a;c[k>>2]=b;b=m;c[b>>2]=e;c[b+4>>2]=f;if(c[k>>2]|0){f=n;b=(c[j>>2]|0)+12|0;e=f+104|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0;}while((f|0)<(e|0));a=n+4|0;Io(o,c[k>>2]|0);c[a>>2]=c[o>>2];c[a+4>>2]=c[o+4>>2];c[a+8>>2]=c[o+8>>2];c[a+12>>2]=c[o+12>>2];c[a+16>>2]=c[o+16>>2];c[a+20>>2]=c[o+20>>2];c[a+24>>2]=c[o+24>>2];o=n+32|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];d=c[j>>2]|0;j=c[k>>2]|0;k=m;m=c[k>>2]|0;o=c[k+4>>2]|0;f=h;b=n;e=f+104|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0;}while((f|0)<(e|0));c[i>>2]=So(d,0,0,j,h,m,o)|0;p=c[i>>2]|0;l=g;return p|0;}else{c[i>>2]=-32;p=c[i>>2]|0;l=g;return p|0;}return 0;}function Uo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+32|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=a;c[g>>2]=b;b=c[f>>2]|0;f=c[g>>2]|0;c[e>>2]=c[5409];c[e+4>>2]=c[5410];c[e+8>>2]=c[5411];g=To(b,f,e,-1,-1)|0;l=d;return g|0;}function Vo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+384|0;g=f+280|0;h=f+168|0;i=f+272|0;j=f+160|0;k=f+8|0;m=f;n=f+120|0;o=f+16|0;c[i>>2]=a;c[j>>2]=b;b=k;c[b>>2]=d;c[b+4>>2]=e;e=k;b=(c[e>>2]|0)==0&(c[e+4>>2]|0)==0;e=k;k=b?-1:c[e+4>>2]|0;d=m;c[d>>2]=b?-1:c[e>>2]|0;c[d+4>>2]=k;k=m;Ao(n,c[j>>2]|0,c[k>>2]|0,c[k+4>>2]|0,0);k=h;j=(c[i>>2]|0)+12|0;d=k+104|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0;}while((k|0)<(d|0));k=g;j=n;d=k+40|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0;}while((k|0)<(d|0));zo(o,h,g);h=c[i>>2]|0;i=m;m=c[i>>2]|0;n=c[i+4>>2]|0;k=g;j=o;d=k+104|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0;}while((k|0)<(d|0));j=So(h,0,0,0,g,m,n)|0;l=f;return j|0;}function Wo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Vo(c[e>>2]|0,c[f>>2]|0,-1,-1)|0;l=d;return b|0;}function Xo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;f=l;l=l+96|0;g=f+88|0;h=f+84|0;i=f+80|0;j=f+76|0;k=f+72|0;m=f+68|0;n=f+64|0;o=f+60|0;p=f+56|0;q=f+52|0;r=f+48|0;s=f+44|0;t=f+40|0;u=f+36|0;v=f+32|0;w=f+28|0;x=f+24|0;y=f+20|0;z=f+16|0;A=f+12|0;B=f+8|0;C=f+4|0;D=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[c[j>>2]>>2];c[n>>2]=(c[m>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0);c[o>>2]=(c[m>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);c[p>>2]=c[c[i>>2]>>2];c[q>>2]=(c[p>>2]|0)+(c[(c[i>>2]|0)+4>>2]|0);c[r>>2]=(c[p>>2]|0)+(c[(c[i>>2]|0)+8>>2]|0);c[s>>2]=1;a:while(1){if(!(c[s>>2]|0)){E=39;break;}b:do{switch(c[(c[h>>2]|0)+628>>2]|0){case 0:{E=4;break a;break;}case 1:{if(((c[k>>2]|0)==2?(e=(c[q>>2]|0)-(c[r>>2]|0)|0,e>>>0>=(lj((c[n>>2]|0)-(c[o>>2]|0)|0)|0)>>>0):0)?(c[(c[h>>2]|0)+604>>2]|0)==0:0){c[t>>2]=Bo(c[h>>2]|0,c[r>>2]|0,(c[q>>2]|0)-(c[r>>2]|0)|0,c[o>>2]|0,(c[n>>2]|0)-(c[o>>2]|0)|0)|0;if(Ph(c[t>>2]|0)|0){E=9;break a;}c[o>>2]=c[n>>2];c[r>>2]=(c[r>>2]|0)+(c[t>>2]|0);c[(c[h>>2]|0)+632>>2]=1;jl(c[h>>2]|0);c[s>>2]=0;break b;}c[u>>2]=(c[(c[h>>2]|0)+608>>2]|0)-(c[(c[h>>2]|0)+604>>2]|0);c[v>>2]=Yo((c[(c[h>>2]|0)+592>>2]|0)+(c[(c[h>>2]|0)+604>>2]|0)|0,c[u>>2]|0,c[o>>2]|0,(c[n>>2]|0)-(c[o>>2]|0)|0)|0;e=(c[h>>2]|0)+604|0;c[e>>2]=(c[e>>2]|0)+(c[v>>2]|0);c[o>>2]=(c[o>>2]|0)+(c[v>>2]|0);if((c[k>>2]|0)==0?(c[(c[h>>2]|0)+604>>2]|0)>>>0<(c[(c[h>>2]|0)+608>>2]|0)>>>0:0){c[s>>2]=0;break b;}if((c[k>>2]|0)==1?(c[(c[h>>2]|0)+604>>2]|0)==(c[(c[h>>2]|0)+600>>2]|0):0){c[s>>2]=0;break b;}c[y>>2]=(c[(c[h>>2]|0)+604>>2]|0)-(c[(c[h>>2]|0)+600>>2]|0);c[z>>2]=(c[q>>2]|0)-(c[r>>2]|0);if((c[k>>2]|0)==2)F=(c[o>>2]|0)==(c[n>>2]|0);else F=0;c[A>>2]=F&1;if((c[z>>2]|0)>>>0>=(lj(c[y>>2]|0)|0)>>>0)c[w>>2]=c[r>>2];else{c[w>>2]=c[(c[h>>2]|0)+612>>2];c[z>>2]=c[(c[h>>2]|0)+616>>2];}e=c[h>>2]|0;d=c[w>>2]|0;b=c[z>>2]|0;a=(c[(c[h>>2]|0)+592>>2]|0)+(c[(c[h>>2]|0)+600>>2]|0)|0;G=c[y>>2]|0;if(c[A>>2]|0)H=Bo(e,d,b,a,G)|0;else H=vn(e,d,b,a,G)|0;c[x>>2]=H;if(Ph(c[x>>2]|0)|0){E=26;break a;}c[(c[h>>2]|0)+632>>2]=c[A>>2];c[(c[h>>2]|0)+608>>2]=(c[(c[h>>2]|0)+604>>2]|0)+(c[(c[h>>2]|0)+232>>2]|0);if((c[(c[h>>2]|0)+608>>2]|0)>>>0>(c[(c[h>>2]|0)+596>>2]|0)>>>0){c[(c[h>>2]|0)+604>>2]=0;c[(c[h>>2]|0)+608>>2]=c[(c[h>>2]|0)+232>>2];}c[(c[h>>2]|0)+600>>2]=c[(c[h>>2]|0)+604>>2];G=c[x>>2]|0;if((c[w>>2]|0)!=(c[r>>2]|0)){c[(c[h>>2]|0)+620>>2]=G;c[(c[h>>2]|0)+624>>2]=0;c[(c[h>>2]|0)+628>>2]=2;E=33;break b;}c[r>>2]=(c[r>>2]|0)+G;if(c[(c[h>>2]|0)+632>>2]|0){c[s>>2]=0;jl(c[h>>2]|0);}break;}case 2:{E=33;break;}default:{}}}while(0);do{if((E|0)==33){E=0;c[B>>2]=(c[(c[h>>2]|0)+620>>2]|0)-(c[(c[h>>2]|0)+624>>2]|0);c[C>>2]=Yo(c[r>>2]|0,(c[q>>2]|0)-(c[r>>2]|0)|0,(c[(c[h>>2]|0)+612>>2]|0)+(c[(c[h>>2]|0)+624>>2]|0)|0,c[B>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+(c[C>>2]|0);G=(c[h>>2]|0)+624|0;c[G>>2]=(c[G>>2]|0)+(c[C>>2]|0);if((c[B>>2]|0)!=(c[C>>2]|0)){c[s>>2]=0;break;}c[(c[h>>2]|0)+624>>2]=0;c[(c[h>>2]|0)+620>>2]=0;if(c[(c[h>>2]|0)+632>>2]|0){c[s>>2]=0;jl(c[h>>2]|0);break;}else{c[(c[h>>2]|0)+628>>2]=1;break;}}}while(0);}if((E|0)==4){c[g>>2]=-62;I=c[g>>2]|0;l=f;return I|0;}else if((E|0)==9){c[g>>2]=c[t>>2];I=c[g>>2]|0;l=f;return I|0;}else if((E|0)==26){c[g>>2]=c[x>>2];I=c[g>>2]|0;l=f;return I|0;}else if((E|0)==39){c[(c[j>>2]|0)+8>>2]=(c[o>>2]|0)-(c[m>>2]|0);c[(c[i>>2]|0)+8>>2]=(c[r>>2]|0)-(c[p>>2]|0);if(c[(c[h>>2]|0)+632>>2]|0){c[g>>2]=0;I=c[g>>2]|0;l=f;return I|0;}c[D>>2]=(c[(c[h>>2]|0)+608>>2]|0)-(c[(c[h>>2]|0)+604>>2]|0);if(!(c[D>>2]|0))c[D>>2]=c[(c[h>>2]|0)+232>>2];c[g>>2]=c[D>>2];I=c[g>>2]|0;l=f;return I|0;}return 0;}function Yo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?c[h>>2]|0:c[j>>2]|0;if(!(c[k>>2]|0)){m=c[k>>2]|0;l=f;return m|0;}mE(c[g>>2]|0,c[i>>2]|0,c[k>>2]|0)|0;m=c[k>>2]|0;l=f;return m|0;}function Zo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[(c[h>>2]|0)+8>>2]|0)>>>0>(c[(c[h>>2]|0)+4>>2]|0)>>>0){c[f>>2]=-1;j=c[f>>2]|0;l=e;return j|0;}if((c[(c[i>>2]|0)+8>>2]|0)>>>0>(c[(c[i>>2]|0)+4>>2]|0)>>>0){c[f>>2]=-1;j=c[f>>2]|0;l=e;return j|0;}else{c[f>>2]=Xo(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0,0)|0;j=c[f>>2]|0;l=e;return j|0;}return 0;}function _o(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;d=l;l=l+48|0;e=d+36|0;f=d+32|0;g=d+28|0;h=d+16|0;i=d+12|0;j=d+8|0;k=d+4|0;m=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;if((c[(c[g>>2]|0)+8>>2]|0)>>>0>(c[(c[g>>2]|0)+4>>2]|0)>>>0){c[e>>2]=-1;n=c[e>>2]|0;l=d;return n|0;}c[i>>2]=Xo(c[f>>2]|0,c[g>>2]|0,h,2)|0;if(wj(c[i>>2]|0)|0){c[e>>2]=c[i>>2];n=c[e>>2]|0;l=d;return n|0;}c[j>>2]=c[(c[f>>2]|0)+632>>2]|0?0:3;if(c[(c[f>>2]|0)+632>>2]|0)o=0;else o=c[(c[f>>2]|0)+116+32+4>>2]<<2;c[k>>2]=o;c[m>>2]=(c[(c[f>>2]|0)+620>>2]|0)-(c[(c[f>>2]|0)+624>>2]|0)+(c[j>>2]|0)+(c[k>>2]|0);c[e>>2]=c[m>>2];n=c[e>>2]|0;l=d;return n|0;}function $o(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;i=l;l=l+96|0;j=i+80|0;k=i+76|0;m=i+72|0;n=i+68|0;o=i+64|0;p=i+60|0;q=i+56|0;r=i+52|0;s=i+48|0;t=i+44|0;u=i+40|0;v=i+36|0;w=i+32|0;x=i+28|0;y=i+88|0;z=i+24|0;A=i+20|0;B=i+16|0;C=i+12|0;D=i+8|0;E=i+4|0;F=i;G=i+84|0;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=0;c[r>>2]=0;c[t>>2]=(c[k>>2]|0)+4;c[u>>2]=c[t>>2];c[x>>2]=0;c[v>>2]=(c[o>>2]|0)+(c[x>>2]<<2);c[x>>2]=(c[x>>2]|0)+16;c[w>>2]=(c[o>>2]|0)+(c[x>>2]<<2);c[x>>2]=(c[x>>2]|0)+64;if(c[x>>2]<<2>>>0>(c[p>>2]|0)>>>0){c[j>>2]=-44;H=c[j>>2]|0;l=i;return H|0;}c[s>>2]=fh(c[w>>2]|0,256,c[v>>2]|0,r,q,c[m>>2]|0,c[n>>2]|0)|0;if(ap(c[s>>2]|0)|0){c[j>>2]=c[s>>2];H=c[j>>2]|0;l=i;return H|0;}bp(y,c[k>>2]|0);if((c[q>>2]|0)>>>0>((d[y>>0]|0)+1|0)>>>0){c[j>>2]=-44;H=c[j>>2]|0;l=i;return H|0;}a[y+1>>0]=0;a[y+2>>0]=c[q>>2];n=c[k>>2]|0;a[n>>0]=a[y>>0]|0;a[n+1>>0]=a[y+1>>0]|0;a[n+2>>0]=a[y+2>>0]|0;a[n+3>>0]=a[y+3>>0]|0;c[A>>2]=0;c[z>>2]=1;while(1){if((c[z>>2]|0)>>>0>=((c[q>>2]|0)+1|0)>>>0)break;c[B>>2]=c[A>>2];c[A>>2]=(c[A>>2]|0)+(c[(c[v>>2]|0)+(c[z>>2]<<2)>>2]<<(c[z>>2]|0)-1);c[(c[v>>2]|0)+(c[z>>2]<<2)>>2]=c[B>>2];c[z>>2]=(c[z>>2]|0)+1;}c[C>>2]=0;while(1){if((c[C>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;c[D>>2]=d[(c[w>>2]|0)+(c[C>>2]|0)>>0];c[E>>2]=1<<c[D>>2]>>1;a[G>>0]=c[C>>2];a[G+1>>0]=(c[q>>2]|0)+1-(c[D>>2]|0);c[F>>2]=c[(c[v>>2]|0)+(c[D>>2]<<2)>>2];while(1){if((c[F>>2]|0)>>>0>=((c[(c[v>>2]|0)+(c[D>>2]<<2)>>2]|0)+(c[E>>2]|0)|0)>>>0)break;z=(c[u>>2]|0)+(c[F>>2]<<1)|0;a[z>>0]=a[G>>0]|0;a[z+1>>0]=a[G+1>>0]|0;c[F>>2]=(c[F>>2]|0)+1;}z=(c[v>>2]|0)+(c[D>>2]<<2)|0;c[z>>2]=(c[z>>2]|0)+(c[E>>2]|0);c[C>>2]=(c[C>>2]|0)+1;}c[j>>2]=c[s>>2];H=c[j>>2]|0;l=i;return H|0;}function ap(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function bp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=c[f>>2]|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;a[b>>0]=a[g>>0]|0;a[b+1>>0]=a[g+1>>0]|0;a[b+2>>0]=a[g+2>>0]|0;a[b+3>>0]=a[g+3>>0]|0;l=e;return;}function cp(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;if(c[p>>2]|0){c[i>>2]=dp(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}else{c[i>>2]=ep(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function dp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;i=l;l=l+224|0;j=i+204|0;k=i+200|0;m=i+196|0;n=i+192|0;o=i+217|0;p=i+188|0;q=i+184|0;r=i+180|0;s=i+176|0;t=i+216|0;u=i+172|0;v=i+168|0;w=i+164|0;x=i+160|0;y=i+215|0;z=i+156|0;A=i+152|0;B=i+148|0;C=i+144|0;D=i+214|0;E=i+140|0;F=i+136|0;G=i+132|0;H=i+128|0;I=i+213|0;J=i+124|0;K=i+120|0;L=i+116|0;M=i+112|0;N=i+212|0;O=i+108|0;P=i+104|0;Q=i+100|0;R=i+96|0;S=i+92|0;T=i+84|0;U=i+80|0;V=i+76|0;W=i+72|0;X=i+68|0;Y=i+64|0;Z=i+60|0;_=i+56|0;$=i+52|0;aa=i+48|0;ba=i+28|0;ca=i+208|0;da=i+24|0;ea=i+20|0;fa=i+16|0;ga=i+12|0;ha=i+8|0;ia=i+4|0;ja=i;c[fa>>2]=b;c[ga>>2]=e;c[ha>>2]=f;c[ia>>2]=g;c[ja>>2]=h;h=c[ga>>2]|0;ga=c[ha>>2]|0;ha=c[ia>>2]|0;ia=c[ja>>2]|0;c[U>>2]=c[fa>>2];c[V>>2]=h;c[W>>2]=ga;c[X>>2]=ha;c[Y>>2]=ia;c[Z>>2]=c[U>>2];c[_>>2]=(c[Z>>2]|0)+(c[V>>2]|0);c[$>>2]=(c[Y>>2]|0)+4;c[aa>>2]=c[$>>2];bp(ca,c[Y>>2]|0);c[da>>2]=d[ca+2>>0];c[ea>>2]=fp(ba,c[W>>2]|0,c[X>>2]|0)|0;if(ap(c[ea>>2]|0)|0){c[T>>2]=c[ea>>2];ka=c[T>>2]|0;l=i;return ka|0;}ea=c[_>>2]|0;_=c[aa>>2]|0;aa=c[da>>2]|0;c[O>>2]=c[Z>>2];c[P>>2]=ba;c[Q>>2]=ea;c[R>>2]=_;c[S>>2]=aa;c[i+88>>2]=c[O>>2];while(1){aa=(gp(c[P>>2]|0)|0)==0&1;if(!(aa&(c[O>>2]|0)>>>0<((c[Q>>2]|0)+-3|0)>>>0))break;if(hp()|0){aa=c[R>>2]|0;_=c[S>>2]|0;c[J>>2]=c[P>>2];c[K>>2]=aa;c[L>>2]=_;c[M>>2]=ip(c[J>>2]|0,c[L>>2]|0)|0;a[N>>0]=a[(c[K>>2]|0)+(c[M>>2]<<1)>>0]|0;jp(c[J>>2]|0,d[(c[K>>2]|0)+(c[M>>2]<<1)+1>>0]|0);_=a[N>>0]|0;aa=c[O>>2]|0;c[O>>2]=aa+1;a[aa>>0]=_;}hp()|0;_=c[R>>2]|0;aa=c[S>>2]|0;c[E>>2]=c[P>>2];c[F>>2]=_;c[G>>2]=aa;c[H>>2]=ip(c[E>>2]|0,c[G>>2]|0)|0;a[I>>0]=a[(c[F>>2]|0)+(c[H>>2]<<1)>>0]|0;jp(c[E>>2]|0,d[(c[F>>2]|0)+(c[H>>2]<<1)+1>>0]|0);aa=a[I>>0]|0;_=c[O>>2]|0;c[O>>2]=_+1;a[_>>0]=aa;if(hp()|0){aa=c[R>>2]|0;_=c[S>>2]|0;c[z>>2]=c[P>>2];c[A>>2]=aa;c[B>>2]=_;c[C>>2]=ip(c[z>>2]|0,c[B>>2]|0)|0;a[D>>0]=a[(c[A>>2]|0)+(c[C>>2]<<1)>>0]|0;jp(c[z>>2]|0,d[(c[A>>2]|0)+(c[C>>2]<<1)+1>>0]|0);_=a[D>>0]|0;aa=c[O>>2]|0;c[O>>2]=aa+1;a[aa>>0]=_;}_=c[R>>2]|0;aa=c[S>>2]|0;c[u>>2]=c[P>>2];c[v>>2]=_;c[w>>2]=aa;c[x>>2]=ip(c[u>>2]|0,c[w>>2]|0)|0;a[y>>0]=a[(c[v>>2]|0)+(c[x>>2]<<1)>>0]|0;jp(c[u>>2]|0,d[(c[v>>2]|0)+(c[x>>2]<<1)+1>>0]|0);aa=a[y>>0]|0;_=c[O>>2]|0;c[O>>2]=_+1;a[_>>0]=aa;}a:do{if(kp()|0)while(1){y=(gp(c[P>>2]|0)|0)==0&1;if(!(y&(c[O>>2]|0)>>>0<(c[Q>>2]|0)>>>0))break a;y=c[R>>2]|0;x=c[S>>2]|0;c[p>>2]=c[P>>2];c[q>>2]=y;c[r>>2]=x;c[s>>2]=ip(c[p>>2]|0,c[r>>2]|0)|0;a[t>>0]=a[(c[q>>2]|0)+(c[s>>2]<<1)>>0]|0;jp(c[p>>2]|0,d[(c[q>>2]|0)+(c[s>>2]<<1)+1>>0]|0);x=a[t>>0]|0;y=c[O>>2]|0;c[O>>2]=y+1;a[y>>0]=x;}}while(0);while(1){if((c[O>>2]|0)>>>0>=(c[Q>>2]|0)>>>0)break;t=c[R>>2]|0;s=c[S>>2]|0;c[j>>2]=c[P>>2];c[k>>2]=t;c[m>>2]=s;c[n>>2]=ip(c[j>>2]|0,c[m>>2]|0)|0;a[o>>0]=a[(c[k>>2]|0)+(c[n>>2]<<1)>>0]|0;jp(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<1)+1>>0]|0);s=a[o>>0]|0;t=c[O>>2]|0;c[O>>2]=t+1;a[t>>0]=s;}if(lp(ba)|0){c[T>>2]=c[V>>2];ka=c[T>>2]|0;l=i;return ka|0;}else{c[T>>2]=-20;ka=c[T>>2]|0;l=i;return ka|0;}return 0;}function ep(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;i=l;l=l+224|0;j=i+204|0;k=i+200|0;m=i+196|0;n=i+192|0;o=i+217|0;p=i+188|0;q=i+184|0;r=i+180|0;s=i+176|0;t=i+216|0;u=i+172|0;v=i+168|0;w=i+164|0;x=i+160|0;y=i+215|0;z=i+156|0;A=i+152|0;B=i+148|0;C=i+144|0;D=i+214|0;E=i+140|0;F=i+136|0;G=i+132|0;H=i+128|0;I=i+213|0;J=i+124|0;K=i+120|0;L=i+116|0;M=i+112|0;N=i+212|0;O=i+108|0;P=i+104|0;Q=i+100|0;R=i+96|0;S=i+92|0;T=i+84|0;U=i+80|0;V=i+76|0;W=i+72|0;X=i+68|0;Y=i+64|0;Z=i+60|0;_=i+56|0;$=i+52|0;aa=i+48|0;ba=i+28|0;ca=i+208|0;da=i+24|0;ea=i+20|0;fa=i+16|0;ga=i+12|0;ha=i+8|0;ia=i+4|0;ja=i;c[fa>>2]=b;c[ga>>2]=e;c[ha>>2]=f;c[ia>>2]=g;c[ja>>2]=h;h=c[ga>>2]|0;ga=c[ha>>2]|0;ha=c[ia>>2]|0;ia=c[ja>>2]|0;c[U>>2]=c[fa>>2];c[V>>2]=h;c[W>>2]=ga;c[X>>2]=ha;c[Y>>2]=ia;c[Z>>2]=c[U>>2];c[_>>2]=(c[Z>>2]|0)+(c[V>>2]|0);c[$>>2]=(c[Y>>2]|0)+4;c[aa>>2]=c[$>>2];bp(ca,c[Y>>2]|0);c[da>>2]=d[ca+2>>0];c[ea>>2]=fp(ba,c[W>>2]|0,c[X>>2]|0)|0;if(ap(c[ea>>2]|0)|0){c[T>>2]=c[ea>>2];ka=c[T>>2]|0;l=i;return ka|0;}ea=c[_>>2]|0;_=c[aa>>2]|0;aa=c[da>>2]|0;c[O>>2]=c[Z>>2];c[P>>2]=ba;c[Q>>2]=ea;c[R>>2]=_;c[S>>2]=aa;c[i+88>>2]=c[O>>2];while(1){aa=(gp(c[P>>2]|0)|0)==0&1;if(!(aa&(c[O>>2]|0)>>>0<((c[Q>>2]|0)+-3|0)>>>0))break;if(hp()|0){aa=c[R>>2]|0;_=c[S>>2]|0;c[J>>2]=c[P>>2];c[K>>2]=aa;c[L>>2]=_;c[M>>2]=ip(c[J>>2]|0,c[L>>2]|0)|0;a[N>>0]=a[(c[K>>2]|0)+(c[M>>2]<<1)>>0]|0;jp(c[J>>2]|0,d[(c[K>>2]|0)+(c[M>>2]<<1)+1>>0]|0);_=a[N>>0]|0;aa=c[O>>2]|0;c[O>>2]=aa+1;a[aa>>0]=_;}hp()|0;_=c[R>>2]|0;aa=c[S>>2]|0;c[E>>2]=c[P>>2];c[F>>2]=_;c[G>>2]=aa;c[H>>2]=ip(c[E>>2]|0,c[G>>2]|0)|0;a[I>>0]=a[(c[F>>2]|0)+(c[H>>2]<<1)>>0]|0;jp(c[E>>2]|0,d[(c[F>>2]|0)+(c[H>>2]<<1)+1>>0]|0);aa=a[I>>0]|0;_=c[O>>2]|0;c[O>>2]=_+1;a[_>>0]=aa;if(hp()|0){aa=c[R>>2]|0;_=c[S>>2]|0;c[z>>2]=c[P>>2];c[A>>2]=aa;c[B>>2]=_;c[C>>2]=ip(c[z>>2]|0,c[B>>2]|0)|0;a[D>>0]=a[(c[A>>2]|0)+(c[C>>2]<<1)>>0]|0;jp(c[z>>2]|0,d[(c[A>>2]|0)+(c[C>>2]<<1)+1>>0]|0);_=a[D>>0]|0;aa=c[O>>2]|0;c[O>>2]=aa+1;a[aa>>0]=_;}_=c[R>>2]|0;aa=c[S>>2]|0;c[u>>2]=c[P>>2];c[v>>2]=_;c[w>>2]=aa;c[x>>2]=ip(c[u>>2]|0,c[w>>2]|0)|0;a[y>>0]=a[(c[v>>2]|0)+(c[x>>2]<<1)>>0]|0;jp(c[u>>2]|0,d[(c[v>>2]|0)+(c[x>>2]<<1)+1>>0]|0);aa=a[y>>0]|0;_=c[O>>2]|0;c[O>>2]=_+1;a[_>>0]=aa;}a:do{if(kp()|0)while(1){y=(gp(c[P>>2]|0)|0)==0&1;if(!(y&(c[O>>2]|0)>>>0<(c[Q>>2]|0)>>>0))break a;y=c[R>>2]|0;x=c[S>>2]|0;c[p>>2]=c[P>>2];c[q>>2]=y;c[r>>2]=x;c[s>>2]=ip(c[p>>2]|0,c[r>>2]|0)|0;a[t>>0]=a[(c[q>>2]|0)+(c[s>>2]<<1)>>0]|0;jp(c[p>>2]|0,d[(c[q>>2]|0)+(c[s>>2]<<1)+1>>0]|0);x=a[t>>0]|0;y=c[O>>2]|0;c[O>>2]=y+1;a[y>>0]=x;}}while(0);while(1){if((c[O>>2]|0)>>>0>=(c[Q>>2]|0)>>>0)break;t=c[R>>2]|0;s=c[S>>2]|0;c[j>>2]=c[P>>2];c[k>>2]=t;c[m>>2]=s;c[n>>2]=ip(c[j>>2]|0,c[m>>2]|0)|0;a[o>>0]=a[(c[k>>2]|0)+(c[n>>2]<<1)>>0]|0;jp(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<1)+1>>0]|0);s=a[o>>0]|0;t=c[O>>2]|0;c[O>>2]=t+1;a[t>>0]=s;}if(lp(ba)|0){c[T>>2]=c[V>>2];ka=c[T>>2]|0;l=i;return ka|0;}else{c[T>>2]=-20;ka=c[T>>2]|0;l=i;return ka|0;}return 0;}function fp(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+17|0;n=g+16|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;if((c[k>>2]|0)>>>0<1){f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[h>>2]=-72;o=c[h>>2]|0;l=g;return o|0;}c[(c[i>>2]|0)+12>>2]=c[j>>2];c[(c[i>>2]|0)+16>>2]=(c[(c[i>>2]|0)+12>>2]|0)+4;do{if((c[k>>2]|0)>>>0>=4){c[(c[i>>2]|0)+8>>2]=(c[j>>2]|0)+(c[k>>2]|0)+-4;f=mp(c[(c[i>>2]|0)+8>>2]|0)|0;c[c[i>>2]>>2]=f;a[m>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[m>>0]|0|0)p=8-(up(d[m>>0]|0)|0)|0;else p=0;c[(c[i>>2]|0)+4>>2]=p;if(!(d[m>>0]|0)){c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}}else{c[(c[i>>2]|0)+8>>2]=c[(c[i>>2]|0)+12>>2];c[c[i>>2]>>2]=d[c[(c[i>>2]|0)+12>>2]>>0];switch(c[k>>2]|0){case 7:{f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+6>>0]|0)<<16);q=10;break;}case 6:{q=10;break;}case 5:{q=11;break;}case 4:{q=12;break;}case 3:{q=13;break;}case 2:{q=14;break;}default:{}}if((q|0)==10){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)<<8);q=11;}if((q|0)==11){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+4>>0]|0)<<0);q=12;}if((q|0)==12){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+3>>0]|0)<<24);q=13;}if((q|0)==13){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+2>>0]|0)<<16);q=14;}if((q|0)==14){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+1>>0]|0)<<8);}a[n>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[n>>0]|0|0)r=8-(up(d[n>>0]|0)|0)|0;else r=0;c[(c[i>>2]|0)+4>>2]=r;if(d[n>>0]|0|0){f=(c[i>>2]|0)+4|0;c[f>>2]=(c[f>>2]|0)+(4-(c[k>>2]|0)<<3);break;}c[h>>2]=-20;o=c[h>>2]|0;l=g;return o|0;}}while(0);c[h>>2]=c[k>>2];o=c[h>>2]|0;l=g;return o|0;}function gp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=mp(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=mp(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function hp(){return 0;}function ip(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function jp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function kp(){return 1;}function lp(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;c[d>>2]=a;if((c[(c[d>>2]|0)+8>>2]|0)!=(c[(c[d>>2]|0)+12>>2]|0)){e=0;f=e&1;l=b;return f|0;}e=(c[(c[d>>2]|0)+4>>2]|0)==32;f=e&1;l=b;return f|0;}function mp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(kp()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=np(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=op(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function np(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(pp()|0)!=0;f=sp(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=tp(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function op(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(pp()|0)!=0;f=qp(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=rp(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function pp(){return d[11936]|0|0;}function qp(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function rp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function sp(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function tp(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function up(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function vp(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;if(c[p>>2]|0){c[i>>2]=wp(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}else{c[i>>2]=xp(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function wp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0;i=l;l=l+1024|0;j=i+968|0;k=i+964|0;m=i+960|0;n=i+956|0;o=i+1015|0;p=i+952|0;q=i+948|0;r=i+944|0;s=i+940|0;t=i+1014|0;u=i+936|0;v=i+932|0;w=i+928|0;x=i+924|0;y=i+1013|0;z=i+920|0;A=i+916|0;B=i+912|0;C=i+908|0;D=i+1012|0;E=i+904|0;F=i+900|0;G=i+896|0;H=i+892|0;I=i+1011|0;J=i+888|0;K=i+884|0;L=i+880|0;M=i+876|0;N=i+1010|0;O=i+872|0;P=i+868|0;Q=i+864|0;R=i+860|0;S=i+856|0;T=i+852|0;U=i+848|0;V=i+844|0;W=i+840|0;X=i+836|0;Y=i+1009|0;Z=i+832|0;_=i+828|0;$=i+824|0;aa=i+820|0;ba=i+1008|0;ca=i+816|0;da=i+812|0;ea=i+808|0;fa=i+804|0;ga=i+1007|0;ha=i+800|0;ia=i+796|0;ja=i+792|0;ka=i+788|0;la=i+1006|0;ma=i+784|0;na=i+780|0;oa=i+776|0;pa=i+772|0;qa=i+1005|0;ra=i+768|0;sa=i+764|0;ta=i+760|0;ua=i+756|0;va=i+1004|0;wa=i+752|0;xa=i+748|0;ya=i+744|0;za=i+740|0;Aa=i+736|0;Ba=i+732|0;Ca=i+728|0;Da=i+724|0;Ea=i+720|0;Fa=i+716|0;Ga=i+1003|0;Ha=i+712|0;Ia=i+708|0;Ja=i+704|0;Ka=i+700|0;La=i+1002|0;Ma=i+696|0;Na=i+692|0;Oa=i+688|0;Pa=i+684|0;Qa=i+1001|0;Ra=i+680|0;Sa=i+676|0;Ta=i+672|0;Ua=i+668|0;Va=i+1e3|0;Wa=i+664|0;Xa=i+660|0;Ya=i+656|0;Za=i+652|0;_a=i+999|0;$a=i+648|0;ab=i+644|0;bb=i+640|0;cb=i+636|0;db=i+998|0;eb=i+632|0;fb=i+628|0;gb=i+624|0;hb=i+620|0;ib=i+616|0;jb=i+612|0;kb=i+608|0;lb=i+604|0;mb=i+600|0;nb=i+596|0;ob=i+997|0;pb=i+592|0;qb=i+588|0;rb=i+584|0;sb=i+580|0;tb=i+996|0;ub=i+576|0;vb=i+572|0;wb=i+568|0;xb=i+564|0;yb=i+995|0;zb=i+560|0;Ab=i+556|0;Bb=i+552|0;Cb=i+548|0;Db=i+994|0;Eb=i+544|0;Fb=i+540|0;Gb=i+536|0;Hb=i+532|0;Ib=i+993|0;Jb=i+528|0;Kb=i+524|0;Lb=i+520|0;Mb=i+516|0;Nb=i+992|0;Ob=i+512|0;Pb=i+508|0;Qb=i+504|0;Rb=i+500|0;Sb=i+496|0;Tb=i+492|0;Ub=i+488|0;Vb=i+484|0;Wb=i+480|0;Xb=i+476|0;Yb=i+991|0;Zb=i+472|0;_b=i+468|0;$b=i+464|0;ac=i+460|0;bc=i+990|0;cc=i+456|0;dc=i+452|0;ec=i+448|0;fc=i+444|0;gc=i+989|0;hc=i+440|0;ic=i+436|0;jc=i+432|0;kc=i+428|0;lc=i+988|0;mc=i+424|0;nc=i+420|0;oc=i+416|0;pc=i+412|0;qc=i+987|0;rc=i+408|0;sc=i+404|0;tc=i+400|0;uc=i+396|0;vc=i+986|0;wc=i+392|0;xc=i+388|0;yc=i+384|0;zc=i+380|0;Ac=i+985|0;Bc=i+376|0;Cc=i+372|0;Dc=i+368|0;Ec=i+364|0;Fc=i+984|0;Gc=i+360|0;Hc=i+356|0;Ic=i+352|0;Jc=i+348|0;Kc=i+983|0;Lc=i+344|0;Mc=i+340|0;Nc=i+336|0;Oc=i+332|0;Pc=i+982|0;Qc=i+328|0;Rc=i+324|0;Sc=i+320|0;Tc=i+316|0;Uc=i+981|0;Vc=i+312|0;Wc=i+308|0;Xc=i+304|0;Yc=i+300|0;Zc=i+980|0;_c=i+296|0;$c=i+292|0;ad=i+288|0;bd=i+284|0;cd=i+979|0;dd=i+280|0;ed=i+276|0;fd=i+272|0;gd=i+268|0;hd=i+978|0;id=i+264|0;jd=i+260|0;kd=i+256|0;ld=i+252|0;md=i+977|0;nd=i+248|0;od=i+244|0;pd=i+240|0;qd=i+236|0;rd=i+976|0;sd=i+232|0;td=i+228|0;ud=i+224|0;vd=i+220|0;wd=i+216|0;xd=i+212|0;yd=i+208|0;zd=i+204|0;Ad=i+200|0;Bd=i+196|0;Cd=i+192|0;Dd=i+172|0;Ed=i+152|0;Fd=i+132|0;Gd=i+112|0;Hd=i+108|0;Id=i+104|0;Jd=i+100|0;Kd=i+96|0;Ld=i+92|0;Md=i+88|0;Nd=i+84|0;Od=i+80|0;Pd=i+76|0;Qd=i+72|0;Rd=i+68|0;Sd=i+64|0;Td=i+60|0;Ud=i+56|0;Vd=i+52|0;Wd=i+48|0;Xd=i+44|0;Yd=i+972|0;Zd=i+40|0;_d=i+36|0;$d=i+32|0;ae=i+28|0;be=i+24|0;ce=i+20|0;de=i+16|0;ee=i+12|0;fe=i+8|0;ge=i+4|0;he=i;c[de>>2]=b;c[ee>>2]=e;c[fe>>2]=f;c[ge>>2]=g;c[he>>2]=h;h=c[ee>>2]|0;ee=c[fe>>2]|0;fe=c[ge>>2]|0;ge=c[he>>2]|0;c[td>>2]=c[de>>2];c[ud>>2]=h;c[vd>>2]=ee;c[wd>>2]=fe;c[xd>>2]=ge;if((c[wd>>2]|0)>>>0<10){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}c[yd>>2]=c[vd>>2];c[zd>>2]=c[td>>2];c[Ad>>2]=(c[zd>>2]|0)+(c[ud>>2]|0);c[Bd>>2]=(c[xd>>2]|0)+4;c[Cd>>2]=c[Bd>>2];c[Hd>>2]=(yp(c[yd>>2]|0)|0)&65535;c[Id>>2]=(yp((c[yd>>2]|0)+2|0)|0)&65535;c[Jd>>2]=(yp((c[yd>>2]|0)+4|0)|0)&65535;c[Kd>>2]=(c[wd>>2]|0)-((c[Hd>>2]|0)+(c[Id>>2]|0)+(c[Jd>>2]|0)+6);c[Ld>>2]=(c[yd>>2]|0)+6;c[Md>>2]=(c[Ld>>2]|0)+(c[Hd>>2]|0);c[Nd>>2]=(c[Md>>2]|0)+(c[Id>>2]|0);c[Od>>2]=(c[Nd>>2]|0)+(c[Jd>>2]|0);c[Pd>>2]=(((c[ud>>2]|0)+3|0)>>>0)/4|0;c[Qd>>2]=(c[zd>>2]|0)+(c[Pd>>2]|0);c[Rd>>2]=(c[Qd>>2]|0)+(c[Pd>>2]|0);c[Sd>>2]=(c[Rd>>2]|0)+(c[Pd>>2]|0);c[Td>>2]=c[zd>>2];c[Ud>>2]=c[Qd>>2];c[Vd>>2]=c[Rd>>2];c[Wd>>2]=c[Sd>>2];c[Xd>>2]=0;bp(Yd,c[xd>>2]|0);c[Zd>>2]=d[Yd+2>>0];if((c[Kd>>2]|0)>>>0>(c[wd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}c[_d>>2]=fp(Dd,c[Ld>>2]|0,c[Hd>>2]|0)|0;if(ap(c[_d>>2]|0)|0){c[sd>>2]=c[_d>>2];ie=c[sd>>2]|0;l=i;return ie|0;}c[$d>>2]=fp(Ed,c[Md>>2]|0,c[Id>>2]|0)|0;if(ap(c[$d>>2]|0)|0){c[sd>>2]=c[$d>>2];ie=c[sd>>2]|0;l=i;return ie|0;}c[ae>>2]=fp(Fd,c[Nd>>2]|0,c[Jd>>2]|0)|0;if(ap(c[ae>>2]|0)|0){c[sd>>2]=c[ae>>2];ie=c[sd>>2]|0;l=i;return ie|0;}c[be>>2]=fp(Gd,c[Od>>2]|0,c[Kd>>2]|0)|0;if(ap(c[be>>2]|0)|0){c[sd>>2]=c[be>>2];ie=c[sd>>2]|0;l=i;return ie|0;}be=gp(Dd)|0;Kd=be|(gp(Ed)|0);be=Kd|(gp(Fd)|0);c[Xd>>2]=be|(gp(Gd)|0);while(1){if(c[Xd>>2]|0)break;if((c[Wd>>2]|0)>>>0>=((c[Ad>>2]|0)+-3|0)>>>0)break;if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[nd>>2]=Dd;c[od>>2]=be;c[pd>>2]=Kd;c[qd>>2]=ip(c[nd>>2]|0,c[pd>>2]|0)|0;a[rd>>0]=a[(c[od>>2]|0)+(c[qd>>2]<<1)>>0]|0;jp(c[nd>>2]|0,d[(c[od>>2]|0)+(c[qd>>2]<<1)+1>>0]|0);Kd=a[rd>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[id>>2]=Ed;c[jd>>2]=Kd;c[kd>>2]=be;c[ld>>2]=ip(c[id>>2]|0,c[kd>>2]|0)|0;a[md>>0]=a[(c[jd>>2]|0)+(c[ld>>2]<<1)>>0]|0;jp(c[id>>2]|0,d[(c[jd>>2]|0)+(c[ld>>2]<<1)+1>>0]|0);be=a[md>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;}if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[dd>>2]=Fd;c[ed>>2]=be;c[fd>>2]=Kd;c[gd>>2]=ip(c[dd>>2]|0,c[fd>>2]|0)|0;a[hd>>0]=a[(c[ed>>2]|0)+(c[gd>>2]<<1)>>0]|0;jp(c[dd>>2]|0,d[(c[ed>>2]|0)+(c[gd>>2]<<1)+1>>0]|0);Kd=a[hd>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[_c>>2]=Gd;c[$c>>2]=Kd;c[ad>>2]=be;c[bd>>2]=ip(c[_c>>2]|0,c[ad>>2]|0)|0;a[cd>>0]=a[(c[$c>>2]|0)+(c[bd>>2]<<1)>>0]|0;jp(c[_c>>2]|0,d[(c[$c>>2]|0)+(c[bd>>2]<<1)+1>>0]|0);be=a[cd>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;}hp()|0;be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Vc>>2]=Dd;c[Wc>>2]=be;c[Xc>>2]=Kd;c[Yc>>2]=ip(c[Vc>>2]|0,c[Xc>>2]|0)|0;a[Zc>>0]=a[(c[Wc>>2]|0)+(c[Yc>>2]<<1)>>0]|0;jp(c[Vc>>2]|0,d[(c[Wc>>2]|0)+(c[Yc>>2]<<1)+1>>0]|0);Kd=a[Zc>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;hp()|0;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[Qc>>2]=Ed;c[Rc>>2]=Kd;c[Sc>>2]=be;c[Tc>>2]=ip(c[Qc>>2]|0,c[Sc>>2]|0)|0;a[Uc>>0]=a[(c[Rc>>2]|0)+(c[Tc>>2]<<1)>>0]|0;jp(c[Qc>>2]|0,d[(c[Rc>>2]|0)+(c[Tc>>2]<<1)+1>>0]|0);be=a[Uc>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;hp()|0;be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Lc>>2]=Fd;c[Mc>>2]=be;c[Nc>>2]=Kd;c[Oc>>2]=ip(c[Lc>>2]|0,c[Nc>>2]|0)|0;a[Pc>>0]=a[(c[Mc>>2]|0)+(c[Oc>>2]<<1)>>0]|0;jp(c[Lc>>2]|0,d[(c[Mc>>2]|0)+(c[Oc>>2]<<1)+1>>0]|0);Kd=a[Pc>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;hp()|0;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[Gc>>2]=Gd;c[Hc>>2]=Kd;c[Ic>>2]=be;c[Jc>>2]=ip(c[Gc>>2]|0,c[Ic>>2]|0)|0;a[Kc>>0]=a[(c[Hc>>2]|0)+(c[Jc>>2]<<1)>>0]|0;jp(c[Gc>>2]|0,d[(c[Hc>>2]|0)+(c[Jc>>2]<<1)+1>>0]|0);be=a[Kc>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Bc>>2]=Dd;c[Cc>>2]=be;c[Dc>>2]=Kd;c[Ec>>2]=ip(c[Bc>>2]|0,c[Dc>>2]|0)|0;a[Fc>>0]=a[(c[Cc>>2]|0)+(c[Ec>>2]<<1)>>0]|0;jp(c[Bc>>2]|0,d[(c[Cc>>2]|0)+(c[Ec>>2]<<1)+1>>0]|0);Kd=a[Fc>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[wc>>2]=Ed;c[xc>>2]=Kd;c[yc>>2]=be;c[zc>>2]=ip(c[wc>>2]|0,c[yc>>2]|0)|0;a[Ac>>0]=a[(c[xc>>2]|0)+(c[zc>>2]<<1)>>0]|0;jp(c[wc>>2]|0,d[(c[xc>>2]|0)+(c[zc>>2]<<1)+1>>0]|0);be=a[Ac>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;}if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[rc>>2]=Fd;c[sc>>2]=be;c[tc>>2]=Kd;c[uc>>2]=ip(c[rc>>2]|0,c[tc>>2]|0)|0;a[vc>>0]=a[(c[sc>>2]|0)+(c[uc>>2]<<1)>>0]|0;jp(c[rc>>2]|0,d[(c[sc>>2]|0)+(c[uc>>2]<<1)+1>>0]|0);Kd=a[vc>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[mc>>2]=Gd;c[nc>>2]=Kd;c[oc>>2]=be;c[pc>>2]=ip(c[mc>>2]|0,c[oc>>2]|0)|0;a[qc>>0]=a[(c[nc>>2]|0)+(c[pc>>2]<<1)>>0]|0;jp(c[mc>>2]|0,d[(c[nc>>2]|0)+(c[pc>>2]<<1)+1>>0]|0);be=a[qc>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;}be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[hc>>2]=Dd;c[ic>>2]=be;c[jc>>2]=Kd;c[kc>>2]=ip(c[hc>>2]|0,c[jc>>2]|0)|0;a[lc>>0]=a[(c[ic>>2]|0)+(c[kc>>2]<<1)>>0]|0;jp(c[hc>>2]|0,d[(c[ic>>2]|0)+(c[kc>>2]<<1)+1>>0]|0);Kd=a[lc>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[cc>>2]=Ed;c[dc>>2]=Kd;c[ec>>2]=be;c[fc>>2]=ip(c[cc>>2]|0,c[ec>>2]|0)|0;a[gc>>0]=a[(c[dc>>2]|0)+(c[fc>>2]<<1)>>0]|0;jp(c[cc>>2]|0,d[(c[dc>>2]|0)+(c[fc>>2]<<1)+1>>0]|0);be=a[gc>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Zb>>2]=Fd;c[_b>>2]=be;c[$b>>2]=Kd;c[ac>>2]=ip(c[Zb>>2]|0,c[$b>>2]|0)|0;a[bc>>0]=a[(c[_b>>2]|0)+(c[ac>>2]<<1)>>0]|0;jp(c[Zb>>2]|0,d[(c[_b>>2]|0)+(c[ac>>2]<<1)+1>>0]|0);Kd=a[bc>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[Ub>>2]=Gd;c[Vb>>2]=Kd;c[Wb>>2]=be;c[Xb>>2]=ip(c[Ub>>2]|0,c[Wb>>2]|0)|0;a[Yb>>0]=a[(c[Vb>>2]|0)+(c[Xb>>2]<<1)>>0]|0;jp(c[Ub>>2]|0,d[(c[Vb>>2]|0)+(c[Xb>>2]<<1)+1>>0]|0);be=a[Yb>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;gp(Dd)|0;gp(Ed)|0;gp(Fd)|0;gp(Gd)|0;}if((c[Td>>2]|0)>>>0>(c[Qd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}if((c[Ud>>2]|0)>>>0>(c[Rd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}if((c[Vd>>2]|0)>>>0>(c[Sd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}Yb=c[Qd>>2]|0;Qd=c[Cd>>2]|0;Xb=c[Zd>>2]|0;c[Ob>>2]=c[Td>>2];c[Pb>>2]=Dd;c[Qb>>2]=Yb;c[Rb>>2]=Qd;c[Sb>>2]=Xb;c[Tb>>2]=c[Ob>>2];while(1){Tb=(gp(c[Pb>>2]|0)|0)==0&1;if(!(Tb&(c[Ob>>2]|0)>>>0<((c[Qb>>2]|0)+-3|0)>>>0))break;if(hp()|0){Tb=c[Rb>>2]|0;Xb=c[Sb>>2]|0;c[Jb>>2]=c[Pb>>2];c[Kb>>2]=Tb;c[Lb>>2]=Xb;c[Mb>>2]=ip(c[Jb>>2]|0,c[Lb>>2]|0)|0;a[Nb>>0]=a[(c[Kb>>2]|0)+(c[Mb>>2]<<1)>>0]|0;jp(c[Jb>>2]|0,d[(c[Kb>>2]|0)+(c[Mb>>2]<<1)+1>>0]|0);Xb=a[Nb>>0]|0;Tb=c[Ob>>2]|0;c[Ob>>2]=Tb+1;a[Tb>>0]=Xb;}hp()|0;Xb=c[Rb>>2]|0;Tb=c[Sb>>2]|0;c[Eb>>2]=c[Pb>>2];c[Fb>>2]=Xb;c[Gb>>2]=Tb;c[Hb>>2]=ip(c[Eb>>2]|0,c[Gb>>2]|0)|0;a[Ib>>0]=a[(c[Fb>>2]|0)+(c[Hb>>2]<<1)>>0]|0;jp(c[Eb>>2]|0,d[(c[Fb>>2]|0)+(c[Hb>>2]<<1)+1>>0]|0);Tb=a[Ib>>0]|0;Xb=c[Ob>>2]|0;c[Ob>>2]=Xb+1;a[Xb>>0]=Tb;if(hp()|0){Tb=c[Rb>>2]|0;Xb=c[Sb>>2]|0;c[zb>>2]=c[Pb>>2];c[Ab>>2]=Tb;c[Bb>>2]=Xb;c[Cb>>2]=ip(c[zb>>2]|0,c[Bb>>2]|0)|0;a[Db>>0]=a[(c[Ab>>2]|0)+(c[Cb>>2]<<1)>>0]|0;jp(c[zb>>2]|0,d[(c[Ab>>2]|0)+(c[Cb>>2]<<1)+1>>0]|0);Xb=a[Db>>0]|0;Tb=c[Ob>>2]|0;c[Ob>>2]=Tb+1;a[Tb>>0]=Xb;}Xb=c[Rb>>2]|0;Tb=c[Sb>>2]|0;c[ub>>2]=c[Pb>>2];c[vb>>2]=Xb;c[wb>>2]=Tb;c[xb>>2]=ip(c[ub>>2]|0,c[wb>>2]|0)|0;a[yb>>0]=a[(c[vb>>2]|0)+(c[xb>>2]<<1)>>0]|0;jp(c[ub>>2]|0,d[(c[vb>>2]|0)+(c[xb>>2]<<1)+1>>0]|0);Tb=a[yb>>0]|0;Xb=c[Ob>>2]|0;c[Ob>>2]=Xb+1;a[Xb>>0]=Tb;}a:do{if(kp()|0)while(1){yb=(gp(c[Pb>>2]|0)|0)==0&1;if(!(yb&(c[Ob>>2]|0)>>>0<(c[Qb>>2]|0)>>>0))break a;yb=c[Rb>>2]|0;xb=c[Sb>>2]|0;c[pb>>2]=c[Pb>>2];c[qb>>2]=yb;c[rb>>2]=xb;c[sb>>2]=ip(c[pb>>2]|0,c[rb>>2]|0)|0;a[tb>>0]=a[(c[qb>>2]|0)+(c[sb>>2]<<1)>>0]|0;jp(c[pb>>2]|0,d[(c[qb>>2]|0)+(c[sb>>2]<<1)+1>>0]|0);xb=a[tb>>0]|0;yb=c[Ob>>2]|0;c[Ob>>2]=yb+1;a[yb>>0]=xb;}}while(0);while(1){if((c[Ob>>2]|0)>>>0>=(c[Qb>>2]|0)>>>0)break;tb=c[Rb>>2]|0;sb=c[Sb>>2]|0;c[kb>>2]=c[Pb>>2];c[lb>>2]=tb;c[mb>>2]=sb;c[nb>>2]=ip(c[kb>>2]|0,c[mb>>2]|0)|0;a[ob>>0]=a[(c[lb>>2]|0)+(c[nb>>2]<<1)>>0]|0;jp(c[kb>>2]|0,d[(c[lb>>2]|0)+(c[nb>>2]<<1)+1>>0]|0);sb=a[ob>>0]|0;tb=c[Ob>>2]|0;c[Ob>>2]=tb+1;a[tb>>0]=sb;}Ob=c[Rd>>2]|0;Rd=c[Cd>>2]|0;ob=c[Zd>>2]|0;c[eb>>2]=c[Ud>>2];c[fb>>2]=Ed;c[gb>>2]=Ob;c[hb>>2]=Rd;c[ib>>2]=ob;c[jb>>2]=c[eb>>2];while(1){jb=(gp(c[fb>>2]|0)|0)==0&1;if(!(jb&(c[eb>>2]|0)>>>0<((c[gb>>2]|0)+-3|0)>>>0))break;if(hp()|0){jb=c[hb>>2]|0;ob=c[ib>>2]|0;c[$a>>2]=c[fb>>2];c[ab>>2]=jb;c[bb>>2]=ob;c[cb>>2]=ip(c[$a>>2]|0,c[bb>>2]|0)|0;a[db>>0]=a[(c[ab>>2]|0)+(c[cb>>2]<<1)>>0]|0;jp(c[$a>>2]|0,d[(c[ab>>2]|0)+(c[cb>>2]<<1)+1>>0]|0);ob=a[db>>0]|0;jb=c[eb>>2]|0;c[eb>>2]=jb+1;a[jb>>0]=ob;}hp()|0;ob=c[hb>>2]|0;jb=c[ib>>2]|0;c[Wa>>2]=c[fb>>2];c[Xa>>2]=ob;c[Ya>>2]=jb;c[Za>>2]=ip(c[Wa>>2]|0,c[Ya>>2]|0)|0;a[_a>>0]=a[(c[Xa>>2]|0)+(c[Za>>2]<<1)>>0]|0;jp(c[Wa>>2]|0,d[(c[Xa>>2]|0)+(c[Za>>2]<<1)+1>>0]|0);jb=a[_a>>0]|0;ob=c[eb>>2]|0;c[eb>>2]=ob+1;a[ob>>0]=jb;if(hp()|0){jb=c[hb>>2]|0;ob=c[ib>>2]|0;c[Ra>>2]=c[fb>>2];c[Sa>>2]=jb;c[Ta>>2]=ob;c[Ua>>2]=ip(c[Ra>>2]|0,c[Ta>>2]|0)|0;a[Va>>0]=a[(c[Sa>>2]|0)+(c[Ua>>2]<<1)>>0]|0;jp(c[Ra>>2]|0,d[(c[Sa>>2]|0)+(c[Ua>>2]<<1)+1>>0]|0);ob=a[Va>>0]|0;jb=c[eb>>2]|0;c[eb>>2]=jb+1;a[jb>>0]=ob;}ob=c[hb>>2]|0;jb=c[ib>>2]|0;c[Ma>>2]=c[fb>>2];c[Na>>2]=ob;c[Oa>>2]=jb;c[Pa>>2]=ip(c[Ma>>2]|0,c[Oa>>2]|0)|0;a[Qa>>0]=a[(c[Na>>2]|0)+(c[Pa>>2]<<1)>>0]|0;jp(c[Ma>>2]|0,d[(c[Na>>2]|0)+(c[Pa>>2]<<1)+1>>0]|0);jb=a[Qa>>0]|0;ob=c[eb>>2]|0;c[eb>>2]=ob+1;a[ob>>0]=jb;}b:do{if(kp()|0)while(1){Qa=(gp(c[fb>>2]|0)|0)==0&1;if(!(Qa&(c[eb>>2]|0)>>>0<(c[gb>>2]|0)>>>0))break b;Qa=c[hb>>2]|0;Pa=c[ib>>2]|0;c[Ha>>2]=c[fb>>2];c[Ia>>2]=Qa;c[Ja>>2]=Pa;c[Ka>>2]=ip(c[Ha>>2]|0,c[Ja>>2]|0)|0;a[La>>0]=a[(c[Ia>>2]|0)+(c[Ka>>2]<<1)>>0]|0;jp(c[Ha>>2]|0,d[(c[Ia>>2]|0)+(c[Ka>>2]<<1)+1>>0]|0);Pa=a[La>>0]|0;Qa=c[eb>>2]|0;c[eb>>2]=Qa+1;a[Qa>>0]=Pa;}}while(0);while(1){if((c[eb>>2]|0)>>>0>=(c[gb>>2]|0)>>>0)break;La=c[hb>>2]|0;Ka=c[ib>>2]|0;c[Ca>>2]=c[fb>>2];c[Da>>2]=La;c[Ea>>2]=Ka;c[Fa>>2]=ip(c[Ca>>2]|0,c[Ea>>2]|0)|0;a[Ga>>0]=a[(c[Da>>2]|0)+(c[Fa>>2]<<1)>>0]|0;jp(c[Ca>>2]|0,d[(c[Da>>2]|0)+(c[Fa>>2]<<1)+1>>0]|0);Ka=a[Ga>>0]|0;La=c[eb>>2]|0;c[eb>>2]=La+1;a[La>>0]=Ka;}eb=c[Sd>>2]|0;Sd=c[Cd>>2]|0;Ga=c[Zd>>2]|0;c[wa>>2]=c[Vd>>2];c[xa>>2]=Fd;c[ya>>2]=eb;c[za>>2]=Sd;c[Aa>>2]=Ga;c[Ba>>2]=c[wa>>2];while(1){Ba=(gp(c[xa>>2]|0)|0)==0&1;if(!(Ba&(c[wa>>2]|0)>>>0<((c[ya>>2]|0)+-3|0)>>>0))break;if(hp()|0){Ba=c[za>>2]|0;Ga=c[Aa>>2]|0;c[ra>>2]=c[xa>>2];c[sa>>2]=Ba;c[ta>>2]=Ga;c[ua>>2]=ip(c[ra>>2]|0,c[ta>>2]|0)|0;a[va>>0]=a[(c[sa>>2]|0)+(c[ua>>2]<<1)>>0]|0;jp(c[ra>>2]|0,d[(c[sa>>2]|0)+(c[ua>>2]<<1)+1>>0]|0);Ga=a[va>>0]|0;Ba=c[wa>>2]|0;c[wa>>2]=Ba+1;a[Ba>>0]=Ga;}hp()|0;Ga=c[za>>2]|0;Ba=c[Aa>>2]|0;c[ma>>2]=c[xa>>2];c[na>>2]=Ga;c[oa>>2]=Ba;c[pa>>2]=ip(c[ma>>2]|0,c[oa>>2]|0)|0;a[qa>>0]=a[(c[na>>2]|0)+(c[pa>>2]<<1)>>0]|0;jp(c[ma>>2]|0,d[(c[na>>2]|0)+(c[pa>>2]<<1)+1>>0]|0);Ba=a[qa>>0]|0;Ga=c[wa>>2]|0;c[wa>>2]=Ga+1;a[Ga>>0]=Ba;if(hp()|0){Ba=c[za>>2]|0;Ga=c[Aa>>2]|0;c[ha>>2]=c[xa>>2];c[ia>>2]=Ba;c[ja>>2]=Ga;c[ka>>2]=ip(c[ha>>2]|0,c[ja>>2]|0)|0;a[la>>0]=a[(c[ia>>2]|0)+(c[ka>>2]<<1)>>0]|0;jp(c[ha>>2]|0,d[(c[ia>>2]|0)+(c[ka>>2]<<1)+1>>0]|0);Ga=a[la>>0]|0;Ba=c[wa>>2]|0;c[wa>>2]=Ba+1;a[Ba>>0]=Ga;}Ga=c[za>>2]|0;Ba=c[Aa>>2]|0;c[ca>>2]=c[xa>>2];c[da>>2]=Ga;c[ea>>2]=Ba;c[fa>>2]=ip(c[ca>>2]|0,c[ea>>2]|0)|0;a[ga>>0]=a[(c[da>>2]|0)+(c[fa>>2]<<1)>>0]|0;jp(c[ca>>2]|0,d[(c[da>>2]|0)+(c[fa>>2]<<1)+1>>0]|0);Ba=a[ga>>0]|0;Ga=c[wa>>2]|0;c[wa>>2]=Ga+1;a[Ga>>0]=Ba;}c:do{if(kp()|0)while(1){ga=(gp(c[xa>>2]|0)|0)==0&1;if(!(ga&(c[wa>>2]|0)>>>0<(c[ya>>2]|0)>>>0))break c;ga=c[za>>2]|0;fa=c[Aa>>2]|0;c[Z>>2]=c[xa>>2];c[_>>2]=ga;c[$>>2]=fa;c[aa>>2]=ip(c[Z>>2]|0,c[$>>2]|0)|0;a[ba>>0]=a[(c[_>>2]|0)+(c[aa>>2]<<1)>>0]|0;jp(c[Z>>2]|0,d[(c[_>>2]|0)+(c[aa>>2]<<1)+1>>0]|0);fa=a[ba>>0]|0;ga=c[wa>>2]|0;c[wa>>2]=ga+1;a[ga>>0]=fa;}}while(0);while(1){if((c[wa>>2]|0)>>>0>=(c[ya>>2]|0)>>>0)break;ba=c[za>>2]|0;aa=c[Aa>>2]|0;c[U>>2]=c[xa>>2];c[V>>2]=ba;c[W>>2]=aa;c[X>>2]=ip(c[U>>2]|0,c[W>>2]|0)|0;a[Y>>0]=a[(c[V>>2]|0)+(c[X>>2]<<1)>>0]|0;jp(c[U>>2]|0,d[(c[V>>2]|0)+(c[X>>2]<<1)+1>>0]|0);aa=a[Y>>0]|0;ba=c[wa>>2]|0;c[wa>>2]=ba+1;a[ba>>0]=aa;}wa=c[Ad>>2]|0;Ad=c[Cd>>2]|0;Cd=c[Zd>>2]|0;c[O>>2]=c[Wd>>2];c[P>>2]=Gd;c[Q>>2]=wa;c[R>>2]=Ad;c[S>>2]=Cd;c[T>>2]=c[O>>2];while(1){T=(gp(c[P>>2]|0)|0)==0&1;if(!(T&(c[O>>2]|0)>>>0<((c[Q>>2]|0)+-3|0)>>>0))break;if(hp()|0){T=c[R>>2]|0;Cd=c[S>>2]|0;c[J>>2]=c[P>>2];c[K>>2]=T;c[L>>2]=Cd;c[M>>2]=ip(c[J>>2]|0,c[L>>2]|0)|0;a[N>>0]=a[(c[K>>2]|0)+(c[M>>2]<<1)>>0]|0;jp(c[J>>2]|0,d[(c[K>>2]|0)+(c[M>>2]<<1)+1>>0]|0);Cd=a[N>>0]|0;T=c[O>>2]|0;c[O>>2]=T+1;a[T>>0]=Cd;}hp()|0;Cd=c[R>>2]|0;T=c[S>>2]|0;c[E>>2]=c[P>>2];c[F>>2]=Cd;c[G>>2]=T;c[H>>2]=ip(c[E>>2]|0,c[G>>2]|0)|0;a[I>>0]=a[(c[F>>2]|0)+(c[H>>2]<<1)>>0]|0;jp(c[E>>2]|0,d[(c[F>>2]|0)+(c[H>>2]<<1)+1>>0]|0);T=a[I>>0]|0;Cd=c[O>>2]|0;c[O>>2]=Cd+1;a[Cd>>0]=T;if(hp()|0){T=c[R>>2]|0;Cd=c[S>>2]|0;c[z>>2]=c[P>>2];c[A>>2]=T;c[B>>2]=Cd;c[C>>2]=ip(c[z>>2]|0,c[B>>2]|0)|0;a[D>>0]=a[(c[A>>2]|0)+(c[C>>2]<<1)>>0]|0;jp(c[z>>2]|0,d[(c[A>>2]|0)+(c[C>>2]<<1)+1>>0]|0);Cd=a[D>>0]|0;T=c[O>>2]|0;c[O>>2]=T+1;a[T>>0]=Cd;}Cd=c[R>>2]|0;T=c[S>>2]|0;c[u>>2]=c[P>>2];c[v>>2]=Cd;c[w>>2]=T;c[x>>2]=ip(c[u>>2]|0,c[w>>2]|0)|0;a[y>>0]=a[(c[v>>2]|0)+(c[x>>2]<<1)>>0]|0;jp(c[u>>2]|0,d[(c[v>>2]|0)+(c[x>>2]<<1)+1>>0]|0);T=a[y>>0]|0;Cd=c[O>>2]|0;c[O>>2]=Cd+1;a[Cd>>0]=T;}d:do{if(kp()|0)while(1){y=(gp(c[P>>2]|0)|0)==0&1;if(!(y&(c[O>>2]|0)>>>0<(c[Q>>2]|0)>>>0))break d;y=c[R>>2]|0;x=c[S>>2]|0;c[p>>2]=c[P>>2];c[q>>2]=y;c[r>>2]=x;c[s>>2]=ip(c[p>>2]|0,c[r>>2]|0)|0;a[t>>0]=a[(c[q>>2]|0)+(c[s>>2]<<1)>>0]|0;jp(c[p>>2]|0,d[(c[q>>2]|0)+(c[s>>2]<<1)+1>>0]|0);x=a[t>>0]|0;y=c[O>>2]|0;c[O>>2]=y+1;a[y>>0]=x;}}while(0);while(1){if((c[O>>2]|0)>>>0>=(c[Q>>2]|0)>>>0)break;t=c[R>>2]|0;s=c[S>>2]|0;c[j>>2]=c[P>>2];c[k>>2]=t;c[m>>2]=s;c[n>>2]=ip(c[j>>2]|0,c[m>>2]|0)|0;a[o>>0]=a[(c[k>>2]|0)+(c[n>>2]<<1)>>0]|0;jp(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<1)+1>>0]|0);s=a[o>>0]|0;t=c[O>>2]|0;c[O>>2]=t+1;a[t>>0]=s;}O=lp(Dd)|0;Dd=O&(lp(Ed)|0);Ed=Dd&(lp(Fd)|0);c[ce>>2]=Ed&(lp(Gd)|0);if(c[ce>>2]|0){c[sd>>2]=c[ud>>2];ie=c[sd>>2]|0;l=i;return ie|0;}else{c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}return 0;}function xp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0;i=l;l=l+1024|0;j=i+968|0;k=i+964|0;m=i+960|0;n=i+956|0;o=i+1015|0;p=i+952|0;q=i+948|0;r=i+944|0;s=i+940|0;t=i+1014|0;u=i+936|0;v=i+932|0;w=i+928|0;x=i+924|0;y=i+1013|0;z=i+920|0;A=i+916|0;B=i+912|0;C=i+908|0;D=i+1012|0;E=i+904|0;F=i+900|0;G=i+896|0;H=i+892|0;I=i+1011|0;J=i+888|0;K=i+884|0;L=i+880|0;M=i+876|0;N=i+1010|0;O=i+872|0;P=i+868|0;Q=i+864|0;R=i+860|0;S=i+856|0;T=i+852|0;U=i+848|0;V=i+844|0;W=i+840|0;X=i+836|0;Y=i+1009|0;Z=i+832|0;_=i+828|0;$=i+824|0;aa=i+820|0;ba=i+1008|0;ca=i+816|0;da=i+812|0;ea=i+808|0;fa=i+804|0;ga=i+1007|0;ha=i+800|0;ia=i+796|0;ja=i+792|0;ka=i+788|0;la=i+1006|0;ma=i+784|0;na=i+780|0;oa=i+776|0;pa=i+772|0;qa=i+1005|0;ra=i+768|0;sa=i+764|0;ta=i+760|0;ua=i+756|0;va=i+1004|0;wa=i+752|0;xa=i+748|0;ya=i+744|0;za=i+740|0;Aa=i+736|0;Ba=i+732|0;Ca=i+728|0;Da=i+724|0;Ea=i+720|0;Fa=i+716|0;Ga=i+1003|0;Ha=i+712|0;Ia=i+708|0;Ja=i+704|0;Ka=i+700|0;La=i+1002|0;Ma=i+696|0;Na=i+692|0;Oa=i+688|0;Pa=i+684|0;Qa=i+1001|0;Ra=i+680|0;Sa=i+676|0;Ta=i+672|0;Ua=i+668|0;Va=i+1e3|0;Wa=i+664|0;Xa=i+660|0;Ya=i+656|0;Za=i+652|0;_a=i+999|0;$a=i+648|0;ab=i+644|0;bb=i+640|0;cb=i+636|0;db=i+998|0;eb=i+632|0;fb=i+628|0;gb=i+624|0;hb=i+620|0;ib=i+616|0;jb=i+612|0;kb=i+608|0;lb=i+604|0;mb=i+600|0;nb=i+596|0;ob=i+997|0;pb=i+592|0;qb=i+588|0;rb=i+584|0;sb=i+580|0;tb=i+996|0;ub=i+576|0;vb=i+572|0;wb=i+568|0;xb=i+564|0;yb=i+995|0;zb=i+560|0;Ab=i+556|0;Bb=i+552|0;Cb=i+548|0;Db=i+994|0;Eb=i+544|0;Fb=i+540|0;Gb=i+536|0;Hb=i+532|0;Ib=i+993|0;Jb=i+528|0;Kb=i+524|0;Lb=i+520|0;Mb=i+516|0;Nb=i+992|0;Ob=i+512|0;Pb=i+508|0;Qb=i+504|0;Rb=i+500|0;Sb=i+496|0;Tb=i+492|0;Ub=i+488|0;Vb=i+484|0;Wb=i+480|0;Xb=i+476|0;Yb=i+991|0;Zb=i+472|0;_b=i+468|0;$b=i+464|0;ac=i+460|0;bc=i+990|0;cc=i+456|0;dc=i+452|0;ec=i+448|0;fc=i+444|0;gc=i+989|0;hc=i+440|0;ic=i+436|0;jc=i+432|0;kc=i+428|0;lc=i+988|0;mc=i+424|0;nc=i+420|0;oc=i+416|0;pc=i+412|0;qc=i+987|0;rc=i+408|0;sc=i+404|0;tc=i+400|0;uc=i+396|0;vc=i+986|0;wc=i+392|0;xc=i+388|0;yc=i+384|0;zc=i+380|0;Ac=i+985|0;Bc=i+376|0;Cc=i+372|0;Dc=i+368|0;Ec=i+364|0;Fc=i+984|0;Gc=i+360|0;Hc=i+356|0;Ic=i+352|0;Jc=i+348|0;Kc=i+983|0;Lc=i+344|0;Mc=i+340|0;Nc=i+336|0;Oc=i+332|0;Pc=i+982|0;Qc=i+328|0;Rc=i+324|0;Sc=i+320|0;Tc=i+316|0;Uc=i+981|0;Vc=i+312|0;Wc=i+308|0;Xc=i+304|0;Yc=i+300|0;Zc=i+980|0;_c=i+296|0;$c=i+292|0;ad=i+288|0;bd=i+284|0;cd=i+979|0;dd=i+280|0;ed=i+276|0;fd=i+272|0;gd=i+268|0;hd=i+978|0;id=i+264|0;jd=i+260|0;kd=i+256|0;ld=i+252|0;md=i+977|0;nd=i+248|0;od=i+244|0;pd=i+240|0;qd=i+236|0;rd=i+976|0;sd=i+232|0;td=i+228|0;ud=i+224|0;vd=i+220|0;wd=i+216|0;xd=i+212|0;yd=i+208|0;zd=i+204|0;Ad=i+200|0;Bd=i+196|0;Cd=i+192|0;Dd=i+172|0;Ed=i+152|0;Fd=i+132|0;Gd=i+112|0;Hd=i+108|0;Id=i+104|0;Jd=i+100|0;Kd=i+96|0;Ld=i+92|0;Md=i+88|0;Nd=i+84|0;Od=i+80|0;Pd=i+76|0;Qd=i+72|0;Rd=i+68|0;Sd=i+64|0;Td=i+60|0;Ud=i+56|0;Vd=i+52|0;Wd=i+48|0;Xd=i+44|0;Yd=i+972|0;Zd=i+40|0;_d=i+36|0;$d=i+32|0;ae=i+28|0;be=i+24|0;ce=i+20|0;de=i+16|0;ee=i+12|0;fe=i+8|0;ge=i+4|0;he=i;c[de>>2]=b;c[ee>>2]=e;c[fe>>2]=f;c[ge>>2]=g;c[he>>2]=h;h=c[ee>>2]|0;ee=c[fe>>2]|0;fe=c[ge>>2]|0;ge=c[he>>2]|0;c[td>>2]=c[de>>2];c[ud>>2]=h;c[vd>>2]=ee;c[wd>>2]=fe;c[xd>>2]=ge;if((c[wd>>2]|0)>>>0<10){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}c[yd>>2]=c[vd>>2];c[zd>>2]=c[td>>2];c[Ad>>2]=(c[zd>>2]|0)+(c[ud>>2]|0);c[Bd>>2]=(c[xd>>2]|0)+4;c[Cd>>2]=c[Bd>>2];c[Hd>>2]=(yp(c[yd>>2]|0)|0)&65535;c[Id>>2]=(yp((c[yd>>2]|0)+2|0)|0)&65535;c[Jd>>2]=(yp((c[yd>>2]|0)+4|0)|0)&65535;c[Kd>>2]=(c[wd>>2]|0)-((c[Hd>>2]|0)+(c[Id>>2]|0)+(c[Jd>>2]|0)+6);c[Ld>>2]=(c[yd>>2]|0)+6;c[Md>>2]=(c[Ld>>2]|0)+(c[Hd>>2]|0);c[Nd>>2]=(c[Md>>2]|0)+(c[Id>>2]|0);c[Od>>2]=(c[Nd>>2]|0)+(c[Jd>>2]|0);c[Pd>>2]=(((c[ud>>2]|0)+3|0)>>>0)/4|0;c[Qd>>2]=(c[zd>>2]|0)+(c[Pd>>2]|0);c[Rd>>2]=(c[Qd>>2]|0)+(c[Pd>>2]|0);c[Sd>>2]=(c[Rd>>2]|0)+(c[Pd>>2]|0);c[Td>>2]=c[zd>>2];c[Ud>>2]=c[Qd>>2];c[Vd>>2]=c[Rd>>2];c[Wd>>2]=c[Sd>>2];c[Xd>>2]=0;bp(Yd,c[xd>>2]|0);c[Zd>>2]=d[Yd+2>>0];if((c[Kd>>2]|0)>>>0>(c[wd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}c[_d>>2]=fp(Dd,c[Ld>>2]|0,c[Hd>>2]|0)|0;if(ap(c[_d>>2]|0)|0){c[sd>>2]=c[_d>>2];ie=c[sd>>2]|0;l=i;return ie|0;}c[$d>>2]=fp(Ed,c[Md>>2]|0,c[Id>>2]|0)|0;if(ap(c[$d>>2]|0)|0){c[sd>>2]=c[$d>>2];ie=c[sd>>2]|0;l=i;return ie|0;}c[ae>>2]=fp(Fd,c[Nd>>2]|0,c[Jd>>2]|0)|0;if(ap(c[ae>>2]|0)|0){c[sd>>2]=c[ae>>2];ie=c[sd>>2]|0;l=i;return ie|0;}c[be>>2]=fp(Gd,c[Od>>2]|0,c[Kd>>2]|0)|0;if(ap(c[be>>2]|0)|0){c[sd>>2]=c[be>>2];ie=c[sd>>2]|0;l=i;return ie|0;}be=gp(Dd)|0;Kd=be|(gp(Ed)|0);be=Kd|(gp(Fd)|0);c[Xd>>2]=be|(gp(Gd)|0);while(1){if(c[Xd>>2]|0)break;if((c[Wd>>2]|0)>>>0>=((c[Ad>>2]|0)+-3|0)>>>0)break;if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[nd>>2]=Dd;c[od>>2]=be;c[pd>>2]=Kd;c[qd>>2]=ip(c[nd>>2]|0,c[pd>>2]|0)|0;a[rd>>0]=a[(c[od>>2]|0)+(c[qd>>2]<<1)>>0]|0;jp(c[nd>>2]|0,d[(c[od>>2]|0)+(c[qd>>2]<<1)+1>>0]|0);Kd=a[rd>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[id>>2]=Ed;c[jd>>2]=Kd;c[kd>>2]=be;c[ld>>2]=ip(c[id>>2]|0,c[kd>>2]|0)|0;a[md>>0]=a[(c[jd>>2]|0)+(c[ld>>2]<<1)>>0]|0;jp(c[id>>2]|0,d[(c[jd>>2]|0)+(c[ld>>2]<<1)+1>>0]|0);be=a[md>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;}if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[dd>>2]=Fd;c[ed>>2]=be;c[fd>>2]=Kd;c[gd>>2]=ip(c[dd>>2]|0,c[fd>>2]|0)|0;a[hd>>0]=a[(c[ed>>2]|0)+(c[gd>>2]<<1)>>0]|0;jp(c[dd>>2]|0,d[(c[ed>>2]|0)+(c[gd>>2]<<1)+1>>0]|0);Kd=a[hd>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[_c>>2]=Gd;c[$c>>2]=Kd;c[ad>>2]=be;c[bd>>2]=ip(c[_c>>2]|0,c[ad>>2]|0)|0;a[cd>>0]=a[(c[$c>>2]|0)+(c[bd>>2]<<1)>>0]|0;jp(c[_c>>2]|0,d[(c[$c>>2]|0)+(c[bd>>2]<<1)+1>>0]|0);be=a[cd>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;}hp()|0;be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Vc>>2]=Dd;c[Wc>>2]=be;c[Xc>>2]=Kd;c[Yc>>2]=ip(c[Vc>>2]|0,c[Xc>>2]|0)|0;a[Zc>>0]=a[(c[Wc>>2]|0)+(c[Yc>>2]<<1)>>0]|0;jp(c[Vc>>2]|0,d[(c[Wc>>2]|0)+(c[Yc>>2]<<1)+1>>0]|0);Kd=a[Zc>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;hp()|0;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[Qc>>2]=Ed;c[Rc>>2]=Kd;c[Sc>>2]=be;c[Tc>>2]=ip(c[Qc>>2]|0,c[Sc>>2]|0)|0;a[Uc>>0]=a[(c[Rc>>2]|0)+(c[Tc>>2]<<1)>>0]|0;jp(c[Qc>>2]|0,d[(c[Rc>>2]|0)+(c[Tc>>2]<<1)+1>>0]|0);be=a[Uc>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;hp()|0;be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Lc>>2]=Fd;c[Mc>>2]=be;c[Nc>>2]=Kd;c[Oc>>2]=ip(c[Lc>>2]|0,c[Nc>>2]|0)|0;a[Pc>>0]=a[(c[Mc>>2]|0)+(c[Oc>>2]<<1)>>0]|0;jp(c[Lc>>2]|0,d[(c[Mc>>2]|0)+(c[Oc>>2]<<1)+1>>0]|0);Kd=a[Pc>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;hp()|0;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[Gc>>2]=Gd;c[Hc>>2]=Kd;c[Ic>>2]=be;c[Jc>>2]=ip(c[Gc>>2]|0,c[Ic>>2]|0)|0;a[Kc>>0]=a[(c[Hc>>2]|0)+(c[Jc>>2]<<1)>>0]|0;jp(c[Gc>>2]|0,d[(c[Hc>>2]|0)+(c[Jc>>2]<<1)+1>>0]|0);be=a[Kc>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Bc>>2]=Dd;c[Cc>>2]=be;c[Dc>>2]=Kd;c[Ec>>2]=ip(c[Bc>>2]|0,c[Dc>>2]|0)|0;a[Fc>>0]=a[(c[Cc>>2]|0)+(c[Ec>>2]<<1)>>0]|0;jp(c[Bc>>2]|0,d[(c[Cc>>2]|0)+(c[Ec>>2]<<1)+1>>0]|0);Kd=a[Fc>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[wc>>2]=Ed;c[xc>>2]=Kd;c[yc>>2]=be;c[zc>>2]=ip(c[wc>>2]|0,c[yc>>2]|0)|0;a[Ac>>0]=a[(c[xc>>2]|0)+(c[zc>>2]<<1)>>0]|0;jp(c[wc>>2]|0,d[(c[xc>>2]|0)+(c[zc>>2]<<1)+1>>0]|0);be=a[Ac>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;}if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[rc>>2]=Fd;c[sc>>2]=be;c[tc>>2]=Kd;c[uc>>2]=ip(c[rc>>2]|0,c[tc>>2]|0)|0;a[vc>>0]=a[(c[sc>>2]|0)+(c[uc>>2]<<1)>>0]|0;jp(c[rc>>2]|0,d[(c[sc>>2]|0)+(c[uc>>2]<<1)+1>>0]|0);Kd=a[vc>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[mc>>2]=Gd;c[nc>>2]=Kd;c[oc>>2]=be;c[pc>>2]=ip(c[mc>>2]|0,c[oc>>2]|0)|0;a[qc>>0]=a[(c[nc>>2]|0)+(c[pc>>2]<<1)>>0]|0;jp(c[mc>>2]|0,d[(c[nc>>2]|0)+(c[pc>>2]<<1)+1>>0]|0);be=a[qc>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;}be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[hc>>2]=Dd;c[ic>>2]=be;c[jc>>2]=Kd;c[kc>>2]=ip(c[hc>>2]|0,c[jc>>2]|0)|0;a[lc>>0]=a[(c[ic>>2]|0)+(c[kc>>2]<<1)>>0]|0;jp(c[hc>>2]|0,d[(c[ic>>2]|0)+(c[kc>>2]<<1)+1>>0]|0);Kd=a[lc>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[cc>>2]=Ed;c[dc>>2]=Kd;c[ec>>2]=be;c[fc>>2]=ip(c[cc>>2]|0,c[ec>>2]|0)|0;a[gc>>0]=a[(c[dc>>2]|0)+(c[fc>>2]<<1)>>0]|0;jp(c[cc>>2]|0,d[(c[dc>>2]|0)+(c[fc>>2]<<1)+1>>0]|0);be=a[gc>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Zb>>2]=Fd;c[_b>>2]=be;c[$b>>2]=Kd;c[ac>>2]=ip(c[Zb>>2]|0,c[$b>>2]|0)|0;a[bc>>0]=a[(c[_b>>2]|0)+(c[ac>>2]<<1)>>0]|0;jp(c[Zb>>2]|0,d[(c[_b>>2]|0)+(c[ac>>2]<<1)+1>>0]|0);Kd=a[bc>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[Ub>>2]=Gd;c[Vb>>2]=Kd;c[Wb>>2]=be;c[Xb>>2]=ip(c[Ub>>2]|0,c[Wb>>2]|0)|0;a[Yb>>0]=a[(c[Vb>>2]|0)+(c[Xb>>2]<<1)>>0]|0;jp(c[Ub>>2]|0,d[(c[Vb>>2]|0)+(c[Xb>>2]<<1)+1>>0]|0);be=a[Yb>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;gp(Dd)|0;gp(Ed)|0;gp(Fd)|0;gp(Gd)|0;}if((c[Td>>2]|0)>>>0>(c[Qd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}if((c[Ud>>2]|0)>>>0>(c[Rd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}if((c[Vd>>2]|0)>>>0>(c[Sd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}Yb=c[Qd>>2]|0;Qd=c[Cd>>2]|0;Xb=c[Zd>>2]|0;c[Ob>>2]=c[Td>>2];c[Pb>>2]=Dd;c[Qb>>2]=Yb;c[Rb>>2]=Qd;c[Sb>>2]=Xb;c[Tb>>2]=c[Ob>>2];while(1){Tb=(gp(c[Pb>>2]|0)|0)==0&1;if(!(Tb&(c[Ob>>2]|0)>>>0<((c[Qb>>2]|0)+-3|0)>>>0))break;if(hp()|0){Tb=c[Rb>>2]|0;Xb=c[Sb>>2]|0;c[Jb>>2]=c[Pb>>2];c[Kb>>2]=Tb;c[Lb>>2]=Xb;c[Mb>>2]=ip(c[Jb>>2]|0,c[Lb>>2]|0)|0;a[Nb>>0]=a[(c[Kb>>2]|0)+(c[Mb>>2]<<1)>>0]|0;jp(c[Jb>>2]|0,d[(c[Kb>>2]|0)+(c[Mb>>2]<<1)+1>>0]|0);Xb=a[Nb>>0]|0;Tb=c[Ob>>2]|0;c[Ob>>2]=Tb+1;a[Tb>>0]=Xb;}hp()|0;Xb=c[Rb>>2]|0;Tb=c[Sb>>2]|0;c[Eb>>2]=c[Pb>>2];c[Fb>>2]=Xb;c[Gb>>2]=Tb;c[Hb>>2]=ip(c[Eb>>2]|0,c[Gb>>2]|0)|0;a[Ib>>0]=a[(c[Fb>>2]|0)+(c[Hb>>2]<<1)>>0]|0;jp(c[Eb>>2]|0,d[(c[Fb>>2]|0)+(c[Hb>>2]<<1)+1>>0]|0);Tb=a[Ib>>0]|0;Xb=c[Ob>>2]|0;c[Ob>>2]=Xb+1;a[Xb>>0]=Tb;if(hp()|0){Tb=c[Rb>>2]|0;Xb=c[Sb>>2]|0;c[zb>>2]=c[Pb>>2];c[Ab>>2]=Tb;c[Bb>>2]=Xb;c[Cb>>2]=ip(c[zb>>2]|0,c[Bb>>2]|0)|0;a[Db>>0]=a[(c[Ab>>2]|0)+(c[Cb>>2]<<1)>>0]|0;jp(c[zb>>2]|0,d[(c[Ab>>2]|0)+(c[Cb>>2]<<1)+1>>0]|0);Xb=a[Db>>0]|0;Tb=c[Ob>>2]|0;c[Ob>>2]=Tb+1;a[Tb>>0]=Xb;}Xb=c[Rb>>2]|0;Tb=c[Sb>>2]|0;c[ub>>2]=c[Pb>>2];c[vb>>2]=Xb;c[wb>>2]=Tb;c[xb>>2]=ip(c[ub>>2]|0,c[wb>>2]|0)|0;a[yb>>0]=a[(c[vb>>2]|0)+(c[xb>>2]<<1)>>0]|0;jp(c[ub>>2]|0,d[(c[vb>>2]|0)+(c[xb>>2]<<1)+1>>0]|0);Tb=a[yb>>0]|0;Xb=c[Ob>>2]|0;c[Ob>>2]=Xb+1;a[Xb>>0]=Tb;}a:do{if(kp()|0)while(1){yb=(gp(c[Pb>>2]|0)|0)==0&1;if(!(yb&(c[Ob>>2]|0)>>>0<(c[Qb>>2]|0)>>>0))break a;yb=c[Rb>>2]|0;xb=c[Sb>>2]|0;c[pb>>2]=c[Pb>>2];c[qb>>2]=yb;c[rb>>2]=xb;c[sb>>2]=ip(c[pb>>2]|0,c[rb>>2]|0)|0;a[tb>>0]=a[(c[qb>>2]|0)+(c[sb>>2]<<1)>>0]|0;jp(c[pb>>2]|0,d[(c[qb>>2]|0)+(c[sb>>2]<<1)+1>>0]|0);xb=a[tb>>0]|0;yb=c[Ob>>2]|0;c[Ob>>2]=yb+1;a[yb>>0]=xb;}}while(0);while(1){if((c[Ob>>2]|0)>>>0>=(c[Qb>>2]|0)>>>0)break;tb=c[Rb>>2]|0;sb=c[Sb>>2]|0;c[kb>>2]=c[Pb>>2];c[lb>>2]=tb;c[mb>>2]=sb;c[nb>>2]=ip(c[kb>>2]|0,c[mb>>2]|0)|0;a[ob>>0]=a[(c[lb>>2]|0)+(c[nb>>2]<<1)>>0]|0;jp(c[kb>>2]|0,d[(c[lb>>2]|0)+(c[nb>>2]<<1)+1>>0]|0);sb=a[ob>>0]|0;tb=c[Ob>>2]|0;c[Ob>>2]=tb+1;a[tb>>0]=sb;}Ob=c[Rd>>2]|0;Rd=c[Cd>>2]|0;ob=c[Zd>>2]|0;c[eb>>2]=c[Ud>>2];c[fb>>2]=Ed;c[gb>>2]=Ob;c[hb>>2]=Rd;c[ib>>2]=ob;c[jb>>2]=c[eb>>2];while(1){jb=(gp(c[fb>>2]|0)|0)==0&1;if(!(jb&(c[eb>>2]|0)>>>0<((c[gb>>2]|0)+-3|0)>>>0))break;if(hp()|0){jb=c[hb>>2]|0;ob=c[ib>>2]|0;c[$a>>2]=c[fb>>2];c[ab>>2]=jb;c[bb>>2]=ob;c[cb>>2]=ip(c[$a>>2]|0,c[bb>>2]|0)|0;a[db>>0]=a[(c[ab>>2]|0)+(c[cb>>2]<<1)>>0]|0;jp(c[$a>>2]|0,d[(c[ab>>2]|0)+(c[cb>>2]<<1)+1>>0]|0);ob=a[db>>0]|0;jb=c[eb>>2]|0;c[eb>>2]=jb+1;a[jb>>0]=ob;}hp()|0;ob=c[hb>>2]|0;jb=c[ib>>2]|0;c[Wa>>2]=c[fb>>2];c[Xa>>2]=ob;c[Ya>>2]=jb;c[Za>>2]=ip(c[Wa>>2]|0,c[Ya>>2]|0)|0;a[_a>>0]=a[(c[Xa>>2]|0)+(c[Za>>2]<<1)>>0]|0;jp(c[Wa>>2]|0,d[(c[Xa>>2]|0)+(c[Za>>2]<<1)+1>>0]|0);jb=a[_a>>0]|0;ob=c[eb>>2]|0;c[eb>>2]=ob+1;a[ob>>0]=jb;if(hp()|0){jb=c[hb>>2]|0;ob=c[ib>>2]|0;c[Ra>>2]=c[fb>>2];c[Sa>>2]=jb;c[Ta>>2]=ob;c[Ua>>2]=ip(c[Ra>>2]|0,c[Ta>>2]|0)|0;a[Va>>0]=a[(c[Sa>>2]|0)+(c[Ua>>2]<<1)>>0]|0;jp(c[Ra>>2]|0,d[(c[Sa>>2]|0)+(c[Ua>>2]<<1)+1>>0]|0);ob=a[Va>>0]|0;jb=c[eb>>2]|0;c[eb>>2]=jb+1;a[jb>>0]=ob;}ob=c[hb>>2]|0;jb=c[ib>>2]|0;c[Ma>>2]=c[fb>>2];c[Na>>2]=ob;c[Oa>>2]=jb;c[Pa>>2]=ip(c[Ma>>2]|0,c[Oa>>2]|0)|0;a[Qa>>0]=a[(c[Na>>2]|0)+(c[Pa>>2]<<1)>>0]|0;jp(c[Ma>>2]|0,d[(c[Na>>2]|0)+(c[Pa>>2]<<1)+1>>0]|0);jb=a[Qa>>0]|0;ob=c[eb>>2]|0;c[eb>>2]=ob+1;a[ob>>0]=jb;}b:do{if(kp()|0)while(1){Qa=(gp(c[fb>>2]|0)|0)==0&1;if(!(Qa&(c[eb>>2]|0)>>>0<(c[gb>>2]|0)>>>0))break b;Qa=c[hb>>2]|0;Pa=c[ib>>2]|0;c[Ha>>2]=c[fb>>2];c[Ia>>2]=Qa;c[Ja>>2]=Pa;c[Ka>>2]=ip(c[Ha>>2]|0,c[Ja>>2]|0)|0;a[La>>0]=a[(c[Ia>>2]|0)+(c[Ka>>2]<<1)>>0]|0;jp(c[Ha>>2]|0,d[(c[Ia>>2]|0)+(c[Ka>>2]<<1)+1>>0]|0);Pa=a[La>>0]|0;Qa=c[eb>>2]|0;c[eb>>2]=Qa+1;a[Qa>>0]=Pa;}}while(0);while(1){if((c[eb>>2]|0)>>>0>=(c[gb>>2]|0)>>>0)break;La=c[hb>>2]|0;Ka=c[ib>>2]|0;c[Ca>>2]=c[fb>>2];c[Da>>2]=La;c[Ea>>2]=Ka;c[Fa>>2]=ip(c[Ca>>2]|0,c[Ea>>2]|0)|0;a[Ga>>0]=a[(c[Da>>2]|0)+(c[Fa>>2]<<1)>>0]|0;jp(c[Ca>>2]|0,d[(c[Da>>2]|0)+(c[Fa>>2]<<1)+1>>0]|0);Ka=a[Ga>>0]|0;La=c[eb>>2]|0;c[eb>>2]=La+1;a[La>>0]=Ka;}eb=c[Sd>>2]|0;Sd=c[Cd>>2]|0;Ga=c[Zd>>2]|0;c[wa>>2]=c[Vd>>2];c[xa>>2]=Fd;c[ya>>2]=eb;c[za>>2]=Sd;c[Aa>>2]=Ga;c[Ba>>2]=c[wa>>2];while(1){Ba=(gp(c[xa>>2]|0)|0)==0&1;if(!(Ba&(c[wa>>2]|0)>>>0<((c[ya>>2]|0)+-3|0)>>>0))break;if(hp()|0){Ba=c[za>>2]|0;Ga=c[Aa>>2]|0;c[ra>>2]=c[xa>>2];c[sa>>2]=Ba;c[ta>>2]=Ga;c[ua>>2]=ip(c[ra>>2]|0,c[ta>>2]|0)|0;a[va>>0]=a[(c[sa>>2]|0)+(c[ua>>2]<<1)>>0]|0;jp(c[ra>>2]|0,d[(c[sa>>2]|0)+(c[ua>>2]<<1)+1>>0]|0);Ga=a[va>>0]|0;Ba=c[wa>>2]|0;c[wa>>2]=Ba+1;a[Ba>>0]=Ga;}hp()|0;Ga=c[za>>2]|0;Ba=c[Aa>>2]|0;c[ma>>2]=c[xa>>2];c[na>>2]=Ga;c[oa>>2]=Ba;c[pa>>2]=ip(c[ma>>2]|0,c[oa>>2]|0)|0;a[qa>>0]=a[(c[na>>2]|0)+(c[pa>>2]<<1)>>0]|0;jp(c[ma>>2]|0,d[(c[na>>2]|0)+(c[pa>>2]<<1)+1>>0]|0);Ba=a[qa>>0]|0;Ga=c[wa>>2]|0;c[wa>>2]=Ga+1;a[Ga>>0]=Ba;if(hp()|0){Ba=c[za>>2]|0;Ga=c[Aa>>2]|0;c[ha>>2]=c[xa>>2];c[ia>>2]=Ba;c[ja>>2]=Ga;c[ka>>2]=ip(c[ha>>2]|0,c[ja>>2]|0)|0;a[la>>0]=a[(c[ia>>2]|0)+(c[ka>>2]<<1)>>0]|0;jp(c[ha>>2]|0,d[(c[ia>>2]|0)+(c[ka>>2]<<1)+1>>0]|0);Ga=a[la>>0]|0;Ba=c[wa>>2]|0;c[wa>>2]=Ba+1;a[Ba>>0]=Ga;}Ga=c[za>>2]|0;Ba=c[Aa>>2]|0;c[ca>>2]=c[xa>>2];c[da>>2]=Ga;c[ea>>2]=Ba;c[fa>>2]=ip(c[ca>>2]|0,c[ea>>2]|0)|0;a[ga>>0]=a[(c[da>>2]|0)+(c[fa>>2]<<1)>>0]|0;jp(c[ca>>2]|0,d[(c[da>>2]|0)+(c[fa>>2]<<1)+1>>0]|0);Ba=a[ga>>0]|0;Ga=c[wa>>2]|0;c[wa>>2]=Ga+1;a[Ga>>0]=Ba;}c:do{if(kp()|0)while(1){ga=(gp(c[xa>>2]|0)|0)==0&1;if(!(ga&(c[wa>>2]|0)>>>0<(c[ya>>2]|0)>>>0))break c;ga=c[za>>2]|0;fa=c[Aa>>2]|0;c[Z>>2]=c[xa>>2];c[_>>2]=ga;c[$>>2]=fa;c[aa>>2]=ip(c[Z>>2]|0,c[$>>2]|0)|0;a[ba>>0]=a[(c[_>>2]|0)+(c[aa>>2]<<1)>>0]|0;jp(c[Z>>2]|0,d[(c[_>>2]|0)+(c[aa>>2]<<1)+1>>0]|0);fa=a[ba>>0]|0;ga=c[wa>>2]|0;c[wa>>2]=ga+1;a[ga>>0]=fa;}}while(0);while(1){if((c[wa>>2]|0)>>>0>=(c[ya>>2]|0)>>>0)break;ba=c[za>>2]|0;aa=c[Aa>>2]|0;c[U>>2]=c[xa>>2];c[V>>2]=ba;c[W>>2]=aa;c[X>>2]=ip(c[U>>2]|0,c[W>>2]|0)|0;a[Y>>0]=a[(c[V>>2]|0)+(c[X>>2]<<1)>>0]|0;jp(c[U>>2]|0,d[(c[V>>2]|0)+(c[X>>2]<<1)+1>>0]|0);aa=a[Y>>0]|0;ba=c[wa>>2]|0;c[wa>>2]=ba+1;a[ba>>0]=aa;}wa=c[Ad>>2]|0;Ad=c[Cd>>2]|0;Cd=c[Zd>>2]|0;c[O>>2]=c[Wd>>2];c[P>>2]=Gd;c[Q>>2]=wa;c[R>>2]=Ad;c[S>>2]=Cd;c[T>>2]=c[O>>2];while(1){T=(gp(c[P>>2]|0)|0)==0&1;if(!(T&(c[O>>2]|0)>>>0<((c[Q>>2]|0)+-3|0)>>>0))break;if(hp()|0){T=c[R>>2]|0;Cd=c[S>>2]|0;c[J>>2]=c[P>>2];c[K>>2]=T;c[L>>2]=Cd;c[M>>2]=ip(c[J>>2]|0,c[L>>2]|0)|0;a[N>>0]=a[(c[K>>2]|0)+(c[M>>2]<<1)>>0]|0;jp(c[J>>2]|0,d[(c[K>>2]|0)+(c[M>>2]<<1)+1>>0]|0);Cd=a[N>>0]|0;T=c[O>>2]|0;c[O>>2]=T+1;a[T>>0]=Cd;}hp()|0;Cd=c[R>>2]|0;T=c[S>>2]|0;c[E>>2]=c[P>>2];c[F>>2]=Cd;c[G>>2]=T;c[H>>2]=ip(c[E>>2]|0,c[G>>2]|0)|0;a[I>>0]=a[(c[F>>2]|0)+(c[H>>2]<<1)>>0]|0;jp(c[E>>2]|0,d[(c[F>>2]|0)+(c[H>>2]<<1)+1>>0]|0);T=a[I>>0]|0;Cd=c[O>>2]|0;c[O>>2]=Cd+1;a[Cd>>0]=T;if(hp()|0){T=c[R>>2]|0;Cd=c[S>>2]|0;c[z>>2]=c[P>>2];c[A>>2]=T;c[B>>2]=Cd;c[C>>2]=ip(c[z>>2]|0,c[B>>2]|0)|0;a[D>>0]=a[(c[A>>2]|0)+(c[C>>2]<<1)>>0]|0;jp(c[z>>2]|0,d[(c[A>>2]|0)+(c[C>>2]<<1)+1>>0]|0);Cd=a[D>>0]|0;T=c[O>>2]|0;c[O>>2]=T+1;a[T>>0]=Cd;}Cd=c[R>>2]|0;T=c[S>>2]|0;c[u>>2]=c[P>>2];c[v>>2]=Cd;c[w>>2]=T;c[x>>2]=ip(c[u>>2]|0,c[w>>2]|0)|0;a[y>>0]=a[(c[v>>2]|0)+(c[x>>2]<<1)>>0]|0;jp(c[u>>2]|0,d[(c[v>>2]|0)+(c[x>>2]<<1)+1>>0]|0);T=a[y>>0]|0;Cd=c[O>>2]|0;c[O>>2]=Cd+1;a[Cd>>0]=T;}d:do{if(kp()|0)while(1){y=(gp(c[P>>2]|0)|0)==0&1;if(!(y&(c[O>>2]|0)>>>0<(c[Q>>2]|0)>>>0))break d;y=c[R>>2]|0;x=c[S>>2]|0;c[p>>2]=c[P>>2];c[q>>2]=y;c[r>>2]=x;c[s>>2]=ip(c[p>>2]|0,c[r>>2]|0)|0;a[t>>0]=a[(c[q>>2]|0)+(c[s>>2]<<1)>>0]|0;jp(c[p>>2]|0,d[(c[q>>2]|0)+(c[s>>2]<<1)+1>>0]|0);x=a[t>>0]|0;y=c[O>>2]|0;c[O>>2]=y+1;a[y>>0]=x;}}while(0);while(1){if((c[O>>2]|0)>>>0>=(c[Q>>2]|0)>>>0)break;t=c[R>>2]|0;s=c[S>>2]|0;c[j>>2]=c[P>>2];c[k>>2]=t;c[m>>2]=s;c[n>>2]=ip(c[j>>2]|0,c[m>>2]|0)|0;a[o>>0]=a[(c[k>>2]|0)+(c[n>>2]<<1)>>0]|0;jp(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<1)+1>>0]|0);s=a[o>>0]|0;t=c[O>>2]|0;c[O>>2]=t+1;a[t>>0]=s;}O=lp(Dd)|0;Dd=O&(lp(Ed)|0);Ed=Dd&(lp(Fd)|0);c[ce>>2]=Ed&(lp(Gd)|0);if(c[ce>>2]|0){c[sd>>2]=c[ud>>2];ie=c[sd>>2]|0;l=i;return ie|0;}else{c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}return 0;}function yp(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=a;a=(pp()|0)!=0;i=c[g>>2]|0;if(a){b[f>>1]=zp(i)|0;j=b[f>>1]|0;l=e;return j|0;}else{c[h>>2]=i;b[f>>1]=(d[c[h>>2]>>0]|0)+((d[(c[h>>2]|0)+1>>0]|0)<<8);j=b[f>>1]|0;l=e;return j|0;}return 0;}function zp(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function Ap(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=l;l=l+48|0;k=j+40|0;m=j+36|0;n=j+32|0;o=j+28|0;p=j+24|0;q=j+20|0;r=j+16|0;s=j+12|0;t=j+8|0;u=j+4|0;v=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=c[p>>2];c[v>>2]=$o(c[m>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0)|0;s=(ap(c[v>>2]|0)|0)!=0;r=c[v>>2]|0;if(s){c[k>>2]=r;w=c[k>>2]|0;l=j;return w|0;}if(r>>>0>=(c[q>>2]|0)>>>0){c[k>>2]=-72;w=c[k>>2]|0;l=j;return w|0;}else{c[u>>2]=(c[u>>2]|0)+(c[v>>2]|0);c[q>>2]=(c[q>>2]|0)-(c[v>>2]|0);c[k>>2]=vp(c[n>>2]|0,c[o>>2]|0,c[u>>2]|0,c[q>>2]|0,c[m>>2]|0,c[t>>2]|0)|0;w=c[k>>2]|0;l=j;return w|0;}return 0;}function Bp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;i=l;l=l+160|0;j=i+140|0;k=i+136|0;m=i+132|0;n=i+128|0;o=i+124|0;p=i+120|0;q=i+116|0;r=i+112|0;s=i+108|0;t=i+104|0;u=i+144|0;v=i+100|0;w=i+96|0;x=i+92|0;y=i+88|0;z=i+84|0;A=i+80|0;B=i+76|0;C=i+72|0;D=i+68|0;E=i+64|0;F=i+60|0;G=i+56|0;H=i+52|0;I=i+48|0;J=i+44|0;K=i+40|0;L=i+36|0;M=i+32|0;N=i+28|0;O=i+24|0;P=i+20|0;Q=i+16|0;R=i+12|0;S=i+8|0;T=i+4|0;U=i;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;bp(u,c[k>>2]|0);c[v>>2]=d[u>>0];c[x>>2]=(c[k>>2]|0)+4;c[y>>2]=c[x>>2];c[F>>2]=0;c[A>>2]=(c[o>>2]|0)+(c[F>>2]<<2);c[F>>2]=(c[F>>2]|0)+156;c[B>>2]=(c[o>>2]|0)+(c[F>>2]<<2);c[F>>2]=(c[F>>2]|0)+13;c[C>>2]=(c[o>>2]|0)+(c[F>>2]<<2);c[F>>2]=(c[F>>2]|0)+14;c[D>>2]=(c[o>>2]|0)+(((c[F>>2]<<2>>>0)/2|0)<<1);c[F>>2]=(c[F>>2]|0)+128;c[E>>2]=(c[o>>2]|0)+(c[F>>2]<<2);c[F>>2]=(c[F>>2]|0)+64;if(c[F>>2]<<2>>>0>(c[p>>2]|0)>>>0){c[j>>2]=-44;V=c[j>>2]|0;l=i;return V|0;}c[z>>2]=(c[C>>2]|0)+4;p=c[B>>2]|0;F=p+108|0;do{c[p>>2]=0;p=p+4|0;}while((p|0)<(F|0));if((c[v>>2]|0)>>>0>12){c[j>>2]=-44;V=c[j>>2]|0;l=i;return V|0;}c[w>>2]=fh(c[E>>2]|0,256,c[B>>2]|0,t,q,c[m>>2]|0,c[n>>2]|0)|0;if(ap(c[w>>2]|0)|0){c[j>>2]=c[w>>2];V=c[j>>2]|0;l=i;return V|0;}if((c[q>>2]|0)>>>0>(c[v>>2]|0)>>>0){c[j>>2]=-44;V=c[j>>2]|0;l=i;return V|0;}c[r>>2]=c[q>>2];while(1){if(c[(c[B>>2]|0)+(c[r>>2]<<2)>>2]|0)break;c[r>>2]=(c[r>>2]|0)+-1;}c[H>>2]=0;c[G>>2]=1;while(1){W=c[H>>2]|0;if((c[G>>2]|0)>>>0>=((c[r>>2]|0)+1|0)>>>0)break;c[I>>2]=W;c[H>>2]=(c[H>>2]|0)+(c[(c[B>>2]|0)+(c[G>>2]<<2)>>2]|0);c[(c[z>>2]|0)+(c[G>>2]<<2)>>2]=c[I>>2];c[G>>2]=(c[G>>2]|0)+1;}c[c[z>>2]>>2]=W;c[s>>2]=c[H>>2];c[J>>2]=0;while(1){if((c[J>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;c[K>>2]=d[(c[E>>2]|0)+(c[J>>2]|0)>>0];H=(c[z>>2]|0)+(c[K>>2]<<2)|0;W=c[H>>2]|0;c[H>>2]=W+1;c[L>>2]=W;a[(c[D>>2]|0)+(c[L>>2]<<1)>>0]=c[J>>2];a[(c[D>>2]|0)+(c[L>>2]<<1)+1>>0]=c[K>>2];c[J>>2]=(c[J>>2]|0)+1;}c[c[z>>2]>>2]=0;c[M>>2]=c[A>>2];c[N>>2]=(c[v>>2]|0)-(c[q>>2]|0)-1;c[O>>2]=0;c[P>>2]=1;while(1){if((c[P>>2]|0)>>>0>=((c[r>>2]|0)+1|0)>>>0)break;c[Q>>2]=c[O>>2];c[O>>2]=(c[O>>2]|0)+(c[(c[B>>2]|0)+(c[P>>2]<<2)>>2]<<(c[P>>2]|0)+(c[N>>2]|0));c[(c[M>>2]|0)+(c[P>>2]<<2)>>2]=c[Q>>2];c[P>>2]=(c[P>>2]|0)+1;}c[R>>2]=(c[q>>2]|0)+1-(c[r>>2]|0);c[S>>2]=c[R>>2];while(1){if((c[S>>2]|0)>>>0>=((c[v>>2]|0)-(c[R>>2]|0)+1|0)>>>0)break;c[T>>2]=(c[A>>2]|0)+((c[S>>2]|0)*52|0);c[U>>2]=1;while(1){if((c[U>>2]|0)>>>0>=((c[r>>2]|0)+1|0)>>>0)break;c[(c[T>>2]|0)+(c[U>>2]<<2)>>2]=(c[(c[M>>2]|0)+(c[U>>2]<<2)>>2]|0)>>>(c[S>>2]|0);c[U>>2]=(c[U>>2]|0)+1;}c[S>>2]=(c[S>>2]|0)+1;}Cp(c[y>>2]|0,c[v>>2]|0,c[D>>2]|0,c[s>>2]|0,c[C>>2]|0,c[A>>2]|0,c[r>>2]|0,(c[q>>2]|0)+1|0);a[u+2>>0]=c[v>>2];a[u+1>>0]=1;v=c[k>>2]|0;a[v>>0]=a[u>>0]|0;a[v+1>>0]=a[u+1>>0]|0;a[v+2>>0]=a[u+2>>0]|0;a[v+3>>0]=a[u+3>>0]|0;c[j>>2]=c[w>>2];V=c[j>>2]|0;l=i;return V|0;}function Cp(e,f,g,h,i,j,k,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;n=l;l=l+144|0;o=n+124|0;p=n+120|0;q=n+116|0;r=n+112|0;s=n+108|0;t=n+104|0;u=n+100|0;v=n+96|0;w=n;x=n+92|0;y=n+88|0;z=n+84|0;A=n+132|0;B=n+80|0;C=n+76|0;D=n+72|0;E=n+68|0;F=n+64|0;G=n+60|0;H=n+128|0;I=n+56|0;J=n+52|0;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=k;c[v>>2]=m;c[x>>2]=(c[v>>2]|0)-(c[p>>2]|0);c[y>>2]=(c[v>>2]|0)-(c[u>>2]|0);u=w;m=c[t>>2]|0;k=u+52|0;do{c[u>>2]=c[m>>2];u=u+4|0;m=m+4|0;}while((u|0)<(k|0));c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;b[A>>1]=d[(c[q>>2]|0)+(c[z>>2]<<1)>>0]|0;c[B>>2]=d[(c[q>>2]|0)+(c[z>>2]<<1)+1>>0];c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);c[D>>2]=c[w+(c[B>>2]<<2)>>2];c[E>>2]=1<<(c[p>>2]|0)-(c[C>>2]|0);a:do{if(((c[p>>2]|0)-(c[C>>2]|0)|0)>>>0>=(c[y>>2]|0)>>>0){m=(c[C>>2]|0)+(c[x>>2]|0)|0;c[G>>2]=m;c[G>>2]=(c[G>>2]|0)<1?1:m;c[F>>2]=c[(c[s>>2]|0)+(c[G>>2]<<2)>>2];Dp((c[o>>2]|0)+(c[D>>2]<<2)|0,(c[p>>2]|0)-(c[C>>2]|0)|0,c[C>>2]|0,(c[t>>2]|0)+((c[C>>2]|0)*52|0)|0,c[G>>2]|0,(c[q>>2]|0)+(c[F>>2]<<1)|0,(c[r>>2]|0)-(c[F>>2]|0)|0,c[v>>2]|0,b[A>>1]|0);}else{Ep(H,b[A>>1]|0);a[H+2>>0]=c[C>>2];a[H+3>>0]=1;c[I>>2]=(c[D>>2]|0)+(c[E>>2]|0);c[J>>2]=c[D>>2];while(1){if((c[J>>2]|0)>>>0>=(c[I>>2]|0)>>>0)break a;m=(c[o>>2]|0)+(c[J>>2]<<2)|0;b[m>>1]=b[H>>1]|0;b[m+2>>1]=b[H+2>>1]|0;c[J>>2]=(c[J>>2]|0)+1;}}}while(0);m=w+(c[B>>2]<<2)|0;c[m>>2]=(c[m>>2]|0)+(c[E>>2]|0);c[z>>2]=(c[z>>2]|0)+1;}l=n;return;}function Dp(f,g,h,i,j,k,m,n,o){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;p=l;l=l+144|0;q=p+120|0;r=p+116|0;s=p+112|0;t=p+108|0;u=p+104|0;v=p+100|0;w=p+96|0;x=p+92|0;y=p+128|0;z=p+124|0;A=p;B=p+88|0;C=p+84|0;D=p+80|0;E=p+76|0;F=p+72|0;G=p+68|0;H=p+64|0;I=p+60|0;J=p+56|0;K=p+52|0;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;c[v>>2]=k;c[w>>2]=m;c[x>>2]=n;b[y>>1]=o;o=A;n=c[t>>2]|0;t=o+52|0;do{c[o>>2]=c[n>>2];o=o+4|0;n=n+4|0;}while((o|0)<(t|0));a:do{if((c[u>>2]|0)>1){c[C>>2]=c[A+(c[u>>2]<<2)>>2];Ep(z,b[y>>1]|0);a[z+2>>0]=c[s>>2];a[z+3>>0]=1;c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[C>>2]|0)>>>0)break a;n=(c[q>>2]|0)+(c[B>>2]<<2)|0;b[n>>1]=b[z>>1]|0;b[n+2>>1]=b[z+2>>1]|0;c[B>>2]=(c[B>>2]|0)+1;}}}while(0);c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[E>>2]=d[(c[v>>2]|0)+(c[D>>2]<<1)>>0];c[F>>2]=d[(c[v>>2]|0)+(c[D>>2]<<1)+1>>0];c[G>>2]=(c[x>>2]|0)-(c[F>>2]|0);c[H>>2]=1<<(c[r>>2]|0)-(c[G>>2]|0);c[I>>2]=c[A+(c[F>>2]<<2)>>2];c[J>>2]=c[I>>2];c[K>>2]=(c[I>>2]|0)+(c[H>>2]|0);Ep(z,(e[y>>1]|0)+(c[E>>2]<<8)&65535);a[z+2>>0]=(c[G>>2]|0)+(c[s>>2]|0);a[z+3>>0]=2;do{B=c[q>>2]|0;C=c[J>>2]|0;c[J>>2]=C+1;u=B+(C<<2)|0;b[u>>1]=b[z>>1]|0;b[u+2>>1]=b[z+2>>1]|0;}while((c[J>>2]|0)>>>0<(c[K>>2]|0)>>>0);u=A+(c[F>>2]<<2)|0;c[u>>2]=(c[u>>2]|0)+(c[H>>2]|0);c[D>>2]=(c[D>>2]|0)+1;}l=p;return;}function Ep(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(pp()|0)!=0;d=c[h>>2]|0;if(f){Fp(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function Fp(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=b[h>>1]|0;h=c[g>>2]|0;a[h>>0]=e;a[h+1>>0]=e>>8;l=f;return;}function Gp(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;if(c[p>>2]|0){c[i>>2]=Hp(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}else{c[i>>2]=Ip(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function Hp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;i=l;l=l+256|0;j=i+244|0;k=i+240|0;m=i+236|0;n=i+232|0;o=i+228|0;p=i+224|0;q=i+220|0;r=i+216|0;s=i+212|0;t=i+208|0;u=i+204|0;v=i+200|0;w=i+196|0;x=i+192|0;y=i+188|0;z=i+184|0;A=i+180|0;B=i+176|0;C=i+172|0;D=i+168|0;E=i+164|0;F=i+160|0;G=i+156|0;H=i+152|0;I=i+148|0;J=i+144|0;K=i+140|0;L=i+136|0;M=i+132|0;N=i+128|0;O=i+124|0;P=i+120|0;Q=i+116|0;R=i+112|0;S=i+108|0;T=i+104|0;U=i+100|0;V=i+96|0;W=i+92|0;X=i+88|0;Y=i+80|0;Z=i+76|0;_=i+72|0;$=i+68|0;aa=i+64|0;ba=i+60|0;ca=i+40|0;da=i+36|0;ea=i+32|0;fa=i+28|0;ga=i+24|0;ha=i+20|0;ia=i+248|0;ja=i+16|0;ka=i+12|0;la=i+8|0;ma=i+4|0;na=i;c[ja>>2]=b;c[ka>>2]=e;c[la>>2]=f;c[ma>>2]=g;c[na>>2]=h;h=c[ka>>2]|0;ka=c[la>>2]|0;la=c[ma>>2]|0;ma=c[na>>2]|0;c[Z>>2]=c[ja>>2];c[_>>2]=h;c[$>>2]=ka;c[aa>>2]=la;c[ba>>2]=ma;c[da>>2]=fp(ca,c[$>>2]|0,c[aa>>2]|0)|0;if(ap(c[da>>2]|0)|0){c[Y>>2]=c[da>>2];oa=c[Y>>2]|0;l=i;return oa|0;}c[ea>>2]=c[Z>>2];c[fa>>2]=(c[ea>>2]|0)+(c[_>>2]|0);c[ga>>2]=(c[ba>>2]|0)+4;c[ha>>2]=c[ga>>2];bp(ia,c[ba>>2]|0);ba=c[fa>>2]|0;fa=c[ha>>2]|0;ha=d[ia+2>>0]|0;c[T>>2]=c[ea>>2];c[U>>2]=ca;c[V>>2]=ba;c[W>>2]=fa;c[X>>2]=ha;c[i+84>>2]=c[T>>2];while(1){ha=(gp(c[U>>2]|0)|0)==0&1;if(!(ha&(c[T>>2]|0)>>>0<((c[V>>2]|0)+-3|0)>>>0))break;if(hp()|0){ha=c[U>>2]|0;fa=c[W>>2]|0;ba=c[X>>2]|0;c[O>>2]=c[T>>2];c[P>>2]=ha;c[Q>>2]=fa;c[R>>2]=ba;c[S>>2]=ip(c[P>>2]|0,c[R>>2]|0)|0;ba=c[O>>2]|0;fa=(c[Q>>2]|0)+(c[S>>2]<<2)|0;a[ba>>0]=a[fa>>0]|0;a[ba+1>>0]=a[fa+1>>0]|0;jp(c[P>>2]|0,d[(c[Q>>2]|0)+(c[S>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[Q>>2]|0)+(c[S>>2]<<2)+3>>0]|0);}hp()|0;fa=c[U>>2]|0;ba=c[W>>2]|0;ha=c[X>>2]|0;c[J>>2]=c[T>>2];c[K>>2]=fa;c[L>>2]=ba;c[M>>2]=ha;c[N>>2]=ip(c[K>>2]|0,c[M>>2]|0)|0;ha=c[J>>2]|0;ba=(c[L>>2]|0)+(c[N>>2]<<2)|0;a[ha>>0]=a[ba>>0]|0;a[ha+1>>0]=a[ba+1>>0]|0;jp(c[K>>2]|0,d[(c[L>>2]|0)+(c[N>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[L>>2]|0)+(c[N>>2]<<2)+3>>0]|0);if(hp()|0){ba=c[U>>2]|0;ha=c[W>>2]|0;fa=c[X>>2]|0;c[E>>2]=c[T>>2];c[F>>2]=ba;c[G>>2]=ha;c[H>>2]=fa;c[I>>2]=ip(c[F>>2]|0,c[H>>2]|0)|0;fa=c[E>>2]|0;ha=(c[G>>2]|0)+(c[I>>2]<<2)|0;a[fa>>0]=a[ha>>0]|0;a[fa+1>>0]=a[ha+1>>0]|0;jp(c[F>>2]|0,d[(c[G>>2]|0)+(c[I>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[G>>2]|0)+(c[I>>2]<<2)+3>>0]|0);}ha=c[U>>2]|0;fa=c[W>>2]|0;ba=c[X>>2]|0;c[z>>2]=c[T>>2];c[A>>2]=ha;c[B>>2]=fa;c[C>>2]=ba;c[D>>2]=ip(c[A>>2]|0,c[C>>2]|0)|0;ba=c[z>>2]|0;fa=(c[B>>2]|0)+(c[D>>2]<<2)|0;a[ba>>0]=a[fa>>0]|0;a[ba+1>>0]=a[fa+1>>0]|0;jp(c[A>>2]|0,d[(c[B>>2]|0)+(c[D>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[B>>2]|0)+(c[D>>2]<<2)+3>>0]|0);}while(1){D=(gp(c[U>>2]|0)|0)==0&1;if(!(D&(c[T>>2]|0)>>>0<=((c[V>>2]|0)+-2|0)>>>0))break;D=c[U>>2]|0;B=c[W>>2]|0;A=c[X>>2]|0;c[u>>2]=c[T>>2];c[v>>2]=D;c[w>>2]=B;c[x>>2]=A;c[y>>2]=ip(c[v>>2]|0,c[x>>2]|0)|0;A=c[u>>2]|0;B=(c[w>>2]|0)+(c[y>>2]<<2)|0;a[A>>0]=a[B>>0]|0;a[A+1>>0]=a[B+1>>0]|0;jp(c[v>>2]|0,d[(c[w>>2]|0)+(c[y>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[w>>2]|0)+(c[y>>2]<<2)+3>>0]|0);}while(1){pa=c[T>>2]|0;if((c[T>>2]|0)>>>0>((c[V>>2]|0)+-2|0)>>>0)break;y=c[U>>2]|0;w=c[W>>2]|0;v=c[X>>2]|0;c[p>>2]=pa;c[q>>2]=y;c[r>>2]=w;c[s>>2]=v;c[t>>2]=ip(c[q>>2]|0,c[s>>2]|0)|0;v=c[p>>2]|0;w=(c[r>>2]|0)+(c[t>>2]<<2)|0;a[v>>0]=a[w>>0]|0;a[v+1>>0]=a[w+1>>0]|0;jp(c[q>>2]|0,d[(c[r>>2]|0)+(c[t>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[r>>2]|0)+(c[t>>2]<<2)+3>>0]|0);}if(pa>>>0<(c[V>>2]|0)>>>0){V=c[U>>2]|0;U=c[W>>2]|0;W=c[X>>2]|0;c[j>>2]=c[T>>2];c[k>>2]=V;c[m>>2]=U;c[n>>2]=W;c[o>>2]=ip(c[k>>2]|0,c[n>>2]|0)|0;a[c[j>>2]>>0]=a[(c[m>>2]|0)+(c[o>>2]<<2)>>0]|0;j=c[k>>2]|0;if((d[(c[m>>2]|0)+(c[o>>2]<<2)+3>>0]|0|0)!=1){if((c[j+4>>2]|0)>>>0<32?(jp(c[k>>2]|0,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0),(c[(c[k>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[k>>2]|0)+4>>2]=32;}else jp(j,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+1;}if(lp(ca)|0){c[Y>>2]=c[_>>2];oa=c[Y>>2]|0;l=i;return oa|0;}else{c[Y>>2]=-20;oa=c[Y>>2]|0;l=i;return oa|0;}return 0;}function Ip(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;i=l;l=l+256|0;j=i+244|0;k=i+240|0;m=i+236|0;n=i+232|0;o=i+228|0;p=i+224|0;q=i+220|0;r=i+216|0;s=i+212|0;t=i+208|0;u=i+204|0;v=i+200|0;w=i+196|0;x=i+192|0;y=i+188|0;z=i+184|0;A=i+180|0;B=i+176|0;C=i+172|0;D=i+168|0;E=i+164|0;F=i+160|0;G=i+156|0;H=i+152|0;I=i+148|0;J=i+144|0;K=i+140|0;L=i+136|0;M=i+132|0;N=i+128|0;O=i+124|0;P=i+120|0;Q=i+116|0;R=i+112|0;S=i+108|0;T=i+104|0;U=i+100|0;V=i+96|0;W=i+92|0;X=i+88|0;Y=i+80|0;Z=i+76|0;_=i+72|0;$=i+68|0;aa=i+64|0;ba=i+60|0;ca=i+40|0;da=i+36|0;ea=i+32|0;fa=i+28|0;ga=i+24|0;ha=i+20|0;ia=i+248|0;ja=i+16|0;ka=i+12|0;la=i+8|0;ma=i+4|0;na=i;c[ja>>2]=b;c[ka>>2]=e;c[la>>2]=f;c[ma>>2]=g;c[na>>2]=h;h=c[ka>>2]|0;ka=c[la>>2]|0;la=c[ma>>2]|0;ma=c[na>>2]|0;c[Z>>2]=c[ja>>2];c[_>>2]=h;c[$>>2]=ka;c[aa>>2]=la;c[ba>>2]=ma;c[da>>2]=fp(ca,c[$>>2]|0,c[aa>>2]|0)|0;if(ap(c[da>>2]|0)|0){c[Y>>2]=c[da>>2];oa=c[Y>>2]|0;l=i;return oa|0;}c[ea>>2]=c[Z>>2];c[fa>>2]=(c[ea>>2]|0)+(c[_>>2]|0);c[ga>>2]=(c[ba>>2]|0)+4;c[ha>>2]=c[ga>>2];bp(ia,c[ba>>2]|0);ba=c[fa>>2]|0;fa=c[ha>>2]|0;ha=d[ia+2>>0]|0;c[T>>2]=c[ea>>2];c[U>>2]=ca;c[V>>2]=ba;c[W>>2]=fa;c[X>>2]=ha;c[i+84>>2]=c[T>>2];while(1){ha=(gp(c[U>>2]|0)|0)==0&1;if(!(ha&(c[T>>2]|0)>>>0<((c[V>>2]|0)+-3|0)>>>0))break;if(hp()|0){ha=c[U>>2]|0;fa=c[W>>2]|0;ba=c[X>>2]|0;c[O>>2]=c[T>>2];c[P>>2]=ha;c[Q>>2]=fa;c[R>>2]=ba;c[S>>2]=ip(c[P>>2]|0,c[R>>2]|0)|0;ba=c[O>>2]|0;fa=(c[Q>>2]|0)+(c[S>>2]<<2)|0;a[ba>>0]=a[fa>>0]|0;a[ba+1>>0]=a[fa+1>>0]|0;jp(c[P>>2]|0,d[(c[Q>>2]|0)+(c[S>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[Q>>2]|0)+(c[S>>2]<<2)+3>>0]|0);}hp()|0;fa=c[U>>2]|0;ba=c[W>>2]|0;ha=c[X>>2]|0;c[J>>2]=c[T>>2];c[K>>2]=fa;c[L>>2]=ba;c[M>>2]=ha;c[N>>2]=ip(c[K>>2]|0,c[M>>2]|0)|0;ha=c[J>>2]|0;ba=(c[L>>2]|0)+(c[N>>2]<<2)|0;a[ha>>0]=a[ba>>0]|0;a[ha+1>>0]=a[ba+1>>0]|0;jp(c[K>>2]|0,d[(c[L>>2]|0)+(c[N>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[L>>2]|0)+(c[N>>2]<<2)+3>>0]|0);if(hp()|0){ba=c[U>>2]|0;ha=c[W>>2]|0;fa=c[X>>2]|0;c[E>>2]=c[T>>2];c[F>>2]=ba;c[G>>2]=ha;c[H>>2]=fa;c[I>>2]=ip(c[F>>2]|0,c[H>>2]|0)|0;fa=c[E>>2]|0;ha=(c[G>>2]|0)+(c[I>>2]<<2)|0;a[fa>>0]=a[ha>>0]|0;a[fa+1>>0]=a[ha+1>>0]|0;jp(c[F>>2]|0,d[(c[G>>2]|0)+(c[I>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[G>>2]|0)+(c[I>>2]<<2)+3>>0]|0);}ha=c[U>>2]|0;fa=c[W>>2]|0;ba=c[X>>2]|0;c[z>>2]=c[T>>2];c[A>>2]=ha;c[B>>2]=fa;c[C>>2]=ba;c[D>>2]=ip(c[A>>2]|0,c[C>>2]|0)|0;ba=c[z>>2]|0;fa=(c[B>>2]|0)+(c[D>>2]<<2)|0;a[ba>>0]=a[fa>>0]|0;a[ba+1>>0]=a[fa+1>>0]|0;jp(c[A>>2]|0,d[(c[B>>2]|0)+(c[D>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[B>>2]|0)+(c[D>>2]<<2)+3>>0]|0);}while(1){D=(gp(c[U>>2]|0)|0)==0&1;if(!(D&(c[T>>2]|0)>>>0<=((c[V>>2]|0)+-2|0)>>>0))break;D=c[U>>2]|0;B=c[W>>2]|0;A=c[X>>2]|0;c[u>>2]=c[T>>2];c[v>>2]=D;c[w>>2]=B;c[x>>2]=A;c[y>>2]=ip(c[v>>2]|0,c[x>>2]|0)|0;A=c[u>>2]|0;B=(c[w>>2]|0)+(c[y>>2]<<2)|0;a[A>>0]=a[B>>0]|0;a[A+1>>0]=a[B+1>>0]|0;jp(c[v>>2]|0,d[(c[w>>2]|0)+(c[y>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[w>>2]|0)+(c[y>>2]<<2)+3>>0]|0);}while(1){pa=c[T>>2]|0;if((c[T>>2]|0)>>>0>((c[V>>2]|0)+-2|0)>>>0)break;y=c[U>>2]|0;w=c[W>>2]|0;v=c[X>>2]|0;c[p>>2]=pa;c[q>>2]=y;c[r>>2]=w;c[s>>2]=v;c[t>>2]=ip(c[q>>2]|0,c[s>>2]|0)|0;v=c[p>>2]|0;w=(c[r>>2]|0)+(c[t>>2]<<2)|0;a[v>>0]=a[w>>0]|0;a[v+1>>0]=a[w+1>>0]|0;jp(c[q>>2]|0,d[(c[r>>2]|0)+(c[t>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[r>>2]|0)+(c[t>>2]<<2)+3>>0]|0);}if(pa>>>0<(c[V>>2]|0)>>>0){V=c[U>>2]|0;U=c[W>>2]|0;W=c[X>>2]|0;c[j>>2]=c[T>>2];c[k>>2]=V;c[m>>2]=U;c[n>>2]=W;c[o>>2]=ip(c[k>>2]|0,c[n>>2]|0)|0;a[c[j>>2]>>0]=a[(c[m>>2]|0)+(c[o>>2]<<2)>>0]|0;j=c[k>>2]|0;if((d[(c[m>>2]|0)+(c[o>>2]<<2)+3>>0]|0|0)!=1){if((c[j+4>>2]|0)>>>0<32?(jp(c[k>>2]|0,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0),(c[(c[k>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[k>>2]|0)+4>>2]=32;}else jp(j,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+1;}if(lp(ca)|0){c[Y>>2]=c[_>>2];oa=c[Y>>2]|0;l=i;return oa|0;}else{c[Y>>2]=-20;oa=c[Y>>2]|0;l=i;return oa|0;}return 0;}function Jp(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;if(c[p>>2]|0){c[i>>2]=Kp(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}else{c[i>>2]=Lp(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function Kp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0;i=l;l=l+1216|0;j=i+1208|0;k=i+1204|0;m=i+1200|0;n=i+1196|0;o=i+1192|0;p=i+1188|0;q=i+1184|0;r=i+1180|0;s=i+1176|0;t=i+1172|0;u=i+1168|0;v=i+1164|0;w=i+1160|0;x=i+1156|0;y=i+1152|0;z=i+1148|0;A=i+1144|0;B=i+1140|0;C=i+1136|0;D=i+1132|0;E=i+1128|0;F=i+1124|0;G=i+1120|0;H=i+1116|0;I=i+1112|0;J=i+1108|0;K=i+1104|0;L=i+1100|0;M=i+1096|0;N=i+1092|0;O=i+1088|0;P=i+1084|0;Q=i+1080|0;R=i+1076|0;S=i+1072|0;T=i+1068|0;U=i+1064|0;V=i+1060|0;W=i+1056|0;X=i+1052|0;Y=i+1048|0;Z=i+1044|0;_=i+1040|0;$=i+1036|0;aa=i+1032|0;ba=i+1028|0;ca=i+1024|0;da=i+1020|0;ea=i+1016|0;fa=i+1012|0;ga=i+1008|0;ha=i+1004|0;ia=i+1e3|0;ja=i+996|0;ka=i+992|0;la=i+988|0;ma=i+984|0;na=i+980|0;oa=i+976|0;pa=i+972|0;qa=i+968|0;ra=i+964|0;sa=i+960|0;ta=i+956|0;ua=i+952|0;va=i+948|0;wa=i+944|0;xa=i+940|0;ya=i+936|0;za=i+932|0;Aa=i+928|0;Ba=i+924|0;Ca=i+920|0;Da=i+916|0;Ea=i+912|0;Fa=i+908|0;Ga=i+904|0;Ha=i+900|0;Ia=i+896|0;Ja=i+892|0;Ka=i+888|0;La=i+884|0;Ma=i+880|0;Na=i+876|0;Oa=i+872|0;Pa=i+868|0;Qa=i+864|0;Ra=i+860|0;Sa=i+856|0;Ta=i+852|0;Ua=i+848|0;Va=i+844|0;Wa=i+840|0;Xa=i+836|0;Ya=i+832|0;Za=i+828|0;_a=i+824|0;$a=i+820|0;ab=i+816|0;bb=i+812|0;cb=i+808|0;db=i+804|0;eb=i+800|0;fb=i+796|0;gb=i+792|0;hb=i+788|0;ib=i+784|0;jb=i+780|0;kb=i+776|0;lb=i+772|0;mb=i+768|0;nb=i+764|0;ob=i+760|0;pb=i+756|0;qb=i+752|0;rb=i+748|0;sb=i+744|0;tb=i+740|0;ub=i+736|0;vb=i+732|0;wb=i+728|0;xb=i+724|0;yb=i+720|0;zb=i+716|0;Ab=i+712|0;Bb=i+708|0;Cb=i+704|0;Db=i+700|0;Eb=i+696|0;Fb=i+692|0;Gb=i+688|0;Hb=i+684|0;Ib=i+680|0;Jb=i+676|0;Kb=i+672|0;Lb=i+668|0;Mb=i+664|0;Nb=i+660|0;Ob=i+656|0;Pb=i+652|0;Qb=i+648|0;Rb=i+644|0;Sb=i+640|0;Tb=i+636|0;Ub=i+632|0;Vb=i+628|0;Wb=i+624|0;Xb=i+620|0;Yb=i+616|0;Zb=i+612|0;_b=i+608|0;$b=i+604|0;ac=i+600|0;bc=i+596|0;cc=i+592|0;dc=i+588|0;ec=i+584|0;fc=i+580|0;gc=i+576|0;hc=i+572|0;ic=i+568|0;jc=i+564|0;kc=i+560|0;lc=i+556|0;mc=i+552|0;nc=i+548|0;oc=i+544|0;pc=i+540|0;qc=i+536|0;rc=i+532|0;sc=i+528|0;tc=i+524|0;uc=i+520|0;vc=i+516|0;wc=i+512|0;xc=i+508|0;yc=i+504|0;zc=i+500|0;Ac=i+496|0;Bc=i+492|0;Cc=i+488|0;Dc=i+484|0;Ec=i+480|0;Fc=i+476|0;Gc=i+472|0;Hc=i+468|0;Ic=i+464|0;Jc=i+460|0;Kc=i+456|0;Lc=i+452|0;Mc=i+448|0;Nc=i+444|0;Oc=i+440|0;Pc=i+436|0;Qc=i+432|0;Rc=i+428|0;Sc=i+424|0;Tc=i+420|0;Uc=i+416|0;Vc=i+412|0;Wc=i+408|0;Xc=i+404|0;Yc=i+400|0;Zc=i+396|0;_c=i+392|0;$c=i+388|0;ad=i+384|0;bd=i+380|0;cd=i+376|0;dd=i+372|0;ed=i+368|0;fd=i+364|0;gd=i+360|0;hd=i+356|0;id=i+352|0;jd=i+348|0;kd=i+344|0;ld=i+340|0;md=i+336|0;nd=i+332|0;od=i+328|0;pd=i+324|0;qd=i+320|0;rd=i+316|0;sd=i+312|0;td=i+308|0;ud=i+304|0;vd=i+300|0;wd=i+296|0;xd=i+292|0;yd=i+288|0;zd=i+284|0;Ad=i+280|0;Bd=i+276|0;Cd=i+272|0;Dd=i+268|0;Ed=i+264|0;Fd=i+260|0;Gd=i+256|0;Hd=i+252|0;Id=i+248|0;Jd=i+244|0;Kd=i+240|0;Ld=i+236|0;Md=i+232|0;Nd=i+228|0;Od=i+224|0;Pd=i+220|0;Qd=i+216|0;Rd=i+212|0;Sd=i+208|0;Td=i+204|0;Ud=i+200|0;Vd=i+196|0;Wd=i+192|0;Xd=i+172|0;Yd=i+152|0;Zd=i+132|0;_d=i+112|0;$d=i+108|0;ae=i+104|0;be=i+100|0;ce=i+96|0;de=i+92|0;ee=i+88|0;fe=i+84|0;ge=i+80|0;he=i+76|0;ie=i+72|0;je=i+68|0;ke=i+64|0;le=i+60|0;me=i+56|0;ne=i+52|0;oe=i+48|0;pe=i+44|0;qe=i+1212|0;re=i+40|0;se=i+36|0;te=i+32|0;ue=i+28|0;ve=i+24|0;we=i+20|0;xe=i+16|0;ye=i+12|0;ze=i+8|0;Ae=i+4|0;Be=i;c[xe>>2]=b;c[ye>>2]=e;c[ze>>2]=f;c[Ae>>2]=g;c[Be>>2]=h;h=c[ye>>2]|0;ye=c[ze>>2]|0;ze=c[Ae>>2]|0;Ae=c[Be>>2]|0;c[Nd>>2]=c[xe>>2];c[Od>>2]=h;c[Pd>>2]=ye;c[Qd>>2]=ze;c[Rd>>2]=Ae;if((c[Qd>>2]|0)>>>0<10){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}c[Sd>>2]=c[Pd>>2];c[Td>>2]=c[Nd>>2];c[Ud>>2]=(c[Td>>2]|0)+(c[Od>>2]|0);c[Vd>>2]=(c[Rd>>2]|0)+4;c[Wd>>2]=c[Vd>>2];c[$d>>2]=(yp(c[Sd>>2]|0)|0)&65535;c[ae>>2]=(yp((c[Sd>>2]|0)+2|0)|0)&65535;c[be>>2]=(yp((c[Sd>>2]|0)+4|0)|0)&65535;c[ce>>2]=(c[Qd>>2]|0)-((c[$d>>2]|0)+(c[ae>>2]|0)+(c[be>>2]|0)+6);c[de>>2]=(c[Sd>>2]|0)+6;c[ee>>2]=(c[de>>2]|0)+(c[$d>>2]|0);c[fe>>2]=(c[ee>>2]|0)+(c[ae>>2]|0);c[ge>>2]=(c[fe>>2]|0)+(c[be>>2]|0);c[he>>2]=(((c[Od>>2]|0)+3|0)>>>0)/4|0;c[ie>>2]=(c[Td>>2]|0)+(c[he>>2]|0);c[je>>2]=(c[ie>>2]|0)+(c[he>>2]|0);c[ke>>2]=(c[je>>2]|0)+(c[he>>2]|0);c[le>>2]=c[Td>>2];c[me>>2]=c[ie>>2];c[ne>>2]=c[je>>2];c[oe>>2]=c[ke>>2];bp(qe,c[Rd>>2]|0);c[re>>2]=d[qe+2>>0];if((c[ce>>2]|0)>>>0>(c[Qd>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}c[se>>2]=fp(Xd,c[de>>2]|0,c[$d>>2]|0)|0;if(ap(c[se>>2]|0)|0){c[Md>>2]=c[se>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}c[te>>2]=fp(Yd,c[ee>>2]|0,c[ae>>2]|0)|0;if(ap(c[te>>2]|0)|0){c[Md>>2]=c[te>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}c[ue>>2]=fp(Zd,c[fe>>2]|0,c[be>>2]|0)|0;if(ap(c[ue>>2]|0)|0){c[Md>>2]=c[ue>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}c[ve>>2]=fp(_d,c[ge>>2]|0,c[ce>>2]|0)|0;if(ap(c[ve>>2]|0)|0){c[Md>>2]=c[ve>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}ve=gp(Xd)|0;ce=ve|(gp(Yd)|0);ve=ce|(gp(Zd)|0);c[pe>>2]=ve|(gp(_d)|0);while(1){if(!(((c[pe>>2]|0)==0?(c[oe>>2]|0)>>>0<((c[Ud>>2]|0)+-3|0)>>>0:0)|0))break;if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Hd>>2]=c[le>>2];c[Id>>2]=Xd;c[Jd>>2]=ve;c[Kd>>2]=ce;c[Ld>>2]=ip(c[Id>>2]|0,c[Kd>>2]|0)|0;ce=c[Hd>>2]|0;ve=(c[Jd>>2]|0)+(c[Ld>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Id>>2]|0,d[(c[Jd>>2]|0)+(c[Ld>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[Jd>>2]|0)+(c[Ld>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Cd>>2]=c[me>>2];c[Dd>>2]=Yd;c[Ed>>2]=ve;c[Fd>>2]=ce;c[Gd>>2]=ip(c[Dd>>2]|0,c[Fd>>2]|0)|0;ce=c[Cd>>2]|0;ve=(c[Ed>>2]|0)+(c[Gd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Dd>>2]|0,d[(c[Ed>>2]|0)+(c[Gd>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[Ed>>2]|0)+(c[Gd>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[xd>>2]=c[ne>>2];c[yd>>2]=Zd;c[zd>>2]=ve;c[Ad>>2]=ce;c[Bd>>2]=ip(c[yd>>2]|0,c[Ad>>2]|0)|0;ce=c[xd>>2]|0;ve=(c[zd>>2]|0)+(c[Bd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[yd>>2]|0,d[(c[zd>>2]|0)+(c[Bd>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[zd>>2]|0)+(c[Bd>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[sd>>2]=c[oe>>2];c[td>>2]=_d;c[ud>>2]=ve;c[vd>>2]=ce;c[wd>>2]=ip(c[td>>2]|0,c[vd>>2]|0)|0;ce=c[sd>>2]|0;ve=(c[ud>>2]|0)+(c[wd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[td>>2]|0,d[(c[ud>>2]|0)+(c[wd>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[ud>>2]|0)+(c[wd>>2]<<2)+3>>0]|0);}hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[nd>>2]=c[le>>2];c[od>>2]=Xd;c[pd>>2]=ve;c[qd>>2]=ce;c[rd>>2]=ip(c[od>>2]|0,c[qd>>2]|0)|0;ce=c[nd>>2]|0;ve=(c[pd>>2]|0)+(c[rd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[od>>2]|0,d[(c[pd>>2]|0)+(c[rd>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[pd>>2]|0)+(c[rd>>2]<<2)+3>>0]|0);hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[id>>2]=c[me>>2];c[jd>>2]=Yd;c[kd>>2]=ve;c[ld>>2]=ce;c[md>>2]=ip(c[jd>>2]|0,c[ld>>2]|0)|0;ce=c[id>>2]|0;ve=(c[kd>>2]|0)+(c[md>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[jd>>2]|0,d[(c[kd>>2]|0)+(c[md>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[kd>>2]|0)+(c[md>>2]<<2)+3>>0]|0);hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[dd>>2]=c[ne>>2];c[ed>>2]=Zd;c[fd>>2]=ve;c[gd>>2]=ce;c[hd>>2]=ip(c[ed>>2]|0,c[gd>>2]|0)|0;ce=c[dd>>2]|0;ve=(c[fd>>2]|0)+(c[hd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[ed>>2]|0,d[(c[fd>>2]|0)+(c[hd>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[fd>>2]|0)+(c[hd>>2]<<2)+3>>0]|0);hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[_c>>2]=c[oe>>2];c[$c>>2]=_d;c[ad>>2]=ve;c[bd>>2]=ce;c[cd>>2]=ip(c[$c>>2]|0,c[bd>>2]|0)|0;ce=c[_c>>2]|0;ve=(c[ad>>2]|0)+(c[cd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[$c>>2]|0,d[(c[ad>>2]|0)+(c[cd>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[ad>>2]|0)+(c[cd>>2]<<2)+3>>0]|0);if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Vc>>2]=c[le>>2];c[Wc>>2]=Xd;c[Xc>>2]=ve;c[Yc>>2]=ce;c[Zc>>2]=ip(c[Wc>>2]|0,c[Yc>>2]|0)|0;ce=c[Vc>>2]|0;ve=(c[Xc>>2]|0)+(c[Zc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Wc>>2]|0,d[(c[Xc>>2]|0)+(c[Zc>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[Xc>>2]|0)+(c[Zc>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Qc>>2]=c[me>>2];c[Rc>>2]=Yd;c[Sc>>2]=ve;c[Tc>>2]=ce;c[Uc>>2]=ip(c[Rc>>2]|0,c[Tc>>2]|0)|0;ce=c[Qc>>2]|0;ve=(c[Sc>>2]|0)+(c[Uc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Rc>>2]|0,d[(c[Sc>>2]|0)+(c[Uc>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[Sc>>2]|0)+(c[Uc>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Lc>>2]=c[ne>>2];c[Mc>>2]=Zd;c[Nc>>2]=ve;c[Oc>>2]=ce;c[Pc>>2]=ip(c[Mc>>2]|0,c[Oc>>2]|0)|0;ce=c[Lc>>2]|0;ve=(c[Nc>>2]|0)+(c[Pc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Mc>>2]|0,d[(c[Nc>>2]|0)+(c[Pc>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[Nc>>2]|0)+(c[Pc>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Gc>>2]=c[oe>>2];c[Hc>>2]=_d;c[Ic>>2]=ve;c[Jc>>2]=ce;c[Kc>>2]=ip(c[Hc>>2]|0,c[Jc>>2]|0)|0;ce=c[Gc>>2]|0;ve=(c[Ic>>2]|0)+(c[Kc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Hc>>2]|0,d[(c[Ic>>2]|0)+(c[Kc>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[Ic>>2]|0)+(c[Kc>>2]<<2)+3>>0]|0);}ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Bc>>2]=c[le>>2];c[Cc>>2]=Xd;c[Dc>>2]=ve;c[Ec>>2]=ce;c[Fc>>2]=ip(c[Cc>>2]|0,c[Ec>>2]|0)|0;ce=c[Bc>>2]|0;ve=(c[Dc>>2]|0)+(c[Fc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Cc>>2]|0,d[(c[Dc>>2]|0)+(c[Fc>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[Dc>>2]|0)+(c[Fc>>2]<<2)+3>>0]|0);ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[wc>>2]=c[me>>2];c[xc>>2]=Yd;c[yc>>2]=ve;c[zc>>2]=ce;c[Ac>>2]=ip(c[xc>>2]|0,c[zc>>2]|0)|0;ce=c[wc>>2]|0;ve=(c[yc>>2]|0)+(c[Ac>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[xc>>2]|0,d[(c[yc>>2]|0)+(c[Ac>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[yc>>2]|0)+(c[Ac>>2]<<2)+3>>0]|0);ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[rc>>2]=c[ne>>2];c[sc>>2]=Zd;c[tc>>2]=ve;c[uc>>2]=ce;c[vc>>2]=ip(c[sc>>2]|0,c[uc>>2]|0)|0;ce=c[rc>>2]|0;ve=(c[tc>>2]|0)+(c[vc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[sc>>2]|0,d[(c[tc>>2]|0)+(c[vc>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[tc>>2]|0)+(c[vc>>2]<<2)+3>>0]|0);ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[mc>>2]=c[oe>>2];c[nc>>2]=_d;c[oc>>2]=ve;c[pc>>2]=ce;c[qc>>2]=ip(c[nc>>2]|0,c[pc>>2]|0)|0;ce=c[mc>>2]|0;ve=(c[oc>>2]|0)+(c[qc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[nc>>2]|0,d[(c[oc>>2]|0)+(c[qc>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[oc>>2]|0)+(c[qc>>2]<<2)+3>>0]|0);ve=gp(Xd)|0;ce=ve|(gp(Yd)|0);ve=ce|(gp(Zd)|0);c[pe>>2]=ve|(gp(_d)|0);}if((c[le>>2]|0)>>>0>(c[ie>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}if((c[me>>2]|0)>>>0>(c[je>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}if((c[ne>>2]|0)>>>0>(c[ke>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}pe=c[ie>>2]|0;ie=c[Wd>>2]|0;qc=c[re>>2]|0;c[gc>>2]=c[le>>2];c[hc>>2]=Xd;c[ic>>2]=pe;c[jc>>2]=ie;c[kc>>2]=qc;c[lc>>2]=c[gc>>2];while(1){lc=(gp(c[hc>>2]|0)|0)==0&1;if(!(lc&(c[gc>>2]|0)>>>0<((c[ic>>2]|0)+-3|0)>>>0))break;if(hp()|0){lc=c[hc>>2]|0;qc=c[jc>>2]|0;ie=c[kc>>2]|0;c[bc>>2]=c[gc>>2];c[cc>>2]=lc;c[dc>>2]=qc;c[ec>>2]=ie;c[fc>>2]=ip(c[cc>>2]|0,c[ec>>2]|0)|0;ie=c[bc>>2]|0;qc=(c[dc>>2]|0)+(c[fc>>2]<<2)|0;a[ie>>0]=a[qc>>0]|0;a[ie+1>>0]=a[qc+1>>0]|0;jp(c[cc>>2]|0,d[(c[dc>>2]|0)+(c[fc>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[dc>>2]|0)+(c[fc>>2]<<2)+3>>0]|0);}hp()|0;qc=c[hc>>2]|0;ie=c[jc>>2]|0;lc=c[kc>>2]|0;c[Yb>>2]=c[gc>>2];c[Zb>>2]=qc;c[_b>>2]=ie;c[$b>>2]=lc;c[ac>>2]=ip(c[Zb>>2]|0,c[$b>>2]|0)|0;lc=c[Yb>>2]|0;ie=(c[_b>>2]|0)+(c[ac>>2]<<2)|0;a[lc>>0]=a[ie>>0]|0;a[lc+1>>0]=a[ie+1>>0]|0;jp(c[Zb>>2]|0,d[(c[_b>>2]|0)+(c[ac>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[_b>>2]|0)+(c[ac>>2]<<2)+3>>0]|0);if(hp()|0){ie=c[hc>>2]|0;lc=c[jc>>2]|0;qc=c[kc>>2]|0;c[Tb>>2]=c[gc>>2];c[Ub>>2]=ie;c[Vb>>2]=lc;c[Wb>>2]=qc;c[Xb>>2]=ip(c[Ub>>2]|0,c[Wb>>2]|0)|0;qc=c[Tb>>2]|0;lc=(c[Vb>>2]|0)+(c[Xb>>2]<<2)|0;a[qc>>0]=a[lc>>0]|0;a[qc+1>>0]=a[lc+1>>0]|0;jp(c[Ub>>2]|0,d[(c[Vb>>2]|0)+(c[Xb>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Vb>>2]|0)+(c[Xb>>2]<<2)+3>>0]|0);}lc=c[hc>>2]|0;qc=c[jc>>2]|0;ie=c[kc>>2]|0;c[Ob>>2]=c[gc>>2];c[Pb>>2]=lc;c[Qb>>2]=qc;c[Rb>>2]=ie;c[Sb>>2]=ip(c[Pb>>2]|0,c[Rb>>2]|0)|0;ie=c[Ob>>2]|0;qc=(c[Qb>>2]|0)+(c[Sb>>2]<<2)|0;a[ie>>0]=a[qc>>0]|0;a[ie+1>>0]=a[qc+1>>0]|0;jp(c[Pb>>2]|0,d[(c[Qb>>2]|0)+(c[Sb>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Qb>>2]|0)+(c[Sb>>2]<<2)+3>>0]|0);}while(1){Sb=(gp(c[hc>>2]|0)|0)==0&1;if(!(Sb&(c[gc>>2]|0)>>>0<=((c[ic>>2]|0)+-2|0)>>>0))break;Sb=c[hc>>2]|0;Qb=c[jc>>2]|0;Pb=c[kc>>2]|0;c[Jb>>2]=c[gc>>2];c[Kb>>2]=Sb;c[Lb>>2]=Qb;c[Mb>>2]=Pb;c[Nb>>2]=ip(c[Kb>>2]|0,c[Mb>>2]|0)|0;Pb=c[Jb>>2]|0;Qb=(c[Lb>>2]|0)+(c[Nb>>2]<<2)|0;a[Pb>>0]=a[Qb>>0]|0;a[Pb+1>>0]=a[Qb+1>>0]|0;jp(c[Kb>>2]|0,d[(c[Lb>>2]|0)+(c[Nb>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Lb>>2]|0)+(c[Nb>>2]<<2)+3>>0]|0);}while(1){De=c[gc>>2]|0;if((c[gc>>2]|0)>>>0>((c[ic>>2]|0)+-2|0)>>>0)break;Nb=c[hc>>2]|0;Lb=c[jc>>2]|0;Kb=c[kc>>2]|0;c[Eb>>2]=De;c[Fb>>2]=Nb;c[Gb>>2]=Lb;c[Hb>>2]=Kb;c[Ib>>2]=ip(c[Fb>>2]|0,c[Hb>>2]|0)|0;Kb=c[Eb>>2]|0;Lb=(c[Gb>>2]|0)+(c[Ib>>2]<<2)|0;a[Kb>>0]=a[Lb>>0]|0;a[Kb+1>>0]=a[Lb+1>>0]|0;jp(c[Fb>>2]|0,d[(c[Gb>>2]|0)+(c[Ib>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Gb>>2]|0)+(c[Ib>>2]<<2)+3>>0]|0);}if(De>>>0<(c[ic>>2]|0)>>>0){ic=c[hc>>2]|0;hc=c[jc>>2]|0;jc=c[kc>>2]|0;c[zb>>2]=c[gc>>2];c[Ab>>2]=ic;c[Bb>>2]=hc;c[Cb>>2]=jc;c[Db>>2]=ip(c[Ab>>2]|0,c[Cb>>2]|0)|0;a[c[zb>>2]>>0]=a[(c[Bb>>2]|0)+(c[Db>>2]<<2)>>0]|0;zb=c[Ab>>2]|0;if((d[(c[Bb>>2]|0)+(c[Db>>2]<<2)+3>>0]|0|0)!=1){if((c[zb+4>>2]|0)>>>0<32?(jp(c[Ab>>2]|0,d[(c[Bb>>2]|0)+(c[Db>>2]<<2)+2>>0]|0),(c[(c[Ab>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[Ab>>2]|0)+4>>2]=32;}else jp(zb,d[(c[Bb>>2]|0)+(c[Db>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+1;}gc=c[je>>2]|0;je=c[Wd>>2]|0;Db=c[re>>2]|0;c[tb>>2]=c[me>>2];c[ub>>2]=Yd;c[vb>>2]=gc;c[wb>>2]=je;c[xb>>2]=Db;c[yb>>2]=c[tb>>2];while(1){yb=(gp(c[ub>>2]|0)|0)==0&1;if(!(yb&(c[tb>>2]|0)>>>0<((c[vb>>2]|0)+-3|0)>>>0))break;if(hp()|0){yb=c[ub>>2]|0;Db=c[wb>>2]|0;je=c[xb>>2]|0;c[ob>>2]=c[tb>>2];c[pb>>2]=yb;c[qb>>2]=Db;c[rb>>2]=je;c[sb>>2]=ip(c[pb>>2]|0,c[rb>>2]|0)|0;je=c[ob>>2]|0;Db=(c[qb>>2]|0)+(c[sb>>2]<<2)|0;a[je>>0]=a[Db>>0]|0;a[je+1>>0]=a[Db+1>>0]|0;jp(c[pb>>2]|0,d[(c[qb>>2]|0)+(c[sb>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[qb>>2]|0)+(c[sb>>2]<<2)+3>>0]|0);}hp()|0;Db=c[ub>>2]|0;je=c[wb>>2]|0;yb=c[xb>>2]|0;c[jb>>2]=c[tb>>2];c[kb>>2]=Db;c[lb>>2]=je;c[mb>>2]=yb;c[nb>>2]=ip(c[kb>>2]|0,c[mb>>2]|0)|0;yb=c[jb>>2]|0;je=(c[lb>>2]|0)+(c[nb>>2]<<2)|0;a[yb>>0]=a[je>>0]|0;a[yb+1>>0]=a[je+1>>0]|0;jp(c[kb>>2]|0,d[(c[lb>>2]|0)+(c[nb>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[lb>>2]|0)+(c[nb>>2]<<2)+3>>0]|0);if(hp()|0){je=c[ub>>2]|0;yb=c[wb>>2]|0;Db=c[xb>>2]|0;c[eb>>2]=c[tb>>2];c[fb>>2]=je;c[gb>>2]=yb;c[hb>>2]=Db;c[ib>>2]=ip(c[fb>>2]|0,c[hb>>2]|0)|0;Db=c[eb>>2]|0;yb=(c[gb>>2]|0)+(c[ib>>2]<<2)|0;a[Db>>0]=a[yb>>0]|0;a[Db+1>>0]=a[yb+1>>0]|0;jp(c[fb>>2]|0,d[(c[gb>>2]|0)+(c[ib>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[gb>>2]|0)+(c[ib>>2]<<2)+3>>0]|0);}yb=c[ub>>2]|0;Db=c[wb>>2]|0;je=c[xb>>2]|0;c[$a>>2]=c[tb>>2];c[ab>>2]=yb;c[bb>>2]=Db;c[cb>>2]=je;c[db>>2]=ip(c[ab>>2]|0,c[cb>>2]|0)|0;je=c[$a>>2]|0;Db=(c[bb>>2]|0)+(c[db>>2]<<2)|0;a[je>>0]=a[Db>>0]|0;a[je+1>>0]=a[Db+1>>0]|0;jp(c[ab>>2]|0,d[(c[bb>>2]|0)+(c[db>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[bb>>2]|0)+(c[db>>2]<<2)+3>>0]|0);}while(1){db=(gp(c[ub>>2]|0)|0)==0&1;if(!(db&(c[tb>>2]|0)>>>0<=((c[vb>>2]|0)+-2|0)>>>0))break;db=c[ub>>2]|0;bb=c[wb>>2]|0;ab=c[xb>>2]|0;c[Wa>>2]=c[tb>>2];c[Xa>>2]=db;c[Ya>>2]=bb;c[Za>>2]=ab;c[_a>>2]=ip(c[Xa>>2]|0,c[Za>>2]|0)|0;ab=c[Wa>>2]|0;bb=(c[Ya>>2]|0)+(c[_a>>2]<<2)|0;a[ab>>0]=a[bb>>0]|0;a[ab+1>>0]=a[bb+1>>0]|0;jp(c[Xa>>2]|0,d[(c[Ya>>2]|0)+(c[_a>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[Ya>>2]|0)+(c[_a>>2]<<2)+3>>0]|0);}while(1){Ee=c[tb>>2]|0;if((c[tb>>2]|0)>>>0>((c[vb>>2]|0)+-2|0)>>>0)break;_a=c[ub>>2]|0;Ya=c[wb>>2]|0;Xa=c[xb>>2]|0;c[Ra>>2]=Ee;c[Sa>>2]=_a;c[Ta>>2]=Ya;c[Ua>>2]=Xa;c[Va>>2]=ip(c[Sa>>2]|0,c[Ua>>2]|0)|0;Xa=c[Ra>>2]|0;Ya=(c[Ta>>2]|0)+(c[Va>>2]<<2)|0;a[Xa>>0]=a[Ya>>0]|0;a[Xa+1>>0]=a[Ya+1>>0]|0;jp(c[Sa>>2]|0,d[(c[Ta>>2]|0)+(c[Va>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[Ta>>2]|0)+(c[Va>>2]<<2)+3>>0]|0);}if(Ee>>>0<(c[vb>>2]|0)>>>0){vb=c[ub>>2]|0;ub=c[wb>>2]|0;wb=c[xb>>2]|0;c[Ma>>2]=c[tb>>2];c[Na>>2]=vb;c[Oa>>2]=ub;c[Pa>>2]=wb;c[Qa>>2]=ip(c[Na>>2]|0,c[Pa>>2]|0)|0;a[c[Ma>>2]>>0]=a[(c[Oa>>2]|0)+(c[Qa>>2]<<2)>>0]|0;Ma=c[Na>>2]|0;if((d[(c[Oa>>2]|0)+(c[Qa>>2]<<2)+3>>0]|0|0)!=1){if((c[Ma+4>>2]|0)>>>0<32?(jp(c[Na>>2]|0,d[(c[Oa>>2]|0)+(c[Qa>>2]<<2)+2>>0]|0),(c[(c[Na>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[Na>>2]|0)+4>>2]=32;}else jp(Ma,d[(c[Oa>>2]|0)+(c[Qa>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+1;}tb=c[ke>>2]|0;ke=c[Wd>>2]|0;Qa=c[re>>2]|0;c[Ga>>2]=c[ne>>2];c[Ha>>2]=Zd;c[Ia>>2]=tb;c[Ja>>2]=ke;c[Ka>>2]=Qa;c[La>>2]=c[Ga>>2];while(1){La=(gp(c[Ha>>2]|0)|0)==0&1;if(!(La&(c[Ga>>2]|0)>>>0<((c[Ia>>2]|0)+-3|0)>>>0))break;if(hp()|0){La=c[Ha>>2]|0;Qa=c[Ja>>2]|0;ke=c[Ka>>2]|0;c[Ba>>2]=c[Ga>>2];c[Ca>>2]=La;c[Da>>2]=Qa;c[Ea>>2]=ke;c[Fa>>2]=ip(c[Ca>>2]|0,c[Ea>>2]|0)|0;ke=c[Ba>>2]|0;Qa=(c[Da>>2]|0)+(c[Fa>>2]<<2)|0;a[ke>>0]=a[Qa>>0]|0;a[ke+1>>0]=a[Qa+1>>0]|0;jp(c[Ca>>2]|0,d[(c[Da>>2]|0)+(c[Fa>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[Da>>2]|0)+(c[Fa>>2]<<2)+3>>0]|0);}hp()|0;Qa=c[Ha>>2]|0;ke=c[Ja>>2]|0;La=c[Ka>>2]|0;c[wa>>2]=c[Ga>>2];c[xa>>2]=Qa;c[ya>>2]=ke;c[za>>2]=La;c[Aa>>2]=ip(c[xa>>2]|0,c[za>>2]|0)|0;La=c[wa>>2]|0;ke=(c[ya>>2]|0)+(c[Aa>>2]<<2)|0;a[La>>0]=a[ke>>0]|0;a[La+1>>0]=a[ke+1>>0]|0;jp(c[xa>>2]|0,d[(c[ya>>2]|0)+(c[Aa>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ya>>2]|0)+(c[Aa>>2]<<2)+3>>0]|0);if(hp()|0){ke=c[Ha>>2]|0;La=c[Ja>>2]|0;Qa=c[Ka>>2]|0;c[ra>>2]=c[Ga>>2];c[sa>>2]=ke;c[ta>>2]=La;c[ua>>2]=Qa;c[va>>2]=ip(c[sa>>2]|0,c[ua>>2]|0)|0;Qa=c[ra>>2]|0;La=(c[ta>>2]|0)+(c[va>>2]<<2)|0;a[Qa>>0]=a[La>>0]|0;a[Qa+1>>0]=a[La+1>>0]|0;jp(c[sa>>2]|0,d[(c[ta>>2]|0)+(c[va>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ta>>2]|0)+(c[va>>2]<<2)+3>>0]|0);}La=c[Ha>>2]|0;Qa=c[Ja>>2]|0;ke=c[Ka>>2]|0;c[ma>>2]=c[Ga>>2];c[na>>2]=La;c[oa>>2]=Qa;c[pa>>2]=ke;c[qa>>2]=ip(c[na>>2]|0,c[pa>>2]|0)|0;ke=c[ma>>2]|0;Qa=(c[oa>>2]|0)+(c[qa>>2]<<2)|0;a[ke>>0]=a[Qa>>0]|0;a[ke+1>>0]=a[Qa+1>>0]|0;jp(c[na>>2]|0,d[(c[oa>>2]|0)+(c[qa>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[oa>>2]|0)+(c[qa>>2]<<2)+3>>0]|0);}while(1){qa=(gp(c[Ha>>2]|0)|0)==0&1;if(!(qa&(c[Ga>>2]|0)>>>0<=((c[Ia>>2]|0)+-2|0)>>>0))break;qa=c[Ha>>2]|0;oa=c[Ja>>2]|0;na=c[Ka>>2]|0;c[ha>>2]=c[Ga>>2];c[ia>>2]=qa;c[ja>>2]=oa;c[ka>>2]=na;c[la>>2]=ip(c[ia>>2]|0,c[ka>>2]|0)|0;na=c[ha>>2]|0;oa=(c[ja>>2]|0)+(c[la>>2]<<2)|0;a[na>>0]=a[oa>>0]|0;a[na+1>>0]=a[oa+1>>0]|0;jp(c[ia>>2]|0,d[(c[ja>>2]|0)+(c[la>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ja>>2]|0)+(c[la>>2]<<2)+3>>0]|0);}while(1){Fe=c[Ga>>2]|0;if((c[Ga>>2]|0)>>>0>((c[Ia>>2]|0)+-2|0)>>>0)break;la=c[Ha>>2]|0;ja=c[Ja>>2]|0;ia=c[Ka>>2]|0;c[ca>>2]=Fe;c[da>>2]=la;c[ea>>2]=ja;c[fa>>2]=ia;c[ga>>2]=ip(c[da>>2]|0,c[fa>>2]|0)|0;ia=c[ca>>2]|0;ja=(c[ea>>2]|0)+(c[ga>>2]<<2)|0;a[ia>>0]=a[ja>>0]|0;a[ia+1>>0]=a[ja+1>>0]|0;jp(c[da>>2]|0,d[(c[ea>>2]|0)+(c[ga>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ea>>2]|0)+(c[ga>>2]<<2)+3>>0]|0);}if(Fe>>>0<(c[Ia>>2]|0)>>>0){Ia=c[Ha>>2]|0;Ha=c[Ja>>2]|0;Ja=c[Ka>>2]|0;c[Z>>2]=c[Ga>>2];c[_>>2]=Ia;c[$>>2]=Ha;c[aa>>2]=Ja;c[ba>>2]=ip(c[_>>2]|0,c[aa>>2]|0)|0;a[c[Z>>2]>>0]=a[(c[$>>2]|0)+(c[ba>>2]<<2)>>0]|0;Z=c[_>>2]|0;if((d[(c[$>>2]|0)+(c[ba>>2]<<2)+3>>0]|0|0)!=1){if((c[Z+4>>2]|0)>>>0<32?(jp(c[_>>2]|0,d[(c[$>>2]|0)+(c[ba>>2]<<2)+2>>0]|0),(c[(c[_>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[_>>2]|0)+4>>2]=32;}else jp(Z,d[(c[$>>2]|0)+(c[ba>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+1;}Ga=c[Ud>>2]|0;Ud=c[Wd>>2]|0;Wd=c[re>>2]|0;c[T>>2]=c[oe>>2];c[U>>2]=_d;c[V>>2]=Ga;c[W>>2]=Ud;c[X>>2]=Wd;c[Y>>2]=c[T>>2];while(1){Y=(gp(c[U>>2]|0)|0)==0&1;if(!(Y&(c[T>>2]|0)>>>0<((c[V>>2]|0)+-3|0)>>>0))break;if(hp()|0){Y=c[U>>2]|0;Wd=c[W>>2]|0;Ud=c[X>>2]|0;c[O>>2]=c[T>>2];c[P>>2]=Y;c[Q>>2]=Wd;c[R>>2]=Ud;c[S>>2]=ip(c[P>>2]|0,c[R>>2]|0)|0;Ud=c[O>>2]|0;Wd=(c[Q>>2]|0)+(c[S>>2]<<2)|0;a[Ud>>0]=a[Wd>>0]|0;a[Ud+1>>0]=a[Wd+1>>0]|0;jp(c[P>>2]|0,d[(c[Q>>2]|0)+(c[S>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[Q>>2]|0)+(c[S>>2]<<2)+3>>0]|0);}hp()|0;Wd=c[U>>2]|0;Ud=c[W>>2]|0;Y=c[X>>2]|0;c[J>>2]=c[T>>2];c[K>>2]=Wd;c[L>>2]=Ud;c[M>>2]=Y;c[N>>2]=ip(c[K>>2]|0,c[M>>2]|0)|0;Y=c[J>>2]|0;Ud=(c[L>>2]|0)+(c[N>>2]<<2)|0;a[Y>>0]=a[Ud>>0]|0;a[Y+1>>0]=a[Ud+1>>0]|0;jp(c[K>>2]|0,d[(c[L>>2]|0)+(c[N>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[L>>2]|0)+(c[N>>2]<<2)+3>>0]|0);if(hp()|0){Ud=c[U>>2]|0;Y=c[W>>2]|0;Wd=c[X>>2]|0;c[E>>2]=c[T>>2];c[F>>2]=Ud;c[G>>2]=Y;c[H>>2]=Wd;c[I>>2]=ip(c[F>>2]|0,c[H>>2]|0)|0;Wd=c[E>>2]|0;Y=(c[G>>2]|0)+(c[I>>2]<<2)|0;a[Wd>>0]=a[Y>>0]|0;a[Wd+1>>0]=a[Y+1>>0]|0;jp(c[F>>2]|0,d[(c[G>>2]|0)+(c[I>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[G>>2]|0)+(c[I>>2]<<2)+3>>0]|0);}Y=c[U>>2]|0;Wd=c[W>>2]|0;Ud=c[X>>2]|0;c[z>>2]=c[T>>2];c[A>>2]=Y;c[B>>2]=Wd;c[C>>2]=Ud;c[D>>2]=ip(c[A>>2]|0,c[C>>2]|0)|0;Ud=c[z>>2]|0;Wd=(c[B>>2]|0)+(c[D>>2]<<2)|0;a[Ud>>0]=a[Wd>>0]|0;a[Ud+1>>0]=a[Wd+1>>0]|0;jp(c[A>>2]|0,d[(c[B>>2]|0)+(c[D>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[B>>2]|0)+(c[D>>2]<<2)+3>>0]|0);}while(1){D=(gp(c[U>>2]|0)|0)==0&1;if(!(D&(c[T>>2]|0)>>>0<=((c[V>>2]|0)+-2|0)>>>0))break;D=c[U>>2]|0;B=c[W>>2]|0;A=c[X>>2]|0;c[u>>2]=c[T>>2];c[v>>2]=D;c[w>>2]=B;c[x>>2]=A;c[y>>2]=ip(c[v>>2]|0,c[x>>2]|0)|0;A=c[u>>2]|0;B=(c[w>>2]|0)+(c[y>>2]<<2)|0;a[A>>0]=a[B>>0]|0;a[A+1>>0]=a[B+1>>0]|0;jp(c[v>>2]|0,d[(c[w>>2]|0)+(c[y>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[w>>2]|0)+(c[y>>2]<<2)+3>>0]|0);}while(1){Ge=c[T>>2]|0;if((c[T>>2]|0)>>>0>((c[V>>2]|0)+-2|0)>>>0)break;y=c[U>>2]|0;w=c[W>>2]|0;v=c[X>>2]|0;c[p>>2]=Ge;c[q>>2]=y;c[r>>2]=w;c[s>>2]=v;c[t>>2]=ip(c[q>>2]|0,c[s>>2]|0)|0;v=c[p>>2]|0;w=(c[r>>2]|0)+(c[t>>2]<<2)|0;a[v>>0]=a[w>>0]|0;a[v+1>>0]=a[w+1>>0]|0;jp(c[q>>2]|0,d[(c[r>>2]|0)+(c[t>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[r>>2]|0)+(c[t>>2]<<2)+3>>0]|0);}if(Ge>>>0<(c[V>>2]|0)>>>0){V=c[U>>2]|0;U=c[W>>2]|0;W=c[X>>2]|0;c[j>>2]=c[T>>2];c[k>>2]=V;c[m>>2]=U;c[n>>2]=W;c[o>>2]=ip(c[k>>2]|0,c[n>>2]|0)|0;a[c[j>>2]>>0]=a[(c[m>>2]|0)+(c[o>>2]<<2)>>0]|0;j=c[k>>2]|0;if((d[(c[m>>2]|0)+(c[o>>2]<<2)+3>>0]|0|0)!=1){if((c[j+4>>2]|0)>>>0<32?(jp(c[k>>2]|0,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0),(c[(c[k>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[k>>2]|0)+4>>2]=32;}else jp(j,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+1;}T=lp(Xd)|0;Xd=T&(lp(Yd)|0);Yd=Xd&(lp(Zd)|0);c[we>>2]=Yd&(lp(_d)|0);if(c[we>>2]|0){c[Md>>2]=c[Od>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}else{c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}return 0;}function Lp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0;i=l;l=l+1216|0;j=i+1208|0;k=i+1204|0;m=i+1200|0;n=i+1196|0;o=i+1192|0;p=i+1188|0;q=i+1184|0;r=i+1180|0;s=i+1176|0;t=i+1172|0;u=i+1168|0;v=i+1164|0;w=i+1160|0;x=i+1156|0;y=i+1152|0;z=i+1148|0;A=i+1144|0;B=i+1140|0;C=i+1136|0;D=i+1132|0;E=i+1128|0;F=i+1124|0;G=i+1120|0;H=i+1116|0;I=i+1112|0;J=i+1108|0;K=i+1104|0;L=i+1100|0;M=i+1096|0;N=i+1092|0;O=i+1088|0;P=i+1084|0;Q=i+1080|0;R=i+1076|0;S=i+1072|0;T=i+1068|0;U=i+1064|0;V=i+1060|0;W=i+1056|0;X=i+1052|0;Y=i+1048|0;Z=i+1044|0;_=i+1040|0;$=i+1036|0;aa=i+1032|0;ba=i+1028|0;ca=i+1024|0;da=i+1020|0;ea=i+1016|0;fa=i+1012|0;ga=i+1008|0;ha=i+1004|0;ia=i+1e3|0;ja=i+996|0;ka=i+992|0;la=i+988|0;ma=i+984|0;na=i+980|0;oa=i+976|0;pa=i+972|0;qa=i+968|0;ra=i+964|0;sa=i+960|0;ta=i+956|0;ua=i+952|0;va=i+948|0;wa=i+944|0;xa=i+940|0;ya=i+936|0;za=i+932|0;Aa=i+928|0;Ba=i+924|0;Ca=i+920|0;Da=i+916|0;Ea=i+912|0;Fa=i+908|0;Ga=i+904|0;Ha=i+900|0;Ia=i+896|0;Ja=i+892|0;Ka=i+888|0;La=i+884|0;Ma=i+880|0;Na=i+876|0;Oa=i+872|0;Pa=i+868|0;Qa=i+864|0;Ra=i+860|0;Sa=i+856|0;Ta=i+852|0;Ua=i+848|0;Va=i+844|0;Wa=i+840|0;Xa=i+836|0;Ya=i+832|0;Za=i+828|0;_a=i+824|0;$a=i+820|0;ab=i+816|0;bb=i+812|0;cb=i+808|0;db=i+804|0;eb=i+800|0;fb=i+796|0;gb=i+792|0;hb=i+788|0;ib=i+784|0;jb=i+780|0;kb=i+776|0;lb=i+772|0;mb=i+768|0;nb=i+764|0;ob=i+760|0;pb=i+756|0;qb=i+752|0;rb=i+748|0;sb=i+744|0;tb=i+740|0;ub=i+736|0;vb=i+732|0;wb=i+728|0;xb=i+724|0;yb=i+720|0;zb=i+716|0;Ab=i+712|0;Bb=i+708|0;Cb=i+704|0;Db=i+700|0;Eb=i+696|0;Fb=i+692|0;Gb=i+688|0;Hb=i+684|0;Ib=i+680|0;Jb=i+676|0;Kb=i+672|0;Lb=i+668|0;Mb=i+664|0;Nb=i+660|0;Ob=i+656|0;Pb=i+652|0;Qb=i+648|0;Rb=i+644|0;Sb=i+640|0;Tb=i+636|0;Ub=i+632|0;Vb=i+628|0;Wb=i+624|0;Xb=i+620|0;Yb=i+616|0;Zb=i+612|0;_b=i+608|0;$b=i+604|0;ac=i+600|0;bc=i+596|0;cc=i+592|0;dc=i+588|0;ec=i+584|0;fc=i+580|0;gc=i+576|0;hc=i+572|0;ic=i+568|0;jc=i+564|0;kc=i+560|0;lc=i+556|0;mc=i+552|0;nc=i+548|0;oc=i+544|0;pc=i+540|0;qc=i+536|0;rc=i+532|0;sc=i+528|0;tc=i+524|0;uc=i+520|0;vc=i+516|0;wc=i+512|0;xc=i+508|0;yc=i+504|0;zc=i+500|0;Ac=i+496|0;Bc=i+492|0;Cc=i+488|0;Dc=i+484|0;Ec=i+480|0;Fc=i+476|0;Gc=i+472|0;Hc=i+468|0;Ic=i+464|0;Jc=i+460|0;Kc=i+456|0;Lc=i+452|0;Mc=i+448|0;Nc=i+444|0;Oc=i+440|0;Pc=i+436|0;Qc=i+432|0;Rc=i+428|0;Sc=i+424|0;Tc=i+420|0;Uc=i+416|0;Vc=i+412|0;Wc=i+408|0;Xc=i+404|0;Yc=i+400|0;Zc=i+396|0;_c=i+392|0;$c=i+388|0;ad=i+384|0;bd=i+380|0;cd=i+376|0;dd=i+372|0;ed=i+368|0;fd=i+364|0;gd=i+360|0;hd=i+356|0;id=i+352|0;jd=i+348|0;kd=i+344|0;ld=i+340|0;md=i+336|0;nd=i+332|0;od=i+328|0;pd=i+324|0;qd=i+320|0;rd=i+316|0;sd=i+312|0;td=i+308|0;ud=i+304|0;vd=i+300|0;wd=i+296|0;xd=i+292|0;yd=i+288|0;zd=i+284|0;Ad=i+280|0;Bd=i+276|0;Cd=i+272|0;Dd=i+268|0;Ed=i+264|0;Fd=i+260|0;Gd=i+256|0;Hd=i+252|0;Id=i+248|0;Jd=i+244|0;Kd=i+240|0;Ld=i+236|0;Md=i+232|0;Nd=i+228|0;Od=i+224|0;Pd=i+220|0;Qd=i+216|0;Rd=i+212|0;Sd=i+208|0;Td=i+204|0;Ud=i+200|0;Vd=i+196|0;Wd=i+192|0;Xd=i+172|0;Yd=i+152|0;Zd=i+132|0;_d=i+112|0;$d=i+108|0;ae=i+104|0;be=i+100|0;ce=i+96|0;de=i+92|0;ee=i+88|0;fe=i+84|0;ge=i+80|0;he=i+76|0;ie=i+72|0;je=i+68|0;ke=i+64|0;le=i+60|0;me=i+56|0;ne=i+52|0;oe=i+48|0;pe=i+44|0;qe=i+1212|0;re=i+40|0;se=i+36|0;te=i+32|0;ue=i+28|0;ve=i+24|0;we=i+20|0;xe=i+16|0;ye=i+12|0;ze=i+8|0;Ae=i+4|0;Be=i;c[xe>>2]=b;c[ye>>2]=e;c[ze>>2]=f;c[Ae>>2]=g;c[Be>>2]=h;h=c[ye>>2]|0;ye=c[ze>>2]|0;ze=c[Ae>>2]|0;Ae=c[Be>>2]|0;c[Nd>>2]=c[xe>>2];c[Od>>2]=h;c[Pd>>2]=ye;c[Qd>>2]=ze;c[Rd>>2]=Ae;if((c[Qd>>2]|0)>>>0<10){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}c[Sd>>2]=c[Pd>>2];c[Td>>2]=c[Nd>>2];c[Ud>>2]=(c[Td>>2]|0)+(c[Od>>2]|0);c[Vd>>2]=(c[Rd>>2]|0)+4;c[Wd>>2]=c[Vd>>2];c[$d>>2]=(yp(c[Sd>>2]|0)|0)&65535;c[ae>>2]=(yp((c[Sd>>2]|0)+2|0)|0)&65535;c[be>>2]=(yp((c[Sd>>2]|0)+4|0)|0)&65535;c[ce>>2]=(c[Qd>>2]|0)-((c[$d>>2]|0)+(c[ae>>2]|0)+(c[be>>2]|0)+6);c[de>>2]=(c[Sd>>2]|0)+6;c[ee>>2]=(c[de>>2]|0)+(c[$d>>2]|0);c[fe>>2]=(c[ee>>2]|0)+(c[ae>>2]|0);c[ge>>2]=(c[fe>>2]|0)+(c[be>>2]|0);c[he>>2]=(((c[Od>>2]|0)+3|0)>>>0)/4|0;c[ie>>2]=(c[Td>>2]|0)+(c[he>>2]|0);c[je>>2]=(c[ie>>2]|0)+(c[he>>2]|0);c[ke>>2]=(c[je>>2]|0)+(c[he>>2]|0);c[le>>2]=c[Td>>2];c[me>>2]=c[ie>>2];c[ne>>2]=c[je>>2];c[oe>>2]=c[ke>>2];bp(qe,c[Rd>>2]|0);c[re>>2]=d[qe+2>>0];if((c[ce>>2]|0)>>>0>(c[Qd>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}c[se>>2]=fp(Xd,c[de>>2]|0,c[$d>>2]|0)|0;if(ap(c[se>>2]|0)|0){c[Md>>2]=c[se>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}c[te>>2]=fp(Yd,c[ee>>2]|0,c[ae>>2]|0)|0;if(ap(c[te>>2]|0)|0){c[Md>>2]=c[te>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}c[ue>>2]=fp(Zd,c[fe>>2]|0,c[be>>2]|0)|0;if(ap(c[ue>>2]|0)|0){c[Md>>2]=c[ue>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}c[ve>>2]=fp(_d,c[ge>>2]|0,c[ce>>2]|0)|0;if(ap(c[ve>>2]|0)|0){c[Md>>2]=c[ve>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}ve=gp(Xd)|0;ce=ve|(gp(Yd)|0);ve=ce|(gp(Zd)|0);c[pe>>2]=ve|(gp(_d)|0);while(1){if(!(((c[pe>>2]|0)==0?(c[oe>>2]|0)>>>0<((c[Ud>>2]|0)+-3|0)>>>0:0)|0))break;if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Hd>>2]=c[le>>2];c[Id>>2]=Xd;c[Jd>>2]=ve;c[Kd>>2]=ce;c[Ld>>2]=ip(c[Id>>2]|0,c[Kd>>2]|0)|0;ce=c[Hd>>2]|0;ve=(c[Jd>>2]|0)+(c[Ld>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Id>>2]|0,d[(c[Jd>>2]|0)+(c[Ld>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[Jd>>2]|0)+(c[Ld>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Cd>>2]=c[me>>2];c[Dd>>2]=Yd;c[Ed>>2]=ve;c[Fd>>2]=ce;c[Gd>>2]=ip(c[Dd>>2]|0,c[Fd>>2]|0)|0;ce=c[Cd>>2]|0;ve=(c[Ed>>2]|0)+(c[Gd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Dd>>2]|0,d[(c[Ed>>2]|0)+(c[Gd>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[Ed>>2]|0)+(c[Gd>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[xd>>2]=c[ne>>2];c[yd>>2]=Zd;c[zd>>2]=ve;c[Ad>>2]=ce;c[Bd>>2]=ip(c[yd>>2]|0,c[Ad>>2]|0)|0;ce=c[xd>>2]|0;ve=(c[zd>>2]|0)+(c[Bd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[yd>>2]|0,d[(c[zd>>2]|0)+(c[Bd>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[zd>>2]|0)+(c[Bd>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[sd>>2]=c[oe>>2];c[td>>2]=_d;c[ud>>2]=ve;c[vd>>2]=ce;c[wd>>2]=ip(c[td>>2]|0,c[vd>>2]|0)|0;ce=c[sd>>2]|0;ve=(c[ud>>2]|0)+(c[wd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[td>>2]|0,d[(c[ud>>2]|0)+(c[wd>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[ud>>2]|0)+(c[wd>>2]<<2)+3>>0]|0);}hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[nd>>2]=c[le>>2];c[od>>2]=Xd;c[pd>>2]=ve;c[qd>>2]=ce;c[rd>>2]=ip(c[od>>2]|0,c[qd>>2]|0)|0;ce=c[nd>>2]|0;ve=(c[pd>>2]|0)+(c[rd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[od>>2]|0,d[(c[pd>>2]|0)+(c[rd>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[pd>>2]|0)+(c[rd>>2]<<2)+3>>0]|0);hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[id>>2]=c[me>>2];c[jd>>2]=Yd;c[kd>>2]=ve;c[ld>>2]=ce;c[md>>2]=ip(c[jd>>2]|0,c[ld>>2]|0)|0;ce=c[id>>2]|0;ve=(c[kd>>2]|0)+(c[md>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[jd>>2]|0,d[(c[kd>>2]|0)+(c[md>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[kd>>2]|0)+(c[md>>2]<<2)+3>>0]|0);hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[dd>>2]=c[ne>>2];c[ed>>2]=Zd;c[fd>>2]=ve;c[gd>>2]=ce;c[hd>>2]=ip(c[ed>>2]|0,c[gd>>2]|0)|0;ce=c[dd>>2]|0;ve=(c[fd>>2]|0)+(c[hd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[ed>>2]|0,d[(c[fd>>2]|0)+(c[hd>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[fd>>2]|0)+(c[hd>>2]<<2)+3>>0]|0);hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[_c>>2]=c[oe>>2];c[$c>>2]=_d;c[ad>>2]=ve;c[bd>>2]=ce;c[cd>>2]=ip(c[$c>>2]|0,c[bd>>2]|0)|0;ce=c[_c>>2]|0;ve=(c[ad>>2]|0)+(c[cd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[$c>>2]|0,d[(c[ad>>2]|0)+(c[cd>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[ad>>2]|0)+(c[cd>>2]<<2)+3>>0]|0);if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Vc>>2]=c[le>>2];c[Wc>>2]=Xd;c[Xc>>2]=ve;c[Yc>>2]=ce;c[Zc>>2]=ip(c[Wc>>2]|0,c[Yc>>2]|0)|0;ce=c[Vc>>2]|0;ve=(c[Xc>>2]|0)+(c[Zc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Wc>>2]|0,d[(c[Xc>>2]|0)+(c[Zc>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[Xc>>2]|0)+(c[Zc>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Qc>>2]=c[me>>2];c[Rc>>2]=Yd;c[Sc>>2]=ve;c[Tc>>2]=ce;c[Uc>>2]=ip(c[Rc>>2]|0,c[Tc>>2]|0)|0;ce=c[Qc>>2]|0;ve=(c[Sc>>2]|0)+(c[Uc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Rc>>2]|0,d[(c[Sc>>2]|0)+(c[Uc>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[Sc>>2]|0)+(c[Uc>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Lc>>2]=c[ne>>2];c[Mc>>2]=Zd;c[Nc>>2]=ve;c[Oc>>2]=ce;c[Pc>>2]=ip(c[Mc>>2]|0,c[Oc>>2]|0)|0;ce=c[Lc>>2]|0;ve=(c[Nc>>2]|0)+(c[Pc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Mc>>2]|0,d[(c[Nc>>2]|0)+(c[Pc>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[Nc>>2]|0)+(c[Pc>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Gc>>2]=c[oe>>2];c[Hc>>2]=_d;c[Ic>>2]=ve;c[Jc>>2]=ce;c[Kc>>2]=ip(c[Hc>>2]|0,c[Jc>>2]|0)|0;ce=c[Gc>>2]|0;ve=(c[Ic>>2]|0)+(c[Kc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Hc>>2]|0,d[(c[Ic>>2]|0)+(c[Kc>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[Ic>>2]|0)+(c[Kc>>2]<<2)+3>>0]|0);}ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Bc>>2]=c[le>>2];c[Cc>>2]=Xd;c[Dc>>2]=ve;c[Ec>>2]=ce;c[Fc>>2]=ip(c[Cc>>2]|0,c[Ec>>2]|0)|0;ce=c[Bc>>2]|0;ve=(c[Dc>>2]|0)+(c[Fc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Cc>>2]|0,d[(c[Dc>>2]|0)+(c[Fc>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[Dc>>2]|0)+(c[Fc>>2]<<2)+3>>0]|0);ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[wc>>2]=c[me>>2];c[xc>>2]=Yd;c[yc>>2]=ve;c[zc>>2]=ce;c[Ac>>2]=ip(c[xc>>2]|0,c[zc>>2]|0)|0;ce=c[wc>>2]|0;ve=(c[yc>>2]|0)+(c[Ac>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[xc>>2]|0,d[(c[yc>>2]|0)+(c[Ac>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[yc>>2]|0)+(c[Ac>>2]<<2)+3>>0]|0);ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[rc>>2]=c[ne>>2];c[sc>>2]=Zd;c[tc>>2]=ve;c[uc>>2]=ce;c[vc>>2]=ip(c[sc>>2]|0,c[uc>>2]|0)|0;ce=c[rc>>2]|0;ve=(c[tc>>2]|0)+(c[vc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[sc>>2]|0,d[(c[tc>>2]|0)+(c[vc>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[tc>>2]|0)+(c[vc>>2]<<2)+3>>0]|0);ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[mc>>2]=c[oe>>2];c[nc>>2]=_d;c[oc>>2]=ve;c[pc>>2]=ce;c[qc>>2]=ip(c[nc>>2]|0,c[pc>>2]|0)|0;ce=c[mc>>2]|0;ve=(c[oc>>2]|0)+(c[qc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[nc>>2]|0,d[(c[oc>>2]|0)+(c[qc>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[oc>>2]|0)+(c[qc>>2]<<2)+3>>0]|0);ve=gp(Xd)|0;ce=ve|(gp(Yd)|0);ve=ce|(gp(Zd)|0);c[pe>>2]=ve|(gp(_d)|0);}if((c[le>>2]|0)>>>0>(c[ie>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}if((c[me>>2]|0)>>>0>(c[je>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}if((c[ne>>2]|0)>>>0>(c[ke>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}pe=c[ie>>2]|0;ie=c[Wd>>2]|0;qc=c[re>>2]|0;c[gc>>2]=c[le>>2];c[hc>>2]=Xd;c[ic>>2]=pe;c[jc>>2]=ie;c[kc>>2]=qc;c[lc>>2]=c[gc>>2];while(1){lc=(gp(c[hc>>2]|0)|0)==0&1;if(!(lc&(c[gc>>2]|0)>>>0<((c[ic>>2]|0)+-3|0)>>>0))break;if(hp()|0){lc=c[hc>>2]|0;qc=c[jc>>2]|0;ie=c[kc>>2]|0;c[bc>>2]=c[gc>>2];c[cc>>2]=lc;c[dc>>2]=qc;c[ec>>2]=ie;c[fc>>2]=ip(c[cc>>2]|0,c[ec>>2]|0)|0;ie=c[bc>>2]|0;qc=(c[dc>>2]|0)+(c[fc>>2]<<2)|0;a[ie>>0]=a[qc>>0]|0;a[ie+1>>0]=a[qc+1>>0]|0;jp(c[cc>>2]|0,d[(c[dc>>2]|0)+(c[fc>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[dc>>2]|0)+(c[fc>>2]<<2)+3>>0]|0);}hp()|0;qc=c[hc>>2]|0;ie=c[jc>>2]|0;lc=c[kc>>2]|0;c[Yb>>2]=c[gc>>2];c[Zb>>2]=qc;c[_b>>2]=ie;c[$b>>2]=lc;c[ac>>2]=ip(c[Zb>>2]|0,c[$b>>2]|0)|0;lc=c[Yb>>2]|0;ie=(c[_b>>2]|0)+(c[ac>>2]<<2)|0;a[lc>>0]=a[ie>>0]|0;a[lc+1>>0]=a[ie+1>>0]|0;jp(c[Zb>>2]|0,d[(c[_b>>2]|0)+(c[ac>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[_b>>2]|0)+(c[ac>>2]<<2)+3>>0]|0);if(hp()|0){ie=c[hc>>2]|0;lc=c[jc>>2]|0;qc=c[kc>>2]|0;c[Tb>>2]=c[gc>>2];c[Ub>>2]=ie;c[Vb>>2]=lc;c[Wb>>2]=qc;c[Xb>>2]=ip(c[Ub>>2]|0,c[Wb>>2]|0)|0;qc=c[Tb>>2]|0;lc=(c[Vb>>2]|0)+(c[Xb>>2]<<2)|0;a[qc>>0]=a[lc>>0]|0;a[qc+1>>0]=a[lc+1>>0]|0;jp(c[Ub>>2]|0,d[(c[Vb>>2]|0)+(c[Xb>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Vb>>2]|0)+(c[Xb>>2]<<2)+3>>0]|0);}lc=c[hc>>2]|0;qc=c[jc>>2]|0;ie=c[kc>>2]|0;c[Ob>>2]=c[gc>>2];c[Pb>>2]=lc;c[Qb>>2]=qc;c[Rb>>2]=ie;c[Sb>>2]=ip(c[Pb>>2]|0,c[Rb>>2]|0)|0;ie=c[Ob>>2]|0;qc=(c[Qb>>2]|0)+(c[Sb>>2]<<2)|0;a[ie>>0]=a[qc>>0]|0;a[ie+1>>0]=a[qc+1>>0]|0;jp(c[Pb>>2]|0,d[(c[Qb>>2]|0)+(c[Sb>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Qb>>2]|0)+(c[Sb>>2]<<2)+3>>0]|0);}while(1){Sb=(gp(c[hc>>2]|0)|0)==0&1;if(!(Sb&(c[gc>>2]|0)>>>0<=((c[ic>>2]|0)+-2|0)>>>0))break;Sb=c[hc>>2]|0;Qb=c[jc>>2]|0;Pb=c[kc>>2]|0;c[Jb>>2]=c[gc>>2];c[Kb>>2]=Sb;c[Lb>>2]=Qb;c[Mb>>2]=Pb;c[Nb>>2]=ip(c[Kb>>2]|0,c[Mb>>2]|0)|0;Pb=c[Jb>>2]|0;Qb=(c[Lb>>2]|0)+(c[Nb>>2]<<2)|0;a[Pb>>0]=a[Qb>>0]|0;a[Pb+1>>0]=a[Qb+1>>0]|0;jp(c[Kb>>2]|0,d[(c[Lb>>2]|0)+(c[Nb>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Lb>>2]|0)+(c[Nb>>2]<<2)+3>>0]|0);}while(1){De=c[gc>>2]|0;if((c[gc>>2]|0)>>>0>((c[ic>>2]|0)+-2|0)>>>0)break;Nb=c[hc>>2]|0;Lb=c[jc>>2]|0;Kb=c[kc>>2]|0;c[Eb>>2]=De;c[Fb>>2]=Nb;c[Gb>>2]=Lb;c[Hb>>2]=Kb;c[Ib>>2]=ip(c[Fb>>2]|0,c[Hb>>2]|0)|0;Kb=c[Eb>>2]|0;Lb=(c[Gb>>2]|0)+(c[Ib>>2]<<2)|0;a[Kb>>0]=a[Lb>>0]|0;a[Kb+1>>0]=a[Lb+1>>0]|0;jp(c[Fb>>2]|0,d[(c[Gb>>2]|0)+(c[Ib>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Gb>>2]|0)+(c[Ib>>2]<<2)+3>>0]|0);}if(De>>>0<(c[ic>>2]|0)>>>0){ic=c[hc>>2]|0;hc=c[jc>>2]|0;jc=c[kc>>2]|0;c[zb>>2]=c[gc>>2];c[Ab>>2]=ic;c[Bb>>2]=hc;c[Cb>>2]=jc;c[Db>>2]=ip(c[Ab>>2]|0,c[Cb>>2]|0)|0;a[c[zb>>2]>>0]=a[(c[Bb>>2]|0)+(c[Db>>2]<<2)>>0]|0;zb=c[Ab>>2]|0;if((d[(c[Bb>>2]|0)+(c[Db>>2]<<2)+3>>0]|0|0)!=1){if((c[zb+4>>2]|0)>>>0<32?(jp(c[Ab>>2]|0,d[(c[Bb>>2]|0)+(c[Db>>2]<<2)+2>>0]|0),(c[(c[Ab>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[Ab>>2]|0)+4>>2]=32;}else jp(zb,d[(c[Bb>>2]|0)+(c[Db>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+1;}gc=c[je>>2]|0;je=c[Wd>>2]|0;Db=c[re>>2]|0;c[tb>>2]=c[me>>2];c[ub>>2]=Yd;c[vb>>2]=gc;c[wb>>2]=je;c[xb>>2]=Db;c[yb>>2]=c[tb>>2];while(1){yb=(gp(c[ub>>2]|0)|0)==0&1;if(!(yb&(c[tb>>2]|0)>>>0<((c[vb>>2]|0)+-3|0)>>>0))break;if(hp()|0){yb=c[ub>>2]|0;Db=c[wb>>2]|0;je=c[xb>>2]|0;c[ob>>2]=c[tb>>2];c[pb>>2]=yb;c[qb>>2]=Db;c[rb>>2]=je;c[sb>>2]=ip(c[pb>>2]|0,c[rb>>2]|0)|0;je=c[ob>>2]|0;Db=(c[qb>>2]|0)+(c[sb>>2]<<2)|0;a[je>>0]=a[Db>>0]|0;a[je+1>>0]=a[Db+1>>0]|0;jp(c[pb>>2]|0,d[(c[qb>>2]|0)+(c[sb>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[qb>>2]|0)+(c[sb>>2]<<2)+3>>0]|0);}hp()|0;Db=c[ub>>2]|0;je=c[wb>>2]|0;yb=c[xb>>2]|0;c[jb>>2]=c[tb>>2];c[kb>>2]=Db;c[lb>>2]=je;c[mb>>2]=yb;c[nb>>2]=ip(c[kb>>2]|0,c[mb>>2]|0)|0;yb=c[jb>>2]|0;je=(c[lb>>2]|0)+(c[nb>>2]<<2)|0;a[yb>>0]=a[je>>0]|0;a[yb+1>>0]=a[je+1>>0]|0;jp(c[kb>>2]|0,d[(c[lb>>2]|0)+(c[nb>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[lb>>2]|0)+(c[nb>>2]<<2)+3>>0]|0);if(hp()|0){je=c[ub>>2]|0;yb=c[wb>>2]|0;Db=c[xb>>2]|0;c[eb>>2]=c[tb>>2];c[fb>>2]=je;c[gb>>2]=yb;c[hb>>2]=Db;c[ib>>2]=ip(c[fb>>2]|0,c[hb>>2]|0)|0;Db=c[eb>>2]|0;yb=(c[gb>>2]|0)+(c[ib>>2]<<2)|0;a[Db>>0]=a[yb>>0]|0;a[Db+1>>0]=a[yb+1>>0]|0;jp(c[fb>>2]|0,d[(c[gb>>2]|0)+(c[ib>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[gb>>2]|0)+(c[ib>>2]<<2)+3>>0]|0);}yb=c[ub>>2]|0;Db=c[wb>>2]|0;je=c[xb>>2]|0;c[$a>>2]=c[tb>>2];c[ab>>2]=yb;c[bb>>2]=Db;c[cb>>2]=je;c[db>>2]=ip(c[ab>>2]|0,c[cb>>2]|0)|0;je=c[$a>>2]|0;Db=(c[bb>>2]|0)+(c[db>>2]<<2)|0;a[je>>0]=a[Db>>0]|0;a[je+1>>0]=a[Db+1>>0]|0;jp(c[ab>>2]|0,d[(c[bb>>2]|0)+(c[db>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[bb>>2]|0)+(c[db>>2]<<2)+3>>0]|0);}while(1){db=(gp(c[ub>>2]|0)|0)==0&1;if(!(db&(c[tb>>2]|0)>>>0<=((c[vb>>2]|0)+-2|0)>>>0))break;db=c[ub>>2]|0;bb=c[wb>>2]|0;ab=c[xb>>2]|0;c[Wa>>2]=c[tb>>2];c[Xa>>2]=db;c[Ya>>2]=bb;c[Za>>2]=ab;c[_a>>2]=ip(c[Xa>>2]|0,c[Za>>2]|0)|0;ab=c[Wa>>2]|0;bb=(c[Ya>>2]|0)+(c[_a>>2]<<2)|0;a[ab>>0]=a[bb>>0]|0;a[ab+1>>0]=a[bb+1>>0]|0;jp(c[Xa>>2]|0,d[(c[Ya>>2]|0)+(c[_a>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[Ya>>2]|0)+(c[_a>>2]<<2)+3>>0]|0);}while(1){Ee=c[tb>>2]|0;if((c[tb>>2]|0)>>>0>((c[vb>>2]|0)+-2|0)>>>0)break;_a=c[ub>>2]|0;Ya=c[wb>>2]|0;Xa=c[xb>>2]|0;c[Ra>>2]=Ee;c[Sa>>2]=_a;c[Ta>>2]=Ya;c[Ua>>2]=Xa;c[Va>>2]=ip(c[Sa>>2]|0,c[Ua>>2]|0)|0;Xa=c[Ra>>2]|0;Ya=(c[Ta>>2]|0)+(c[Va>>2]<<2)|0;a[Xa>>0]=a[Ya>>0]|0;a[Xa+1>>0]=a[Ya+1>>0]|0;jp(c[Sa>>2]|0,d[(c[Ta>>2]|0)+(c[Va>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[Ta>>2]|0)+(c[Va>>2]<<2)+3>>0]|0);}if(Ee>>>0<(c[vb>>2]|0)>>>0){vb=c[ub>>2]|0;ub=c[wb>>2]|0;wb=c[xb>>2]|0;c[Ma>>2]=c[tb>>2];c[Na>>2]=vb;c[Oa>>2]=ub;c[Pa>>2]=wb;c[Qa>>2]=ip(c[Na>>2]|0,c[Pa>>2]|0)|0;a[c[Ma>>2]>>0]=a[(c[Oa>>2]|0)+(c[Qa>>2]<<2)>>0]|0;Ma=c[Na>>2]|0;if((d[(c[Oa>>2]|0)+(c[Qa>>2]<<2)+3>>0]|0|0)!=1){if((c[Ma+4>>2]|0)>>>0<32?(jp(c[Na>>2]|0,d[(c[Oa>>2]|0)+(c[Qa>>2]<<2)+2>>0]|0),(c[(c[Na>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[Na>>2]|0)+4>>2]=32;}else jp(Ma,d[(c[Oa>>2]|0)+(c[Qa>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+1;}tb=c[ke>>2]|0;ke=c[Wd>>2]|0;Qa=c[re>>2]|0;c[Ga>>2]=c[ne>>2];c[Ha>>2]=Zd;c[Ia>>2]=tb;c[Ja>>2]=ke;c[Ka>>2]=Qa;c[La>>2]=c[Ga>>2];while(1){La=(gp(c[Ha>>2]|0)|0)==0&1;if(!(La&(c[Ga>>2]|0)>>>0<((c[Ia>>2]|0)+-3|0)>>>0))break;if(hp()|0){La=c[Ha>>2]|0;Qa=c[Ja>>2]|0;ke=c[Ka>>2]|0;c[Ba>>2]=c[Ga>>2];c[Ca>>2]=La;c[Da>>2]=Qa;c[Ea>>2]=ke;c[Fa>>2]=ip(c[Ca>>2]|0,c[Ea>>2]|0)|0;ke=c[Ba>>2]|0;Qa=(c[Da>>2]|0)+(c[Fa>>2]<<2)|0;a[ke>>0]=a[Qa>>0]|0;a[ke+1>>0]=a[Qa+1>>0]|0;jp(c[Ca>>2]|0,d[(c[Da>>2]|0)+(c[Fa>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[Da>>2]|0)+(c[Fa>>2]<<2)+3>>0]|0);}hp()|0;Qa=c[Ha>>2]|0;ke=c[Ja>>2]|0;La=c[Ka>>2]|0;c[wa>>2]=c[Ga>>2];c[xa>>2]=Qa;c[ya>>2]=ke;c[za>>2]=La;c[Aa>>2]=ip(c[xa>>2]|0,c[za>>2]|0)|0;La=c[wa>>2]|0;ke=(c[ya>>2]|0)+(c[Aa>>2]<<2)|0;a[La>>0]=a[ke>>0]|0;a[La+1>>0]=a[ke+1>>0]|0;jp(c[xa>>2]|0,d[(c[ya>>2]|0)+(c[Aa>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ya>>2]|0)+(c[Aa>>2]<<2)+3>>0]|0);if(hp()|0){ke=c[Ha>>2]|0;La=c[Ja>>2]|0;Qa=c[Ka>>2]|0;c[ra>>2]=c[Ga>>2];c[sa>>2]=ke;c[ta>>2]=La;c[ua>>2]=Qa;c[va>>2]=ip(c[sa>>2]|0,c[ua>>2]|0)|0;Qa=c[ra>>2]|0;La=(c[ta>>2]|0)+(c[va>>2]<<2)|0;a[Qa>>0]=a[La>>0]|0;a[Qa+1>>0]=a[La+1>>0]|0;jp(c[sa>>2]|0,d[(c[ta>>2]|0)+(c[va>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ta>>2]|0)+(c[va>>2]<<2)+3>>0]|0);}La=c[Ha>>2]|0;Qa=c[Ja>>2]|0;ke=c[Ka>>2]|0;c[ma>>2]=c[Ga>>2];c[na>>2]=La;c[oa>>2]=Qa;c[pa>>2]=ke;c[qa>>2]=ip(c[na>>2]|0,c[pa>>2]|0)|0;ke=c[ma>>2]|0;Qa=(c[oa>>2]|0)+(c[qa>>2]<<2)|0;a[ke>>0]=a[Qa>>0]|0;a[ke+1>>0]=a[Qa+1>>0]|0;jp(c[na>>2]|0,d[(c[oa>>2]|0)+(c[qa>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[oa>>2]|0)+(c[qa>>2]<<2)+3>>0]|0);}while(1){qa=(gp(c[Ha>>2]|0)|0)==0&1;if(!(qa&(c[Ga>>2]|0)>>>0<=((c[Ia>>2]|0)+-2|0)>>>0))break;qa=c[Ha>>2]|0;oa=c[Ja>>2]|0;na=c[Ka>>2]|0;c[ha>>2]=c[Ga>>2];c[ia>>2]=qa;c[ja>>2]=oa;c[ka>>2]=na;c[la>>2]=ip(c[ia>>2]|0,c[ka>>2]|0)|0;na=c[ha>>2]|0;oa=(c[ja>>2]|0)+(c[la>>2]<<2)|0;a[na>>0]=a[oa>>0]|0;a[na+1>>0]=a[oa+1>>0]|0;jp(c[ia>>2]|0,d[(c[ja>>2]|0)+(c[la>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ja>>2]|0)+(c[la>>2]<<2)+3>>0]|0);}while(1){Fe=c[Ga>>2]|0;if((c[Ga>>2]|0)>>>0>((c[Ia>>2]|0)+-2|0)>>>0)break;la=c[Ha>>2]|0;ja=c[Ja>>2]|0;ia=c[Ka>>2]|0;c[ca>>2]=Fe;c[da>>2]=la;c[ea>>2]=ja;c[fa>>2]=ia;c[ga>>2]=ip(c[da>>2]|0,c[fa>>2]|0)|0;ia=c[ca>>2]|0;ja=(c[ea>>2]|0)+(c[ga>>2]<<2)|0;a[ia>>0]=a[ja>>0]|0;a[ia+1>>0]=a[ja+1>>0]|0;jp(c[da>>2]|0,d[(c[ea>>2]|0)+(c[ga>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ea>>2]|0)+(c[ga>>2]<<2)+3>>0]|0);}if(Fe>>>0<(c[Ia>>2]|0)>>>0){Ia=c[Ha>>2]|0;Ha=c[Ja>>2]|0;Ja=c[Ka>>2]|0;c[Z>>2]=c[Ga>>2];c[_>>2]=Ia;c[$>>2]=Ha;c[aa>>2]=Ja;c[ba>>2]=ip(c[_>>2]|0,c[aa>>2]|0)|0;a[c[Z>>2]>>0]=a[(c[$>>2]|0)+(c[ba>>2]<<2)>>0]|0;Z=c[_>>2]|0;if((d[(c[$>>2]|0)+(c[ba>>2]<<2)+3>>0]|0|0)!=1){if((c[Z+4>>2]|0)>>>0<32?(jp(c[_>>2]|0,d[(c[$>>2]|0)+(c[ba>>2]<<2)+2>>0]|0),(c[(c[_>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[_>>2]|0)+4>>2]=32;}else jp(Z,d[(c[$>>2]|0)+(c[ba>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+1;}Ga=c[Ud>>2]|0;Ud=c[Wd>>2]|0;Wd=c[re>>2]|0;c[T>>2]=c[oe>>2];c[U>>2]=_d;c[V>>2]=Ga;c[W>>2]=Ud;c[X>>2]=Wd;c[Y>>2]=c[T>>2];while(1){Y=(gp(c[U>>2]|0)|0)==0&1;if(!(Y&(c[T>>2]|0)>>>0<((c[V>>2]|0)+-3|0)>>>0))break;if(hp()|0){Y=c[U>>2]|0;Wd=c[W>>2]|0;Ud=c[X>>2]|0;c[O>>2]=c[T>>2];c[P>>2]=Y;c[Q>>2]=Wd;c[R>>2]=Ud;c[S>>2]=ip(c[P>>2]|0,c[R>>2]|0)|0;Ud=c[O>>2]|0;Wd=(c[Q>>2]|0)+(c[S>>2]<<2)|0;a[Ud>>0]=a[Wd>>0]|0;a[Ud+1>>0]=a[Wd+1>>0]|0;jp(c[P>>2]|0,d[(c[Q>>2]|0)+(c[S>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[Q>>2]|0)+(c[S>>2]<<2)+3>>0]|0);}hp()|0;Wd=c[U>>2]|0;Ud=c[W>>2]|0;Y=c[X>>2]|0;c[J>>2]=c[T>>2];c[K>>2]=Wd;c[L>>2]=Ud;c[M>>2]=Y;c[N>>2]=ip(c[K>>2]|0,c[M>>2]|0)|0;Y=c[J>>2]|0;Ud=(c[L>>2]|0)+(c[N>>2]<<2)|0;a[Y>>0]=a[Ud>>0]|0;a[Y+1>>0]=a[Ud+1>>0]|0;jp(c[K>>2]|0,d[(c[L>>2]|0)+(c[N>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[L>>2]|0)+(c[N>>2]<<2)+3>>0]|0);if(hp()|0){Ud=c[U>>2]|0;Y=c[W>>2]|0;Wd=c[X>>2]|0;c[E>>2]=c[T>>2];c[F>>2]=Ud;c[G>>2]=Y;c[H>>2]=Wd;c[I>>2]=ip(c[F>>2]|0,c[H>>2]|0)|0;Wd=c[E>>2]|0;Y=(c[G>>2]|0)+(c[I>>2]<<2)|0;a[Wd>>0]=a[Y>>0]|0;a[Wd+1>>0]=a[Y+1>>0]|0;jp(c[F>>2]|0,d[(c[G>>2]|0)+(c[I>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[G>>2]|0)+(c[I>>2]<<2)+3>>0]|0);}Y=c[U>>2]|0;Wd=c[W>>2]|0;Ud=c[X>>2]|0;c[z>>2]=c[T>>2];c[A>>2]=Y;c[B>>2]=Wd;c[C>>2]=Ud;c[D>>2]=ip(c[A>>2]|0,c[C>>2]|0)|0;Ud=c[z>>2]|0;Wd=(c[B>>2]|0)+(c[D>>2]<<2)|0;a[Ud>>0]=a[Wd>>0]|0;a[Ud+1>>0]=a[Wd+1>>0]|0;jp(c[A>>2]|0,d[(c[B>>2]|0)+(c[D>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[B>>2]|0)+(c[D>>2]<<2)+3>>0]|0);}while(1){D=(gp(c[U>>2]|0)|0)==0&1;if(!(D&(c[T>>2]|0)>>>0<=((c[V>>2]|0)+-2|0)>>>0))break;D=c[U>>2]|0;B=c[W>>2]|0;A=c[X>>2]|0;c[u>>2]=c[T>>2];c[v>>2]=D;c[w>>2]=B;c[x>>2]=A;c[y>>2]=ip(c[v>>2]|0,c[x>>2]|0)|0;A=c[u>>2]|0;B=(c[w>>2]|0)+(c[y>>2]<<2)|0;a[A>>0]=a[B>>0]|0;a[A+1>>0]=a[B+1>>0]|0;jp(c[v>>2]|0,d[(c[w>>2]|0)+(c[y>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[w>>2]|0)+(c[y>>2]<<2)+3>>0]|0);}while(1){Ge=c[T>>2]|0;if((c[T>>2]|0)>>>0>((c[V>>2]|0)+-2|0)>>>0)break;y=c[U>>2]|0;w=c[W>>2]|0;v=c[X>>2]|0;c[p>>2]=Ge;c[q>>2]=y;c[r>>2]=w;c[s>>2]=v;c[t>>2]=ip(c[q>>2]|0,c[s>>2]|0)|0;v=c[p>>2]|0;w=(c[r>>2]|0)+(c[t>>2]<<2)|0;a[v>>0]=a[w>>0]|0;a[v+1>>0]=a[w+1>>0]|0;jp(c[q>>2]|0,d[(c[r>>2]|0)+(c[t>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[r>>2]|0)+(c[t>>2]<<2)+3>>0]|0);}if(Ge>>>0<(c[V>>2]|0)>>>0){V=c[U>>2]|0;U=c[W>>2]|0;W=c[X>>2]|0;c[j>>2]=c[T>>2];c[k>>2]=V;c[m>>2]=U;c[n>>2]=W;c[o>>2]=ip(c[k>>2]|0,c[n>>2]|0)|0;a[c[j>>2]>>0]=a[(c[m>>2]|0)+(c[o>>2]<<2)>>0]|0;j=c[k>>2]|0;if((d[(c[m>>2]|0)+(c[o>>2]<<2)+3>>0]|0|0)!=1){if((c[j+4>>2]|0)>>>0<32?(jp(c[k>>2]|0,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0),(c[(c[k>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[k>>2]|0)+4>>2]=32;}else jp(j,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+1;}T=lp(Xd)|0;Xd=T&(lp(Yd)|0);Yd=Xd&(lp(Zd)|0);c[we>>2]=Yd&(lp(_d)|0);if(c[we>>2]|0){c[Md>>2]=c[Od>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}else{c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}return 0;}function Mp(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=l;l=l+48|0;k=j+40|0;m=j+36|0;n=j+32|0;o=j+28|0;p=j+24|0;q=j+20|0;r=j+16|0;s=j+12|0;t=j+8|0;u=j+4|0;v=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=c[p>>2];c[v>>2]=Bp(c[m>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0)|0;s=(ap(c[v>>2]|0)|0)!=0;r=c[v>>2]|0;if(s){c[k>>2]=r;w=c[k>>2]|0;l=j;return w|0;}if(r>>>0>=(c[q>>2]|0)>>>0){c[k>>2]=-72;w=c[k>>2]|0;l=j;return w|0;}else{c[u>>2]=(c[u>>2]|0)+(c[v>>2]|0);c[q>>2]=(c[q>>2]|0)-(c[v>>2]|0);c[k>>2]=Jp(c[n>>2]|0,c[o>>2]|0,c[u>>2]|0,c[q>>2]|0,c[m>>2]|0,c[t>>2]|0)|0;w=c[k>>2]|0;l=j;return w|0;}return 0;}function Np(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=l;l=l+32|0;e=d+20|0;f=d+16|0;g=d+12|0;h=d+8|0;i=d+4|0;j=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)>>>0>=(c[e>>2]|0)>>>0)k=15;else k=(c[f>>2]<<4>>>0)/((c[e>>2]|0)>>>0)|0;c[g>>2]=k;c[h>>2]=(c[e>>2]|0)>>>8;c[i>>2]=(c[7008+((c[g>>2]|0)*24|0)>>2]|0)+(N(c[7008+((c[g>>2]|0)*24|0)+4>>2]|0,c[h>>2]|0)|0);c[j>>2]=(c[7008+((c[g>>2]|0)*24|0)+8>>2]|0)+(N(c[7008+((c[g>>2]|0)*24|0)+8+4>>2]|0,c[h>>2]|0)|0);c[j>>2]=(c[j>>2]|0)+((c[j>>2]|0)>>>3);l=d;return(c[j>>2]|0)>>>0<(c[i>>2]|0)>>>0|0;}function Op(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;i=l;l=l+32|0;j=i+20|0;k=i+16|0;m=i+12|0;n=i+8|0;o=i+4|0;p=i;q=i+24|0;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;bp(q,c[o>>2]|0);h=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;if(d[q+1>>0]|0|0){r=Gp(h,j,k,m,n,o)|0;l=i;return r|0;}else{r=cp(h,j,k,m,n,o)|0;l=i;return r|0;}return 0;}function Pp(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=l;l=l+48|0;k=j+40|0;m=j+36|0;n=j+32|0;o=j+28|0;p=j+24|0;q=j+20|0;r=j+16|0;s=j+12|0;t=j+8|0;u=j+4|0;v=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=c[p>>2];c[v>>2]=$o(c[m>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0)|0;s=(ap(c[v>>2]|0)|0)!=0;r=c[v>>2]|0;if(s){c[k>>2]=r;w=c[k>>2]|0;l=j;return w|0;}if(r>>>0>=(c[q>>2]|0)>>>0){c[k>>2]=-72;w=c[k>>2]|0;l=j;return w|0;}else{c[u>>2]=(c[u>>2]|0)+(c[v>>2]|0);c[q>>2]=(c[q>>2]|0)-(c[v>>2]|0);c[k>>2]=cp(c[n>>2]|0,c[o>>2]|0,c[u>>2]|0,c[q>>2]|0,c[m>>2]|0,c[t>>2]|0)|0;w=c[k>>2]|0;l=j;return w|0;}return 0;}function Qp(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;i=l;l=l+32|0;j=i+20|0;k=i+16|0;m=i+12|0;n=i+8|0;o=i+4|0;p=i;q=i+24|0;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;bp(q,c[o>>2]|0);h=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;if(d[q+1>>0]|0|0){r=Jp(h,j,k,m,n,o)|0;l=i;return r|0;}else{r=vp(h,j,k,m,n,o)|0;l=i;return r|0;}return 0;}function Rp(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=l;l=l+48|0;k=j+36|0;m=j+32|0;n=j+28|0;o=j+24|0;p=j+20|0;q=j+16|0;r=j+12|0;s=j+8|0;t=j+4|0;u=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;if(!(c[o>>2]|0)){c[k>>2]=-70;v=c[k>>2]|0;l=j;return v|0;}if(!(c[q>>2]|0)){c[k>>2]=-20;v=c[k>>2]|0;l=j;return v|0;}c[u>>2]=Np(c[o>>2]|0,c[q>>2]|0)|0;i=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;p=c[q>>2]|0;q=c[r>>2]|0;r=c[s>>2]|0;s=c[t>>2]|0;if(c[u>>2]|0)w=Mp(i,m,n,o,p,q,r,s)|0;else w=Ap(i,m,n,o,p,q,r,s)|0;c[k>>2]=w;v=c[k>>2]|0;l=j;return v|0;}function Sp(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+48|0;d=b+24|0;e=b+16|0;f=b;c[e>>2]=a;c[(c[e>>2]|0)+28912>>2]=0;c[(c[e>>2]|0)+28940>>2]=0;c[(c[e>>2]|0)+28972>>2]=134217729;c[(c[e>>2]|0)+28952>>2]=0;c[(c[e>>2]|0)+28948>>2]=0;c[(c[e>>2]|0)+28960>>2]=0;c[(c[e>>2]|0)+28964>>2]=0;c[(c[e>>2]|0)+28980>>2]=0;c[(c[e>>2]|0)+28956>>2]=0;Tp(f);c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];f=Up(d)|0;c[(c[e>>2]|0)+28944>>2]=f;l=b;return;}function Tp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+32|0;d=b+28|0;e=b+24|0;f=b+20|0;g=b+16|0;h=b;c[d>>2]=0;c[e>>2]=0;c[f>>2]=0;c[g>>2]=0;c[h>>2]=c[d>>2];c[h+4>>2]=c[e>>2];c[h+8>>2]=c[f>>2];c[h+12>>2]=c[g>>2];c[a>>2]=c[h>>2];c[a+4>>2]=c[h+4>>2];c[a+8>>2]=c[h+8>>2];c[a+12>>2]=c[h+12>>2];l=b;return;}function Up(a){a=a|0;return(c[a+8>>2]&256|0)!=0|0;}function Vp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+32|0;d=b+8|0;e=b+4|0;f=b;if(((c[a>>2]|0)!=0^1)&1^((c[a+4>>2]|0)!=0^1)&1|0){c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;};c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[f>>2]=Rh(160112,d)|0;if(c[f>>2]|0){d=(c[f>>2]|0)+28920|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[(c[f>>2]|0)+28996>>2]=0;c[(c[f>>2]|0)+29e3>>2]=0;Sp(c[f>>2]|0);c[e>>2]=c[f>>2];g=c[e>>2]|0;l=b;return g|0;}else{c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;}return 0;}function Wp(){var a=0,b=0,d=0;a=l;l=l+16|0;b=a;c[b>>2]=c[5412];c[b+4>>2]=c[5413];c[b+8>>2]=c[5414];d=Vp(b)|0;l=a;return d|0;}function Xp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+32|0;d=b+20|0;e=b+16|0;f=b+12|0;g=b;c[f>>2]=a;if(!(c[f>>2]|0)){c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}if(c[(c[f>>2]|0)+28940>>2]|0){c[e>>2]=-64;h=c[e>>2]|0;l=b;return h|0;}a=(c[f>>2]|0)+28920|0;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];Yp(c[(c[f>>2]|0)+28948>>2]|0)|0;c[(c[f>>2]|0)+28948>>2]=0;a=c[(c[f>>2]|0)+28960>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);c[(c[f>>2]|0)+28960>>2]=0;if(c[(c[f>>2]|0)+28996>>2]|0)Zp(c[(c[f>>2]|0)+28996>>2]|0,c[(c[f>>2]|0)+29e3>>2]|0)|0;a=c[f>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}function Yp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+32|0;d=b+20|0;e=b+16|0;f=b+12|0;g=b;c[f>>2]=a;if(!(c[f>>2]|0)){c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}else{a=(c[f>>2]|0)+28732|0;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];a=c[c[f>>2]>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);a=c[f>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}return 0;}function Zp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=a;c[g>>2]=b;switch(c[g>>2]|0){case 7:{c[e>>2]=bq(c[f>>2]|0)|0;break;}case 6:{c[e>>2]=aq(c[f>>2]|0)|0;break;}case 5:{c[e>>2]=$p(c[f>>2]|0)|0;break;}case 4:{c[e>>2]=_p(c[f>>2]|0)|0;break;}default:c[e>>2]=-12;}l=d;return c[e>>2]|0;}function _p(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=fq(c[d>>2]|0)|0;l=b;return a|0;}function $p(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;if(!(c[e>>2]|0)){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{eq(c[c[e>>2]>>2]|0)|0;Dy(c[(c[e>>2]|0)+48>>2]|0);Dy(c[(c[e>>2]|0)+60>>2]|0);Dy(c[e>>2]|0);c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}return 0;}function aq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;if(!(c[e>>2]|0)){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{dq(c[c[e>>2]>>2]|0)|0;Dy(c[(c[e>>2]|0)+28>>2]|0);Dy(c[(c[e>>2]|0)+40>>2]|0);Dy(c[e>>2]|0);c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}return 0;}function bq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;if(!(c[e>>2]|0)){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}cq(c[c[e>>2]>>2]|0)|0;if(c[(c[e>>2]|0)+36>>2]|0)xc[c[(c[e>>2]|0)+92+4>>2]&31](c[(c[e>>2]|0)+92+8>>2]|0,c[(c[e>>2]|0)+36>>2]|0);if(c[(c[e>>2]|0)+48>>2]|0)xc[c[(c[e>>2]|0)+92+4>>2]&31](c[(c[e>>2]|0)+92+8>>2]|0,c[(c[e>>2]|0)+48>>2]|0);xc[c[(c[e>>2]|0)+92+4>>2]&31](c[(c[e>>2]|0)+92+8>>2]|0,c[e>>2]|0);c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}function cq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;if(!(c[e>>2]|0)){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{xc[c[(c[e>>2]|0)+21692+4>>2]&31](c[(c[e>>2]|0)+21692+8>>2]|0,c[e>>2]|0);c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}return 0;}function dq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;Dy(c[d>>2]|0);l=b;return 0;}function eq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;Dy(c[d>>2]|0);l=b;return 0;}function fq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;if(!(c[e>>2]|0)){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{gq(c[c[e>>2]>>2]|0)|0;Dy(c[(c[e>>2]|0)+40>>2]|0);Dy(c[(c[e>>2]|0)+52>>2]|0);Dy(c[e>>2]|0);c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}return 0;}function gq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;Dy(c[d>>2]|0);l=b;return 0;}function hq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(jq()|0)!=0;f=kq(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=lq(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function iq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[f>>2]=a;c[g>>2]=b;a:do{if((c[g>>2]|0)>>>0<4)c[e>>2]=0;else{c[h>>2]=hq(c[f>>2]|0)|0;switch(c[h>>2]|0){case-47205084:{c[e>>2]=4;break a;break;}case-47205083:{c[e>>2]=5;break a;break;}case-47205082:{c[e>>2]=6;break a;break;}case-47205081:{c[e>>2]=7;break a;break;}default:{c[e>>2]=0;break a;}}}}while(0);l=d;return c[e>>2]|0;}function jq(){return d[11936]|0|0;}function kq(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function lq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function mq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=nq(c[e>>2]|0,c[f>>2]|0,0)|0;l=d;return b|0;}function nq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=l;l=l+48|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+32|0;o=g+8|0;p=g+4|0;q=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=oq(c[k>>2]|0)|0;if((c[j>>2]|0)>>>0<(c[m>>2]|0)>>>0){c[h>>2]=-72;r=c[h>>2]|0;l=g;return r|0;}a[n>>0]=a[(c[i>>2]|0)+((c[m>>2]|0)-1)>>0]|0;c[o>>2]=(d[n>>0]|0)&3;c[p>>2]=(d[n>>0]|0)>>5&1;c[q>>2]=(d[n>>0]|0)>>6;if(c[p>>2]|0)s=(c[q>>2]|0)!=0^1;else s=0;c[h>>2]=(c[m>>2]|0)+(((c[p>>2]|0)!=0^1)&1)+(c[3456+(c[o>>2]<<2)>>2]|0)+(c[3472+(c[q>>2]<<2)>>2]|0)+(s&1);r=c[h>>2]|0;l=g;return r|0;}function oq(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=(c[d>>2]|0)==1?1:5;l=b;return c[e>>2]|0;}function pq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=qq(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,0)|0;l=e;return d|0;}function qq(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0;h=l;l=l+80|0;i=h+72|0;j=h+68|0;k=h+64|0;m=h+60|0;n=h+56|0;o=h+52|0;p=h+48|0;q=h+44|0;r=h+77|0;s=h+40|0;t=h+36|0;u=h+32|0;v=h+28|0;w=h+24|0;x=h+8|0;z=h+20|0;A=h;B=h+76|0;C=h+16|0;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[k>>2];c[p>>2]=oq(c[n>>2]|0)|0;if((c[m>>2]|0)>>>0<(c[p>>2]|0)>>>0){c[i>>2]=c[p>>2];D=c[i>>2]|0;l=h;return D|0;}if((c[n>>2]|0)!=1?(hq(c[k>>2]|0)|0)!=-47205080:0){if(((hq(c[k>>2]|0)|0)&-16|0)!=407710288){c[i>>2]=-10;D=c[i>>2]|0;l=h;return D|0;}if((c[m>>2]|0)>>>0<8){c[i>>2]=8;D=c[i>>2]|0;l=h;return D|0;}else{g=c[j>>2]|0;f=g+40|0;do{c[g>>2]=0;g=g+4|0;}while((g|0)<(f|0));g=hq((c[k>>2]|0)+4|0)|0;f=c[j>>2]|0;c[f>>2]=g;c[f+4>>2]=0;c[(c[j>>2]|0)+20>>2]=1;c[i>>2]=0;D=c[i>>2]|0;l=h;return D|0;}}c[q>>2]=nq(c[k>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;n=c[q>>2]|0;if((c[m>>2]|0)>>>0<(c[q>>2]|0)>>>0){c[i>>2]=n;D=c[i>>2]|0;l=h;return D|0;}c[(c[j>>2]|0)+24>>2]=n;a[r>>0]=a[(c[o>>2]|0)+((c[p>>2]|0)-1)>>0]|0;c[s>>2]=c[p>>2];c[t>>2]=(d[r>>0]|0)&3;c[u>>2]=(d[r>>0]|0)>>2&1;c[v>>2]=(d[r>>0]|0)>>5&1;c[w>>2]=(d[r>>0]|0)>>6;p=x;c[p>>2]=0;c[p+4>>2]=0;c[z>>2]=0;p=A;c[p>>2]=-1;c[p+4>>2]=-1;if((d[r>>0]|0)&8|0){c[i>>2]=-14;D=c[i>>2]|0;l=h;return D|0;}do{if(!(c[v>>2]|0)){r=c[o>>2]|0;p=c[s>>2]|0;c[s>>2]=p+1;a[B>>0]=a[r+p>>0]|0;c[C>>2]=((d[B>>0]|0)>>3)+10;if((c[C>>2]|0)>>>0<=30){p=jE(1,0,c[C>>2]|0)|0;r=x;c[r>>2]=p;c[r+4>>2]=y;r=x;p=iE(c[r>>2]|0,c[r+4>>2]|0,3)|0;r=(d[B>>0]|0)&7;n=cE(p|0,y|0,r|0,((r|0)<0)<<31>>31|0)|0;r=x;p=dE(c[r>>2]|0,c[r+4>>2]|0,n|0,y|0)|0;n=x;c[n>>2]=p;c[n+4>>2]=y;break;}c[i>>2]=-16;D=c[i>>2]|0;l=h;return D|0;}}while(0);switch(c[t>>2]|0){case 3:{c[z>>2]=hq((c[o>>2]|0)+(c[s>>2]|0)|0)|0;c[s>>2]=(c[s>>2]|0)+4;break;}case 1:{c[z>>2]=d[(c[o>>2]|0)+(c[s>>2]|0)>>0];c[s>>2]=(c[s>>2]|0)+1;break;}case 2:{c[z>>2]=(rq((c[o>>2]|0)+(c[s>>2]|0)|0)|0)&65535;c[s>>2]=(c[s>>2]|0)+2;break;}default:{}}switch(c[w>>2]|0){case 3:{w=A;c[w>>2]=sq((c[o>>2]|0)+(c[s>>2]|0)|0)|0;c[w+4>>2]=y;break;}case 1:{w=((rq((c[o>>2]|0)+(c[s>>2]|0)|0)|0)&65535)+256|0;t=A;c[t>>2]=w;c[t+4>>2]=((w|0)<0)<<31>>31;break;}case 2:{w=A;c[w>>2]=hq((c[o>>2]|0)+(c[s>>2]|0)|0)|0;c[w+4>>2]=0;break;}default:if(c[v>>2]|0){w=A;c[w>>2]=d[(c[o>>2]|0)+(c[s>>2]|0)>>0];c[w+4>>2]=0;}}if(c[v>>2]|0){v=A;w=c[v+4>>2]|0;s=x;c[s>>2]=c[v>>2];c[s+4>>2]=w;}c[(c[j>>2]|0)+20>>2]=0;w=A;A=c[w+4>>2]|0;s=c[j>>2]|0;c[s>>2]=c[w>>2];c[s+4>>2]=A;A=x;s=c[A+4>>2]|0;w=(c[j>>2]|0)+8|0;c[w>>2]=c[A>>2];c[w+4>>2]=s;s=x;w=c[s+4>>2]|0;A=w>>>0<0|(w|0)==0&(c[s>>2]|0)>>>0<131072;s=x;x=c[s+4>>2]|0;x=A?c[s>>2]|0:131072;c[(c[j>>2]|0)+16>>2]=x;c[(c[j>>2]|0)+28>>2]=c[z>>2];c[(c[j>>2]|0)+32>>2]=c[u>>2];c[i>>2]=0;D=c[i>>2]|0;l=h;return D|0;}function rq(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=a;a=(jq()|0)!=0;i=c[g>>2]|0;if(a){b[f>>1]=vq(i)|0;j=b[f>>1]|0;l=e;return j|0;}else{c[h>>2]=i;b[f>>1]=(d[c[h>>2]>>0]|0)+((d[(c[h>>2]|0)+1>>0]|0)<<8);j=b[f>>1]|0;l=e;return j|0;}return 0;}function sq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(jq()|0)!=0;f=tq(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=uq(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function tq(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function uq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function vq(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function wq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;d=l;l=l+64|0;e=d+48|0;f=d+60|0;g=d+56|0;h=d+40|0;i=d;c[f>>2]=a;c[g>>2]=b;b=(iq(c[f>>2]|0,c[g>>2]|0)|0)!=0;a=c[f>>2]|0;f=c[g>>2]|0;do{if(!b){if(pq(i,a,f)|0){g=e;c[g>>2]=-2;c[g+4>>2]=-1;break;}if((c[i+20>>2]|0)==1){g=e;c[g>>2]=0;c[g+4>>2]=0;break;}else{g=i;j=c[g+4>>2]|0;k=e;c[k>>2]=c[g>>2];c[k+4>>2]=j;break;}}else{j=xq(a,f)|0;k=h;c[k>>2]=j;c[k+4>>2]=y;k=h;j=(c[k>>2]|0)==0&(c[k+4>>2]|0)==0;k=h;g=j?-1:c[k+4>>2]|0;m=e;c[m>>2]=j?-1:c[k>>2]|0;c[m+4>>2]=g;}}while(0);h=e;y=c[h+4>>2]|0;l=d;return c[h>>2]|0;}function xq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;d=l;l=l+112|0;e=d+80|0;f=d+108|0;g=d+104|0;h=d+100|0;i=d+40|0;j=d+96|0;k=d+24|0;m=d+92|0;n=d;o=d+88|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=iq(c[f>>2]|0,c[g>>2]|0)|0;do{if((c[h>>2]|0)>>>0>=5){if((c[h>>2]|0)==5){c[j>>2]=yq(i,c[f>>2]|0,c[g>>2]|0)|0;if(c[j>>2]|0){b=e;c[b>>2]=0;c[b+4>>2]=0;break;}else{b=i;a=c[b+4>>2]|0;p=e;c[p>>2]=c[b>>2];c[p+4>>2]=a;break;}}if((c[h>>2]|0)==6){c[m>>2]=zq(k,c[f>>2]|0,c[g>>2]|0)|0;if(c[m>>2]|0){a=e;c[a>>2]=0;c[a+4>>2]=0;break;}else{a=k;p=c[a+4>>2]|0;b=e;c[b>>2]=c[a>>2];c[b+4>>2]=p;break;}}if((c[h>>2]|0)!=7){p=e;c[p>>2]=0;c[p+4>>2]=0;break;}c[o>>2]=Aq(n,c[f>>2]|0,c[g>>2]|0)|0;if(c[o>>2]|0){p=e;c[p>>2]=0;c[p+4>>2]=0;break;}else{p=n;b=c[p+4>>2]|0;a=e;c[a>>2]=c[p>>2];c[a+4>>2]=b;break;}}else{b=e;c[b>>2]=0;c[b+4>>2]=0;}}while(0);n=e;y=c[n+4>>2]|0;l=d;return c[n>>2]|0;}function yq(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;if((c[j>>2]|0)>>>0<5){c[g>>2]=5;m=c[g>>2]|0;l=f;return m|0;}c[k>>2]=Wq(c[i>>2]|0)|0;if((c[k>>2]|0)!=-47205083){c[g>>2]=-10;m=c[g>>2]|0;l=f;return m|0;}k=c[h>>2]|0;j=k+40|0;do{c[k>>2]=0;k=k+4|0;}while((k|0)<(j|0));c[(c[h>>2]|0)+8>>2]=((d[(c[i>>2]|0)+4>>0]|0)&15)+11;if((d[(c[i>>2]|0)+4>>0]|0)>>4|0){c[g>>2]=-14;m=c[g>>2]|0;l=f;return m|0;}else{c[g>>2]=0;m=c[g>>2]|0;l=f;return m|0;}return 0;}function zq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;o=g+24|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[j>>2];if((c[k>>2]|0)>>>0<5){c[h>>2]=5;p=c[h>>2]|0;l=g;return p|0;}if((Mq(c[j>>2]|0)|0)!=-47205082){c[h>>2]=-10;p=c[h>>2]|0;l=g;return p|0;}c[n>>2]=Nq(c[j>>2]|0,c[k>>2]|0)|0;if((c[k>>2]|0)>>>0<(c[n>>2]|0)>>>0){c[h>>2]=c[n>>2];p=c[h>>2]|0;l=g;return p|0;}n=c[i>>2]|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;a[o>>0]=a[(c[m>>2]|0)+4>>0]|0;c[(c[i>>2]|0)+8>>2]=((d[o>>0]|0)&15)+12;if((d[o>>0]|0)&32|0){c[h>>2]=-14;p=c[h>>2]|0;l=g;return p|0;}switch((d[o>>0]|0)>>6|0){case 0:{o=c[i>>2]|0;c[o>>2]=0;c[o+4>>2]=0;break;}case 1:{o=c[i>>2]|0;c[o>>2]=d[(c[m>>2]|0)+5>>0];c[o+4>>2]=0;break;}case 2:{o=((Oq((c[m>>2]|0)+5|0)|0)&65535)+256|0;n=c[i>>2]|0;c[n>>2]=o;c[n+4>>2]=((o|0)<0)<<31>>31;break;}case 3:{o=Pq((c[m>>2]|0)+5|0)|0;m=c[i>>2]|0;c[m>>2]=o;c[m+4>>2]=y;break;}default:{}}c[h>>2]=0;p=c[h>>2]|0;l=g;return p|0;}function Aq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0;g=l;l=l+80|0;h=g+64|0;i=g+60|0;j=g+56|0;k=g+52|0;m=g+48|0;n=g+44|0;o=g+69|0;p=g+40|0;q=g+36|0;r=g+32|0;s=g+28|0;t=g+24|0;u=g+20|0;v=g+16|0;w=g+12|0;x=g;z=g+68|0;A=g+8|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[j>>2];if((c[k>>2]|0)>>>0<5){c[h>>2]=5;B=c[h>>2]|0;l=g;return B|0;}f=(Bq(c[j>>2]|0)|0)!=-47205081;e=c[j>>2]|0;if(f){if(((Bq(e)|0)&-16|0)!=407710288){c[h>>2]=-10;B=c[h>>2]|0;l=g;return B|0;}if((c[k>>2]|0)>>>0<8){c[h>>2]=8;B=c[h>>2]|0;l=g;return B|0;}else{f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;f=Bq((c[j>>2]|0)+4|0)|0;j=c[i>>2]|0;c[j>>2]=f;c[j+4>>2]=0;c[(c[i>>2]|0)+8>>2]=0;c[h>>2]=0;B=c[h>>2]|0;l=g;return B|0;}}c[n>>2]=Cq(e,c[k>>2]|0)|0;if((c[k>>2]|0)>>>0<(c[n>>2]|0)>>>0){c[h>>2]=c[n>>2];B=c[h>>2]|0;l=g;return B|0;}a[o>>0]=a[(c[m>>2]|0)+4>>0]|0;c[p>>2]=5;c[q>>2]=(d[o>>0]|0)&3;c[r>>2]=(d[o>>0]|0)>>2&1;c[s>>2]=(d[o>>0]|0)>>5&1;c[t>>2]=(d[o>>0]|0)>>6;n=(Dq()|0)!=0;c[u>>2]=1<<(n?25:27);c[v>>2]=0;c[w>>2]=0;n=x;c[n>>2]=0;c[n+4>>2]=0;if((d[o>>0]|0)&8|0){c[h>>2]=-14;B=c[h>>2]|0;l=g;return B|0;}do{if(!(c[s>>2]|0)){o=c[m>>2]|0;n=c[p>>2]|0;c[p>>2]=n+1;a[z>>0]=a[o+n>>0]|0;c[A>>2]=((d[z>>0]|0)>>3)+10;n=c[A>>2]|0;o=(Dq()|0)!=0;if(n>>>0<=(o?25:27)>>>0){c[v>>2]=1<<c[A>>2];o=N((c[v>>2]|0)>>>3,(d[z>>0]|0)&7)|0;c[v>>2]=(c[v>>2]|0)+o;break;}c[h>>2]=-14;B=c[h>>2]|0;l=g;return B|0;}}while(0);switch(c[q>>2]|0){case 3:{c[w>>2]=Bq((c[m>>2]|0)+(c[p>>2]|0)|0)|0;c[p>>2]=(c[p>>2]|0)+4;break;}case 1:{c[w>>2]=d[(c[m>>2]|0)+(c[p>>2]|0)>>0];c[p>>2]=(c[p>>2]|0)+1;break;}case 2:{c[w>>2]=(Eq((c[m>>2]|0)+(c[p>>2]|0)|0)|0)&65535;c[p>>2]=(c[p>>2]|0)+2;break;}default:{}}switch(c[t>>2]|0){case 3:{t=x;c[t>>2]=Fq((c[m>>2]|0)+(c[p>>2]|0)|0)|0;c[t+4>>2]=y;break;}case 1:{t=((Eq((c[m>>2]|0)+(c[p>>2]|0)|0)|0)&65535)+256|0;q=x;c[q>>2]=t;c[q+4>>2]=((t|0)<0)<<31>>31;break;}case 2:{t=x;c[t>>2]=Bq((c[m>>2]|0)+(c[p>>2]|0)|0)|0;c[t+4>>2]=0;break;}default:if(c[s>>2]|0){s=x;c[s>>2]=d[(c[m>>2]|0)+(c[p>>2]|0)>>0];c[s+4>>2]=0;}}if(!(c[v>>2]|0))c[v>>2]=c[x>>2];if((c[v>>2]|0)>>>0>(c[u>>2]|0)>>>0){c[h>>2]=-14;B=c[h>>2]|0;l=g;return B|0;}else{u=x;x=c[u+4>>2]|0;s=c[i>>2]|0;c[s>>2]=c[u>>2];c[s+4>>2]=x;c[(c[i>>2]|0)+8>>2]=c[v>>2];c[(c[i>>2]|0)+12>>2]=c[w>>2];c[(c[i>>2]|0)+16>>2]=c[r>>2];c[h>>2]=0;B=c[h>>2]|0;l=g;return B|0;}return 0;}function Bq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Gq()|0)!=0;f=Kq(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=Lq(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Cq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f+24|0;k=f+8|0;m=f+4|0;n=f;c[h>>2]=b;c[i>>2]=e;if((c[i>>2]|0)>>>0<5){c[g>>2]=-72;o=c[g>>2]|0;l=f;return o|0;}a[j>>0]=a[(c[h>>2]|0)+4>>0]|0;c[k>>2]=(d[j>>0]|0)&3;c[m>>2]=(d[j>>0]|0)>>5&1;c[n>>2]=(d[j>>0]|0)>>6;if(c[m>>2]|0)p=(c[3472+(c[n>>2]<<2)>>2]|0)!=0^1;else p=0;c[g>>2]=5+(((c[m>>2]|0)!=0^1)&1)+(c[3456+(c[k>>2]<<2)>>2]|0)+(c[3472+(c[n>>2]<<2)>>2]|0)+(p&1);o=c[g>>2]|0;l=f;return o|0;}function Dq(){return 1;}function Eq(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=a;a=(Gq()|0)!=0;i=c[g>>2]|0;if(a){b[f>>1]=Jq(i)|0;j=b[f>>1]|0;l=e;return j|0;}else{c[h>>2]=i;b[f>>1]=(d[c[h>>2]>>0]|0)+((d[(c[h>>2]|0)+1>>0]|0)<<8);j=b[f>>1]|0;l=e;return j|0;}return 0;}function Fq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(Gq()|0)!=0;f=Hq(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=Iq(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function Gq(){return d[11936]|0|0;}function Hq(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;a[f+4>>0]=a[b+4>>0]|0;a[f+5>>0]=a[b+5>>0]|0;a[f+6>>0]=a[b+6>>0]|0;a[f+7>>0]=a[b+7>>0]|0;b=f;y=c[b+4>>2]|0;l=d;return c[b>>2]|0;}function Iq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Jq(d){d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=c[f>>2]|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;l=e;return b[g>>1]|0;}function Kq(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;l=d;return c[f>>2]|0;}function Lq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Mq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Qq()|0)!=0;f=Uq(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=Vq(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Nq(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;if((c[h>>2]|0)>>>0<5){c[f>>2]=-72;j=c[f>>2]|0;l=e;return j|0;}else{c[i>>2]=(d[(c[g>>2]|0)+4>>0]|0)>>6;c[f>>2]=5+(c[3488+(c[i>>2]<<2)>>2]|0);j=c[f>>2]|0;l=e;return j|0;}return 0;}function Oq(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=a;a=(Qq()|0)!=0;i=c[g>>2]|0;if(a){b[f>>1]=Tq(i)|0;j=b[f>>1]|0;l=e;return j|0;}else{c[h>>2]=i;b[f>>1]=(d[c[h>>2]>>0]|0)+((d[(c[h>>2]|0)+1>>0]|0)<<8);j=b[f>>1]|0;l=e;return j|0;}return 0;}function Pq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(Qq()|0)!=0;f=Rq(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=Sq(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function Qq(){return d[11936]|0|0;}function Rq(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;a[f+4>>0]=a[b+4>>0]|0;a[f+5>>0]=a[b+5>>0]|0;a[f+6>>0]=a[b+6>>0]|0;a[f+7>>0]=a[b+7>>0]|0;b=f;y=c[b+4>>2]|0;l=d;return c[b>>2]|0;}function Sq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Tq(d){d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=c[f>>2]|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;l=e;return b[g>>1]|0;}function Uq(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;l=d;return c[f>>2]|0;}function Vq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Wq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Xq()|0)!=0;f=Yq(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=Zq(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Xq(){return d[11936]|0|0;}function Yq(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Zq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function _q(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;d=l;l=l+96|0;e=d+80|0;f=d+76|0;g=d+72|0;h=d+68|0;i=d+64|0;j=d+60|0;k=d;m=d+56|0;n=d+44|0;o=d+40|0;c[f>>2]=a;c[g>>2]=b;if(iq(c[f>>2]|0,c[g>>2]|0)|0){c[e>>2]=ar(c[f>>2]|0,c[g>>2]|0)|0;p=c[e>>2]|0;l=d;return p|0;}if((c[g>>2]|0)>>>0>=8?((hq(c[f>>2]|0)|0)&-16|0)==407710288:0){c[e>>2]=8+(hq((c[f>>2]|0)+4|0)|0);p=c[e>>2]|0;l=d;return p|0;}c[h>>2]=c[f>>2];c[i>>2]=c[h>>2];c[j>>2]=c[g>>2];c[m>>2]=pq(k,c[f>>2]|0,c[g>>2]|0)|0;g=($q(c[m>>2]|0)|0)!=0;f=c[m>>2]|0;if(g){c[e>>2]=f;p=c[e>>2]|0;l=d;return p|0;}if(f>>>0>0){c[e>>2]=-72;p=c[e>>2]|0;l=d;return p|0;}c[h>>2]=(c[h>>2]|0)+(c[k+24>>2]|0);c[j>>2]=(c[j>>2]|0)-(c[k+24>>2]|0);while(1){c[o>>2]=br(c[h>>2]|0,c[j>>2]|0,n)|0;f=($q(c[o>>2]|0)|0)!=0;q=c[o>>2]|0;if(f){r=12;break;}if((3+q|0)>>>0>(c[j>>2]|0)>>>0){r=14;break;}c[h>>2]=(c[h>>2]|0)+(3+(c[o>>2]|0));c[j>>2]=(c[j>>2]|0)-(3+(c[o>>2]|0));if(c[n+4>>2]|0){r=17;break;}}if((r|0)==12){c[e>>2]=q;p=c[e>>2]|0;l=d;return p|0;}else if((r|0)==14){c[e>>2]=-72;p=c[e>>2]|0;l=d;return p|0;}else if((r|0)==17){do{if(c[k+32>>2]|0){if((c[j>>2]|0)>>>0>=4){c[h>>2]=(c[h>>2]|0)+4;c[j>>2]=(c[j>>2]|0)-4;break;}c[e>>2]=-72;p=c[e>>2]|0;l=d;return p|0;}}while(0);c[e>>2]=(c[h>>2]|0)-(c[i>>2]|0);p=c[e>>2]|0;l=d;return p|0;}return 0;}function $q(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function ar(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=iq(c[f>>2]|0,c[g>>2]|0)|0;switch(c[h>>2]|0){case 4:{c[e>>2]=dr(c[f>>2]|0,c[g>>2]|0)|0;break;}case 5:{c[e>>2]=er(c[f>>2]|0,c[g>>2]|0)|0;break;}case 6:{c[e>>2]=fr(c[f>>2]|0,c[g>>2]|0)|0;break;}case 7:{c[e>>2]=gr(c[f>>2]|0,c[g>>2]|0)|0;break;}default:c[e>>2]=-10;}l=d;return c[e>>2]|0;}function br(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[h>>2]|0)>>>0<3){c[f>>2]=-72;m=c[f>>2]|0;l=e;return m|0;}c[j>>2]=cr(c[g>>2]|0)|0;c[k>>2]=(c[j>>2]|0)>>>3;c[(c[i>>2]|0)+4>>2]=c[j>>2]&1;c[c[i>>2]>>2]=(c[j>>2]|0)>>>1&3;c[(c[i>>2]|0)+8>>2]=c[k>>2];if((c[c[i>>2]>>2]|0)==1){c[f>>2]=1;m=c[f>>2]|0;l=e;return m|0;}if((c[c[i>>2]>>2]|0)==3){c[f>>2]=-20;m=c[f>>2]|0;l=e;return m|0;}else{c[f>>2]=c[k>>2];m=c[f>>2]|0;l=e;return m|0;}return 0;}function cr(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=(rq(c[e>>2]|0)|0)&65535;l=b;return a+((d[(c[e>>2]|0)+2>>0]|0)<<16)|0;}function dr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=or(c[e>>2]|0,c[f>>2]|0)|0;l=d;return b|0;}function er(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;d=l;l=l+48|0;e=d+32|0;f=d+28|0;g=d+24|0;h=d+20|0;i=d+16|0;j=d+8|0;k=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=c[f>>2];c[i>>2]=c[g>>2];if((c[g>>2]|0)>>>0<5){c[e>>2]=-72;m=c[e>>2]|0;l=d;return m|0;}if((Wq(c[f>>2]|0)|0)!=-47205083){c[e>>2]=-10;m=c[e>>2]|0;l=d;return m|0;}c[h>>2]=(c[h>>2]|0)+5;c[i>>2]=(c[i>>2]|0)-5;while(1){c[k>>2]=lr(c[h>>2]|0,c[i>>2]|0,j)|0;if(mr(c[k>>2]|0)|0){n=7;break;}c[h>>2]=(c[h>>2]|0)+3;c[i>>2]=(c[i>>2]|0)-3;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){n=9;break;}if(!(c[k>>2]|0)){n=12;break;}c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);}if((n|0)==7){c[e>>2]=c[k>>2];m=c[e>>2]|0;l=d;return m|0;}else if((n|0)==9){c[e>>2]=-72;m=c[e>>2]|0;l=d;return m|0;}else if((n|0)==12){c[e>>2]=(c[h>>2]|0)-(c[f>>2]|0);m=c[e>>2]|0;l=d;return m|0;}return 0;}function fr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;d=l;l=l+48|0;e=d+32|0;f=d+28|0;g=d+24|0;h=d+20|0;i=d+16|0;j=d+8|0;k=d+4|0;m=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=c[f>>2];c[i>>2]=c[g>>2];c[j>>2]=0;c[j+4>>2]=0;c[k>>2]=Nq(c[f>>2]|0,5)|0;if(jr(c[k>>2]|0)|0){c[e>>2]=c[k>>2];n=c[e>>2]|0;l=d;return n|0;}if((Mq(c[f>>2]|0)|0)!=-47205082){c[e>>2]=-10;n=c[e>>2]|0;l=d;return n|0;}if((c[g>>2]|0)>>>0<((c[k>>2]|0)+3|0)>>>0){c[e>>2]=-72;n=c[e>>2]|0;l=d;return n|0;}c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);while(1){c[m>>2]=kr(c[h>>2]|0,c[i>>2]|0,j)|0;if(jr(c[m>>2]|0)|0){o=9;break;}c[h>>2]=(c[h>>2]|0)+3;c[i>>2]=(c[i>>2]|0)-3;if((c[m>>2]|0)>>>0>(c[i>>2]|0)>>>0){o=11;break;}if(!(c[m>>2]|0)){o=14;break;}c[h>>2]=(c[h>>2]|0)+(c[m>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[m>>2]|0);}if((o|0)==9){c[e>>2]=c[m>>2];n=c[e>>2]|0;l=d;return n|0;}else if((o|0)==11){c[e>>2]=-72;n=c[e>>2]|0;l=d;return n|0;}else if((o|0)==14){c[e>>2]=(c[h>>2]|0)-(c[f>>2]|0);n=c[e>>2]|0;l=d;return n|0;}return 0;}function gr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;d=l;l=l+48|0;e=d+36|0;f=d+32|0;g=d+28|0;h=d+24|0;i=d+20|0;j=d+16|0;k=d+8|0;m=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=c[f>>2];c[i>>2]=c[g>>2];if((c[g>>2]|0)>>>0<8){c[e>>2]=-72;n=c[e>>2]|0;l=d;return n|0;}c[j>>2]=Cq(c[f>>2]|0,5)|0;if(hr(c[j>>2]|0)|0){c[e>>2]=c[j>>2];n=c[e>>2]|0;l=d;return n|0;}if((Bq(c[f>>2]|0)|0)!=-47205081){c[e>>2]=-10;n=c[e>>2]|0;l=d;return n|0;}if((c[g>>2]|0)>>>0<((c[j>>2]|0)+3|0)>>>0){c[e>>2]=-72;n=c[e>>2]|0;l=d;return n|0;}c[h>>2]=(c[h>>2]|0)+(c[j>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[j>>2]|0);while(1){c[m>>2]=ir(c[h>>2]|0,c[i>>2]|0,k)|0;if(hr(c[m>>2]|0)|0){o=11;break;}c[h>>2]=(c[h>>2]|0)+3;c[i>>2]=(c[i>>2]|0)-3;if((c[k>>2]|0)==3){o=16;break;}if((c[m>>2]|0)>>>0>(c[i>>2]|0)>>>0){o=14;break;}c[h>>2]=(c[h>>2]|0)+(c[m>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[m>>2]|0);}if((o|0)==11){c[e>>2]=c[m>>2];n=c[e>>2]|0;l=d;return n|0;}else if((o|0)==14){c[e>>2]=-72;n=c[e>>2]|0;l=d;return n|0;}else if((o|0)==16){c[e>>2]=(c[h>>2]|0)-(c[f>>2]|0);n=c[e>>2]|0;l=d;return n|0;}return 0;}function hr(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function ir(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];if((c[i>>2]|0)>>>0<3){c[g>>2]=-72;n=c[g>>2]|0;l=f;return n|0;}c[c[j>>2]>>2]=(d[c[k>>2]>>0]|0)>>6;c[m>>2]=(d[(c[k>>2]|0)+2>>0]|0)+((d[(c[k>>2]|0)+1>>0]|0)<<8)+(((d[c[k>>2]>>0]|0)&7)<<16);c[(c[j>>2]|0)+4>>2]=(c[c[j>>2]>>2]|0)==2?c[m>>2]|0:0;if((c[c[j>>2]>>2]|0)==3){c[g>>2]=0;n=c[g>>2]|0;l=f;return n|0;}if((c[c[j>>2]>>2]|0)==2){c[g>>2]=1;n=c[g>>2]|0;l=f;return n|0;}else{c[g>>2]=c[m>>2];n=c[g>>2]|0;l=f;return n|0;}return 0;}function jr(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function kr(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];if((c[i>>2]|0)>>>0<3){c[g>>2]=-72;n=c[g>>2]|0;l=f;return n|0;}c[c[j>>2]>>2]=(d[c[k>>2]>>0]|0)>>6;c[m>>2]=(d[(c[k>>2]|0)+2>>0]|0)+((d[(c[k>>2]|0)+1>>0]|0)<<8)+(((d[c[k>>2]>>0]|0)&7)<<16);c[(c[j>>2]|0)+4>>2]=(c[c[j>>2]>>2]|0)==2?c[m>>2]|0:0;if((c[c[j>>2]>>2]|0)==3){c[g>>2]=0;n=c[g>>2]|0;l=f;return n|0;}if((c[c[j>>2]>>2]|0)==2){c[g>>2]=1;n=c[g>>2]|0;l=f;return n|0;}else{c[g>>2]=c[m>>2];n=c[g>>2]|0;l=f;return n|0;}return 0;}function lr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g+24|0;o=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[i>>2];if((c[j>>2]|0)>>>0<3){c[h>>2]=-72;p=c[h>>2]|0;l=g;return p|0;}a[n>>0]=a[c[m>>2]>>0]|0;c[o>>2]=(d[(c[m>>2]|0)+2>>0]|0)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(((d[c[m>>2]>>0]|0)&7)<<16);c[c[k>>2]>>2]=(d[n>>0]|0)>>6;c[(c[k>>2]|0)+4>>2]=(c[c[k>>2]>>2]|0)==2?c[o>>2]|0:0;if((c[c[k>>2]>>2]|0)==3){c[h>>2]=0;p=c[h>>2]|0;l=g;return p|0;}if((c[c[k>>2]>>2]|0)==2){c[h>>2]=1;p=c[h>>2]|0;l=g;return p|0;}else{c[h>>2]=c[o>>2];p=c[h>>2]|0;l=g;return p|0;}return 0;}function mr(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=nr(c[d>>2]|0)|0;l=b;return a|0;}function nr(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function or(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;d=l;l=l+48|0;e=d+32|0;f=d+28|0;g=d+24|0;h=d+20|0;i=d+16|0;j=d+8|0;k=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=c[f>>2];c[i>>2]=c[g>>2];if((c[g>>2]|0)>>>0<5){c[e>>2]=-72;m=c[e>>2]|0;l=d;return m|0;}if((pr(c[f>>2]|0)|0)!=-47205084){c[e>>2]=-10;m=c[e>>2]|0;l=d;return m|0;}c[h>>2]=(c[h>>2]|0)+5;c[i>>2]=(c[i>>2]|0)-5;while(1){c[k>>2]=qr(c[h>>2]|0,c[i>>2]|0,j)|0;if(rr(c[k>>2]|0)|0){n=7;break;}c[h>>2]=(c[h>>2]|0)+3;c[i>>2]=(c[i>>2]|0)-3;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){n=9;break;}if(!(c[k>>2]|0)){n=12;break;}c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);}if((n|0)==7){c[e>>2]=c[k>>2];m=c[e>>2]|0;l=d;return m|0;}else if((n|0)==9){c[e>>2]=-72;m=c[e>>2]|0;l=d;return m|0;}else if((n|0)==12){c[e>>2]=(c[h>>2]|0)-(c[f>>2]|0);m=c[e>>2]|0;l=d;return m|0;}return 0;}function pr(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;e=b+8|0;f=b+4|0;g=b;c[f>>2]=a;a=(tr()|0)!=0;h=c[f>>2]|0;if(a){c[e>>2]=ur(h)|0;i=c[e>>2]|0;l=b;return i|0;}else{c[g>>2]=h;c[e>>2]=(d[c[g>>2]>>0]|0)+((d[(c[g>>2]|0)+1>>0]|0)<<8)+((d[(c[g>>2]|0)+2>>0]|0)<<16)+((d[(c[g>>2]|0)+3>>0]|0)<<24);i=c[e>>2]|0;l=b;return i|0;}return 0;}function qr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g+24|0;o=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[i>>2];if((c[j>>2]|0)>>>0<3){c[h>>2]=-72;p=c[h>>2]|0;l=g;return p|0;}a[n>>0]=a[c[m>>2]>>0]|0;c[o>>2]=(d[(c[m>>2]|0)+2>>0]|0)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(((d[c[m>>2]>>0]|0)&7)<<16);c[c[k>>2]>>2]=(d[n>>0]|0)>>6;c[(c[k>>2]|0)+4>>2]=(c[c[k>>2]>>2]|0)==2?c[o>>2]|0:0;if((c[c[k>>2]>>2]|0)==3){c[h>>2]=0;p=c[h>>2]|0;l=g;return p|0;}if((c[c[k>>2]>>2]|0)==2){c[h>>2]=1;p=c[h>>2]|0;l=g;return p|0;}else{c[h>>2]=c[o>>2];p=c[h>>2]|0;l=g;return p|0;}return 0;}function rr(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=sr(c[d>>2]|0)|0;l=b;return a|0;}function sr(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function tr(){return d[11936]|0|0;}function ur(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;l=d;return c[f>>2]|0;}function vr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;g=l;l=l+80|0;h=g+68|0;i=g+64|0;j=g+60|0;k=g+56|0;m=g+52|0;n=g+48|0;o=g+44|0;p=g+40|0;q=g+36|0;r=g+32|0;s=g+28|0;t=g+24|0;u=g+20|0;v=g+16|0;w=g+12|0;x=g+8|0;y=g+4|0;z=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;if((c[k>>2]|0)>>>0<3){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}c[m>>2]=c[j>>2];c[n>>2]=(d[c[m>>2]>>0]|0)&3;switch(c[n>>2]|0){case 3:{if(!(c[(c[i>>2]|0)+28808>>2]|0)){c[h>>2]=-30;A=c[h>>2]|0;l=g;return A|0;}break;}case 2:break;case 0:{c[w>>2]=(d[c[m>>2]>>0]|0)>>2&3;switch(c[w>>2]|0){case 3:{c[v>>2]=3;c[u>>2]=(cr(c[m>>2]|0)|0)>>>4;break;}case 1:{c[v>>2]=2;c[u>>2]=((rq(c[m>>2]|0)|0)&65535)>>4;break;}default:{c[v>>2]=1;c[u>>2]=(d[c[m>>2]>>0]|0)>>3;}}if(((c[v>>2]|0)+(c[u>>2]|0)+8|0)>>>0<=(c[k>>2]|0)>>>0){c[(c[i>>2]|0)+28916>>2]=(c[m>>2]|0)+(c[v>>2]|0);c[(c[i>>2]|0)+28932>>2]=c[u>>2];c[h>>2]=(c[v>>2]|0)+(c[u>>2]|0);A=c[h>>2]|0;l=g;return A|0;}if(((c[u>>2]|0)+(c[v>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}else{mE((c[i>>2]|0)+29012|0,(c[m>>2]|0)+(c[v>>2]|0)|0,c[u>>2]|0)|0;c[(c[i>>2]|0)+28916>>2]=(c[i>>2]|0)+29012;c[(c[i>>2]|0)+28932>>2]=c[u>>2];w=(c[i>>2]|0)+29012+(c[(c[i>>2]|0)+28932>>2]|0)|0;a[w>>0]=0;a[w+1>>0]=0;a[w+2>>0]=0;a[w+3>>0]=0;a[w+4>>0]=0;a[w+5>>0]=0;a[w+6>>0]=0;a[w+7>>0]=0;c[h>>2]=(c[v>>2]|0)+(c[u>>2]|0);A=c[h>>2]|0;l=g;return A|0;}break;}case 1:{c[x>>2]=(d[c[m>>2]>>0]|0)>>2&3;switch(c[x>>2]|0){case 3:{c[z>>2]=3;c[y>>2]=(cr(c[m>>2]|0)|0)>>>4;if((c[k>>2]|0)>>>0<4){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}break;}case 1:{c[z>>2]=2;c[y>>2]=((rq(c[m>>2]|0)|0)&65535)>>4;break;}default:{c[z>>2]=1;c[y>>2]=(d[c[m>>2]>>0]|0)>>3;}}if((c[y>>2]|0)>>>0>131072){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}else{oE((c[i>>2]|0)+29012|0,(d[(c[m>>2]|0)+(c[z>>2]|0)>>0]|0)&255|0,(c[y>>2]|0)+8|0)|0;c[(c[i>>2]|0)+28916>>2]=(c[i>>2]|0)+29012;c[(c[i>>2]|0)+28932>>2]=c[y>>2];c[h>>2]=(c[z>>2]|0)+1;A=c[h>>2]|0;l=g;return A|0;}break;}default:{c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}}if((c[k>>2]|0)>>>0<5){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}c[r>>2]=0;c[s>>2]=(d[c[m>>2]>>0]|0)>>2&3;c[t>>2]=hq(c[m>>2]|0)|0;switch(c[s>>2]|0){case 3:{c[o>>2]=5;c[p>>2]=(c[t>>2]|0)>>>4&262143;c[q>>2]=((c[t>>2]|0)>>>22)+((d[(c[m>>2]|0)+4>>0]|0)<<10);break;}case 2:{c[o>>2]=4;c[p>>2]=(c[t>>2]|0)>>>4&16383;c[q>>2]=(c[t>>2]|0)>>>18;break;}default:{c[r>>2]=((c[s>>2]|0)!=0^1)&1;c[o>>2]=3;c[p>>2]=(c[t>>2]|0)>>>4&1023;c[q>>2]=(c[t>>2]|0)>>>14&1023;}}if((c[p>>2]|0)>>>0>131072){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}if(((c[q>>2]|0)+(c[o>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}k=(c[r>>2]|0)!=0;r=c[i>>2]|0;do{if((c[n>>2]|0)==3){t=r+29012|0;s=c[p>>2]|0;z=(c[m>>2]|0)+(c[o>>2]|0)|0;y=c[q>>2]|0;x=c[(c[i>>2]|0)+12>>2]|0;u=c[(c[i>>2]|0)+28944>>2]|0;if(k){B=Op(t,s,z,y,x,u)|0;break;}else{B=Qp(t,s,z,y,x,u)|0;break;}}else{u=r+16+10264|0;x=(c[i>>2]|0)+29012|0;y=c[p>>2]|0;z=(c[m>>2]|0)+(c[o>>2]|0)|0;s=c[q>>2]|0;t=(c[i>>2]|0)+16+26652|0;v=c[(c[i>>2]|0)+28944>>2]|0;if(k){B=Pp(u,x,y,z,s,t,2048,v)|0;break;}else{B=Rp(u,x,y,z,s,t,2048,v)|0;break;}}}while(0);if($q(B)|0){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}c[(c[i>>2]|0)+28916>>2]=(c[i>>2]|0)+29012;c[(c[i>>2]|0)+28932>>2]=c[p>>2];c[(c[i>>2]|0)+28808>>2]=1;if((c[n>>2]|0)==2)c[(c[i>>2]|0)+12>>2]=(c[i>>2]|0)+16+10264;n=(c[i>>2]|0)+29012+(c[(c[i>>2]|0)+28932>>2]|0)|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;a[n+4>>0]=0;a[n+5>>0]=0;a[n+6>>0]=0;a[n+7>>0]=0;c[h>>2]=(c[q>>2]|0)+(c[o>>2]|0);A=c[h>>2]|0;l=g;return A|0;}function wr(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;g=l;l=l+64|0;h=g+56|0;i=g+52|0;j=g+48|0;k=g+44|0;m=g+40|0;n=g+36|0;o=g+32|0;p=g+28|0;q=g+24|0;r=g+20|0;s=g+16|0;t=g+12|0;u=g+8|0;v=g+4|0;w=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[k>>2];c[o>>2]=(c[n>>2]|0)+(c[m>>2]|0);c[p>>2]=c[n>>2];if((c[m>>2]|0)>>>0<1){c[h>>2]=-72;x=c[h>>2]|0;l=g;return x|0;}m=c[p>>2]|0;c[p>>2]=m+1;c[q>>2]=d[m>>0];if(!(c[q>>2]|0)){c[c[j>>2]>>2]=0;c[h>>2]=1;x=c[h>>2]|0;l=g;return x|0;}do{if((c[q>>2]|0)>127){m=c[p>>2]|0;if((c[q>>2]|0)==255){if((m+2|0)>>>0<=(c[o>>2]|0)>>>0){c[q>>2]=((rq(c[p>>2]|0)|0)&65535)+32512;c[p>>2]=(c[p>>2]|0)+2;break;}c[h>>2]=-72;x=c[h>>2]|0;l=g;return x|0;}else{if(m>>>0<(c[o>>2]|0)>>>0){m=(c[q>>2]|0)-128<<8;k=c[p>>2]|0;c[p>>2]=k+1;c[q>>2]=m+(d[k>>0]|0);break;}c[h>>2]=-72;x=c[h>>2]|0;l=g;return x|0;}}}while(0);c[c[j>>2]>>2]=c[q>>2];if(((c[p>>2]|0)+4|0)>>>0>(c[o>>2]|0)>>>0){c[h>>2]=-72;x=c[h>>2]|0;l=g;return x|0;}c[r>>2]=(d[c[p>>2]>>0]|0)>>6;c[s>>2]=(d[c[p>>2]>>0]|0)>>4&3;c[t>>2]=(d[c[p>>2]>>0]|0)>>2&3;c[p>>2]=(c[p>>2]|0)+1;c[u>>2]=xr((c[i>>2]|0)+16|0,c[i>>2]|0,c[r>>2]|0,35,9,c[p>>2]|0,(c[o>>2]|0)-(c[p>>2]|0)|0,6416,5696,3504,c[(c[i>>2]|0)+28812>>2]|0)|0;if($q(c[u>>2]|0)|0){c[h>>2]=-20;x=c[h>>2]|0;l=g;return x|0;}c[p>>2]=(c[p>>2]|0)+(c[u>>2]|0);c[v>>2]=xr((c[i>>2]|0)+16+4104|0,(c[i>>2]|0)+8|0,c[s>>2]|0,31,8,c[p>>2]|0,(c[o>>2]|0)-(c[p>>2]|0)|0,4032,4160,4288,c[(c[i>>2]|0)+28812>>2]|0)|0;if($q(c[v>>2]|0)|0){c[h>>2]=-20;x=c[h>>2]|0;l=g;return x|0;}c[p>>2]=(c[p>>2]|0)+(c[v>>2]|0);c[w>>2]=xr((c[i>>2]|0)+16+6160|0,(c[i>>2]|0)+4|0,c[t>>2]|0,52,9,c[p>>2]|0,(c[o>>2]|0)-(c[p>>2]|0)|0,5216,5840,4560,c[(c[i>>2]|0)+28812>>2]|0)|0;if($q(c[w>>2]|0)|0){c[h>>2]=-20;x=c[h>>2]|0;l=g;return x|0;}else{c[p>>2]=(c[p>>2]|0)+(c[w>>2]|0);c[h>>2]=(c[p>>2]|0)-(c[n>>2]|0);x=c[h>>2]|0;l=g;return x|0;}return 0;}function xr(a,b,e,f,g,h,i,j,k,m,n){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;o=l;l=l+176|0;p=o+172|0;q=o+168|0;r=o+164|0;s=o+160|0;t=o+156|0;u=o+152|0;v=o+148|0;w=o+144|0;x=o+140|0;y=o+136|0;z=o+132|0;A=o+128|0;B=o+124|0;C=o+120|0;D=o+116|0;E=o+112|0;F=o;G=o+108|0;c[q>>2]=a;c[r>>2]=b;c[s>>2]=e;c[t>>2]=f;c[u>>2]=g;c[v>>2]=h;c[w>>2]=i;c[x>>2]=j;c[y>>2]=k;c[z>>2]=m;c[A>>2]=n;a:do{switch(c[s>>2]|0){case 1:{if(!(c[w>>2]|0)){c[p>>2]=-72;break a;}if((d[c[v>>2]>>0]|0)>>>0>(c[t>>2]|0)>>>0){c[p>>2]=-20;break a;}else{c[B>>2]=d[c[v>>2]>>0];c[C>>2]=c[(c[x>>2]|0)+(c[B>>2]<<2)>>2];c[D>>2]=c[(c[y>>2]|0)+(c[B>>2]<<2)>>2];yr(c[q>>2]|0,c[C>>2]|0,c[D>>2]|0);c[c[r>>2]>>2]=c[q>>2];c[p>>2]=1;break a;}break;}case 0:{c[c[r>>2]>>2]=c[z>>2];c[p>>2]=0;break;}case 3:{if(c[A>>2]|0){c[p>>2]=0;break a;}else{c[p>>2]=-20;break a;}break;}case 2:{c[G>>2]=ah(F,t,E,c[v>>2]|0,c[w>>2]|0)|0;if($q(c[G>>2]|0)|0){c[p>>2]=-20;break a;}if((c[E>>2]|0)>>>0>(c[u>>2]|0)>>>0){c[p>>2]=-20;break a;}else{zr(c[q>>2]|0,F,c[t>>2]|0,c[x>>2]|0,c[y>>2]|0,c[E>>2]|0);c[c[r>>2]>>2]=c[q>>2];c[p>>2]=c[G>>2];break a;}break;}default:c[p>>2]=-1;}}while(0);l=o;return c[p>>2]|0;}function yr(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[h>>2]=d;c[i>>2]=e;c[j>>2]=f;c[k>>2]=c[h>>2];c[m>>2]=c[k>>2];c[n>>2]=(c[h>>2]|0)+8;c[(c[m>>2]|0)+4>>2]=0;c[c[m>>2]>>2]=0;a[(c[n>>2]|0)+3>>0]=0;b[c[n>>2]>>1]=0;a[(c[n>>2]|0)+2>>0]=c[j>>2];c[(c[n>>2]|0)+4>>2]=c[i>>2];l=g;return;}function zr(e,f,g,h,i,j){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;k=l;l=l+208|0;m=k+188|0;n=k+184|0;o=k+180|0;p=k+176|0;q=k+172|0;r=k+168|0;s=k+164|0;t=k;u=k+160|0;v=k+156|0;w=k+152|0;x=k+144|0;y=k+192|0;z=k+140|0;A=k+136|0;B=k+132|0;C=k+128|0;D=k+124|0;E=k+120|0;F=k+116|0;G=k+112|0;H=k+108|0;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=i;c[r>>2]=j;c[s>>2]=(c[m>>2]|0)+8;c[u>>2]=(c[o>>2]|0)+1;c[v>>2]=1<<c[r>>2];c[w>>2]=(c[v>>2]|0)-1;c[x+4>>2]=c[r>>2];c[x>>2]=1;b[y>>1]=1<<(c[r>>2]|0)-1;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;if((b[(c[n>>2]|0)+(c[z>>2]<<1)>>1]|0)==-1){o=c[z>>2]|0;j=c[s>>2]|0;i=c[w>>2]|0;c[w>>2]=i+-1;c[j+(i<<3)+4>>2]=o;b[t+(c[z>>2]<<1)>>1]=1;}else{if((b[(c[n>>2]|0)+(c[z>>2]<<1)>>1]|0)>=(b[y>>1]|0))c[x>>2]=0;b[t+(c[z>>2]<<1)>>1]=b[(c[n>>2]|0)+(c[z>>2]<<1)>>1]|0;}c[z>>2]=(c[z>>2]|0)+1;}z=c[m>>2]|0;c[z>>2]=c[x>>2];c[z+4>>2]=c[x+4>>2];c[A>>2]=(c[v>>2]|0)-1;c[B>>2]=((c[v>>2]|0)>>>1)+((c[v>>2]|0)>>>3)+3;c[D>>2]=0;c[C>>2]=0;while(1){if((c[C>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;c[E>>2]=0;while(1){I=c[C>>2]|0;if((c[E>>2]|0)>=(b[(c[n>>2]|0)+(c[C>>2]<<1)>>1]|0))break;c[(c[s>>2]|0)+(c[D>>2]<<3)+4>>2]=I;c[D>>2]=(c[D>>2]|0)+(c[B>>2]|0)&c[A>>2];while(1){if((c[D>>2]|0)>>>0<=(c[w>>2]|0)>>>0)break;c[D>>2]=(c[D>>2]|0)+(c[B>>2]|0)&c[A>>2];}c[E>>2]=(c[E>>2]|0)+1;}c[C>>2]=I+1;}c[F>>2]=0;while(1){if((c[F>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;c[G>>2]=c[(c[s>>2]|0)+(c[F>>2]<<3)+4>>2];I=t+(c[G>>2]<<1)|0;C=b[I>>1]|0;b[I>>1]=C+1<<16>>16;c[H>>2]=C&65535;C=c[r>>2]|0;I=C-(Ar(c[H>>2]|0)|0)&255;a[(c[s>>2]|0)+(c[F>>2]<<3)+3>>0]=I;b[(c[s>>2]|0)+(c[F>>2]<<3)>>1]=(c[H>>2]<<d[(c[s>>2]|0)+(c[F>>2]<<3)+3>>0])-(c[v>>2]|0);a[(c[s>>2]|0)+(c[F>>2]<<3)+2>>0]=c[(c[q>>2]|0)+(c[G>>2]<<2)>>2];c[(c[s>>2]|0)+(c[F>>2]<<3)+4>>2]=c[(c[p>>2]|0)+(c[G>>2]<<2)>>2];c[F>>2]=(c[F>>2]|0)+1;}l=k;return;}function Ar(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Br(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)==(c[(c[e>>2]|0)+28728>>2]|0)){l=d;return;}c[(c[e>>2]|0)+28740>>2]=c[(c[e>>2]|0)+28728>>2];c[(c[e>>2]|0)+28736>>2]=(c[f>>2]|0)+(0-((c[(c[e>>2]|0)+28728>>2]|0)-(c[(c[e>>2]|0)+28732>>2]|0)));c[(c[e>>2]|0)+28732>>2]=c[f>>2];c[(c[e>>2]|0)+28728>>2]=c[f>>2];l=d;return;}function Cr(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0;h=l;l=l+64|0;i=h+52|0;j=h+48|0;k=h+44|0;m=h+40|0;n=h+36|0;o=h+32|0;p=h+28|0;q=h+24|0;r=h+20|0;s=h+16|0;t=h+12|0;u=h+8|0;v=h+4|0;w=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=c[n>>2];if(Dr()|0){if(c[p>>2]|0){g=(c[j>>2]|0)+28752+8|0;f=c[g>>2]|0;e=c[g+4>>2]|0;g=(Dr()|0)!=0;d=jE(1,0,(g?25:57)|0)|0;g=y;x=e>>>0>g>>>0|(e|0)==(g|0)&f>>>0>d>>>0;}else x=1;}else x=0;c[r>>2]=x&1;if((c[o>>2]|0)>>>0>=131072){c[i>>2]=-72;z=c[i>>2]|0;l=h;return z|0;}c[s>>2]=vr(c[j>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;n=($q(c[s>>2]|0)|0)!=0;x=c[s>>2]|0;if(n){c[i>>2]=x;z=c[i>>2]|0;l=h;return z|0;}c[q>>2]=(c[q>>2]|0)+x;c[o>>2]=(c[o>>2]|0)-(c[s>>2]|0);c[u>>2]=wr(c[j>>2]|0,t,c[q>>2]|0,c[o>>2]|0)|0;s=($q(c[u>>2]|0)|0)!=0;x=c[u>>2]|0;if(s){c[i>>2]=x;z=c[i>>2]|0;l=h;return z|0;}c[q>>2]=(c[q>>2]|0)+x;c[o>>2]=(c[o>>2]|0)-(c[u>>2]|0);if(c[p>>2]|0){p=(c[j>>2]|0)+28752+8|0;u=c[p+4>>2]|0;if((u>>>0>0|(u|0)==0&(c[p>>2]|0)>>>0>16777216)&(c[t>>2]|0)>0)A=13;}else if((c[t>>2]|0)>0)A=13;if((A|0)==13?(c[v>>2]=Er(c[(c[j>>2]|0)+8>>2]|0)|0,A=(Fr()|0)!=0,c[w>>2]=A?7:20,(c[v>>2]|0)>>>0>=(c[w>>2]|0)>>>0):0){c[i>>2]=Gr(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[q>>2]|0,c[o>>2]|0,c[t>>2]|0,c[r>>2]|0)|0;z=c[i>>2]|0;l=h;return z|0;}c[i>>2]=Hr(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[q>>2]|0,c[o>>2]|0,c[t>>2]|0,c[r>>2]|0)|0;z=c[i>>2]|0;l=h;return z|0;}function Dr(){return 1;}function Er(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;b=l;l=l+32|0;e=b+24|0;f=b+20|0;g=b+16|0;h=b+12|0;i=b+8|0;j=b+4|0;k=b;c[e>>2]=a;c[f>>2]=c[e>>2];c[g>>2]=c[(c[f>>2]|0)+4>>2];c[h>>2]=(c[e>>2]|0)+8;c[i>>2]=1<<c[g>>2];c[k>>2]=0;c[j>>2]=0;while(1){if((c[j>>2]|0)>>>0>=(c[i>>2]|0)>>>0)break;if((d[(c[h>>2]|0)+(c[j>>2]<<3)+2>>0]|0|0)>22)c[k>>2]=(c[k>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+1;}c[k>>2]=c[k>>2]<<8-(c[g>>2]|0);l=b;return c[k>>2]|0;}function Fr(){return 0;}function Gr(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=l;l=l+32|0;j=i+28|0;k=i+24|0;m=i+20|0;n=i+16|0;o=i+12|0;p=i+8|0;q=i+4|0;r=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;h=c[k>>2]|0;g=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;p=c[q>>2]|0;q=c[r>>2]|0;if(c[(c[k>>2]|0)+28944>>2]|0){c[j>>2]=Xr(h,g,m,n,o,p,q)|0;s=c[j>>2]|0;l=i;return s|0;}else{c[j>>2]=Yr(h,g,m,n,o,p,q)|0;s=c[j>>2]|0;l=i;return s|0;}return 0;}function Hr(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=l;l=l+32|0;j=i+28|0;k=i+24|0;m=i+20|0;n=i+16|0;o=i+12|0;p=i+8|0;q=i+4|0;r=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;h=c[k>>2]|0;g=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;p=c[q>>2]|0;q=c[r>>2]|0;if(c[(c[k>>2]|0)+28944>>2]|0){c[j>>2]=Ir(h,g,m,n,o,p,q)|0;s=c[j>>2]|0;l=i;return s|0;}else{c[j>>2]=Jr(h,g,m,n,o,p,q)|0;s=c[j>>2]|0;l=i;return s|0;}return 0;}function Ir(b,f,g,h,i,j,k){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0;m=l;l=l+448|0;n=m+432|0;o=m+424|0;p=m+420|0;q=m+416|0;r=m+412|0;s=m+408|0;t=m+404|0;u=m+400|0;v=m+396|0;w=m+392|0;x=m+388|0;y=m+384|0;z=m+380|0;A=m+376|0;B=m+372|0;C=m+368|0;D=m+364|0;E=m+360|0;F=m;G=m+356|0;H=m+352|0;I=m+344|0;J=m+340|0;K=m+336|0;L=m+332|0;M=m+328|0;N=m+320|0;O=m+316|0;P=m+312|0;Q=m+308|0;R=m+304|0;S=m+296|0;T=m+292|0;U=m+288|0;V=m+284|0;W=m+280|0;X=m+264|0;Y=m+256|0;Z=m+252|0;_=m+248|0;$=m+244|0;aa=m+240|0;ba=m+236|0;ca=m+232|0;da=m+228|0;ea=m+224|0;fa=m+220|0;ga=m+216|0;ha=m+212|0;ia=m+208|0;ja=m+204|0;ka=m+200|0;la=m+196|0;ma=m+192|0;na=m+188|0;oa=m+184|0;pa=m+180|0;qa=m+176|0;ra=m+172|0;sa=m+168|0;ta=m+164|0;ua=m+160|0;va=m+156|0;wa=m+152|0;xa=m+148|0;ya=m+80|0;za=m+76|0;Aa=m+72|0;Ba=m+56|0;Ca=m+52|0;Da=m+48|0;Ea=m+44|0;Fa=m+40|0;Ga=m+36|0;Ha=m+32|0;Ia=m+28|0;Ja=m+24|0;Ka=m+20|0;La=m+16|0;c[Fa>>2]=b;c[Ga>>2]=f;c[Ha>>2]=g;c[Ia>>2]=h;c[Ja>>2]=i;c[Ka>>2]=j;c[La>>2]=k;k=c[Ga>>2]|0;Ga=c[Ha>>2]|0;Ha=c[Ia>>2]|0;Ia=c[Ja>>2]|0;Ja=c[Ka>>2]|0;Ka=c[La>>2]|0;c[ha>>2]=c[Fa>>2];c[ia>>2]=k;c[ja>>2]=Ga;c[ka>>2]=Ha;c[la>>2]=Ia;c[ma>>2]=Ja;c[na>>2]=Ka;c[oa>>2]=c[ka>>2];c[pa>>2]=(c[oa>>2]|0)+(c[la>>2]|0);c[qa>>2]=c[ia>>2];c[ra>>2]=(c[qa>>2]|0)+(c[ja>>2]|0);c[sa>>2]=c[qa>>2];c[ta>>2]=c[(c[ha>>2]|0)+28916>>2];c[ua>>2]=(c[ta>>2]|0)+(c[(c[ha>>2]|0)+28932>>2]|0);c[va>>2]=c[(c[ha>>2]|0)+28732>>2];c[wa>>2]=c[(c[ha>>2]|0)+28736>>2];c[xa>>2]=c[(c[ha>>2]|0)+28740>>2];a:do{if(c[ma>>2]|0){c[(c[ha>>2]|0)+28812>>2]=1;c[za>>2]=0;while(1){if((c[za>>2]|0)>>>0>=3)break;c[ya+44+(c[za>>2]<<2)>>2]=c[(c[ha>>2]|0)+16+28700+(c[za>>2]<<2)>>2];c[za>>2]=(c[za>>2]|0)+1;}c[Aa>>2]=Kr(ya,c[oa>>2]|0,(c[pa>>2]|0)-(c[oa>>2]|0)|0)|0;if($q(c[Aa>>2]|0)|0){c[ga>>2]=-20;Ma=c[ga>>2]|0;l=m;return Ma|0;}Lr(ya+20|0,ya,c[c[ha>>2]>>2]|0);Lr(ya+28|0,ya,c[(c[ha>>2]|0)+8>>2]|0);Lr(ya+36|0,ya,c[(c[ha>>2]|0)+4>>2]|0);while(1){ja=(Mr(ya)|0)>>>0<=2;Na=c[ma>>2]|0;if(!(ja?(c[ma>>2]|0)!=0:0))break;c[ma>>2]=Na+-1;ja=c[na>>2]|0;c[V>>2]=ya;c[W>>2]=ja;c[Y>>2]=d[(c[(c[V>>2]|0)+20+4>>2]|0)+(c[(c[V>>2]|0)+20>>2]<<3)+2>>0];c[Z>>2]=d[(c[(c[V>>2]|0)+36+4>>2]|0)+(c[(c[V>>2]|0)+36>>2]<<3)+2>>0];c[_>>2]=d[(c[(c[V>>2]|0)+28+4>>2]|0)+(c[(c[V>>2]|0)+28>>2]<<3)+2>>0];c[$>>2]=(c[Y>>2]|0)+(c[Z>>2]|0)+(c[_>>2]|0);c[aa>>2]=c[(c[(c[V>>2]|0)+20+4>>2]|0)+(c[(c[V>>2]|0)+20>>2]<<3)+4>>2];c[ba>>2]=c[(c[(c[V>>2]|0)+36+4>>2]|0)+(c[(c[V>>2]|0)+36>>2]<<3)+4>>2];c[ca>>2]=c[(c[(c[V>>2]|0)+28+4>>2]|0)+(c[(c[V>>2]|0)+28>>2]<<3)+4>>2];do{if(c[_>>2]|0){ja=(Dr()|0)!=0;if(!(ja&(c[W>>2]|0)!=0&(c[_>>2]|0)>>>0>=25)){ja=c[ca>>2]|0;c[da>>2]=ja+(Nr(c[V>>2]|0,c[_>>2]|0)|0);if(!(Dr()|0))break;Mr(c[V>>2]|0)|0;break;}if((c[_>>2]|0)>>>0<(32-(c[(c[V>>2]|0)+4>>2]|0)|0)>>>0)Oa=c[_>>2]|0;else Oa=32-(c[(c[V>>2]|0)+4>>2]|0)|0;c[ea>>2]=(c[_>>2]|0)-Oa;ja=c[ca>>2]|0;ia=Nr(c[V>>2]|0,(c[_>>2]|0)-(c[ea>>2]|0)|0)|0;c[da>>2]=ja+(ia<<c[ea>>2]);Mr(c[V>>2]|0)|0;if(c[ea>>2]|0){ia=Nr(c[V>>2]|0,c[ea>>2]|0)|0;c[da>>2]=(c[da>>2]|0)+ia;}}else c[da>>2]=0;}while(0);do{if((c[_>>2]|0)>>>0<=1){c[da>>2]=(c[da>>2]|0)+((c[aa>>2]|0)==0&1);if(!(c[da>>2]|0)){c[da>>2]=c[(c[V>>2]|0)+44>>2];break;}ia=(c[V>>2]|0)+44|0;if((c[da>>2]|0)==3)Pa=(c[ia>>2]|0)-1|0;else Pa=c[ia+(c[da>>2]<<2)>>2]|0;c[fa>>2]=Pa;c[fa>>2]=(c[fa>>2]|0)+(((c[fa>>2]|0)!=0^1)&1);if((c[da>>2]|0)!=1)c[(c[V>>2]|0)+44+8>>2]=c[(c[V>>2]|0)+44+4>>2];c[(c[V>>2]|0)+44+4>>2]=c[(c[V>>2]|0)+44>>2];ia=c[fa>>2]|0;c[da>>2]=ia;c[(c[V>>2]|0)+44>>2]=ia;}else{c[(c[V>>2]|0)+44+8>>2]=c[(c[V>>2]|0)+44+4>>2];c[(c[V>>2]|0)+44+4>>2]=c[(c[V>>2]|0)+44>>2];c[(c[V>>2]|0)+44>>2]=c[da>>2];}}while(0);c[X+8>>2]=c[da>>2];ia=c[ba>>2]|0;if((c[Z>>2]|0)>>>0>0)Qa=Nr(c[V>>2]|0,c[Z>>2]|0)|0;else Qa=0;c[X+4>>2]=ia+Qa;if(Dr()|0?((c[Z>>2]|0)+(c[Y>>2]|0)|0)>>>0>=20:0)Mr(c[V>>2]|0)|0;ia=(Fr()|0)!=0;if(ia&(c[$>>2]|0)>>>0>=31)Mr(c[V>>2]|0)|0;ia=c[aa>>2]|0;if((c[Y>>2]|0)>>>0>0)Ra=Nr(c[V>>2]|0,c[Y>>2]|0)|0;else Ra=0;c[X>>2]=ia+Ra;if(Dr()|0)Mr(c[V>>2]|0)|0;ia=c[V>>2]|0;c[Q>>2]=(c[V>>2]|0)+20;c[R>>2]=ia;ia=(c[(c[Q>>2]|0)+4>>2]|0)+(c[c[Q>>2]>>2]<<3)|0;c[S>>2]=c[ia>>2];c[S+4>>2]=c[ia+4>>2];c[T>>2]=d[S+3>>0];c[U>>2]=Or(c[R>>2]|0,c[T>>2]|0)|0;c[c[Q>>2]>>2]=(e[S>>1]|0)+(c[U>>2]|0);ia=c[V>>2]|0;c[L>>2]=(c[V>>2]|0)+36;c[M>>2]=ia;ia=(c[(c[L>>2]|0)+4>>2]|0)+(c[c[L>>2]>>2]<<3)|0;c[N>>2]=c[ia>>2];c[N+4>>2]=c[ia+4>>2];c[O>>2]=d[N+3>>0];c[P>>2]=Or(c[M>>2]|0,c[O>>2]|0)|0;c[c[L>>2]>>2]=(e[N>>1]|0)+(c[P>>2]|0);if(Dr()|0)Mr(c[V>>2]|0)|0;ia=c[V>>2]|0;c[G>>2]=(c[V>>2]|0)+28;c[H>>2]=ia;ia=(c[(c[G>>2]|0)+4>>2]|0)+(c[c[G>>2]>>2]<<3)|0;c[I>>2]=c[ia>>2];c[I+4>>2]=c[ia+4>>2];c[J>>2]=d[I+3>>0];c[K>>2]=Or(c[H>>2]|0,c[J>>2]|0)|0;c[c[G>>2]>>2]=(e[I>>1]|0)+(c[K>>2]|0);c[Ba>>2]=c[X>>2];c[Ba+4>>2]=c[X+4>>2];c[Ba+8>>2]=c[X+8>>2];c[Ba+12>>2]=c[X+12>>2];ia=c[sa>>2]|0;ja=c[ra>>2]|0;la=c[ua>>2]|0;ka=c[va>>2]|0;Ka=c[wa>>2]|0;Ja=c[xa>>2]|0;Ia=F;Ha=Ba;Ga=Ia+16|0;do{a[Ia>>0]=a[Ha>>0]|0;Ia=Ia+1|0;Ha=Ha+1|0;}while((Ia|0)<(Ga|0));c[p>>2]=ia;c[q>>2]=ja;c[r>>2]=ta;c[s>>2]=la;c[t>>2]=ka;c[u>>2]=Ka;c[v>>2]=Ja;c[w>>2]=(c[p>>2]|0)+(c[F>>2]|0);c[x>>2]=(c[F>>2]|0)+(c[F+4>>2]|0);c[y>>2]=(c[p>>2]|0)+(c[x>>2]|0);c[z>>2]=(c[q>>2]|0)+-8;c[A>>2]=(c[c[r>>2]>>2]|0)+(c[F>>2]|0);c[B>>2]=(c[w>>2]|0)+(0-(c[F+8>>2]|0));b:do{if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0)c[o>>2]=-70;else{if((c[A>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[o>>2]=-20;break;}Ha=c[p>>2]|0;if((c[w>>2]|0)>>>0>(c[z>>2]|0)>>>0){Ia=c[q>>2]|0;Ga=c[r>>2]|0;k=c[s>>2]|0;Fa=c[t>>2]|0;La=c[u>>2]|0;j=c[v>>2]|0;c[n>>2]=c[F>>2];c[n+4>>2]=c[F+4>>2];c[n+8>>2]=c[F+8>>2];c[n+12>>2]=c[F+12>>2];c[o>>2]=Pr(Ha,Ia,n,Ga,k,Fa,La,j)|0;break;}Qr(Ha,c[c[r>>2]>>2]|0);if((c[F>>2]|0)>>>0>8)Rr((c[p>>2]|0)+8|0,(c[c[r>>2]>>2]|0)+8|0,(c[F>>2]|0)-8|0);c[p>>2]=c[w>>2];c[c[r>>2]>>2]=c[A>>2];do{if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[t>>2]|0)|0)>>>0){if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[u>>2]|0)|0)>>>0){c[o>>2]=-20;break b;}c[B>>2]=(c[v>>2]|0)+((c[B>>2]|0)-(c[t>>2]|0));if(((c[B>>2]|0)+(c[F+4>>2]|0)|0)>>>0<=(c[v>>2]|0)>>>0){nE(c[w>>2]|0,c[B>>2]|0,c[F+4>>2]|0)|0;c[o>>2]=c[x>>2];break b;}c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);nE(c[w>>2]|0,c[B>>2]|0,c[C>>2]|0)|0;c[p>>2]=(c[w>>2]|0)+(c[C>>2]|0);Ha=F+4|0;c[Ha>>2]=(c[Ha>>2]|0)-(c[C>>2]|0);c[B>>2]=c[t>>2];if((c[p>>2]|0)>>>0<=(c[z>>2]|0)>>>0?(c[F+4>>2]|0)>>>0>=3:0)break;c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[F+4>>2]|0)>>>0)break;a[(c[p>>2]|0)+(c[D>>2]|0)>>0]=a[(c[B>>2]|0)+(c[D>>2]|0)>>0]|0;c[D>>2]=(c[D>>2]|0)+1;}c[o>>2]=c[x>>2];break b;}}while(0);if((c[F+8>>2]|0)>>>0<8){c[E>>2]=c[6816+(c[F+8>>2]<<2)>>2];a[c[p>>2]>>0]=a[c[B>>2]>>0]|0;a[(c[p>>2]|0)+1>>0]=a[(c[B>>2]|0)+1>>0]|0;a[(c[p>>2]|0)+2>>0]=a[(c[B>>2]|0)+2>>0]|0;a[(c[p>>2]|0)+3>>0]=a[(c[B>>2]|0)+3>>0]|0;c[B>>2]=(c[B>>2]|0)+(c[6848+(c[F+8>>2]<<2)>>2]|0);Sr((c[p>>2]|0)+4|0,c[B>>2]|0);c[B>>2]=(c[B>>2]|0)+(0-(c[E>>2]|0));}else Qr(c[p>>2]|0,c[B>>2]|0);c[p>>2]=(c[p>>2]|0)+8;c[B>>2]=(c[B>>2]|0)+8;Ha=c[p>>2]|0;c:do{if((c[y>>2]|0)>>>0>((c[q>>2]|0)+-13|0)>>>0){if(Ha>>>0<(c[z>>2]|0)>>>0){Rr(c[p>>2]|0,c[B>>2]|0,(c[z>>2]|0)-(c[p>>2]|0)|0);c[B>>2]=(c[B>>2]|0)+((c[z>>2]|0)-(c[p>>2]|0));c[p>>2]=c[z>>2];}while(1){if((c[p>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break c;j=c[B>>2]|0;c[B>>2]=j+1;La=a[j>>0]|0;j=c[p>>2]|0;c[p>>2]=j+1;a[j>>0]=La;}}else Rr(Ha,c[B>>2]|0,(c[F+4>>2]|0)-8|0);}while(0);c[o>>2]=c[x>>2];}}while(0);c[Ca>>2]=c[o>>2];Ja=($q(c[Ca>>2]|0)|0)!=0;Sa=c[Ca>>2]|0;if(Ja){Ta=73;break;}c[sa>>2]=(c[sa>>2]|0)+Sa;}if((Ta|0)==73){c[ga>>2]=Sa;Ma=c[ga>>2]|0;l=m;return Ma|0;}if(Na|0){c[ga>>2]=-20;Ma=c[ga>>2]|0;l=m;return Ma|0;}c[Da>>2]=0;while(1){if((c[Da>>2]|0)>>>0>=3)break a;c[(c[ha>>2]|0)+16+28700+(c[Da>>2]<<2)>>2]=c[ya+44+(c[Da>>2]<<2)>>2];c[Da>>2]=(c[Da>>2]|0)+1;}}}while(0);c[Ea>>2]=(c[ua>>2]|0)-(c[ta>>2]|0);if((c[Ea>>2]|0)>>>0>((c[ra>>2]|0)-(c[sa>>2]|0)|0)>>>0){c[ga>>2]=-70;Ma=c[ga>>2]|0;l=m;return Ma|0;}else{mE(c[sa>>2]|0,c[ta>>2]|0,c[Ea>>2]|0)|0;c[sa>>2]=(c[sa>>2]|0)+(c[Ea>>2]|0);c[ga>>2]=(c[sa>>2]|0)-(c[qa>>2]|0);Ma=c[ga>>2]|0;l=m;return Ma|0;}return 0;}function Jr(b,f,g,h,i,j,k){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0;m=l;l=l+448|0;n=m+432|0;o=m+424|0;p=m+420|0;q=m+416|0;r=m+412|0;s=m+408|0;t=m+404|0;u=m+400|0;v=m+396|0;w=m+392|0;x=m+388|0;y=m+384|0;z=m+380|0;A=m+376|0;B=m+372|0;C=m+368|0;D=m+364|0;E=m+360|0;F=m;G=m+356|0;H=m+352|0;I=m+344|0;J=m+340|0;K=m+336|0;L=m+332|0;M=m+328|0;N=m+320|0;O=m+316|0;P=m+312|0;Q=m+308|0;R=m+304|0;S=m+296|0;T=m+292|0;U=m+288|0;V=m+284|0;W=m+280|0;X=m+264|0;Y=m+256|0;Z=m+252|0;_=m+248|0;$=m+244|0;aa=m+240|0;ba=m+236|0;ca=m+232|0;da=m+228|0;ea=m+224|0;fa=m+220|0;ga=m+216|0;ha=m+212|0;ia=m+208|0;ja=m+204|0;ka=m+200|0;la=m+196|0;ma=m+192|0;na=m+188|0;oa=m+184|0;pa=m+180|0;qa=m+176|0;ra=m+172|0;sa=m+168|0;ta=m+164|0;ua=m+160|0;va=m+156|0;wa=m+152|0;xa=m+148|0;ya=m+80|0;za=m+76|0;Aa=m+72|0;Ba=m+56|0;Ca=m+52|0;Da=m+48|0;Ea=m+44|0;Fa=m+40|0;Ga=m+36|0;Ha=m+32|0;Ia=m+28|0;Ja=m+24|0;Ka=m+20|0;La=m+16|0;c[Fa>>2]=b;c[Ga>>2]=f;c[Ha>>2]=g;c[Ia>>2]=h;c[Ja>>2]=i;c[Ka>>2]=j;c[La>>2]=k;k=c[Ga>>2]|0;Ga=c[Ha>>2]|0;Ha=c[Ia>>2]|0;Ia=c[Ja>>2]|0;Ja=c[Ka>>2]|0;Ka=c[La>>2]|0;c[ha>>2]=c[Fa>>2];c[ia>>2]=k;c[ja>>2]=Ga;c[ka>>2]=Ha;c[la>>2]=Ia;c[ma>>2]=Ja;c[na>>2]=Ka;c[oa>>2]=c[ka>>2];c[pa>>2]=(c[oa>>2]|0)+(c[la>>2]|0);c[qa>>2]=c[ia>>2];c[ra>>2]=(c[qa>>2]|0)+(c[ja>>2]|0);c[sa>>2]=c[qa>>2];c[ta>>2]=c[(c[ha>>2]|0)+28916>>2];c[ua>>2]=(c[ta>>2]|0)+(c[(c[ha>>2]|0)+28932>>2]|0);c[va>>2]=c[(c[ha>>2]|0)+28732>>2];c[wa>>2]=c[(c[ha>>2]|0)+28736>>2];c[xa>>2]=c[(c[ha>>2]|0)+28740>>2];a:do{if(c[ma>>2]|0){c[(c[ha>>2]|0)+28812>>2]=1;c[za>>2]=0;while(1){if((c[za>>2]|0)>>>0>=3)break;c[ya+44+(c[za>>2]<<2)>>2]=c[(c[ha>>2]|0)+16+28700+(c[za>>2]<<2)>>2];c[za>>2]=(c[za>>2]|0)+1;}c[Aa>>2]=Kr(ya,c[oa>>2]|0,(c[pa>>2]|0)-(c[oa>>2]|0)|0)|0;if($q(c[Aa>>2]|0)|0){c[ga>>2]=-20;Ma=c[ga>>2]|0;l=m;return Ma|0;}Lr(ya+20|0,ya,c[c[ha>>2]>>2]|0);Lr(ya+28|0,ya,c[(c[ha>>2]|0)+8>>2]|0);Lr(ya+36|0,ya,c[(c[ha>>2]|0)+4>>2]|0);while(1){ja=(Mr(ya)|0)>>>0<=2;Na=c[ma>>2]|0;if(!(ja?(c[ma>>2]|0)!=0:0))break;c[ma>>2]=Na+-1;ja=c[na>>2]|0;c[V>>2]=ya;c[W>>2]=ja;c[Y>>2]=d[(c[(c[V>>2]|0)+20+4>>2]|0)+(c[(c[V>>2]|0)+20>>2]<<3)+2>>0];c[Z>>2]=d[(c[(c[V>>2]|0)+36+4>>2]|0)+(c[(c[V>>2]|0)+36>>2]<<3)+2>>0];c[_>>2]=d[(c[(c[V>>2]|0)+28+4>>2]|0)+(c[(c[V>>2]|0)+28>>2]<<3)+2>>0];c[$>>2]=(c[Y>>2]|0)+(c[Z>>2]|0)+(c[_>>2]|0);c[aa>>2]=c[(c[(c[V>>2]|0)+20+4>>2]|0)+(c[(c[V>>2]|0)+20>>2]<<3)+4>>2];c[ba>>2]=c[(c[(c[V>>2]|0)+36+4>>2]|0)+(c[(c[V>>2]|0)+36>>2]<<3)+4>>2];c[ca>>2]=c[(c[(c[V>>2]|0)+28+4>>2]|0)+(c[(c[V>>2]|0)+28>>2]<<3)+4>>2];do{if(c[_>>2]|0){ja=(Dr()|0)!=0;if(!(ja&(c[W>>2]|0)!=0&(c[_>>2]|0)>>>0>=25)){ja=c[ca>>2]|0;c[da>>2]=ja+(Nr(c[V>>2]|0,c[_>>2]|0)|0);if(!(Dr()|0))break;Mr(c[V>>2]|0)|0;break;}if((c[_>>2]|0)>>>0<(32-(c[(c[V>>2]|0)+4>>2]|0)|0)>>>0)Oa=c[_>>2]|0;else Oa=32-(c[(c[V>>2]|0)+4>>2]|0)|0;c[ea>>2]=(c[_>>2]|0)-Oa;ja=c[ca>>2]|0;ia=Nr(c[V>>2]|0,(c[_>>2]|0)-(c[ea>>2]|0)|0)|0;c[da>>2]=ja+(ia<<c[ea>>2]);Mr(c[V>>2]|0)|0;if(c[ea>>2]|0){ia=Nr(c[V>>2]|0,c[ea>>2]|0)|0;c[da>>2]=(c[da>>2]|0)+ia;}}else c[da>>2]=0;}while(0);do{if((c[_>>2]|0)>>>0<=1){c[da>>2]=(c[da>>2]|0)+((c[aa>>2]|0)==0&1);if(!(c[da>>2]|0)){c[da>>2]=c[(c[V>>2]|0)+44>>2];break;}ia=(c[V>>2]|0)+44|0;if((c[da>>2]|0)==3)Pa=(c[ia>>2]|0)-1|0;else Pa=c[ia+(c[da>>2]<<2)>>2]|0;c[fa>>2]=Pa;c[fa>>2]=(c[fa>>2]|0)+(((c[fa>>2]|0)!=0^1)&1);if((c[da>>2]|0)!=1)c[(c[V>>2]|0)+44+8>>2]=c[(c[V>>2]|0)+44+4>>2];c[(c[V>>2]|0)+44+4>>2]=c[(c[V>>2]|0)+44>>2];ia=c[fa>>2]|0;c[da>>2]=ia;c[(c[V>>2]|0)+44>>2]=ia;}else{c[(c[V>>2]|0)+44+8>>2]=c[(c[V>>2]|0)+44+4>>2];c[(c[V>>2]|0)+44+4>>2]=c[(c[V>>2]|0)+44>>2];c[(c[V>>2]|0)+44>>2]=c[da>>2];}}while(0);c[X+8>>2]=c[da>>2];ia=c[ba>>2]|0;if((c[Z>>2]|0)>>>0>0)Qa=Nr(c[V>>2]|0,c[Z>>2]|0)|0;else Qa=0;c[X+4>>2]=ia+Qa;if(Dr()|0?((c[Z>>2]|0)+(c[Y>>2]|0)|0)>>>0>=20:0)Mr(c[V>>2]|0)|0;ia=(Fr()|0)!=0;if(ia&(c[$>>2]|0)>>>0>=31)Mr(c[V>>2]|0)|0;ia=c[aa>>2]|0;if((c[Y>>2]|0)>>>0>0)Ra=Nr(c[V>>2]|0,c[Y>>2]|0)|0;else Ra=0;c[X>>2]=ia+Ra;if(Dr()|0)Mr(c[V>>2]|0)|0;ia=c[V>>2]|0;c[Q>>2]=(c[V>>2]|0)+20;c[R>>2]=ia;ia=(c[(c[Q>>2]|0)+4>>2]|0)+(c[c[Q>>2]>>2]<<3)|0;c[S>>2]=c[ia>>2];c[S+4>>2]=c[ia+4>>2];c[T>>2]=d[S+3>>0];c[U>>2]=Or(c[R>>2]|0,c[T>>2]|0)|0;c[c[Q>>2]>>2]=(e[S>>1]|0)+(c[U>>2]|0);ia=c[V>>2]|0;c[L>>2]=(c[V>>2]|0)+36;c[M>>2]=ia;ia=(c[(c[L>>2]|0)+4>>2]|0)+(c[c[L>>2]>>2]<<3)|0;c[N>>2]=c[ia>>2];c[N+4>>2]=c[ia+4>>2];c[O>>2]=d[N+3>>0];c[P>>2]=Or(c[M>>2]|0,c[O>>2]|0)|0;c[c[L>>2]>>2]=(e[N>>1]|0)+(c[P>>2]|0);if(Dr()|0)Mr(c[V>>2]|0)|0;ia=c[V>>2]|0;c[G>>2]=(c[V>>2]|0)+28;c[H>>2]=ia;ia=(c[(c[G>>2]|0)+4>>2]|0)+(c[c[G>>2]>>2]<<3)|0;c[I>>2]=c[ia>>2];c[I+4>>2]=c[ia+4>>2];c[J>>2]=d[I+3>>0];c[K>>2]=Or(c[H>>2]|0,c[J>>2]|0)|0;c[c[G>>2]>>2]=(e[I>>1]|0)+(c[K>>2]|0);c[Ba>>2]=c[X>>2];c[Ba+4>>2]=c[X+4>>2];c[Ba+8>>2]=c[X+8>>2];c[Ba+12>>2]=c[X+12>>2];ia=c[sa>>2]|0;ja=c[ra>>2]|0;la=c[ua>>2]|0;ka=c[va>>2]|0;Ka=c[wa>>2]|0;Ja=c[xa>>2]|0;Ia=F;Ha=Ba;Ga=Ia+16|0;do{a[Ia>>0]=a[Ha>>0]|0;Ia=Ia+1|0;Ha=Ha+1|0;}while((Ia|0)<(Ga|0));c[p>>2]=ia;c[q>>2]=ja;c[r>>2]=ta;c[s>>2]=la;c[t>>2]=ka;c[u>>2]=Ka;c[v>>2]=Ja;c[w>>2]=(c[p>>2]|0)+(c[F>>2]|0);c[x>>2]=(c[F>>2]|0)+(c[F+4>>2]|0);c[y>>2]=(c[p>>2]|0)+(c[x>>2]|0);c[z>>2]=(c[q>>2]|0)+-8;c[A>>2]=(c[c[r>>2]>>2]|0)+(c[F>>2]|0);c[B>>2]=(c[w>>2]|0)+(0-(c[F+8>>2]|0));b:do{if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0)c[o>>2]=-70;else{if((c[A>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[o>>2]=-20;break;}Ha=c[p>>2]|0;if((c[w>>2]|0)>>>0>(c[z>>2]|0)>>>0){Ia=c[q>>2]|0;Ga=c[r>>2]|0;k=c[s>>2]|0;Fa=c[t>>2]|0;La=c[u>>2]|0;j=c[v>>2]|0;c[n>>2]=c[F>>2];c[n+4>>2]=c[F+4>>2];c[n+8>>2]=c[F+8>>2];c[n+12>>2]=c[F+12>>2];c[o>>2]=Pr(Ha,Ia,n,Ga,k,Fa,La,j)|0;break;}Qr(Ha,c[c[r>>2]>>2]|0);if((c[F>>2]|0)>>>0>8)Rr((c[p>>2]|0)+8|0,(c[c[r>>2]>>2]|0)+8|0,(c[F>>2]|0)-8|0);c[p>>2]=c[w>>2];c[c[r>>2]>>2]=c[A>>2];do{if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[t>>2]|0)|0)>>>0){if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[u>>2]|0)|0)>>>0){c[o>>2]=-20;break b;}c[B>>2]=(c[v>>2]|0)+((c[B>>2]|0)-(c[t>>2]|0));if(((c[B>>2]|0)+(c[F+4>>2]|0)|0)>>>0<=(c[v>>2]|0)>>>0){nE(c[w>>2]|0,c[B>>2]|0,c[F+4>>2]|0)|0;c[o>>2]=c[x>>2];break b;}c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);nE(c[w>>2]|0,c[B>>2]|0,c[C>>2]|0)|0;c[p>>2]=(c[w>>2]|0)+(c[C>>2]|0);Ha=F+4|0;c[Ha>>2]=(c[Ha>>2]|0)-(c[C>>2]|0);c[B>>2]=c[t>>2];if((c[p>>2]|0)>>>0<=(c[z>>2]|0)>>>0?(c[F+4>>2]|0)>>>0>=3:0)break;c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[F+4>>2]|0)>>>0)break;a[(c[p>>2]|0)+(c[D>>2]|0)>>0]=a[(c[B>>2]|0)+(c[D>>2]|0)>>0]|0;c[D>>2]=(c[D>>2]|0)+1;}c[o>>2]=c[x>>2];break b;}}while(0);if((c[F+8>>2]|0)>>>0<8){c[E>>2]=c[6816+(c[F+8>>2]<<2)>>2];a[c[p>>2]>>0]=a[c[B>>2]>>0]|0;a[(c[p>>2]|0)+1>>0]=a[(c[B>>2]|0)+1>>0]|0;a[(c[p>>2]|0)+2>>0]=a[(c[B>>2]|0)+2>>0]|0;a[(c[p>>2]|0)+3>>0]=a[(c[B>>2]|0)+3>>0]|0;c[B>>2]=(c[B>>2]|0)+(c[6848+(c[F+8>>2]<<2)>>2]|0);Sr((c[p>>2]|0)+4|0,c[B>>2]|0);c[B>>2]=(c[B>>2]|0)+(0-(c[E>>2]|0));}else Qr(c[p>>2]|0,c[B>>2]|0);c[p>>2]=(c[p>>2]|0)+8;c[B>>2]=(c[B>>2]|0)+8;Ha=c[p>>2]|0;c:do{if((c[y>>2]|0)>>>0>((c[q>>2]|0)+-13|0)>>>0){if(Ha>>>0<(c[z>>2]|0)>>>0){Rr(c[p>>2]|0,c[B>>2]|0,(c[z>>2]|0)-(c[p>>2]|0)|0);c[B>>2]=(c[B>>2]|0)+((c[z>>2]|0)-(c[p>>2]|0));c[p>>2]=c[z>>2];}while(1){if((c[p>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break c;j=c[B>>2]|0;c[B>>2]=j+1;La=a[j>>0]|0;j=c[p>>2]|0;c[p>>2]=j+1;a[j>>0]=La;}}else Rr(Ha,c[B>>2]|0,(c[F+4>>2]|0)-8|0);}while(0);c[o>>2]=c[x>>2];}}while(0);c[Ca>>2]=c[o>>2];Ja=($q(c[Ca>>2]|0)|0)!=0;Sa=c[Ca>>2]|0;if(Ja){Ta=73;break;}c[sa>>2]=(c[sa>>2]|0)+Sa;}if((Ta|0)==73){c[ga>>2]=Sa;Ma=c[ga>>2]|0;l=m;return Ma|0;}if(Na|0){c[ga>>2]=-20;Ma=c[ga>>2]|0;l=m;return Ma|0;}c[Da>>2]=0;while(1){if((c[Da>>2]|0)>>>0>=3)break a;c[(c[ha>>2]|0)+16+28700+(c[Da>>2]<<2)>>2]=c[ya+44+(c[Da>>2]<<2)>>2];c[Da>>2]=(c[Da>>2]|0)+1;}}}while(0);c[Ea>>2]=(c[ua>>2]|0)-(c[ta>>2]|0);if((c[Ea>>2]|0)>>>0>((c[ra>>2]|0)-(c[sa>>2]|0)|0)>>>0){c[ga>>2]=-70;Ma=c[ga>>2]|0;l=m;return Ma|0;}else{mE(c[sa>>2]|0,c[ta>>2]|0,c[Ea>>2]|0)|0;c[sa>>2]=(c[sa>>2]|0)+(c[Ea>>2]|0);c[ga>>2]=(c[sa>>2]|0)-(c[qa>>2]|0);Ma=c[ga>>2]|0;l=m;return Ma|0;}return 0;}function Kr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+17|0;n=g+16|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;if((c[k>>2]|0)>>>0<1){f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[h>>2]=-72;o=c[h>>2]|0;l=g;return o|0;}c[(c[i>>2]|0)+12>>2]=c[j>>2];c[(c[i>>2]|0)+16>>2]=(c[(c[i>>2]|0)+12>>2]|0)+4;do{if((c[k>>2]|0)>>>0>=4){c[(c[i>>2]|0)+8>>2]=(c[j>>2]|0)+(c[k>>2]|0)+-4;f=Wr(c[(c[i>>2]|0)+8>>2]|0)|0;c[c[i>>2]>>2]=f;a[m>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[m>>0]|0|0)p=8-(Ar(d[m>>0]|0)|0)|0;else p=0;c[(c[i>>2]|0)+4>>2]=p;if(!(d[m>>0]|0)){c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}}else{c[(c[i>>2]|0)+8>>2]=c[(c[i>>2]|0)+12>>2];c[c[i>>2]>>2]=d[c[(c[i>>2]|0)+12>>2]>>0];switch(c[k>>2]|0){case 7:{f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+6>>0]|0)<<16);q=10;break;}case 6:{q=10;break;}case 5:{q=11;break;}case 4:{q=12;break;}case 3:{q=13;break;}case 2:{q=14;break;}default:{}}if((q|0)==10){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)<<8);q=11;}if((q|0)==11){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+4>>0]|0)<<0);q=12;}if((q|0)==12){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+3>>0]|0)<<24);q=13;}if((q|0)==13){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+2>>0]|0)<<16);q=14;}if((q|0)==14){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+1>>0]|0)<<8);}a[n>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[n>>0]|0|0)r=8-(Ar(d[n>>0]|0)|0)|0;else r=0;c[(c[i>>2]|0)+4>>2]=r;if(d[n>>0]|0|0){f=(c[i>>2]|0)+4|0;c[f>>2]=(c[f>>2]|0)+(4-(c[k>>2]|0)<<3);break;}c[h>>2]=-20;o=c[h>>2]|0;l=g;return o|0;}}while(0);c[h>>2]=c[k>>2];o=c[h>>2]|0;l=g;return o|0;}function Lr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[h>>2];c[j>>2]=c[i>>2];i=Or(c[g>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;c[c[f>>2]>>2]=i;Mr(c[g>>2]|0)|0;c[(c[f>>2]|0)+4>>2]=(c[h>>2]|0)+8;l=e;return;}function Mr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=Wr(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=Wr(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function Nr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Vr(c[e>>2]|0,c[f>>2]|0)|0;Ur(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function Or(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Tr(c[e>>2]|0,c[f>>2]|0)|0;Ur(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function Pr(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;k=l;l=l+64|0;m=k+56|0;n=k+52|0;o=k+48|0;p=k+44|0;q=k+40|0;r=k+36|0;s=k+32|0;t=k+28|0;u=k+24|0;v=k+20|0;w=k+16|0;x=k+12|0;y=k+8|0;z=k+4|0;A=k;c[n>>2]=b;c[o>>2]=d;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=(c[n>>2]|0)+(c[e>>2]|0);c[v>>2]=(c[e>>2]|0)+(c[e+4>>2]|0);c[w>>2]=(c[n>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[o>>2]|0)+-8;c[y>>2]=(c[c[p>>2]>>2]|0)+(c[e>>2]|0);c[z>>2]=(c[u>>2]|0)+(0-(c[e+8>>2]|0));if((c[w>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[m>>2]=-70;B=c[m>>2]|0;l=k;return B|0;}if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0){c[m>>2]=-20;B=c[m>>2]|0;l=k;return B|0;}if((c[u>>2]|0)>>>0<=(c[x>>2]|0)>>>0){c[m>>2]=-1;B=c[m>>2]|0;l=k;return B|0;}if((c[n>>2]|0)>>>0<(c[x>>2]|0)>>>0){Rr(c[n>>2]|0,c[c[p>>2]>>2]|0,(c[x>>2]|0)-(c[n>>2]|0)|0);q=c[p>>2]|0;c[q>>2]=(c[q>>2]|0)+((c[x>>2]|0)-(c[n>>2]|0));c[n>>2]=c[x>>2];}while(1){if((c[n>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;x=c[p>>2]|0;q=c[x>>2]|0;c[x>>2]=q+1;x=a[q>>0]|0;q=c[n>>2]|0;c[n>>2]=q+1;a[q>>0]=x;}do{if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[r>>2]|0)|0)>>>0){if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[s>>2]|0)|0)>>>0){c[m>>2]=-20;B=c[m>>2]|0;l=k;return B|0;}c[z>>2]=(c[t>>2]|0)+(0-((c[r>>2]|0)-(c[z>>2]|0)));if(((c[z>>2]|0)+(c[e+4>>2]|0)|0)>>>0>(c[t>>2]|0)>>>0){c[A>>2]=(c[t>>2]|0)-(c[z>>2]|0);nE(c[u>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;c[n>>2]=(c[u>>2]|0)+(c[A>>2]|0);p=e+4|0;c[p>>2]=(c[p>>2]|0)-(c[A>>2]|0);c[z>>2]=c[r>>2];break;}nE(c[u>>2]|0,c[z>>2]|0,c[e+4>>2]|0)|0;c[m>>2]=c[v>>2];B=c[m>>2]|0;l=k;return B|0;}}while(0);while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;e=c[z>>2]|0;c[z>>2]=e+1;u=a[e>>0]|0;e=c[n>>2]|0;c[n>>2]=e+1;a[e>>0]=u;}c[m>>2]=c[v>>2];B=c[m>>2]|0;l=k;return B|0;}function Qr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function Rr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{Qr(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function Sr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;l=e;return;}function Tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>1>>>(31-(c[f>>2]|0)&31)|0;}function Ur(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function Vr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function Wr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Dr()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=hq(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=sq(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Xr(b,f,g,h,i,j,k){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0;m=l;l=l+784|0;n=m+760|0;o=m+756|0;p=m+752|0;q=m+748|0;r=m+744|0;s=m+740|0;t=m+736|0;u=m+732|0;v=m+728|0;w=m+724|0;x=m+720|0;y=m+716|0;z=m+712|0;A=m+708|0;B=m+704|0;C=m+700|0;D=m+696|0;E=m+692|0;F=m+80|0;G=m+688|0;H=m+684|0;I=m+680|0;J=m+676|0;K=m+672|0;L=m+668|0;M=m+664|0;N=m+660|0;O=m+656|0;P=m+652|0;Q=m+648|0;R=m+644|0;S=m+640|0;T=m+636|0;U=m+632|0;V=m+628|0;W=m+624|0;X=m+64|0;Y=m+620|0;Z=m+616|0;_=m+608|0;$=m+604|0;aa=m+600|0;ba=m+596|0;ca=m+592|0;da=m+584|0;ea=m+580|0;fa=m+576|0;ga=m+572|0;ha=m+568|0;ia=m+560|0;ja=m+556|0;ka=m+552|0;la=m+548|0;ma=m+544|0;na=m+528|0;oa=m+524|0;pa=m+520|0;qa=m+516|0;ra=m+512|0;sa=m+508|0;ta=m+504|0;ua=m+500|0;va=m+496|0;wa=m+492|0;xa=m+488|0;ya=m+484|0;za=m+480|0;Aa=m+476|0;Ba=m+472|0;Ca=m+464|0;Da=m+460|0;Ea=m+456|0;Fa=m+452|0;Ga=m+448|0;Ha=m+440|0;Ia=m+436|0;Ja=m+432|0;Ka=m+428|0;La=m+424|0;Ma=m+416|0;Na=m+412|0;Oa=m+408|0;Pa=m+404|0;Qa=m+400|0;Ra=m+384|0;Sa=m+376|0;Ta=m+372|0;Ua=m+368|0;Va=m+364|0;Wa=m+360|0;Xa=m+356|0;Ya=m+352|0;Za=m+348|0;_a=m+344|0;$a=m+340|0;ab=m+336|0;bb=m+332|0;cb=m+328|0;db=m+324|0;eb=m+320|0;fb=m+316|0;gb=m+312|0;hb=m+308|0;ib=m+304|0;jb=m+300|0;kb=m+296|0;lb=m+292|0;mb=m+288|0;nb=m+284|0;ob=m+280|0;pb=m+276|0;qb=m+272|0;rb=m+268|0;sb=m+264|0;tb=m+260|0;ub=m;vb=m+256|0;wb=m+188|0;xb=m+184|0;yb=m+180|0;zb=m+176|0;Ab=m+160|0;Bb=m+144|0;Cb=m+136|0;Db=m+132|0;Eb=m+128|0;Fb=m+124|0;Gb=m+120|0;Hb=m+116|0;Ib=m+112|0;Jb=m+108|0;Kb=m+104|0;Lb=m+100|0;Mb=m+96|0;c[Gb>>2]=b;c[Hb>>2]=f;c[Ib>>2]=g;c[Jb>>2]=h;c[Kb>>2]=i;c[Lb>>2]=j;c[Mb>>2]=k;k=c[Hb>>2]|0;Hb=c[Ib>>2]|0;Ib=c[Jb>>2]|0;Jb=c[Kb>>2]|0;Kb=c[Lb>>2]|0;Lb=c[Mb>>2]|0;c[db>>2]=c[Gb>>2];c[eb>>2]=k;c[fb>>2]=Hb;c[gb>>2]=Ib;c[hb>>2]=Jb;c[ib>>2]=Kb;c[jb>>2]=Lb;c[kb>>2]=c[gb>>2];c[lb>>2]=(c[kb>>2]|0)+(c[hb>>2]|0);c[mb>>2]=c[eb>>2];c[nb>>2]=(c[mb>>2]|0)+(c[fb>>2]|0);c[ob>>2]=c[mb>>2];c[pb>>2]=c[(c[db>>2]|0)+28916>>2];c[qb>>2]=(c[pb>>2]|0)+(c[(c[db>>2]|0)+28932>>2]|0);c[rb>>2]=c[(c[db>>2]|0)+28732>>2];c[sb>>2]=c[(c[db>>2]|0)+28736>>2];c[tb>>2]=c[(c[db>>2]|0)+28740>>2];a:do{if(c[ib>>2]|0){c[vb>>2]=(c[ib>>2]|0)<4?c[ib>>2]|0:4;c[(c[db>>2]|0)+28812>>2]=1;c[yb>>2]=0;while(1){if((c[yb>>2]|0)>>>0>=3)break;c[wb+44+(c[yb>>2]<<2)>>2]=c[(c[db>>2]|0)+16+28700+(c[yb>>2]<<2)>>2];c[yb>>2]=(c[yb>>2]|0)+1;}c[wb+56>>2]=c[rb>>2];c[wb+64>>2]=(c[ob>>2]|0)-(c[rb>>2]|0);c[wb+60>>2]=c[tb>>2];c[zb>>2]=Kr(wb,c[kb>>2]|0,(c[lb>>2]|0)-(c[kb>>2]|0)|0)|0;if($q(c[zb>>2]|0)|0){c[cb>>2]=-20;Nb=c[cb>>2]|0;l=m;return Nb|0;}Lr(wb+20|0,wb,c[c[db>>2]>>2]|0);Lr(wb+28|0,wb,c[(c[db>>2]|0)+8>>2]|0);Lr(wb+36|0,wb,c[(c[db>>2]|0)+4>>2]|0);c[xb>>2]=0;while(1){if((Mr(wb)|0)>>>0<=2)Ob=(c[xb>>2]|0)<(c[vb>>2]|0);else Ob=0;Pb=c[xb>>2]|0;if(!Ob)break;fb=ub+(Pb<<4)|0;eb=c[jb>>2]|0;c[Pa>>2]=wb;c[Qa>>2]=eb;c[Sa>>2]=d[(c[(c[Pa>>2]|0)+20+4>>2]|0)+(c[(c[Pa>>2]|0)+20>>2]<<3)+2>>0];c[Ta>>2]=d[(c[(c[Pa>>2]|0)+36+4>>2]|0)+(c[(c[Pa>>2]|0)+36>>2]<<3)+2>>0];c[Ua>>2]=d[(c[(c[Pa>>2]|0)+28+4>>2]|0)+(c[(c[Pa>>2]|0)+28>>2]<<3)+2>>0];c[Va>>2]=(c[Sa>>2]|0)+(c[Ta>>2]|0)+(c[Ua>>2]|0);c[Wa>>2]=c[(c[(c[Pa>>2]|0)+20+4>>2]|0)+(c[(c[Pa>>2]|0)+20>>2]<<3)+4>>2];c[Xa>>2]=c[(c[(c[Pa>>2]|0)+36+4>>2]|0)+(c[(c[Pa>>2]|0)+36>>2]<<3)+4>>2];c[Ya>>2]=c[(c[(c[Pa>>2]|0)+28+4>>2]|0)+(c[(c[Pa>>2]|0)+28>>2]<<3)+4>>2];do{if(c[Ua>>2]|0){eb=(Dr()|0)!=0;if(!(eb&(c[Qa>>2]|0)!=0)){eb=c[Ya>>2]|0;c[Za>>2]=eb+(Nr(c[Pa>>2]|0,c[Ua>>2]|0)|0);if(!(Dr()|0))break;Mr(c[Pa>>2]|0)|0;break;}c[_a>>2]=(c[Ua>>2]|0)-((c[Ua>>2]|0)>>>0<24?c[Ua>>2]|0:24);eb=c[Ya>>2]|0;hb=Nr(c[Pa>>2]|0,(c[Ua>>2]|0)-(c[_a>>2]|0)|0)|0;c[Za>>2]=eb+(hb<<c[_a>>2]);hb=(Dr()|0)!=0;if(hb|(c[_a>>2]|0)!=0)Mr(c[Pa>>2]|0)|0;if(c[_a>>2]|0){hb=Nr(c[Pa>>2]|0,c[_a>>2]|0)|0;c[Za>>2]=(c[Za>>2]|0)+hb;}}else c[Za>>2]=0;}while(0);do{if((c[Ua>>2]|0)>>>0<=1){c[Za>>2]=(c[Za>>2]|0)+((c[Wa>>2]|0)==0&1);if(!(c[Za>>2]|0)){c[Za>>2]=c[(c[Pa>>2]|0)+44>>2];break;}hb=(c[Pa>>2]|0)+44|0;if((c[Za>>2]|0)==3)Qb=(c[hb>>2]|0)-1|0;else Qb=c[hb+(c[Za>>2]<<2)>>2]|0;c[$a>>2]=Qb;c[$a>>2]=(c[$a>>2]|0)+(((c[$a>>2]|0)!=0^1)&1);if((c[Za>>2]|0)!=1)c[(c[Pa>>2]|0)+44+8>>2]=c[(c[Pa>>2]|0)+44+4>>2];c[(c[Pa>>2]|0)+44+4>>2]=c[(c[Pa>>2]|0)+44>>2];hb=c[$a>>2]|0;c[Za>>2]=hb;c[(c[Pa>>2]|0)+44>>2]=hb;}else{c[(c[Pa>>2]|0)+44+8>>2]=c[(c[Pa>>2]|0)+44+4>>2];c[(c[Pa>>2]|0)+44+4>>2]=c[(c[Pa>>2]|0)+44>>2];c[(c[Pa>>2]|0)+44>>2]=c[Za>>2];}}while(0);c[Ra+8>>2]=c[Za>>2];hb=c[Xa>>2]|0;if((c[Ta>>2]|0)>>>0>0)Rb=Nr(c[Pa>>2]|0,c[Ta>>2]|0)|0;else Rb=0;c[Ra+4>>2]=hb+Rb;if(Dr()|0?((c[Ta>>2]|0)+(c[Sa>>2]|0)|0)>>>0>=20:0)Mr(c[Pa>>2]|0)|0;hb=(Fr()|0)!=0;if(hb&(c[Va>>2]|0)>>>0>=31)Mr(c[Pa>>2]|0)|0;hb=c[Wa>>2]|0;if((c[Sa>>2]|0)>>>0>0)Sb=Nr(c[Pa>>2]|0,c[Sa>>2]|0)|0;else Sb=0;c[Ra>>2]=hb+Sb;if(Dr()|0)Mr(c[Pa>>2]|0)|0;c[ab>>2]=(c[(c[Pa>>2]|0)+64>>2]|0)+(c[Ra>>2]|0);hb=c[Pa>>2]|0;if((c[Ra+8>>2]|0)>>>0>(c[ab>>2]|0)>>>0)Tb=c[hb+60>>2]|0;else Tb=c[hb+56>>2]|0;c[bb>>2]=Tb;c[Ra+12>>2]=(c[bb>>2]|0)+(c[ab>>2]|0)+(0-(c[Ra+8>>2]|0));c[(c[Pa>>2]|0)+64>>2]=(c[ab>>2]|0)+(c[Ra+4>>2]|0);hb=c[Pa>>2]|0;c[Ka>>2]=(c[Pa>>2]|0)+20;c[La>>2]=hb;hb=(c[(c[Ka>>2]|0)+4>>2]|0)+(c[c[Ka>>2]>>2]<<3)|0;c[Ma>>2]=c[hb>>2];c[Ma+4>>2]=c[hb+4>>2];c[Na>>2]=d[Ma+3>>0];c[Oa>>2]=Or(c[La>>2]|0,c[Na>>2]|0)|0;c[c[Ka>>2]>>2]=(e[Ma>>1]|0)+(c[Oa>>2]|0);hb=c[Pa>>2]|0;c[Fa>>2]=(c[Pa>>2]|0)+36;c[Ga>>2]=hb;hb=(c[(c[Fa>>2]|0)+4>>2]|0)+(c[c[Fa>>2]>>2]<<3)|0;c[Ha>>2]=c[hb>>2];c[Ha+4>>2]=c[hb+4>>2];c[Ia>>2]=d[Ha+3>>0];c[Ja>>2]=Or(c[Ga>>2]|0,c[Ia>>2]|0)|0;c[c[Fa>>2]>>2]=(e[Ha>>1]|0)+(c[Ja>>2]|0);if(Dr()|0)Mr(c[Pa>>2]|0)|0;hb=c[Pa>>2]|0;c[Aa>>2]=(c[Pa>>2]|0)+28;c[Ba>>2]=hb;hb=(c[(c[Aa>>2]|0)+4>>2]|0)+(c[c[Aa>>2]>>2]<<3)|0;c[Ca>>2]=c[hb>>2];c[Ca+4>>2]=c[hb+4>>2];c[Da>>2]=d[Ca+3>>0];c[Ea>>2]=Or(c[Ba>>2]|0,c[Da>>2]|0)|0;c[c[Aa>>2]>>2]=(e[Ca>>1]|0)+(c[Ea>>2]|0);c[Ab>>2]=c[Ra>>2];c[Ab+4>>2]=c[Ra+4>>2];c[Ab+8>>2]=c[Ra+8>>2];c[Ab+12>>2]=c[Ra+12>>2];c[fb>>2]=c[Ab>>2];c[fb+4>>2]=c[Ab+4>>2];c[fb+8>>2]=c[Ab+8>>2];c[fb+12>>2]=c[Ab+12>>2];c[xb>>2]=(c[xb>>2]|0)+1;}if((Pb|0)<(c[vb>>2]|0)){c[cb>>2]=-20;Nb=c[cb>>2]|0;l=m;return Nb|0;}while(1){if((Mr(wb)|0)>>>0>2)break;if((c[xb>>2]|0)>=(c[ib>>2]|0))break;hb=c[jb>>2]|0;c[la>>2]=wb;c[ma>>2]=hb;c[oa>>2]=d[(c[(c[la>>2]|0)+20+4>>2]|0)+(c[(c[la>>2]|0)+20>>2]<<3)+2>>0];c[pa>>2]=d[(c[(c[la>>2]|0)+36+4>>2]|0)+(c[(c[la>>2]|0)+36>>2]<<3)+2>>0];c[qa>>2]=d[(c[(c[la>>2]|0)+28+4>>2]|0)+(c[(c[la>>2]|0)+28>>2]<<3)+2>>0];c[ra>>2]=(c[oa>>2]|0)+(c[pa>>2]|0)+(c[qa>>2]|0);c[sa>>2]=c[(c[(c[la>>2]|0)+20+4>>2]|0)+(c[(c[la>>2]|0)+20>>2]<<3)+4>>2];c[ta>>2]=c[(c[(c[la>>2]|0)+36+4>>2]|0)+(c[(c[la>>2]|0)+36>>2]<<3)+4>>2];c[ua>>2]=c[(c[(c[la>>2]|0)+28+4>>2]|0)+(c[(c[la>>2]|0)+28>>2]<<3)+4>>2];do{if(c[qa>>2]|0){hb=(Dr()|0)!=0;if(!(hb&(c[ma>>2]|0)!=0)){hb=c[ua>>2]|0;c[va>>2]=hb+(Nr(c[la>>2]|0,c[qa>>2]|0)|0);if(!(Dr()|0))break;Mr(c[la>>2]|0)|0;break;}c[wa>>2]=(c[qa>>2]|0)-((c[qa>>2]|0)>>>0<24?c[qa>>2]|0:24);hb=c[ua>>2]|0;eb=Nr(c[la>>2]|0,(c[qa>>2]|0)-(c[wa>>2]|0)|0)|0;c[va>>2]=hb+(eb<<c[wa>>2]);eb=(Dr()|0)!=0;if(eb|(c[wa>>2]|0)!=0)Mr(c[la>>2]|0)|0;if(c[wa>>2]|0){eb=Nr(c[la>>2]|0,c[wa>>2]|0)|0;c[va>>2]=(c[va>>2]|0)+eb;}}else c[va>>2]=0;}while(0);do{if((c[qa>>2]|0)>>>0<=1){c[va>>2]=(c[va>>2]|0)+((c[sa>>2]|0)==0&1);if(!(c[va>>2]|0)){c[va>>2]=c[(c[la>>2]|0)+44>>2];break;}fb=(c[la>>2]|0)+44|0;if((c[va>>2]|0)==3)Ub=(c[fb>>2]|0)-1|0;else Ub=c[fb+(c[va>>2]<<2)>>2]|0;c[xa>>2]=Ub;c[xa>>2]=(c[xa>>2]|0)+(((c[xa>>2]|0)!=0^1)&1);if((c[va>>2]|0)!=1)c[(c[la>>2]|0)+44+8>>2]=c[(c[la>>2]|0)+44+4>>2];c[(c[la>>2]|0)+44+4>>2]=c[(c[la>>2]|0)+44>>2];fb=c[xa>>2]|0;c[va>>2]=fb;c[(c[la>>2]|0)+44>>2]=fb;}else{c[(c[la>>2]|0)+44+8>>2]=c[(c[la>>2]|0)+44+4>>2];c[(c[la>>2]|0)+44+4>>2]=c[(c[la>>2]|0)+44>>2];c[(c[la>>2]|0)+44>>2]=c[va>>2];}}while(0);c[na+8>>2]=c[va>>2];fb=c[ta>>2]|0;if((c[pa>>2]|0)>>>0>0)Vb=Nr(c[la>>2]|0,c[pa>>2]|0)|0;else Vb=0;c[na+4>>2]=fb+Vb;if(Dr()|0?((c[pa>>2]|0)+(c[oa>>2]|0)|0)>>>0>=20:0)Mr(c[la>>2]|0)|0;fb=(Fr()|0)!=0;if(fb&(c[ra>>2]|0)>>>0>=31)Mr(c[la>>2]|0)|0;fb=c[sa>>2]|0;if((c[oa>>2]|0)>>>0>0)Wb=Nr(c[la>>2]|0,c[oa>>2]|0)|0;else Wb=0;c[na>>2]=fb+Wb;if(Dr()|0)Mr(c[la>>2]|0)|0;c[ya>>2]=(c[(c[la>>2]|0)+64>>2]|0)+(c[na>>2]|0);fb=c[la>>2]|0;if((c[na+8>>2]|0)>>>0>(c[ya>>2]|0)>>>0)Xb=c[fb+60>>2]|0;else Xb=c[fb+56>>2]|0;c[za>>2]=Xb;c[na+12>>2]=(c[za>>2]|0)+(c[ya>>2]|0)+(0-(c[na+8>>2]|0));c[(c[la>>2]|0)+64>>2]=(c[ya>>2]|0)+(c[na+4>>2]|0);fb=c[la>>2]|0;c[ga>>2]=(c[la>>2]|0)+20;c[ha>>2]=fb;fb=(c[(c[ga>>2]|0)+4>>2]|0)+(c[c[ga>>2]>>2]<<3)|0;c[ia>>2]=c[fb>>2];c[ia+4>>2]=c[fb+4>>2];c[ja>>2]=d[ia+3>>0];c[ka>>2]=Or(c[ha>>2]|0,c[ja>>2]|0)|0;c[c[ga>>2]>>2]=(e[ia>>1]|0)+(c[ka>>2]|0);fb=c[la>>2]|0;c[ba>>2]=(c[la>>2]|0)+36;c[ca>>2]=fb;fb=(c[(c[ba>>2]|0)+4>>2]|0)+(c[c[ba>>2]>>2]<<3)|0;c[da>>2]=c[fb>>2];c[da+4>>2]=c[fb+4>>2];c[ea>>2]=d[da+3>>0];c[fa>>2]=Or(c[ca>>2]|0,c[ea>>2]|0)|0;c[c[ba>>2]>>2]=(e[da>>1]|0)+(c[fa>>2]|0);if(Dr()|0)Mr(c[la>>2]|0)|0;fb=c[la>>2]|0;c[Y>>2]=(c[la>>2]|0)+28;c[Z>>2]=fb;fb=(c[(c[Y>>2]|0)+4>>2]|0)+(c[c[Y>>2]>>2]<<3)|0;c[_>>2]=c[fb>>2];c[_+4>>2]=c[fb+4>>2];c[$>>2]=d[_+3>>0];c[aa>>2]=Or(c[Z>>2]|0,c[$>>2]|0)|0;c[c[Y>>2]>>2]=(e[_>>1]|0)+(c[aa>>2]|0);c[Bb>>2]=c[na>>2];c[Bb+4>>2]=c[na+4>>2];c[Bb+8>>2]=c[na+8>>2];c[Bb+12>>2]=c[na+12>>2];fb=c[ob>>2]|0;eb=c[nb>>2]|0;hb=c[qb>>2]|0;gb=c[rb>>2]|0;Lb=c[sb>>2]|0;Kb=c[tb>>2]|0;Yb=X;Zb=ub+(((c[xb>>2]|0)-4&3)<<4)|0;_b=Yb+16|0;do{a[Yb>>0]=a[Zb>>0]|0;Yb=Yb+1|0;Zb=Zb+1|0;}while((Yb|0)<(_b|0));c[H>>2]=fb;c[I>>2]=eb;c[J>>2]=pb;c[K>>2]=hb;c[L>>2]=gb;c[M>>2]=Lb;c[N>>2]=Kb;c[O>>2]=(c[H>>2]|0)+(c[X>>2]|0);c[P>>2]=(c[X>>2]|0)+(c[X+4>>2]|0);c[Q>>2]=(c[H>>2]|0)+(c[P>>2]|0);c[R>>2]=(c[I>>2]|0)+-8;c[S>>2]=(c[c[J>>2]>>2]|0)+(c[X>>2]|0);c[T>>2]=c[X+12>>2];b:do{if((c[Q>>2]|0)>>>0>(c[I>>2]|0)>>>0)c[G>>2]=-70;else{if((c[S>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[G>>2]=-20;break;}Jb=c[H>>2]|0;if((c[O>>2]|0)>>>0>(c[R>>2]|0)>>>0){Ib=c[I>>2]|0;Hb=c[J>>2]|0;k=c[K>>2]|0;Gb=c[L>>2]|0;Mb=c[M>>2]|0;j=c[N>>2]|0;c[n>>2]=c[X>>2];c[n+4>>2]=c[X+4>>2];c[n+8>>2]=c[X+8>>2];c[n+12>>2]=c[X+12>>2];c[G>>2]=Pr(Jb,Ib,n,Hb,k,Gb,Mb,j)|0;break;}Qr(Jb,c[c[J>>2]>>2]|0);if((c[X>>2]|0)>>>0>8)Rr((c[H>>2]|0)+8|0,(c[c[J>>2]>>2]|0)+8|0,(c[X>>2]|0)-8|0);c[H>>2]=c[O>>2];c[c[J>>2]>>2]=c[S>>2];do{if((c[X+8>>2]|0)>>>0>((c[O>>2]|0)-(c[L>>2]|0)|0)>>>0){if((c[X+8>>2]|0)>>>0>((c[O>>2]|0)-(c[M>>2]|0)|0)>>>0){c[G>>2]=-20;break b;}if(((c[T>>2]|0)+(c[X+4>>2]|0)|0)>>>0<=(c[N>>2]|0)>>>0){nE(c[O>>2]|0,c[T>>2]|0,c[X+4>>2]|0)|0;c[G>>2]=c[P>>2];break b;}c[U>>2]=(c[N>>2]|0)-(c[T>>2]|0);nE(c[O>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[H>>2]=(c[O>>2]|0)+(c[U>>2]|0);Jb=X+4|0;c[Jb>>2]=(c[Jb>>2]|0)-(c[U>>2]|0);c[T>>2]=c[L>>2];if((c[H>>2]|0)>>>0<=(c[R>>2]|0)>>>0?(c[X+4>>2]|0)>>>0>=3:0)break;c[V>>2]=0;while(1){if((c[V>>2]|0)>>>0>=(c[X+4>>2]|0)>>>0)break;a[(c[H>>2]|0)+(c[V>>2]|0)>>0]=a[(c[T>>2]|0)+(c[V>>2]|0)>>0]|0;c[V>>2]=(c[V>>2]|0)+1;}c[G>>2]=c[P>>2];break b;}}while(0);if((c[X+8>>2]|0)>>>0<8){c[W>>2]=c[6816+(c[X+8>>2]<<2)>>2];a[c[H>>2]>>0]=a[c[T>>2]>>0]|0;a[(c[H>>2]|0)+1>>0]=a[(c[T>>2]|0)+1>>0]|0;a[(c[H>>2]|0)+2>>0]=a[(c[T>>2]|0)+2>>0]|0;a[(c[H>>2]|0)+3>>0]=a[(c[T>>2]|0)+3>>0]|0;c[T>>2]=(c[T>>2]|0)+(c[6848+(c[X+8>>2]<<2)>>2]|0);Sr((c[H>>2]|0)+4|0,c[T>>2]|0);c[T>>2]=(c[T>>2]|0)+(0-(c[W>>2]|0));}else Qr(c[H>>2]|0,c[T>>2]|0);c[H>>2]=(c[H>>2]|0)+8;c[T>>2]=(c[T>>2]|0)+8;Jb=c[H>>2]|0;c:do{if((c[Q>>2]|0)>>>0>((c[I>>2]|0)+-13|0)>>>0){if(Jb>>>0<(c[R>>2]|0)>>>0){Rr(c[H>>2]|0,c[T>>2]|0,(c[R>>2]|0)-(c[H>>2]|0)|0);c[T>>2]=(c[T>>2]|0)+((c[R>>2]|0)-(c[H>>2]|0));c[H>>2]=c[R>>2];}while(1){if((c[H>>2]|0)>>>0>=(c[Q>>2]|0)>>>0)break c;j=c[T>>2]|0;c[T>>2]=j+1;Mb=a[j>>0]|0;j=c[H>>2]|0;c[H>>2]=j+1;a[j>>0]=Mb;}}else Rr(Jb,c[T>>2]|0,(c[X+4>>2]|0)-8|0);}while(0);c[G>>2]=c[P>>2];}}while(0);c[Cb>>2]=c[G>>2];if($q(c[Cb>>2]|0)|0){$b=118;break;}Kb=ub+((c[xb>>2]&3)<<4)|0;c[Kb>>2]=c[Bb>>2];c[Kb+4>>2]=c[Bb+4>>2];c[Kb+8>>2]=c[Bb+8>>2];c[Kb+12>>2]=c[Bb+12>>2];c[ob>>2]=(c[ob>>2]|0)+(c[Cb>>2]|0);c[xb>>2]=(c[xb>>2]|0)+1;}if(($b|0)==118){c[cb>>2]=c[Cb>>2];Nb=c[cb>>2]|0;l=m;return Nb|0;}if((c[xb>>2]|0)<(c[ib>>2]|0)){c[cb>>2]=-20;Nb=c[cb>>2]|0;l=m;return Nb|0;}c[xb>>2]=(c[xb>>2]|0)-(c[vb>>2]|0);while(1){if((c[xb>>2]|0)>=(c[ib>>2]|0))break;Kb=c[ob>>2]|0;Lb=c[nb>>2]|0;gb=c[qb>>2]|0;hb=c[rb>>2]|0;eb=c[sb>>2]|0;fb=c[tb>>2]|0;Yb=F;Zb=ub+((c[xb>>2]&3)<<4)|0;_b=Yb+16|0;do{a[Yb>>0]=a[Zb>>0]|0;Yb=Yb+1|0;Zb=Zb+1|0;}while((Yb|0)<(_b|0));c[p>>2]=Kb;c[q>>2]=Lb;c[r>>2]=pb;c[s>>2]=gb;c[t>>2]=hb;c[u>>2]=eb;c[v>>2]=fb;c[w>>2]=(c[p>>2]|0)+(c[F>>2]|0);c[x>>2]=(c[F>>2]|0)+(c[F+4>>2]|0);c[y>>2]=(c[p>>2]|0)+(c[x>>2]|0);c[z>>2]=(c[q>>2]|0)+-8;c[A>>2]=(c[c[r>>2]>>2]|0)+(c[F>>2]|0);c[B>>2]=c[F+12>>2];d:do{if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0)c[o>>2]=-70;else{if((c[A>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[o>>2]=-20;break;}Jb=c[p>>2]|0;if((c[w>>2]|0)>>>0>(c[z>>2]|0)>>>0){Mb=c[q>>2]|0;j=c[r>>2]|0;Gb=c[s>>2]|0;k=c[t>>2]|0;Hb=c[u>>2]|0;Ib=c[v>>2]|0;c[n>>2]=c[F>>2];c[n+4>>2]=c[F+4>>2];c[n+8>>2]=c[F+8>>2];c[n+12>>2]=c[F+12>>2];c[o>>2]=Pr(Jb,Mb,n,j,Gb,k,Hb,Ib)|0;break;}Qr(Jb,c[c[r>>2]>>2]|0);if((c[F>>2]|0)>>>0>8)Rr((c[p>>2]|0)+8|0,(c[c[r>>2]>>2]|0)+8|0,(c[F>>2]|0)-8|0);c[p>>2]=c[w>>2];c[c[r>>2]>>2]=c[A>>2];do{if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[t>>2]|0)|0)>>>0){if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[u>>2]|0)|0)>>>0){c[o>>2]=-20;break d;}if(((c[B>>2]|0)+(c[F+4>>2]|0)|0)>>>0<=(c[v>>2]|0)>>>0){nE(c[w>>2]|0,c[B>>2]|0,c[F+4>>2]|0)|0;c[o>>2]=c[x>>2];break d;}c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);nE(c[w>>2]|0,c[B>>2]|0,c[C>>2]|0)|0;c[p>>2]=(c[w>>2]|0)+(c[C>>2]|0);Jb=F+4|0;c[Jb>>2]=(c[Jb>>2]|0)-(c[C>>2]|0);c[B>>2]=c[t>>2];if((c[p>>2]|0)>>>0<=(c[z>>2]|0)>>>0?(c[F+4>>2]|0)>>>0>=3:0)break;c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[F+4>>2]|0)>>>0)break;a[(c[p>>2]|0)+(c[D>>2]|0)>>0]=a[(c[B>>2]|0)+(c[D>>2]|0)>>0]|0;c[D>>2]=(c[D>>2]|0)+1;}c[o>>2]=c[x>>2];break d;}}while(0);if((c[F+8>>2]|0)>>>0<8){c[E>>2]=c[6816+(c[F+8>>2]<<2)>>2];a[c[p>>2]>>0]=a[c[B>>2]>>0]|0;a[(c[p>>2]|0)+1>>0]=a[(c[B>>2]|0)+1>>0]|0;a[(c[p>>2]|0)+2>>0]=a[(c[B>>2]|0)+2>>0]|0;a[(c[p>>2]|0)+3>>0]=a[(c[B>>2]|0)+3>>0]|0;c[B>>2]=(c[B>>2]|0)+(c[6848+(c[F+8>>2]<<2)>>2]|0);Sr((c[p>>2]|0)+4|0,c[B>>2]|0);c[B>>2]=(c[B>>2]|0)+(0-(c[E>>2]|0));}else Qr(c[p>>2]|0,c[B>>2]|0);c[p>>2]=(c[p>>2]|0)+8;c[B>>2]=(c[B>>2]|0)+8;Jb=c[p>>2]|0;e:do{if((c[y>>2]|0)>>>0>((c[q>>2]|0)+-13|0)>>>0){if(Jb>>>0<(c[z>>2]|0)>>>0){Rr(c[p>>2]|0,c[B>>2]|0,(c[z>>2]|0)-(c[p>>2]|0)|0);c[B>>2]=(c[B>>2]|0)+((c[z>>2]|0)-(c[p>>2]|0));c[p>>2]=c[z>>2];}while(1){if((c[p>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break e;Ib=c[B>>2]|0;c[B>>2]=Ib+1;Hb=a[Ib>>0]|0;Ib=c[p>>2]|0;c[p>>2]=Ib+1;a[Ib>>0]=Hb;}}else Rr(Jb,c[B>>2]|0,(c[F+4>>2]|0)-8|0);}while(0);c[o>>2]=c[x>>2];}}while(0);c[Db>>2]=c[o>>2];fb=($q(c[Db>>2]|0)|0)!=0;ac=c[Db>>2]|0;if(fb){$b=155;break;}c[ob>>2]=(c[ob>>2]|0)+ac;c[xb>>2]=(c[xb>>2]|0)+1;}if(($b|0)==155){c[cb>>2]=ac;Nb=c[cb>>2]|0;l=m;return Nb|0;}c[Eb>>2]=0;while(1){if((c[Eb>>2]|0)>>>0>=3)break a;c[(c[db>>2]|0)+16+28700+(c[Eb>>2]<<2)>>2]=c[wb+44+(c[Eb>>2]<<2)>>2];c[Eb>>2]=(c[Eb>>2]|0)+1;}}}while(0);c[Fb>>2]=(c[qb>>2]|0)-(c[pb>>2]|0);if((c[Fb>>2]|0)>>>0>((c[nb>>2]|0)-(c[ob>>2]|0)|0)>>>0){c[cb>>2]=-70;Nb=c[cb>>2]|0;l=m;return Nb|0;}else{mE(c[ob>>2]|0,c[pb>>2]|0,c[Fb>>2]|0)|0;c[ob>>2]=(c[ob>>2]|0)+(c[Fb>>2]|0);c[cb>>2]=(c[ob>>2]|0)-(c[mb>>2]|0);Nb=c[cb>>2]|0;l=m;return Nb|0;}return 0;}function Yr(b,f,g,h,i,j,k){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0;m=l;l=l+784|0;n=m+760|0;o=m+756|0;p=m+752|0;q=m+748|0;r=m+744|0;s=m+740|0;t=m+736|0;u=m+732|0;v=m+728|0;w=m+724|0;x=m+720|0;y=m+716|0;z=m+712|0;A=m+708|0;B=m+704|0;C=m+700|0;D=m+696|0;E=m+692|0;F=m+80|0;G=m+688|0;H=m+684|0;I=m+680|0;J=m+676|0;K=m+672|0;L=m+668|0;M=m+664|0;N=m+660|0;O=m+656|0;P=m+652|0;Q=m+648|0;R=m+644|0;S=m+640|0;T=m+636|0;U=m+632|0;V=m+628|0;W=m+624|0;X=m+64|0;Y=m+620|0;Z=m+616|0;_=m+608|0;$=m+604|0;aa=m+600|0;ba=m+596|0;ca=m+592|0;da=m+584|0;ea=m+580|0;fa=m+576|0;ga=m+572|0;ha=m+568|0;ia=m+560|0;ja=m+556|0;ka=m+552|0;la=m+548|0;ma=m+544|0;na=m+528|0;oa=m+524|0;pa=m+520|0;qa=m+516|0;ra=m+512|0;sa=m+508|0;ta=m+504|0;ua=m+500|0;va=m+496|0;wa=m+492|0;xa=m+488|0;ya=m+484|0;za=m+480|0;Aa=m+476|0;Ba=m+472|0;Ca=m+464|0;Da=m+460|0;Ea=m+456|0;Fa=m+452|0;Ga=m+448|0;Ha=m+440|0;Ia=m+436|0;Ja=m+432|0;Ka=m+428|0;La=m+424|0;Ma=m+416|0;Na=m+412|0;Oa=m+408|0;Pa=m+404|0;Qa=m+400|0;Ra=m+384|0;Sa=m+376|0;Ta=m+372|0;Ua=m+368|0;Va=m+364|0;Wa=m+360|0;Xa=m+356|0;Ya=m+352|0;Za=m+348|0;_a=m+344|0;$a=m+340|0;ab=m+336|0;bb=m+332|0;cb=m+328|0;db=m+324|0;eb=m+320|0;fb=m+316|0;gb=m+312|0;hb=m+308|0;ib=m+304|0;jb=m+300|0;kb=m+296|0;lb=m+292|0;mb=m+288|0;nb=m+284|0;ob=m+280|0;pb=m+276|0;qb=m+272|0;rb=m+268|0;sb=m+264|0;tb=m+260|0;ub=m;vb=m+256|0;wb=m+188|0;xb=m+184|0;yb=m+180|0;zb=m+176|0;Ab=m+160|0;Bb=m+144|0;Cb=m+136|0;Db=m+132|0;Eb=m+128|0;Fb=m+124|0;Gb=m+120|0;Hb=m+116|0;Ib=m+112|0;Jb=m+108|0;Kb=m+104|0;Lb=m+100|0;Mb=m+96|0;c[Gb>>2]=b;c[Hb>>2]=f;c[Ib>>2]=g;c[Jb>>2]=h;c[Kb>>2]=i;c[Lb>>2]=j;c[Mb>>2]=k;k=c[Hb>>2]|0;Hb=c[Ib>>2]|0;Ib=c[Jb>>2]|0;Jb=c[Kb>>2]|0;Kb=c[Lb>>2]|0;Lb=c[Mb>>2]|0;c[db>>2]=c[Gb>>2];c[eb>>2]=k;c[fb>>2]=Hb;c[gb>>2]=Ib;c[hb>>2]=Jb;c[ib>>2]=Kb;c[jb>>2]=Lb;c[kb>>2]=c[gb>>2];c[lb>>2]=(c[kb>>2]|0)+(c[hb>>2]|0);c[mb>>2]=c[eb>>2];c[nb>>2]=(c[mb>>2]|0)+(c[fb>>2]|0);c[ob>>2]=c[mb>>2];c[pb>>2]=c[(c[db>>2]|0)+28916>>2];c[qb>>2]=(c[pb>>2]|0)+(c[(c[db>>2]|0)+28932>>2]|0);c[rb>>2]=c[(c[db>>2]|0)+28732>>2];c[sb>>2]=c[(c[db>>2]|0)+28736>>2];c[tb>>2]=c[(c[db>>2]|0)+28740>>2];a:do{if(c[ib>>2]|0){c[vb>>2]=(c[ib>>2]|0)<4?c[ib>>2]|0:4;c[(c[db>>2]|0)+28812>>2]=1;c[yb>>2]=0;while(1){if((c[yb>>2]|0)>>>0>=3)break;c[wb+44+(c[yb>>2]<<2)>>2]=c[(c[db>>2]|0)+16+28700+(c[yb>>2]<<2)>>2];c[yb>>2]=(c[yb>>2]|0)+1;}c[wb+56>>2]=c[rb>>2];c[wb+64>>2]=(c[ob>>2]|0)-(c[rb>>2]|0);c[wb+60>>2]=c[tb>>2];c[zb>>2]=Kr(wb,c[kb>>2]|0,(c[lb>>2]|0)-(c[kb>>2]|0)|0)|0;if($q(c[zb>>2]|0)|0){c[cb>>2]=-20;Nb=c[cb>>2]|0;l=m;return Nb|0;}Lr(wb+20|0,wb,c[c[db>>2]>>2]|0);Lr(wb+28|0,wb,c[(c[db>>2]|0)+8>>2]|0);Lr(wb+36|0,wb,c[(c[db>>2]|0)+4>>2]|0);c[xb>>2]=0;while(1){if((Mr(wb)|0)>>>0<=2)Ob=(c[xb>>2]|0)<(c[vb>>2]|0);else Ob=0;Pb=c[xb>>2]|0;if(!Ob)break;fb=ub+(Pb<<4)|0;eb=c[jb>>2]|0;c[Pa>>2]=wb;c[Qa>>2]=eb;c[Sa>>2]=d[(c[(c[Pa>>2]|0)+20+4>>2]|0)+(c[(c[Pa>>2]|0)+20>>2]<<3)+2>>0];c[Ta>>2]=d[(c[(c[Pa>>2]|0)+36+4>>2]|0)+(c[(c[Pa>>2]|0)+36>>2]<<3)+2>>0];c[Ua>>2]=d[(c[(c[Pa>>2]|0)+28+4>>2]|0)+(c[(c[Pa>>2]|0)+28>>2]<<3)+2>>0];c[Va>>2]=(c[Sa>>2]|0)+(c[Ta>>2]|0)+(c[Ua>>2]|0);c[Wa>>2]=c[(c[(c[Pa>>2]|0)+20+4>>2]|0)+(c[(c[Pa>>2]|0)+20>>2]<<3)+4>>2];c[Xa>>2]=c[(c[(c[Pa>>2]|0)+36+4>>2]|0)+(c[(c[Pa>>2]|0)+36>>2]<<3)+4>>2];c[Ya>>2]=c[(c[(c[Pa>>2]|0)+28+4>>2]|0)+(c[(c[Pa>>2]|0)+28>>2]<<3)+4>>2];do{if(c[Ua>>2]|0){eb=(Dr()|0)!=0;if(!(eb&(c[Qa>>2]|0)!=0)){eb=c[Ya>>2]|0;c[Za>>2]=eb+(Nr(c[Pa>>2]|0,c[Ua>>2]|0)|0);if(!(Dr()|0))break;Mr(c[Pa>>2]|0)|0;break;}c[_a>>2]=(c[Ua>>2]|0)-((c[Ua>>2]|0)>>>0<24?c[Ua>>2]|0:24);eb=c[Ya>>2]|0;hb=Nr(c[Pa>>2]|0,(c[Ua>>2]|0)-(c[_a>>2]|0)|0)|0;c[Za>>2]=eb+(hb<<c[_a>>2]);hb=(Dr()|0)!=0;if(hb|(c[_a>>2]|0)!=0)Mr(c[Pa>>2]|0)|0;if(c[_a>>2]|0){hb=Nr(c[Pa>>2]|0,c[_a>>2]|0)|0;c[Za>>2]=(c[Za>>2]|0)+hb;}}else c[Za>>2]=0;}while(0);do{if((c[Ua>>2]|0)>>>0<=1){c[Za>>2]=(c[Za>>2]|0)+((c[Wa>>2]|0)==0&1);if(!(c[Za>>2]|0)){c[Za>>2]=c[(c[Pa>>2]|0)+44>>2];break;}hb=(c[Pa>>2]|0)+44|0;if((c[Za>>2]|0)==3)Qb=(c[hb>>2]|0)-1|0;else Qb=c[hb+(c[Za>>2]<<2)>>2]|0;c[$a>>2]=Qb;c[$a>>2]=(c[$a>>2]|0)+(((c[$a>>2]|0)!=0^1)&1);if((c[Za>>2]|0)!=1)c[(c[Pa>>2]|0)+44+8>>2]=c[(c[Pa>>2]|0)+44+4>>2];c[(c[Pa>>2]|0)+44+4>>2]=c[(c[Pa>>2]|0)+44>>2];hb=c[$a>>2]|0;c[Za>>2]=hb;c[(c[Pa>>2]|0)+44>>2]=hb;}else{c[(c[Pa>>2]|0)+44+8>>2]=c[(c[Pa>>2]|0)+44+4>>2];c[(c[Pa>>2]|0)+44+4>>2]=c[(c[Pa>>2]|0)+44>>2];c[(c[Pa>>2]|0)+44>>2]=c[Za>>2];}}while(0);c[Ra+8>>2]=c[Za>>2];hb=c[Xa>>2]|0;if((c[Ta>>2]|0)>>>0>0)Rb=Nr(c[Pa>>2]|0,c[Ta>>2]|0)|0;else Rb=0;c[Ra+4>>2]=hb+Rb;if(Dr()|0?((c[Ta>>2]|0)+(c[Sa>>2]|0)|0)>>>0>=20:0)Mr(c[Pa>>2]|0)|0;hb=(Fr()|0)!=0;if(hb&(c[Va>>2]|0)>>>0>=31)Mr(c[Pa>>2]|0)|0;hb=c[Wa>>2]|0;if((c[Sa>>2]|0)>>>0>0)Sb=Nr(c[Pa>>2]|0,c[Sa>>2]|0)|0;else Sb=0;c[Ra>>2]=hb+Sb;if(Dr()|0)Mr(c[Pa>>2]|0)|0;c[ab>>2]=(c[(c[Pa>>2]|0)+64>>2]|0)+(c[Ra>>2]|0);hb=c[Pa>>2]|0;if((c[Ra+8>>2]|0)>>>0>(c[ab>>2]|0)>>>0)Tb=c[hb+60>>2]|0;else Tb=c[hb+56>>2]|0;c[bb>>2]=Tb;c[Ra+12>>2]=(c[bb>>2]|0)+(c[ab>>2]|0)+(0-(c[Ra+8>>2]|0));c[(c[Pa>>2]|0)+64>>2]=(c[ab>>2]|0)+(c[Ra+4>>2]|0);hb=c[Pa>>2]|0;c[Ka>>2]=(c[Pa>>2]|0)+20;c[La>>2]=hb;hb=(c[(c[Ka>>2]|0)+4>>2]|0)+(c[c[Ka>>2]>>2]<<3)|0;c[Ma>>2]=c[hb>>2];c[Ma+4>>2]=c[hb+4>>2];c[Na>>2]=d[Ma+3>>0];c[Oa>>2]=Or(c[La>>2]|0,c[Na>>2]|0)|0;c[c[Ka>>2]>>2]=(e[Ma>>1]|0)+(c[Oa>>2]|0);hb=c[Pa>>2]|0;c[Fa>>2]=(c[Pa>>2]|0)+36;c[Ga>>2]=hb;hb=(c[(c[Fa>>2]|0)+4>>2]|0)+(c[c[Fa>>2]>>2]<<3)|0;c[Ha>>2]=c[hb>>2];c[Ha+4>>2]=c[hb+4>>2];c[Ia>>2]=d[Ha+3>>0];c[Ja>>2]=Or(c[Ga>>2]|0,c[Ia>>2]|0)|0;c[c[Fa>>2]>>2]=(e[Ha>>1]|0)+(c[Ja>>2]|0);if(Dr()|0)Mr(c[Pa>>2]|0)|0;hb=c[Pa>>2]|0;c[Aa>>2]=(c[Pa>>2]|0)+28;c[Ba>>2]=hb;hb=(c[(c[Aa>>2]|0)+4>>2]|0)+(c[c[Aa>>2]>>2]<<3)|0;c[Ca>>2]=c[hb>>2];c[Ca+4>>2]=c[hb+4>>2];c[Da>>2]=d[Ca+3>>0];c[Ea>>2]=Or(c[Ba>>2]|0,c[Da>>2]|0)|0;c[c[Aa>>2]>>2]=(e[Ca>>1]|0)+(c[Ea>>2]|0);c[Ab>>2]=c[Ra>>2];c[Ab+4>>2]=c[Ra+4>>2];c[Ab+8>>2]=c[Ra+8>>2];c[Ab+12>>2]=c[Ra+12>>2];c[fb>>2]=c[Ab>>2];c[fb+4>>2]=c[Ab+4>>2];c[fb+8>>2]=c[Ab+8>>2];c[fb+12>>2]=c[Ab+12>>2];c[xb>>2]=(c[xb>>2]|0)+1;}if((Pb|0)<(c[vb>>2]|0)){c[cb>>2]=-20;Nb=c[cb>>2]|0;l=m;return Nb|0;}while(1){if((Mr(wb)|0)>>>0>2)break;if((c[xb>>2]|0)>=(c[ib>>2]|0))break;hb=c[jb>>2]|0;c[la>>2]=wb;c[ma>>2]=hb;c[oa>>2]=d[(c[(c[la>>2]|0)+20+4>>2]|0)+(c[(c[la>>2]|0)+20>>2]<<3)+2>>0];c[pa>>2]=d[(c[(c[la>>2]|0)+36+4>>2]|0)+(c[(c[la>>2]|0)+36>>2]<<3)+2>>0];c[qa>>2]=d[(c[(c[la>>2]|0)+28+4>>2]|0)+(c[(c[la>>2]|0)+28>>2]<<3)+2>>0];c[ra>>2]=(c[oa>>2]|0)+(c[pa>>2]|0)+(c[qa>>2]|0);c[sa>>2]=c[(c[(c[la>>2]|0)+20+4>>2]|0)+(c[(c[la>>2]|0)+20>>2]<<3)+4>>2];c[ta>>2]=c[(c[(c[la>>2]|0)+36+4>>2]|0)+(c[(c[la>>2]|0)+36>>2]<<3)+4>>2];c[ua>>2]=c[(c[(c[la>>2]|0)+28+4>>2]|0)+(c[(c[la>>2]|0)+28>>2]<<3)+4>>2];do{if(c[qa>>2]|0){hb=(Dr()|0)!=0;if(!(hb&(c[ma>>2]|0)!=0)){hb=c[ua>>2]|0;c[va>>2]=hb+(Nr(c[la>>2]|0,c[qa>>2]|0)|0);if(!(Dr()|0))break;Mr(c[la>>2]|0)|0;break;}c[wa>>2]=(c[qa>>2]|0)-((c[qa>>2]|0)>>>0<24?c[qa>>2]|0:24);hb=c[ua>>2]|0;eb=Nr(c[la>>2]|0,(c[qa>>2]|0)-(c[wa>>2]|0)|0)|0;c[va>>2]=hb+(eb<<c[wa>>2]);eb=(Dr()|0)!=0;if(eb|(c[wa>>2]|0)!=0)Mr(c[la>>2]|0)|0;if(c[wa>>2]|0){eb=Nr(c[la>>2]|0,c[wa>>2]|0)|0;c[va>>2]=(c[va>>2]|0)+eb;}}else c[va>>2]=0;}while(0);do{if((c[qa>>2]|0)>>>0<=1){c[va>>2]=(c[va>>2]|0)+((c[sa>>2]|0)==0&1);if(!(c[va>>2]|0)){c[va>>2]=c[(c[la>>2]|0)+44>>2];break;}fb=(c[la>>2]|0)+44|0;if((c[va>>2]|0)==3)Ub=(c[fb>>2]|0)-1|0;else Ub=c[fb+(c[va>>2]<<2)>>2]|0;c[xa>>2]=Ub;c[xa>>2]=(c[xa>>2]|0)+(((c[xa>>2]|0)!=0^1)&1);if((c[va>>2]|0)!=1)c[(c[la>>2]|0)+44+8>>2]=c[(c[la>>2]|0)+44+4>>2];c[(c[la>>2]|0)+44+4>>2]=c[(c[la>>2]|0)+44>>2];fb=c[xa>>2]|0;c[va>>2]=fb;c[(c[la>>2]|0)+44>>2]=fb;}else{c[(c[la>>2]|0)+44+8>>2]=c[(c[la>>2]|0)+44+4>>2];c[(c[la>>2]|0)+44+4>>2]=c[(c[la>>2]|0)+44>>2];c[(c[la>>2]|0)+44>>2]=c[va>>2];}}while(0);c[na+8>>2]=c[va>>2];fb=c[ta>>2]|0;if((c[pa>>2]|0)>>>0>0)Vb=Nr(c[la>>2]|0,c[pa>>2]|0)|0;else Vb=0;c[na+4>>2]=fb+Vb;if(Dr()|0?((c[pa>>2]|0)+(c[oa>>2]|0)|0)>>>0>=20:0)Mr(c[la>>2]|0)|0;fb=(Fr()|0)!=0;if(fb&(c[ra>>2]|0)>>>0>=31)Mr(c[la>>2]|0)|0;fb=c[sa>>2]|0;if((c[oa>>2]|0)>>>0>0)Wb=Nr(c[la>>2]|0,c[oa>>2]|0)|0;else Wb=0;c[na>>2]=fb+Wb;if(Dr()|0)Mr(c[la>>2]|0)|0;c[ya>>2]=(c[(c[la>>2]|0)+64>>2]|0)+(c[na>>2]|0);fb=c[la>>2]|0;if((c[na+8>>2]|0)>>>0>(c[ya>>2]|0)>>>0)Xb=c[fb+60>>2]|0;else Xb=c[fb+56>>2]|0;c[za>>2]=Xb;c[na+12>>2]=(c[za>>2]|0)+(c[ya>>2]|0)+(0-(c[na+8>>2]|0));c[(c[la>>2]|0)+64>>2]=(c[ya>>2]|0)+(c[na+4>>2]|0);fb=c[la>>2]|0;c[ga>>2]=(c[la>>2]|0)+20;c[ha>>2]=fb;fb=(c[(c[ga>>2]|0)+4>>2]|0)+(c[c[ga>>2]>>2]<<3)|0;c[ia>>2]=c[fb>>2];c[ia+4>>2]=c[fb+4>>2];c[ja>>2]=d[ia+3>>0];c[ka>>2]=Or(c[ha>>2]|0,c[ja>>2]|0)|0;c[c[ga>>2]>>2]=(e[ia>>1]|0)+(c[ka>>2]|0);fb=c[la>>2]|0;c[ba>>2]=(c[la>>2]|0)+36;c[ca>>2]=fb;fb=(c[(c[ba>>2]|0)+4>>2]|0)+(c[c[ba>>2]>>2]<<3)|0;c[da>>2]=c[fb>>2];c[da+4>>2]=c[fb+4>>2];c[ea>>2]=d[da+3>>0];c[fa>>2]=Or(c[ca>>2]|0,c[ea>>2]|0)|0;c[c[ba>>2]>>2]=(e[da>>1]|0)+(c[fa>>2]|0);if(Dr()|0)Mr(c[la>>2]|0)|0;fb=c[la>>2]|0;c[Y>>2]=(c[la>>2]|0)+28;c[Z>>2]=fb;fb=(c[(c[Y>>2]|0)+4>>2]|0)+(c[c[Y>>2]>>2]<<3)|0;c[_>>2]=c[fb>>2];c[_+4>>2]=c[fb+4>>2];c[$>>2]=d[_+3>>0];c[aa>>2]=Or(c[Z>>2]|0,c[$>>2]|0)|0;c[c[Y>>2]>>2]=(e[_>>1]|0)+(c[aa>>2]|0);c[Bb>>2]=c[na>>2];c[Bb+4>>2]=c[na+4>>2];c[Bb+8>>2]=c[na+8>>2];c[Bb+12>>2]=c[na+12>>2];fb=c[ob>>2]|0;eb=c[nb>>2]|0;hb=c[qb>>2]|0;gb=c[rb>>2]|0;Lb=c[sb>>2]|0;Kb=c[tb>>2]|0;Yb=X;Zb=ub+(((c[xb>>2]|0)-4&3)<<4)|0;_b=Yb+16|0;do{a[Yb>>0]=a[Zb>>0]|0;Yb=Yb+1|0;Zb=Zb+1|0;}while((Yb|0)<(_b|0));c[H>>2]=fb;c[I>>2]=eb;c[J>>2]=pb;c[K>>2]=hb;c[L>>2]=gb;c[M>>2]=Lb;c[N>>2]=Kb;c[O>>2]=(c[H>>2]|0)+(c[X>>2]|0);c[P>>2]=(c[X>>2]|0)+(c[X+4>>2]|0);c[Q>>2]=(c[H>>2]|0)+(c[P>>2]|0);c[R>>2]=(c[I>>2]|0)+-8;c[S>>2]=(c[c[J>>2]>>2]|0)+(c[X>>2]|0);c[T>>2]=c[X+12>>2];b:do{if((c[Q>>2]|0)>>>0>(c[I>>2]|0)>>>0)c[G>>2]=-70;else{if((c[S>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[G>>2]=-20;break;}Jb=c[H>>2]|0;if((c[O>>2]|0)>>>0>(c[R>>2]|0)>>>0){Ib=c[I>>2]|0;Hb=c[J>>2]|0;k=c[K>>2]|0;Gb=c[L>>2]|0;Mb=c[M>>2]|0;j=c[N>>2]|0;c[n>>2]=c[X>>2];c[n+4>>2]=c[X+4>>2];c[n+8>>2]=c[X+8>>2];c[n+12>>2]=c[X+12>>2];c[G>>2]=Pr(Jb,Ib,n,Hb,k,Gb,Mb,j)|0;break;}Qr(Jb,c[c[J>>2]>>2]|0);if((c[X>>2]|0)>>>0>8)Rr((c[H>>2]|0)+8|0,(c[c[J>>2]>>2]|0)+8|0,(c[X>>2]|0)-8|0);c[H>>2]=c[O>>2];c[c[J>>2]>>2]=c[S>>2];do{if((c[X+8>>2]|0)>>>0>((c[O>>2]|0)-(c[L>>2]|0)|0)>>>0){if((c[X+8>>2]|0)>>>0>((c[O>>2]|0)-(c[M>>2]|0)|0)>>>0){c[G>>2]=-20;break b;}if(((c[T>>2]|0)+(c[X+4>>2]|0)|0)>>>0<=(c[N>>2]|0)>>>0){nE(c[O>>2]|0,c[T>>2]|0,c[X+4>>2]|0)|0;c[G>>2]=c[P>>2];break b;}c[U>>2]=(c[N>>2]|0)-(c[T>>2]|0);nE(c[O>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[H>>2]=(c[O>>2]|0)+(c[U>>2]|0);Jb=X+4|0;c[Jb>>2]=(c[Jb>>2]|0)-(c[U>>2]|0);c[T>>2]=c[L>>2];if((c[H>>2]|0)>>>0<=(c[R>>2]|0)>>>0?(c[X+4>>2]|0)>>>0>=3:0)break;c[V>>2]=0;while(1){if((c[V>>2]|0)>>>0>=(c[X+4>>2]|0)>>>0)break;a[(c[H>>2]|0)+(c[V>>2]|0)>>0]=a[(c[T>>2]|0)+(c[V>>2]|0)>>0]|0;c[V>>2]=(c[V>>2]|0)+1;}c[G>>2]=c[P>>2];break b;}}while(0);if((c[X+8>>2]|0)>>>0<8){c[W>>2]=c[6816+(c[X+8>>2]<<2)>>2];a[c[H>>2]>>0]=a[c[T>>2]>>0]|0;a[(c[H>>2]|0)+1>>0]=a[(c[T>>2]|0)+1>>0]|0;a[(c[H>>2]|0)+2>>0]=a[(c[T>>2]|0)+2>>0]|0;a[(c[H>>2]|0)+3>>0]=a[(c[T>>2]|0)+3>>0]|0;c[T>>2]=(c[T>>2]|0)+(c[6848+(c[X+8>>2]<<2)>>2]|0);Sr((c[H>>2]|0)+4|0,c[T>>2]|0);c[T>>2]=(c[T>>2]|0)+(0-(c[W>>2]|0));}else Qr(c[H>>2]|0,c[T>>2]|0);c[H>>2]=(c[H>>2]|0)+8;c[T>>2]=(c[T>>2]|0)+8;Jb=c[H>>2]|0;c:do{if((c[Q>>2]|0)>>>0>((c[I>>2]|0)+-13|0)>>>0){if(Jb>>>0<(c[R>>2]|0)>>>0){Rr(c[H>>2]|0,c[T>>2]|0,(c[R>>2]|0)-(c[H>>2]|0)|0);c[T>>2]=(c[T>>2]|0)+((c[R>>2]|0)-(c[H>>2]|0));c[H>>2]=c[R>>2];}while(1){if((c[H>>2]|0)>>>0>=(c[Q>>2]|0)>>>0)break c;j=c[T>>2]|0;c[T>>2]=j+1;Mb=a[j>>0]|0;j=c[H>>2]|0;c[H>>2]=j+1;a[j>>0]=Mb;}}else Rr(Jb,c[T>>2]|0,(c[X+4>>2]|0)-8|0);}while(0);c[G>>2]=c[P>>2];}}while(0);c[Cb>>2]=c[G>>2];if($q(c[Cb>>2]|0)|0){$b=118;break;}Kb=ub+((c[xb>>2]&3)<<4)|0;c[Kb>>2]=c[Bb>>2];c[Kb+4>>2]=c[Bb+4>>2];c[Kb+8>>2]=c[Bb+8>>2];c[Kb+12>>2]=c[Bb+12>>2];c[ob>>2]=(c[ob>>2]|0)+(c[Cb>>2]|0);c[xb>>2]=(c[xb>>2]|0)+1;}if(($b|0)==118){c[cb>>2]=c[Cb>>2];Nb=c[cb>>2]|0;l=m;return Nb|0;}if((c[xb>>2]|0)<(c[ib>>2]|0)){c[cb>>2]=-20;Nb=c[cb>>2]|0;l=m;return Nb|0;}c[xb>>2]=(c[xb>>2]|0)-(c[vb>>2]|0);while(1){if((c[xb>>2]|0)>=(c[ib>>2]|0))break;Kb=c[ob>>2]|0;Lb=c[nb>>2]|0;gb=c[qb>>2]|0;hb=c[rb>>2]|0;eb=c[sb>>2]|0;fb=c[tb>>2]|0;Yb=F;Zb=ub+((c[xb>>2]&3)<<4)|0;_b=Yb+16|0;do{a[Yb>>0]=a[Zb>>0]|0;Yb=Yb+1|0;Zb=Zb+1|0;}while((Yb|0)<(_b|0));c[p>>2]=Kb;c[q>>2]=Lb;c[r>>2]=pb;c[s>>2]=gb;c[t>>2]=hb;c[u>>2]=eb;c[v>>2]=fb;c[w>>2]=(c[p>>2]|0)+(c[F>>2]|0);c[x>>2]=(c[F>>2]|0)+(c[F+4>>2]|0);c[y>>2]=(c[p>>2]|0)+(c[x>>2]|0);c[z>>2]=(c[q>>2]|0)+-8;c[A>>2]=(c[c[r>>2]>>2]|0)+(c[F>>2]|0);c[B>>2]=c[F+12>>2];d:do{if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0)c[o>>2]=-70;else{if((c[A>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[o>>2]=-20;break;}Jb=c[p>>2]|0;if((c[w>>2]|0)>>>0>(c[z>>2]|0)>>>0){Mb=c[q>>2]|0;j=c[r>>2]|0;Gb=c[s>>2]|0;k=c[t>>2]|0;Hb=c[u>>2]|0;Ib=c[v>>2]|0;c[n>>2]=c[F>>2];c[n+4>>2]=c[F+4>>2];c[n+8>>2]=c[F+8>>2];c[n+12>>2]=c[F+12>>2];c[o>>2]=Pr(Jb,Mb,n,j,Gb,k,Hb,Ib)|0;break;}Qr(Jb,c[c[r>>2]>>2]|0);if((c[F>>2]|0)>>>0>8)Rr((c[p>>2]|0)+8|0,(c[c[r>>2]>>2]|0)+8|0,(c[F>>2]|0)-8|0);c[p>>2]=c[w>>2];c[c[r>>2]>>2]=c[A>>2];do{if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[t>>2]|0)|0)>>>0){if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[u>>2]|0)|0)>>>0){c[o>>2]=-20;break d;}if(((c[B>>2]|0)+(c[F+4>>2]|0)|0)>>>0<=(c[v>>2]|0)>>>0){nE(c[w>>2]|0,c[B>>2]|0,c[F+4>>2]|0)|0;c[o>>2]=c[x>>2];break d;}c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);nE(c[w>>2]|0,c[B>>2]|0,c[C>>2]|0)|0;c[p>>2]=(c[w>>2]|0)+(c[C>>2]|0);Jb=F+4|0;c[Jb>>2]=(c[Jb>>2]|0)-(c[C>>2]|0);c[B>>2]=c[t>>2];if((c[p>>2]|0)>>>0<=(c[z>>2]|0)>>>0?(c[F+4>>2]|0)>>>0>=3:0)break;c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[F+4>>2]|0)>>>0)break;a[(c[p>>2]|0)+(c[D>>2]|0)>>0]=a[(c[B>>2]|0)+(c[D>>2]|0)>>0]|0;c[D>>2]=(c[D>>2]|0)+1;}c[o>>2]=c[x>>2];break d;}}while(0);if((c[F+8>>2]|0)>>>0<8){c[E>>2]=c[6816+(c[F+8>>2]<<2)>>2];a[c[p>>2]>>0]=a[c[B>>2]>>0]|0;a[(c[p>>2]|0)+1>>0]=a[(c[B>>2]|0)+1>>0]|0;a[(c[p>>2]|0)+2>>0]=a[(c[B>>2]|0)+2>>0]|0;a[(c[p>>2]|0)+3>>0]=a[(c[B>>2]|0)+3>>0]|0;c[B>>2]=(c[B>>2]|0)+(c[6848+(c[F+8>>2]<<2)>>2]|0);Sr((c[p>>2]|0)+4|0,c[B>>2]|0);c[B>>2]=(c[B>>2]|0)+(0-(c[E>>2]|0));}else Qr(c[p>>2]|0,c[B>>2]|0);c[p>>2]=(c[p>>2]|0)+8;c[B>>2]=(c[B>>2]|0)+8;Jb=c[p>>2]|0;e:do{if((c[y>>2]|0)>>>0>((c[q>>2]|0)+-13|0)>>>0){if(Jb>>>0<(c[z>>2]|0)>>>0){Rr(c[p>>2]|0,c[B>>2]|0,(c[z>>2]|0)-(c[p>>2]|0)|0);c[B>>2]=(c[B>>2]|0)+((c[z>>2]|0)-(c[p>>2]|0));c[p>>2]=c[z>>2];}while(1){if((c[p>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break e;Ib=c[B>>2]|0;c[B>>2]=Ib+1;Hb=a[Ib>>0]|0;Ib=c[p>>2]|0;c[p>>2]=Ib+1;a[Ib>>0]=Hb;}}else Rr(Jb,c[B>>2]|0,(c[F+4>>2]|0)-8|0);}while(0);c[o>>2]=c[x>>2];}}while(0);c[Db>>2]=c[o>>2];fb=($q(c[Db>>2]|0)|0)!=0;ac=c[Db>>2]|0;if(fb){$b=155;break;}c[ob>>2]=(c[ob>>2]|0)+ac;c[xb>>2]=(c[xb>>2]|0)+1;}if(($b|0)==155){c[cb>>2]=ac;Nb=c[cb>>2]|0;l=m;return Nb|0;}c[Eb>>2]=0;while(1){if((c[Eb>>2]|0)>>>0>=3)break a;c[(c[db>>2]|0)+16+28700+(c[Eb>>2]<<2)>>2]=c[wb+44+(c[Eb>>2]<<2)>>2];c[Eb>>2]=(c[Eb>>2]|0)+1;}}}while(0);c[Fb>>2]=(c[qb>>2]|0)-(c[pb>>2]|0);if((c[Fb>>2]|0)>>>0>((c[nb>>2]|0)-(c[ob>>2]|0)|0)>>>0){c[cb>>2]=-70;Nb=c[cb>>2]|0;l=m;return Nb|0;}else{mE(c[ob>>2]|0,c[pb>>2]|0,c[Fb>>2]|0)|0;c[ob>>2]=(c[ob>>2]|0)+(c[Fb>>2]|0);c[cb>>2]=(c[ob>>2]|0)-(c[mb>>2]|0);Nb=c[cb>>2]|0;l=m;return Nb|0;}return 0;}function Zr(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;i=l;l=l+32|0;j=i+24|0;k=i+20|0;m=i+16|0;n=i+12|0;o=i+8|0;p=i+4|0;q=i;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;h=_r(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,0)|0;l=i;return h|0;}function _r(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;j=l;l=l+80|0;k=j+64|0;m=j+60|0;n=j+56|0;o=j+52|0;p=j+48|0;q=j+44|0;r=j+40|0;s=j+36|0;t=j+32|0;u=j+28|0;v=j+24|0;w=j+20|0;x=j+16|0;y=j+12|0;z=j+8|0;A=j+4|0;B=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=c[n>>2];if(c[t>>2]|0){c[r>>2]=$r(c[t>>2]|0)|0;c[s>>2]=as(c[t>>2]|0)|0;}while(1){if((c[q>>2]|0)>>>0<5){C=27;break;}i=(iq(c[p>>2]|0,c[q>>2]|0)|0)!=0;h=c[p>>2]|0;if(i){c[x>>2]=ar(h,c[q>>2]|0)|0;if($q(c[x>>2]|0)|0){C=7;break;}if(c[(c[m>>2]|0)+28940>>2]|0){C=9;break;}c[w>>2]=bs(c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[x>>2]|0,c[r>>2]|0,c[s>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+(c[w>>2]|0);c[o>>2]=(c[o>>2]|0)-(c[w>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[x>>2]|0);c[q>>2]=(c[q>>2]|0)-(c[x>>2]|0);continue;}c[v>>2]=hq(h)|0;if((c[v>>2]|0)!=-47205080){if((c[v>>2]&-16|0)!=407710288){C=18;break;}if((c[q>>2]|0)>>>0<8){C=14;break;}c[y>>2]=(hq((c[p>>2]|0)+4|0)|0)+8;if((c[q>>2]|0)>>>0<(c[y>>2]|0)>>>0){C=16;break;}c[p>>2]=(c[p>>2]|0)+(c[y>>2]|0);c[q>>2]=(c[q>>2]|0)-(c[y>>2]|0);continue;}h=c[m>>2]|0;if(c[t>>2]|0){c[z>>2]=cs(h,c[t>>2]|0)|0;if($q(c[z>>2]|0)|0){C=21;break;}}else{c[A>>2]=ds(h,c[r>>2]|0,c[s>>2]|0)|0;if($q(c[A>>2]|0)|0){C=23;break;}}Br(c[m>>2]|0,c[n>>2]|0);c[B>>2]=es(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,p,q)|0;if($q(c[B>>2]|0)|0){C=25;break;}c[n>>2]=(c[n>>2]|0)+(c[B>>2]|0);c[o>>2]=(c[o>>2]|0)-(c[B>>2]|0);}if((C|0)==7){c[k>>2]=c[x>>2];D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==9){c[k>>2]=-64;D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==14){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==16){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==18){c[k>>2]=-10;D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==21){c[k>>2]=c[z>>2];D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==23){c[k>>2]=c[A>>2];D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==25){c[k>>2]=c[B>>2];D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==27)if(c[q>>2]|0){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}else{c[k>>2]=(c[n>>2]|0)-(c[u>>2]|0);D=c[k>>2]|0;l=j;return D|0;}return 0;}function $r(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+4>>2]|0;}function as(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+8>>2]|0;}function bs(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+64|0;i=h+52|0;j=h+48|0;k=h+44|0;m=h+40|0;n=h+36|0;o=h+32|0;p=h+28|0;q=h+24|0;r=h+20|0;s=h+16|0;t=h+12|0;u=h+8|0;v=h+4|0;w=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=iq(c[m>>2]|0,c[n>>2]|0)|0;switch(c[q>>2]|0){case 4:{c[i>>2]=ms(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;x=c[i>>2]|0;l=h;return x|0;}case 5:{c[s>>2]=ns()|0;if(!(c[s>>2]|0)){c[i>>2]=-64;x=c[i>>2]|0;l=h;return x|0;}else{c[r>>2]=os(c[s>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;eq(c[s>>2]|0)|0;c[i>>2]=c[r>>2];x=c[i>>2]|0;l=h;return x|0;}break;}case 6:{c[u>>2]=ps()|0;if(!(c[u>>2]|0)){c[i>>2]=-64;x=c[i>>2]|0;l=h;return x|0;}else{c[t>>2]=qs(c[u>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;dq(c[u>>2]|0)|0;c[i>>2]=c[t>>2];x=c[i>>2]|0;l=h;return x|0;}break;}case 7:{c[w>>2]=rs()|0;if(!(c[w>>2]|0)){c[i>>2]=-64;x=c[i>>2]|0;l=h;return x|0;}else{c[v>>2]=ss(c[w>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;cq(c[w>>2]|0)|0;c[i>>2]=c[v>>2];x=c[i>>2]|0;l=h;return x|0;}break;}default:{c[i>>2]=-10;x=c[i>>2]|0;l=h;return x|0;}}return 0;}function cs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=l;l=l+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=is(c[f>>2]|0)|0;if($q(c[h>>2]|0)|0){c[e>>2]=c[h>>2];i=c[e>>2]|0;l=d;return i|0;}do{if(c[g>>2]|0){c[(c[f>>2]|0)+28908>>2]=c[(c[g>>2]|0)+28724>>2];c[(c[f>>2]|0)+28732>>2]=c[(c[g>>2]|0)+4>>2];c[(c[f>>2]|0)+28736>>2]=c[(c[g>>2]|0)+4>>2];c[(c[f>>2]|0)+28740>>2]=(c[(c[g>>2]|0)+4>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0);c[(c[f>>2]|0)+28728>>2]=c[(c[f>>2]|0)+28740>>2];h=(c[f>>2]|0)+28808|0;if(c[(c[g>>2]|0)+28728>>2]|0){c[h>>2]=1;c[(c[f>>2]|0)+28812>>2]=1;c[c[f>>2]>>2]=(c[g>>2]|0)+12;c[(c[f>>2]|0)+4>>2]=(c[g>>2]|0)+12+6160;c[(c[f>>2]|0)+8>>2]=(c[g>>2]|0)+12+4104;c[(c[f>>2]|0)+12>>2]=(c[g>>2]|0)+12+10264;c[(c[f>>2]|0)+16+28700>>2]=c[(c[g>>2]|0)+12+28700>>2];c[(c[f>>2]|0)+16+28700+4>>2]=c[(c[g>>2]|0)+12+28700+4>>2];c[(c[f>>2]|0)+16+28700+8>>2]=c[(c[g>>2]|0)+12+28700+8>>2];break;}else{c[h>>2]=0;c[(c[f>>2]|0)+28812>>2]=0;break;}}}while(0);c[e>>2]=0;i=c[e>>2]|0;l=d;return i|0;}function ds(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=is(c[g>>2]|0)|0;if($q(c[j>>2]|0)|0){c[f>>2]=c[j>>2];m=c[f>>2]|0;l=e;return m|0;}if((c[h>>2]|0)!=0&(c[i>>2]|0)!=0?(c[k>>2]=js(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0,$q(c[k>>2]|0)|0):0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}function es(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;h=l;l=l+80|0;i=h+76|0;j=h+72|0;k=h+68|0;m=h+64|0;n=h+60|0;o=h+56|0;p=h+52|0;q=h+48|0;r=h+44|0;s=h+40|0;t=h+36|0;u=h+32|0;v=h+28|0;w=h+24|0;x=h+12|0;y=h+8|0;z=h+4|0;A=h;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[c[n>>2]>>2];c[q>>2]=c[k>>2];c[r>>2]=(c[q>>2]|0)+(c[m>>2]|0);c[s>>2]=c[q>>2];c[t>>2]=c[c[o>>2]>>2];if((c[t>>2]|0)>>>0<9){c[i>>2]=-72;B=c[i>>2]|0;l=h;return B|0;}c[u>>2]=mq(c[p>>2]|0,5)|0;if($q(c[u>>2]|0)|0){c[i>>2]=c[u>>2];B=c[i>>2]|0;l=h;return B|0;}if((c[t>>2]|0)>>>0<((c[u>>2]|0)+3|0)>>>0){c[i>>2]=-72;B=c[i>>2]|0;l=h;return B|0;}c[v>>2]=fs(c[j>>2]|0,c[p>>2]|0,c[u>>2]|0)|0;if($q(c[v>>2]|0)|0){c[i>>2]=c[v>>2];B=c[i>>2]|0;l=h;return B|0;}c[p>>2]=(c[p>>2]|0)+(c[u>>2]|0);c[t>>2]=(c[t>>2]|0)-(c[u>>2]|0);a:while(1){c[y>>2]=br(c[p>>2]|0,c[t>>2]|0,x)|0;if($q(c[y>>2]|0)|0){C=11;break;}c[p>>2]=(c[p>>2]|0)+3;c[t>>2]=(c[t>>2]|0)-3;if((c[y>>2]|0)>>>0>(c[t>>2]|0)>>>0){C=13;break;}switch(c[x>>2]|0){case 2:{c[w>>2]=Cr(c[j>>2]|0,c[s>>2]|0,(c[r>>2]|0)-(c[s>>2]|0)|0,c[p>>2]|0,c[y>>2]|0,1)|0;break;}case 0:{c[w>>2]=gs(c[s>>2]|0,(c[r>>2]|0)-(c[s>>2]|0)|0,c[p>>2]|0,c[y>>2]|0)|0;break;}case 1:{c[w>>2]=hs(c[s>>2]|0,(c[r>>2]|0)-(c[s>>2]|0)|0,a[c[p>>2]>>0]|0,c[x+8>>2]|0)|0;break;}default:{C=18;break a;}}if($q(c[w>>2]|0)|0){C=20;break;}if(c[(c[j>>2]|0)+28752+32>>2]|0)Nh((c[j>>2]|0)+28816|0,c[s>>2]|0,c[w>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[w>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[y>>2]|0);c[t>>2]=(c[t>>2]|0)-(c[y>>2]|0);if(c[x+4>>2]|0){C=25;break;}}if((C|0)==11){c[i>>2]=c[y>>2];B=c[i>>2]|0;l=h;return B|0;}else if((C|0)==13){c[i>>2]=-72;B=c[i>>2]|0;l=h;return B|0;}else if((C|0)==18){c[i>>2]=-20;B=c[i>>2]|0;l=h;return B|0;}else if((C|0)==20){c[i>>2]=c[w>>2];B=c[i>>2]|0;l=h;return B|0;}else if((C|0)==25){C=(c[j>>2]|0)+28752|0;if(((c[C>>2]|0)!=-1?1:(c[C+4>>2]|0)!=-1)?(C=(c[s>>2]|0)-(c[q>>2]|0)|0,w=(c[j>>2]|0)+28752|0,(C|0)!=(c[w>>2]|0)?1:(((C|0)<0)<<31>>31|0)!=(c[w+4>>2]|0)):0){c[i>>2]=-20;B=c[i>>2]|0;l=h;return B|0;}do{if(c[(c[j>>2]|0)+28752+32>>2]|0){w=Oh((c[j>>2]|0)+28816|0)|0;c[z>>2]=w;if((c[t>>2]|0)>>>0<4){c[i>>2]=-22;B=c[i>>2]|0;l=h;return B|0;}c[A>>2]=hq(c[p>>2]|0)|0;if((c[A>>2]|0)==(c[z>>2]|0)){c[p>>2]=(c[p>>2]|0)+4;c[t>>2]=(c[t>>2]|0)-4;break;}c[i>>2]=-22;B=c[i>>2]|0;l=h;return B|0;}}while(0);c[c[n>>2]>>2]=c[p>>2];c[c[o>>2]>>2]=c[t>>2];c[i>>2]=(c[s>>2]|0)-(c[q>>2]|0);B=c[i>>2]|0;l=h;return B|0;}return 0;}function fs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=qq((c[g>>2]|0)+28752|0,c[h>>2]|0,c[i>>2]|0,c[(c[g>>2]|0)+28912>>2]|0)|0;i=($q(c[j>>2]|0)|0)!=0;h=c[j>>2]|0;if(i){c[f>>2]=h;k=c[f>>2]|0;l=e;return k|0;}if(h>>>0>0){c[f>>2]=-72;k=c[f>>2]|0;l=e;return k|0;}if(c[(c[g>>2]|0)+28752+28>>2]|0?(c[(c[g>>2]|0)+28908>>2]|0)!=(c[(c[g>>2]|0)+28752+28>>2]|0):0){c[f>>2]=-32;k=c[f>>2]|0;l=e;return k|0;}if(c[(c[g>>2]|0)+28752+32>>2]|0)Lh((c[g>>2]|0)+28816|0,0,0)|0;c[f>>2]=0;k=c[f>>2]|0;l=e;return k|0;}function gs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){c[g>>2]=-70;m=c[g>>2]|0;l=f;return m|0;}else{mE(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[g>>2]=c[k>>2];m=c[g>>2]|0;l=f;return m|0;}return 0;}function hs(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+4|0;m=h+16|0;n=h;c[j>>2]=b;c[k>>2]=e;a[m>>0]=f;c[n>>2]=g;if((c[n>>2]|0)>>>0>(c[k>>2]|0)>>>0){c[i>>2]=-70;o=c[i>>2]|0;l=h;return o|0;}else{oE(c[j>>2]|0,(d[m>>0]|0)&255|0,c[n>>2]|0)|0;c[i>>2]=c[n>>2];o=c[i>>2]|0;l=h;return o|0;}return 0;}function is(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=oq(c[(c[d>>2]|0)+28912>>2]|0)|0;c[(c[d>>2]|0)+28744>>2]=a;c[(c[d>>2]|0)+28804>>2]=0;a=(c[d>>2]|0)+28792|0;c[a>>2]=0;c[a+4>>2]=0;c[(c[d>>2]|0)+28728>>2]=0;c[(c[d>>2]|0)+28732>>2]=0;c[(c[d>>2]|0)+28736>>2]=0;c[(c[d>>2]|0)+28740>>2]=0;c[(c[d>>2]|0)+16+10264>>2]=201326604;c[(c[d>>2]|0)+28812>>2]=0;c[(c[d>>2]|0)+28808>>2]=0;c[(c[d>>2]|0)+28908>>2]=0;a=(c[d>>2]|0)+16+28700|0;c[a>>2]=c[2985];c[a+4>>2]=c[2986];c[a+8>>2]=c[2987];c[c[d>>2]>>2]=(c[d>>2]|0)+16;c[(c[d>>2]|0)+4>>2]=(c[d>>2]|0)+16+6160;c[(c[d>>2]|0)+8>>2]=(c[d>>2]|0)+16+4104;c[(c[d>>2]|0)+12>>2]=(c[d>>2]|0)+16+10264;l=b;return 0;}function js(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[i>>2]|0)>>>0<8){c[f>>2]=ks(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;m=c[f>>2]|0;l=e;return m|0;}c[j>>2]=hq(c[h>>2]|0)|0;if((c[j>>2]|0)!=-332356553){c[f>>2]=ks(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;m=c[f>>2]|0;l=e;return m|0;}j=hq((c[h>>2]|0)+4|0)|0;c[(c[g>>2]|0)+28908>>2]=j;c[k>>2]=ls((c[g>>2]|0)+16|0,c[h>>2]|0,c[i>>2]|0)|0;if($q(c[k>>2]|0)|0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}else{c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);c[(c[g>>2]|0)+28812>>2]=1;c[(c[g>>2]|0)+28808>>2]=1;c[f>>2]=ks(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;m=c[f>>2]|0;l=e;return m|0;}return 0;}function ks(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+28740>>2]=c[(c[f>>2]|0)+28728>>2];c[(c[f>>2]|0)+28736>>2]=(c[g>>2]|0)+(0-((c[(c[f>>2]|0)+28728>>2]|0)-(c[(c[f>>2]|0)+28732>>2]|0)));c[(c[f>>2]|0)+28732>>2]=c[g>>2];c[(c[f>>2]|0)+28728>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return 0;}function ls(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;e=l;l=l+336|0;f=e+328|0;g=e+324|0;h=e+320|0;i=e+316|0;j=e+312|0;k=e+308|0;m=e+304|0;n=e+192|0;o=e+300|0;p=e+296|0;q=e+292|0;r=e+80|0;s=e+288|0;t=e+284|0;u=e+280|0;v=e;w=e+276|0;x=e+272|0;y=e+268|0;z=e+264|0;A=e+260|0;B=e+256|0;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=c[h>>2];c[k>>2]=(c[j>>2]|0)+(c[i>>2]|0);if((c[i>>2]|0)>>>0<=8){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[j>>2]=(c[j>>2]|0)+8;c[m>>2]=Bp((c[g>>2]|0)+10264|0,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0,(c[g>>2]|0)+26652|0,2048)|0;if($q(c[m>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[j>>2]=(c[j>>2]|0)+(c[m>>2]|0);c[o>>2]=31;c[q>>2]=ah(n,o,p,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;if($q(c[q>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[o>>2]|0)>>>0>31){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[p>>2]|0)>>>0>8){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}zr((c[g>>2]|0)+4104|0,n,c[o>>2]|0,4032,4160,c[p>>2]|0);c[j>>2]=(c[j>>2]|0)+(c[q>>2]|0);c[s>>2]=52;c[u>>2]=ah(r,s,t,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;if($q(c[u>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[s>>2]|0)>>>0>52){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[t>>2]|0)>>>0>9){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}zr((c[g>>2]|0)+6160|0,r,c[s>>2]|0,5216,5840,c[t>>2]|0);c[j>>2]=(c[j>>2]|0)+(c[u>>2]|0);c[w>>2]=35;c[y>>2]=ah(v,w,x,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;if($q(c[y>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[w>>2]|0)>>>0>35){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[x>>2]|0)>>>0>9){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}zr(c[g>>2]|0,v,c[w>>2]|0,6416,5696,c[x>>2]|0);c[j>>2]=(c[j>>2]|0)+(c[y>>2]|0);if(((c[j>>2]|0)+12|0)>>>0>(c[k>>2]|0)>>>0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[A>>2]=(c[k>>2]|0)-((c[j>>2]|0)+12);c[z>>2]=0;while(1){D=c[j>>2]|0;if((c[z>>2]|0)>=3){E=31;break;}c[B>>2]=hq(D)|0;c[j>>2]=(c[j>>2]|0)+4;if(!(c[B>>2]|0)){E=29;break;}if((c[B>>2]|0)>>>0>=(c[A>>2]|0)>>>0){E=29;break;}c[(c[g>>2]|0)+28700+(c[z>>2]<<2)>>2]=c[B>>2];c[z>>2]=(c[z>>2]|0)+1;}if((E|0)==29){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}else if((E|0)==31){c[f>>2]=D-(c[h>>2]|0);C=c[f>>2]|0;l=e;return C|0;}return 0;}function ms(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+12|0;k=f+8|0;m=f+4|0;n=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[n>>2]=hw()|0;if(!(c[n>>2]|0)){c[g>>2]=-64;o=c[g>>2]|0;l=f;return o|0;}else{c[m>>2]=iw(c[n>>2]|0,c[h>>2]|0,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;gq(c[n>>2]|0)|0;c[g>>2]=c[m>>2];o=c[g>>2]|0;l=f;return o|0;}return 0;}function ns(){var a=0,b=0,d=0,e=0;a=l;l=l+16|0;b=a+4|0;d=a;c[d>>2]=Cy(157816)|0;if(!(c[d>>2]|0)){c[b>>2]=0;e=c[b>>2]|0;l=a;return e|0;}else{dw(c[d>>2]|0)|0;c[b>>2]=c[d>>2];e=c[b>>2]|0;l=a;return e|0;}return 0;}function os(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;i=l;l=l+32|0;j=i+24|0;k=i+20|0;m=i+16|0;n=i+12|0;o=i+8|0;p=i+4|0;q=i;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;Su(c[j>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;Tu(c[j>>2]|0,c[k>>2]|0);q=Uu(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;l=i;return q|0;}function ps(){var a=0,b=0,d=0,e=0;a=l;l=l+16|0;b=a+4|0;d=a;c[d>>2]=Cy(152680)|0;if(!(c[d>>2]|0)){c[b>>2]=0;e=c[b>>2]|0;l=a;return e|0;}else{Ou(c[d>>2]|0)|0;c[b>>2]=c[d>>2];e=c[b>>2]|0;l=a;return e|0;}return 0;}function qs(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;i=l;l=l+32|0;j=i+24|0;k=i+20|0;m=i+16|0;n=i+12|0;o=i+8|0;p=i+4|0;q=i;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;Jt(c[j>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;Kt(c[j>>2]|0,c[k>>2]|0);q=Lt(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;l=i;return q|0;}function rs(){var a=0,b=0,d=0;a=l;l=l+16|0;b=a;c[b>>2]=c[2988];c[b+4>>2]=c[2989];c[b+8>>2]=c[2990];d=Gt(b)|0;l=a;return d|0;}function ss(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;i=l;l=l+32|0;j=i+24|0;k=i+20|0;m=i+16|0;n=i+12|0;o=i+8|0;p=i+4|0;q=i;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;ts(c[j>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;us(c[j>>2]|0,c[k>>2]|0);q=vs(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;l=i;return q|0;}function ts(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=Ct(c[g>>2]|0)|0;if(hr(c[j>>2]|0)|0){c[f>>2]=c[j>>2];m=c[f>>2]|0;l=e;return m|0;}if((c[h>>2]|0)!=0&(c[i>>2]|0)!=0?(c[k>>2]=Dt(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0,hr(c[k>>2]|0)|0):0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}function us(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)==(c[(c[e>>2]|0)+21520>>2]|0)){l=d;return;}c[(c[e>>2]|0)+21532>>2]=c[(c[e>>2]|0)+21520>>2];c[(c[e>>2]|0)+21528>>2]=(c[f>>2]|0)+(0-((c[(c[e>>2]|0)+21520>>2]|0)-(c[(c[e>>2]|0)+21524>>2]|0)));c[(c[e>>2]|0)+21524>>2]=c[f>>2];c[(c[e>>2]|0)+21520>>2]=c[f>>2];l=d;return;}function vs(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;h=l;l=l+80|0;i=h+68|0;j=h+64|0;k=h+60|0;m=h+56|0;n=h+52|0;o=h+48|0;p=h+44|0;q=h+40|0;r=h+36|0;s=h+32|0;t=h+28|0;u=h+24|0;v=h+20|0;w=h+16|0;x=h+8|0;y=h;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=c[r>>2];c[u>>2]=c[o>>2];if((c[o>>2]|0)>>>0<8){c[i>>2]=-72;z=c[i>>2]|0;l=h;return z|0;}c[v>>2]=Cq(c[n>>2]|0,5)|0;if(hr(c[v>>2]|0)|0){c[i>>2]=c[v>>2];z=c[i>>2]|0;l=h;return z|0;}if((c[o>>2]|0)>>>0<((c[v>>2]|0)+3|0)>>>0){c[i>>2]=-72;z=c[i>>2]|0;l=h;return z|0;}if(ws(c[j>>2]|0,c[n>>2]|0,c[v>>2]|0)|0){c[i>>2]=-20;z=c[i>>2]|0;l=h;return z|0;}c[p>>2]=(c[p>>2]|0)+(c[v>>2]|0);c[u>>2]=(c[u>>2]|0)-(c[v>>2]|0);a:while(1){c[y>>2]=ir(c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0,x)|0;if(hr(c[y>>2]|0)|0){A=11;break;}c[p>>2]=(c[p>>2]|0)+3;c[u>>2]=(c[u>>2]|0)-3;if((c[y>>2]|0)>>>0>(c[u>>2]|0)>>>0){A=13;break;}switch(c[x>>2]|0){case 0:{c[w>>2]=xs(c[j>>2]|0,c[t>>2]|0,(c[s>>2]|0)-(c[t>>2]|0)|0,c[p>>2]|0,c[y>>2]|0)|0;break;}case 1:{c[w>>2]=ys(c[t>>2]|0,(c[s>>2]|0)-(c[t>>2]|0)|0,c[p>>2]|0,c[y>>2]|0)|0;break;}case 2:{c[w>>2]=zs(c[t>>2]|0,(c[s>>2]|0)-(c[t>>2]|0)|0,a[c[p>>2]>>0]|0,c[x+4>>2]|0)|0;break;}case 3:{if(c[u>>2]|0){A=19;break a;}c[w>>2]=0;break;}default:{A=21;break a;}}if((c[x>>2]|0)==3){A=28;break;}if(hr(c[w>>2]|0)|0){A=24;break;}if(c[(c[j>>2]|0)+21552+16>>2]|0)Nh((c[j>>2]|0)+21592|0,c[t>>2]|0,c[w>>2]|0)|0;c[t>>2]=(c[t>>2]|0)+(c[w>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[y>>2]|0);c[u>>2]=(c[u>>2]|0)-(c[y>>2]|0);}if((A|0)==11){c[i>>2]=c[y>>2];z=c[i>>2]|0;l=h;return z|0;}else if((A|0)==13){c[i>>2]=-72;z=c[i>>2]|0;l=h;return z|0;}else if((A|0)==19){c[i>>2]=-72;z=c[i>>2]|0;l=h;return z|0;}else if((A|0)==21){c[i>>2]=-1;z=c[i>>2]|0;l=h;return z|0;}else if((A|0)==24){c[i>>2]=c[w>>2];z=c[i>>2]|0;l=h;return z|0;}else if((A|0)==28){c[i>>2]=(c[t>>2]|0)-(c[r>>2]|0);z=c[i>>2]|0;l=h;return z|0;}return 0;}function ws(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=Aq((c[g>>2]|0)+21552|0,c[h>>2]|0,c[i>>2]|0)|0;if(c[(c[g>>2]|0)+21552+12>>2]|0?(c[(c[g>>2]|0)+21684>>2]|0)!=(c[(c[g>>2]|0)+21552+12>>2]|0):0){c[f>>2]=-32;k=c[f>>2]|0;l=e;return k|0;}if(c[(c[g>>2]|0)+21552+16>>2]|0)Lh((c[g>>2]|0)+21592|0,0,0)|0;c[f>>2]=c[j>>2];k=c[f>>2]|0;l=e;return k|0;}function xs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];if((c[n>>2]|0)>>>0>=131072){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}c[p>>2]=As(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(hr(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+f;c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=Bs(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function ys(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){c[g>>2]=-70;m=c[g>>2]|0;l=f;return m|0;}else{mE(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[g>>2]=c[k>>2];m=c[g>>2]|0;l=f;return m|0;}return 0;}function zs(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+4|0;m=h+16|0;n=h;c[j>>2]=b;c[k>>2]=e;a[m>>0]=f;c[n>>2]=g;if((c[n>>2]|0)>>>0>(c[k>>2]|0)>>>0){c[i>>2]=-70;o=c[i>>2]|0;l=h;return o|0;}else{oE(c[j>>2]|0,(d[m>>0]|0)&255|0,c[n>>2]|0)|0;c[i>>2]=c[n>>2];o=c[i>>2]|0;l=h;return o|0;}return 0;}function As(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;g=l;l=l+80|0;h=g+64|0;i=g+60|0;j=g+56|0;k=g+52|0;m=g+48|0;n=g+44|0;o=g+40|0;p=g+36|0;q=g+32|0;r=g+28|0;s=g+24|0;t=g+20|0;u=g+16|0;v=g+12|0;w=g+8|0;x=g+4|0;y=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[j>>2];if((c[k>>2]|0)>>>0<3){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}switch((d[c[m>>2]>>0]|0)>>6|0){case 0:{c[p>>2]=0;c[q>>2]=(d[c[m>>2]>>0]|0)>>4&3;if((c[k>>2]|0)>>>0<5){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}switch(c[q>>2]|0){case 3:{c[q>>2]=5;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<14)+((d[(c[m>>2]|0)+1>>0]|0)<<6)+((d[(c[m>>2]|0)+2>>0]|0)>>2);c[o>>2]=(((d[(c[m>>2]|0)+2>>0]|0)&3)<<16)+((d[(c[m>>2]|0)+3>>0]|0)<<8)+(d[(c[m>>2]|0)+4>>0]|0);break;}case 2:{c[q>>2]=4;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<10)+((d[(c[m>>2]|0)+1>>0]|0)<<2)+((d[(c[m>>2]|0)+2>>0]|0)>>6);c[o>>2]=(((d[(c[m>>2]|0)+2>>0]|0)&63)<<8)+(d[(c[m>>2]|0)+3>>0]|0);break;}default:{c[q>>2]=3;c[p>>2]=(d[c[m>>2]>>0]|0)&16;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<6)+((d[(c[m>>2]|0)+1>>0]|0)>>2);c[o>>2]=(((d[(c[m>>2]|0)+1>>0]|0)&3)<<8)+(d[(c[m>>2]|0)+2>>0]|0);}}if((c[n>>2]|0)>>>0>131072){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}if(((c[o>>2]|0)+(c[q>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}j=(c[i>>2]|0)+5132|0;f=(c[i>>2]|0)+21708|0;e=c[n>>2]|0;b=(c[m>>2]|0)+(c[q>>2]|0)|0;A=c[o>>2]|0;if(c[p>>2]|0)B=Xs(j,f,e,b,A)|0;else B=Ys(j,f,e,b,A)|0;if(hr(B)|0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{c[(c[i>>2]|0)+21688>>2]=(c[i>>2]|0)+21708;c[(c[i>>2]|0)+21704>>2]=c[n>>2];c[(c[i>>2]|0)+21584>>2]=1;n=(c[i>>2]|0)+21708+(c[(c[i>>2]|0)+21704>>2]|0)|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;a[n+4>>0]=0;a[n+5>>0]=0;a[n+6>>0]=0;a[n+7>>0]=0;c[h>>2]=(c[o>>2]|0)+(c[q>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 1:{c[t>>2]=(d[c[m>>2]>>0]|0)>>4&3;if((c[t>>2]|0)!=1){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}if(!(c[(c[i>>2]|0)+21584>>2]|0)){c[h>>2]=-30;z=c[h>>2]|0;l=g;return z|0;}c[t>>2]=3;c[r>>2]=(((d[c[m>>2]>>0]|0)&15)<<6)+((d[(c[m>>2]|0)+1>>0]|0)>>2);c[s>>2]=(((d[(c[m>>2]|0)+1>>0]|0)&3)<<8)+(d[(c[m>>2]|0)+2>>0]|0);if(((c[s>>2]|0)+(c[t>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}c[u>>2]=Zs((c[i>>2]|0)+21708|0,c[r>>2]|0,(c[m>>2]|0)+(c[t>>2]|0)|0,c[s>>2]|0,(c[i>>2]|0)+5132|0)|0;if(hr(c[u>>2]|0)|0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{c[(c[i>>2]|0)+21688>>2]=(c[i>>2]|0)+21708;c[(c[i>>2]|0)+21704>>2]=c[r>>2];r=(c[i>>2]|0)+21708+(c[(c[i>>2]|0)+21704>>2]|0)|0;a[r>>0]=0;a[r+1>>0]=0;a[r+2>>0]=0;a[r+3>>0]=0;a[r+4>>0]=0;a[r+5>>0]=0;a[r+6>>0]=0;a[r+7>>0]=0;c[h>>2]=(c[s>>2]|0)+(c[t>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 2:{c[w>>2]=(d[c[m>>2]>>0]|0)>>4&3;switch(c[w>>2]|0){case 3:{c[v>>2]=(((d[c[m>>2]>>0]|0)&15)<<16)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(d[(c[m>>2]|0)+2>>0]|0);break;}case 2:{c[v>>2]=(((d[c[m>>2]>>0]|0)&15)<<8)+(d[(c[m>>2]|0)+1>>0]|0);break;}default:{c[w>>2]=1;c[v>>2]=(d[c[m>>2]>>0]|0)&31;}}if(((c[w>>2]|0)+(c[v>>2]|0)+8|0)>>>0<=(c[k>>2]|0)>>>0){c[(c[i>>2]|0)+21688>>2]=(c[m>>2]|0)+(c[w>>2]|0);c[(c[i>>2]|0)+21704>>2]=c[v>>2];c[h>>2]=(c[w>>2]|0)+(c[v>>2]|0);z=c[h>>2]|0;l=g;return z|0;}if(((c[v>>2]|0)+(c[w>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{mE((c[i>>2]|0)+21708|0,(c[m>>2]|0)+(c[w>>2]|0)|0,c[v>>2]|0)|0;c[(c[i>>2]|0)+21688>>2]=(c[i>>2]|0)+21708;c[(c[i>>2]|0)+21704>>2]=c[v>>2];t=(c[i>>2]|0)+21708+(c[(c[i>>2]|0)+21704>>2]|0)|0;a[t>>0]=0;a[t+1>>0]=0;a[t+2>>0]=0;a[t+3>>0]=0;a[t+4>>0]=0;a[t+5>>0]=0;a[t+6>>0]=0;a[t+7>>0]=0;c[h>>2]=(c[w>>2]|0)+(c[v>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 3:{c[y>>2]=(d[c[m>>2]>>0]|0)>>4&3;switch(c[y>>2]|0){case 3:{c[x>>2]=(((d[c[m>>2]>>0]|0)&15)<<16)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(d[(c[m>>2]|0)+2>>0]|0);if((c[k>>2]|0)>>>0<4){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}break;}case 2:{c[x>>2]=(((d[c[m>>2]>>0]|0)&15)<<8)+(d[(c[m>>2]|0)+1>>0]|0);break;}default:{c[y>>2]=1;c[x>>2]=(d[c[m>>2]>>0]|0)&31;}}if((c[x>>2]|0)>>>0>131072){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{oE((c[i>>2]|0)+21708|0,(d[(c[m>>2]|0)+(c[y>>2]|0)>>0]|0)&255|0,(c[x>>2]|0)+8|0)|0;c[(c[i>>2]|0)+21688>>2]=(c[i>>2]|0)+21708;c[(c[i>>2]|0)+21704>>2]=c[x>>2];c[h>>2]=(c[y>>2]|0)+1;z=c[h>>2]|0;l=g;return z|0;}break;}default:{}}return 0;}function Bs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;g=l;l=l+192|0;h=g+168|0;i=g+164|0;j=g+160|0;k=g+156|0;m=g+152|0;n=g+148|0;o=g+144|0;p=g+140|0;q=g+136|0;r=g+132|0;s=g+128|0;t=g+124|0;u=g+120|0;v=g+116|0;w=g+112|0;x=g+108|0;y=g+104|0;z=g+100|0;A=g+96|0;B=g+92|0;C=g+88|0;D=g+84|0;E=g+32|0;F=g+28|0;G=g+24|0;H=g+12|0;I=g+8|0;J=g+4|0;K=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=c[r>>2];c[u>>2]=c[(c[j>>2]|0)+21688>>2];c[v>>2]=(c[u>>2]|0)+(c[(c[j>>2]|0)+21704>>2]|0);c[w>>2]=c[j>>2];c[x>>2]=(c[j>>2]|0)+3080;c[y>>2]=(c[j>>2]|0)+2052;c[z>>2]=c[(c[j>>2]|0)+21524>>2];c[A>>2]=c[(c[j>>2]|0)+21528>>2];c[B>>2]=c[(c[j>>2]|0)+21532>>2];c[D>>2]=Cs(C,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,c[(c[j>>2]|0)+21588>>2]|0,c[p>>2]|0,c[o>>2]|0)|0;o=(hr(c[D>>2]|0)|0)!=0;m=c[D>>2]|0;if(o){c[i>>2]=m;L=c[i>>2]|0;l=g;return L|0;}c[p>>2]=(c[p>>2]|0)+m;a:do{if(c[C>>2]|0){c[(c[j>>2]|0)+21588>>2]=1;c[F>>2]=0;while(1){if((c[F>>2]|0)>>>0>=3)break;c[E+40+(c[F>>2]<<2)>>2]=c[(c[j>>2]|0)+21540+(c[F>>2]<<2)>>2];c[F>>2]=(c[F>>2]|0)+1;}c[G>>2]=Ds(E,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;if(hr(c[G>>2]|0)|0){c[i>>2]=-20;L=c[i>>2]|0;l=g;return L|0;}Es(E+16|0,E,c[w>>2]|0);Es(E+24|0,E,c[y>>2]|0);Es(E+32|0,E,c[x>>2]|0);while(1){m=(Fs(E)|0)>>>0<=2;M=c[C>>2]|0;if(!(m?(c[C>>2]|0)!=0:0))break;c[C>>2]=M+-1;Gs(H,E);m=c[t>>2]|0;o=c[s>>2]|0;D=c[v>>2]|0;k=c[z>>2]|0;n=c[A>>2]|0;f=c[B>>2]|0;c[h>>2]=c[H>>2];c[h+4>>2]=c[H+4>>2];c[h+8>>2]=c[H+8>>2];c[I>>2]=Hs(m,o,h,u,D,k,n,f)|0;f=(hr(c[I>>2]|0)|0)!=0;N=c[I>>2]|0;if(f){O=12;break;}c[t>>2]=(c[t>>2]|0)+N;}if((O|0)==12){c[i>>2]=N;L=c[i>>2]|0;l=g;return L|0;}if(M|0){c[i>>2]=-20;L=c[i>>2]|0;l=g;return L|0;}c[J>>2]=0;while(1){if((c[J>>2]|0)>>>0>=3)break a;c[(c[j>>2]|0)+21540+(c[J>>2]<<2)>>2]=c[E+40+(c[J>>2]<<2)>>2];c[J>>2]=(c[J>>2]|0)+1;}}}while(0);c[K>>2]=(c[v>>2]|0)-(c[u>>2]|0);if((c[K>>2]|0)>>>0>((c[s>>2]|0)-(c[t>>2]|0)|0)>>>0){c[i>>2]=-70;L=c[i>>2]|0;l=g;return L|0;}else{mE(c[t>>2]|0,c[u>>2]|0,c[K>>2]|0)|0;c[t>>2]=(c[t>>2]|0)+(c[K>>2]|0);c[i>>2]=(c[t>>2]|0)-(c[r>>2]|0);L=c[i>>2]|0;l=g;return L|0;}return 0;}function Cs(a,b,e,f,g,h,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;j=l;l=l+80|0;k=j+68|0;m=j+64|0;n=j+60|0;o=j+56|0;p=j+52|0;q=j+48|0;r=j+44|0;s=j+40|0;t=j+36|0;u=j+32|0;v=j+28|0;w=j+24|0;x=j+20|0;y=j+16|0;z=j+12|0;A=j+8|0;B=j+4|0;C=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=c[r>>2];c[u>>2]=(c[t>>2]|0)+(c[s>>2]|0);c[v>>2]=c[t>>2];if((c[s>>2]|0)>>>0<1){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}s=c[v>>2]|0;c[v>>2]=s+1;c[w>>2]=d[s>>0];if(!(c[w>>2]|0)){c[c[m>>2]>>2]=0;c[k>>2]=1;D=c[k>>2]|0;l=j;return D|0;}do{if((c[w>>2]|0)>127){s=c[v>>2]|0;if((c[w>>2]|0)==255){if((s+2|0)>>>0<=(c[u>>2]|0)>>>0){c[w>>2]=((Eq(c[v>>2]|0)|0)&65535)+32512;c[v>>2]=(c[v>>2]|0)+2;break;}c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}else{if(s>>>0<(c[u>>2]|0)>>>0){s=(c[w>>2]|0)-128<<8;r=c[v>>2]|0;c[v>>2]=r+1;c[w>>2]=s+(d[r>>0]|0);break;}c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}}}while(0);c[c[m>>2]>>2]=c[w>>2];c[x>>2]=(d[c[v>>2]>>0]|0)>>6;c[y>>2]=(d[c[v>>2]>>0]|0)>>4&3;c[z>>2]=(d[c[v>>2]>>0]|0)>>2&3;c[v>>2]=(c[v>>2]|0)+1;if((c[v>>2]|0)>>>0>((c[u>>2]|0)+-3|0)>>>0){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}c[A>>2]=Ss(c[n>>2]|0,c[x>>2]|0,35,9,c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,5440,6,c[q>>2]|0)|0;if(hr(c[A>>2]|0)|0){c[k>>2]=-20;D=c[k>>2]|0;l=j;return D|0;}c[v>>2]=(c[v>>2]|0)+(c[A>>2]|0);c[B>>2]=Ss(c[p>>2]|0,c[y>>2]|0,28,8,c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,5520,5,c[q>>2]|0)|0;if(hr(c[B>>2]|0)|0){c[k>>2]=-20;D=c[k>>2]|0;l=j;return D|0;}c[v>>2]=(c[v>>2]|0)+(c[B>>2]|0);c[C>>2]=Ss(c[o>>2]|0,c[z>>2]|0,52,9,c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,5584,6,c[q>>2]|0)|0;if(hr(c[C>>2]|0)|0){c[k>>2]=-20;D=c[k>>2]|0;l=j;return D|0;}else{c[v>>2]=(c[v>>2]|0)+(c[C>>2]|0);c[k>>2]=(c[v>>2]|0)-(c[t>>2]|0);D=c[k>>2]|0;l=j;return D|0;}return 0;}function Cc(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0;}function Dc(){return l|0;}function Ec(a){a=a|0;l=a;}function Fc(a,b){a=a|0;b=b|0;l=a;m=b;}function Gc(a,b){a=a|0;b=b|0;if(!n){n=a;o=b;}}function Hc(a){a=a|0;y=a;}function Ic(){return y|0;}function Jc(){var a=0;a=l;l=l+16|0;Kz(Cz(12856,12862)|0)|0;Az(12856,a)|0;l=a;return;}function Kc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+32|0;f=e;g=c[d>>2]|0;h=hb(12865)|0;i=db(g|0,h|0)|0;ab(h|0);j=+Za(i|0,11e3,f|0);jb(c[f>>2]|0);h=~~j>>>0;ab(i|0);i=b+4|0;g=c[i>>2]|0;k=c[b>>2]|0;m=g-k|0;n=k;a:do{if(m>>>0<h>>>0){o=h-m|0;p=b+8|0;q=c[p>>2]|0;if((q-g|0)>>>0>=o>>>0){r=o;s=g;while(1){a[s>>0]=0;s=(c[i>>2]|0)+1|0;c[i>>2]=s;r=r+-1|0;if(!r)break a;}}if((h|0)<0)Wz(b);r=q-k|0;s=r<<1;t=r>>>0<1073741823?s>>>0<h>>>0?h:s:2147483647;if(!t)u=0;else u=Uz(t)|0;oE(u+m|0,0,o|0)|0;if((m|0)>0)mE(u|0,n|0,m|0)|0;c[b>>2]=u;c[i>>2]=u+h;c[p>>2]=u+t;if(k|0)Vz(n);}else if(m>>>0>h>>>0)c[i>>2]=n+h;}while(0);n=cb(12872)|0;i=c[d>>2]|0;m=hb(12879)|0;k=db(i|0,m|0)|0;ab(m|0);m=c[b>>2]|0;eb(n|0);c[f>>2]=n;c[f+8>>2]=m;c[f+16>>2]=h;h=gb(k|0,3,11072,f|0)|0;ab(k|0);cd(h,12891,d);ab(h|0);ab(n|0);l=e;return;}function Lc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;e=l;l=l+32|0;f=e;g=cb(12895)|0;h=cb(12872)|0;i=hb(12879)|0;j=db(g|0,i|0)|0;ab(i|0);i=c[d>>2]|0;k=d+4|0;m=c[k>>2]|0;eb(h|0);c[f>>2]=h;c[f+8>>2]=i;c[f+16>>2]=m-i;i=gb(j|0,3,11092,f|0)|0;m=i;ab(j|0);j=hb(12879)|0;n=db(h|0,j|0)|0;ab(j|0);c[f>>2]=(c[k>>2]|0)-(c[d>>2]|0);d=gb(n|0,1,11104,f|0)|0;ab(n|0);n=hb(12879)|0;k=db(g|0,n|0)|0;ab(n|0);eb(d|0);c[f>>2]=d;n=gb(k|0,1,11108,f|0)|0;c[b>>2]=n;ab(k|0);if((a[21600]|0)==0?WD(21600)|0:0)c[5404]=bb(2,11084)|0;k=c[5404]|0;eb(i|0);c[f>>2]=m;$a(k|0,n|0,12891,f|0);ab(d|0);ab(i|0);ab(h|0);ab(g|0);l=e;return;}function Mc(a){a=a|0;return(c[a+4>>2]|0)-(c[a>>2]|0)|0;}function Nc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d;f=cb(12872)|0;g=cb(12895)|0;h=hb(12879)|0;i=db(g|0,h|0)|0;ab(h|0);h=c[b>>2]|0;j=c[b+4>>2]|0;eb(f|0);c[e>>2]=f;c[e+8>>2]=h;c[e+16>>2]=j-h;c[a>>2]=gb(i|0,3,11092,e|0)|0;ab(i|0);ab(g|0);ab(f|0);l=d;return;}function Oc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=Uz(32)|0;Pc(e,a);Ef(f,e,b);b=c[e>>2]|0;if(!b){l=d;return f|0;}c[e+4>>2]=b;Vz(b);l=d;return f|0;}function Pc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0.0,n=0,o=0,p=0;d=l;l=l+48|0;e=d;f=d+24|0;c[f>>2]=0;g=f+4|0;c[g>>2]=0;h=f+8|0;c[h>>2]=0;i=c[b>>2]|0;j=hb(12865)|0;k=db(i|0,j|0)|0;ab(j|0);m=+Za(k|0,11016,e|0);jb(c[e>>2]|0);j=~~m>>>0;do{if(j|0)if((j|0)<0)Wz(f);else{i=Uz(j)|0;oE(i|0,0,j|0)|0;n=i+j|0;c[f>>2]=i;c[g>>2]=n;c[h>>2]=n;break;}}while(0);ab(k|0);k=c[b>>2]|0;j=hb(12865)|0;n=db(k|0,j|0)|0;ab(j|0);m=+Za(n|0,11e3,e|0);jb(c[e>>2]|0);j=~~m>>>0;ab(n|0);n=cb(12872)|0;k=c[b>>2]|0;i=hb(12879)|0;o=db(k|0,i|0)|0;ab(i|0);i=c[f>>2]|0;eb(n|0);c[e>>2]=n;c[e+8>>2]=i;c[e+16>>2]=j;i=gb(o|0,3,11072,e|0)|0;ab(o|0);o=c[f>>2]|0;e=o;if(((c[h>>2]|0)-o|0)>>>0<j>>>0){k=(c[g>>2]|0)-o|0;p=Uz(j)|0;if((k|0)>0)mE(p|0,e|0,k|0)|0;c[f>>2]=p;c[g>>2]=p+k;c[h>>2]=p+j;if(o|0)Vz(e);}dd(i,12891,b);ab(i|0);ab(n|0);c[a>>2]=c[f>>2];c[a+4>>2]=c[g>>2];c[a+8>>2]=c[h>>2];l=d;return;}function Qc(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b;e=Uz(32)|0;Pc(d,a);Pf(e,d);a=c[d>>2]|0;if(!a){l=b;return e|0;}c[d+4>>2]=a;Vz(a);l=b;return e|0;}function Rc(a,b){a=a|0;b=b|0;return ag(a,b)|0;}function Sc(a,b){a=a|0;b=b|0;return mg(a,b)|0;}function Tc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+48|0;f=e+28|0;g=e+24|0;h=e;c[f>>2]=0;i=f+4|0;c[i>>2]=0;c[f+8>>2]=0;j=c[b>>2]|0;c[g>>2]=j;eb(j|0);Kc(f,g);ab(c[g>>2]|0);g=h+16|0;c[h>>2]=11128;c[h+4>>2]=d;c[g>>2]=h;d=vg(a,f,h)|0;a=c[g>>2]|0;if((h|0)!=(a|0)){if(a|0)wc[c[(c[a>>2]|0)+20>>2]&127](a);}else wc[c[(c[a>>2]|0)+16>>2]&127](a);a=c[f>>2]|0;if(!a){l=e;return d|0;}c[i>>2]=a;Vz(a);l=e;return d|0;}function Uc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11172;c[e+4>>2]=b;c[f>>2]=e;b=xg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function Vc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11216;c[e+4>>2]=b;c[f>>2]=e;b=yg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function Wc(a){a=a|0;return Bg(a)|0;}function Xc(a,b){a=a|0;b=b|0;return Mg(a,b)|0;}function Yc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+48|0;f=e+28|0;g=e+24|0;h=e;c[f>>2]=0;i=f+4|0;c[i>>2]=0;c[f+8>>2]=0;j=c[b>>2]|0;c[g>>2]=j;eb(j|0);Kc(f,g);ab(c[g>>2]|0);g=h+16|0;c[h>>2]=11260;c[h+4>>2]=d;c[g>>2]=h;d=Vg(a,f,h)|0;a=c[g>>2]|0;if((h|0)!=(a|0)){if(a|0)wc[c[(c[a>>2]|0)+20>>2]&127](a);}else wc[c[(c[a>>2]|0)+16>>2]&127](a);a=c[f>>2]|0;if(!a){l=e;return d|0;}c[i>>2]=a;Vz(a);l=e;return d|0;}function Zc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11304;c[e+4>>2]=b;c[f>>2]=e;b=Xg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function _c(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11348;c[e+4>>2]=b;c[f>>2]=e;b=Yg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function $c(a){a=a|0;ad(12902);Ra(12856,1,11420,14747,61,2);Ra(12911,3,11424,14750,1,26);Ra(12925,2,11436,14761,20,27);Ra(12943,2,11436,14761,20,28);Ma(10096,10112,10128,0,14742,31,14745,0,14745,0,12960,14747,62);Ra(12980,3,11444,14765,9,21);Ma(10152,10168,10184,0,14742,32,14745,0,14745,0,13002,14747,63);Ra(13024,2,11456,14761,22,33);Ma(10200,10208,10224,0,14742,34,14745,0,14745,0,13048,14747,64);Na(10200,1,11464,14742,35,1);a=Uz(8)|0;c[a>>2]=23;c[a+4>>2]=0;Oa(10200,13058,3,11468,14765,10,a|0,0);a=Uz(8)|0;c[a>>2]=24;c[a+4>>2]=0;Oa(10200,13072,3,11480,14765,11,a|0,0);a=Uz(8)|0;c[a>>2]=7;c[a+4>>2]=0;Oa(10200,13084,5,48,15008,1,a|0,0);a=Uz(8)|0;c[a>>2]=12;c[a+4>>2]=0;Oa(10200,13093,4,80,14770,8,a|0,0);a=Uz(8)|0;c[a>>2]=9;c[a+4>>2]=0;Oa(10200,13104,5,96,15008,2,a|0,0);a=Uz(8)|0;c[a>>2]=10;c[a+4>>2]=0;Oa(10200,13122,5,128,15008,3,a|0,0);Ma(10240,10248,10264,0,14742,36,14745,0,14745,0,13142,14747,65);Na(10240,1,11492,14742,37,2);a=Uz(8)|0;c[a>>2]=25;c[a+4>>2]=0;Oa(10240,13168,3,11496,14765,13,a|0,0);a=Uz(8)|0;c[a>>2]=26;c[a+4>>2]=0;Oa(10240,13174,3,11508,14765,14,a|0,0);a=Uz(8)|0;c[a>>2]=15;c[a+4>>2]=0;Oa(10240,13189,4,160,14770,11,a|0,0);a=Uz(8)|0;c[a>>2]=27;c[a+4>>2]=0;Oa(10240,13199,3,11520,14765,16,a|0,0);a=Uz(8)|0;c[a>>2]=28;c[a+4>>2]=0;Oa(10240,13205,3,11520,14765,16,a|0,0);Ma(10280,10288,10304,0,14742,38,14745,0,14745,0,13209,14747,66);Na(10280,1,11532,14742,39,3);a=Uz(8)|0;c[a>>2]=40;c[a+4>>2]=0;Oa(10280,13168,2,11536,14761,29,a|0,0);a=Uz(8)|0;c[a>>2]=30;c[a+4>>2]=0;Oa(10280,13174,3,11544,14765,17,a|0,0);a=Uz(8)|0;c[a>>2]=18;c[a+4>>2]=0;Oa(10280,13189,4,176,14770,12,a|0,0);a=Uz(8)|0;c[a>>2]=31;c[a+4>>2]=0;Oa(10280,13199,3,11556,14765,19,a|0,0);a=Uz(8)|0;c[a>>2]=32;c[a+4>>2]=0;Oa(10280,13205,3,11556,14765,19,a|0,0);return;}function ad(a){a=a|0;Ma(10032,10056,10072,0,14742,41,14745,0,14745,0,a|0,14747,67);Na(10032,1,11384,14742,42,4);a=Uz(8)|0;c[a>>2]=29;c[a+4>>2]=0;Oa(10032,14524,3,11388,14750,2,a|0,0);a=Uz(8)|0;c[a>>2]=3;c[a+4>>2]=0;Oa(10032,14534,4,16,14755,4,a|0,0);a=Uz(8)|0;c[a>>2]=43;c[a+4>>2]=0;Oa(10032,14541,2,11400,14761,33,a|0,0);a=Uz(4)|0;c[a>>2]=4;Oa(10032,14546,3,11408,14765,20,a|0,0);a=Uz(4)|0;c[a>>2]=21;Oa(10032,12891,4,32,14770,13,a|0,0);return;}function bd(a){a=a|0;wa(a|0)|0;sA();}function cd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;if((a[21600]|0)==0?WD(21600)|0:0)c[5404]=bb(2,11084)|0;h=c[5404]|0;eb(c[e>>2]|0);c[g>>2]=c[e>>2];$a(h|0,b|0,d|0,g|0);l=f;return;}function dd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;if((a[21608]|0)==0?WD(21608)|0:0)c[5405]=bb(2,11112)|0;h=c[5405]|0;eb(c[e>>2]|0);c[g>>2]=c[e>>2];$a(h|0,b|0,d|0,g|0);l=f;return;}function ed(a){a=a|0;Vz(a);return;}function fd(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11128;c[b+4>>2]=c[a+4>>2];return b|0;}function gd(a,b){a=a|0;b=b|0;c[b>>2]=11128;c[b+4>>2]=c[a+4>>2];return;}function hd(a){a=a|0;return;}function id(a){a=a|0;Vz(a);return;}function jd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+8|0;Lc(f,b);b=c[a+4>>2]|0;a=c[f>>2]|0;eb(a|0);c[e>>2]=a;ab(_a(c[b>>2]|0,1,11108,e|0)|0);ab(a|0);l=d;return;}function kd(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==13464?a+4|0:0)|0;}function ld(a){a=a|0;return 9872;}function md(a){a=a|0;Vz(a);return;}function nd(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11172;c[b+4>>2]=c[a+4>>2];return b|0;}function od(a,b){a=a|0;b=b|0;c[b>>2]=11172;c[b+4>>2]=c[a+4>>2];return;}function pd(a){a=a|0;return;}function qd(a){a=a|0;Vz(a);return;}function rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+8|0;Lc(f,b);b=c[a+4>>2]|0;a=c[f>>2]|0;eb(a|0);c[e>>2]=a;ab(_a(c[b>>2]|0,1,11108,e|0)|0);ab(a|0);l=d;return;}function sd(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==13666?a+4|0:0)|0;}function td(a){a=a|0;return 9896;}function ud(a){a=a|0;Vz(a);return;}function vd(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11216;c[b+4>>2]=c[a+4>>2];return b|0;}function wd(a,b){a=a|0;b=b|0;c[b>>2]=11216;c[b+4>>2]=c[a+4>>2];return;}function xd(a){a=a|0;return;}function yd(a){a=a|0;Vz(a);return;}function zd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+8|0;Lc(f,b);b=c[a+4>>2]|0;a=c[f>>2]|0;eb(a|0);c[e>>2]=a;ab(_a(c[b>>2]|0,1,11108,e|0)|0);ab(a|0);l=d;return;}function Ad(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==13859?a+4|0:0)|0;}function Bd(a){a=a|0;return 9920;}function Cd(a){a=a|0;return;}function Dd(a){a=a|0;Vz(a);return;}function Ed(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11260;c[b+4>>2]=c[a+4>>2];return b|0;}function Fd(a,b){a=a|0;b=b|0;c[b>>2]=11260;c[b+4>>2]=c[a+4>>2];return;}function Gd(a){a=a|0;return;}function Hd(a){a=a|0;Vz(a);return;}function Id(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+8|0;Lc(f,b);b=c[a+4>>2]|0;a=c[f>>2]|0;eb(a|0);c[e>>2]=a;ab(_a(c[b>>2]|0,1,11108,e|0)|0);ab(a|0);l=d;return;}function Jd(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==14061?a+4|0:0)|0;}function Kd(a){a=a|0;return 9944;}function Ld(a){a=a|0;Vz(a);return;}function Md(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11304;c[b+4>>2]=c[a+4>>2];return b|0;}function Nd(a,b){a=a|0;b=b|0;c[b>>2]=11304;c[b+4>>2]=c[a+4>>2];return;}function Od(a){a=a|0;return;}function Pd(a){a=a|0;Vz(a);return;}function Qd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+8|0;Lc(f,b);b=c[a+4>>2]|0;a=c[f>>2]|0;eb(a|0);c[e>>2]=a;ab(_a(c[b>>2]|0,1,11108,e|0)|0);ab(a|0);l=d;return;}function Rd(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==14267?a+4|0:0)|0;}function Sd(a){a=a|0;return 9968;}function Td(a){a=a|0;Vz(a);return;}function Ud(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11348;c[b+4>>2]=c[a+4>>2];return b|0;}function Vd(a,b){a=a|0;b=b|0;c[b>>2]=11348;c[b+4>>2]=c[a+4>>2];return;}function Wd(a){a=a|0;return;}function Xd(a){a=a|0;Vz(a);return;}function Yd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+8|0;Lc(f,b);b=c[a+4>>2]|0;a=c[f>>2]|0;eb(a|0);c[e>>2]=a;ab(_a(c[b>>2]|0,1,11108,e|0)|0);ab(a|0);l=d;return;}function Zd(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==14464?a+4|0:0)|0;}function _d(a){a=a|0;return 9992;}function $d(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=b+4|0;f=c[e>>2]|0;g=b+8|0;h=c[g>>2]|0;if((f|0)!=(h|0)){a[f>>0]=a[d>>0]|0;c[e>>2]=(c[e>>2]|0)+1;return;}i=c[b>>2]|0;j=f-i|0;f=j+1|0;k=i;if((f|0)<0)Wz(b);l=h-i|0;h=l<<1;m=l>>>0<1073741823?h>>>0<f>>>0?f:h:2147483647;if(!m)n=0;else n=Uz(m)|0;h=n+j|0;a[h>>0]=a[d>>0]|0;if((j|0)>0)mE(n|0,k|0,j|0)|0;c[b>>2]=n;c[e>>2]=h+1;c[g>>2]=n+m;if(!i)return;Vz(k);return;}function ae(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+4|0;f=c[a>>2]|0;g=(c[e>>2]|0)-f|0;if(g>>>0<b>>>0){de(a,b-g|0,d);return;}if(g>>>0<=b>>>0)return;c[e>>2]=f+b;return;}function be(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+16|0;g=f;h=c[b>>2]|0;if(((c[b+4>>2]|0)-h|0)>>>0<=e>>>0){i=1;c[a>>2]=i;l=f;return;}c[g>>2]=d[h+e>>0];i=kb(10960,g|0)|0;c[a>>2]=i;l=f;return;}function ce(b,d,e){b=b|0;d=d|0;e=e|0;a[(c[b>>2]|0)+d>>0]=a[e>>0]|0;return 1;}function de(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=b+8|0;g=c[f>>2]|0;h=b+4|0;i=c[h>>2]|0;if((g-i|0)>>>0>=d>>>0){j=d;k=i;do{a[k>>0]=a[e>>0]|0;k=(c[h>>2]|0)+1|0;c[h>>2]=k;j=j+-1|0;}while((j|0)!=0);return;}j=c[b>>2]|0;k=i-j|0;l=k+d|0;if((l|0)<0)Wz(b);m=g-j|0;g=m<<1;n=m>>>0<1073741823?g>>>0<l>>>0?l:g:2147483647;if(!n)o=0;else o=Uz(n)|0;g=o+k|0;k=o+n|0;n=i+d-j|0;j=d;d=g;while(1){a[d>>0]=a[e>>0]|0;j=j+-1|0;if(!j)break;else d=d+1|0;}d=c[b>>2]|0;j=(c[h>>2]|0)-d|0;e=g+(0-j)|0;if((j|0)>0)mE(e|0,d|0,j|0)|0;c[b>>2]=e;c[h>>2]=o+n;c[f>>2]=k;if(!d)return;Vz(d);return;}function ee(a){a=a|0;return 10032;}function fe(a){a=a|0;var b=0;if(!a)return;b=c[a>>2]|0;if(b|0){c[a+4>>2]=b;Vz(b);}Vz(a);return;}function ge(){var a=0;a=Uz(12)|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return a|0;}function he(a){a=a|0;return oc[a&7]()|0;}function ie(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+16|0;g=f;h=c[b>>2]|0;i=c[b+4>>2]|0;b=d+(i>>1)|0;if(!(i&1))j=h;else j=c[(c[b>>2]|0)+h>>2]|0;a[g>>0]=e;xc[j&31](b,g);l=f;return;}function je(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=l;l=l+16|0;h=g;i=c[b>>2]|0;j=c[b+4>>2]|0;b=d+(j>>1)|0;if(!(j&1))k=i;else k=c[(c[b>>2]|0)+i>>2]|0;a[h>>0]=f;yc[k&7](b,e,h);l=g;return;}function ke(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a>>2]|0;e=c[a+4>>2]|0;a=b+(e>>1)|0;if(!(e&1))f=d;else f=c[(c[a>>2]|0)+d>>2]|0;return pc[f&63](a)|0;}function le(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;yc[c[a>>2]&7](f,b,d);eb(c[f>>2]|0);d=c[f>>2]|0;ab(d|0);l=e;return d|0;}function me(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=l;l=l+16|0;h=g;i=c[b>>2]|0;a[h>>0]=f;f=rc[i&31](d,e,h)|0;l=g;return f|0;}function ne(a){a=a|0;vc[a&3]();return;}function oe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;xc[a&31](b,f);ab(c[f>>2]|0);l=e;return;}function pe(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;xc[a&31](e,b);eb(c[e>>2]|0);b=c[e>>2]|0;ab(b|0);l=d;return b|0;}function qe(a){a=a|0;return 10096;}function re(a){a=a|0;if(!a)return;se(a);Vz(a);return;}function se(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b;e=c[a>>2]|0;do{if(e){c[d>>2]=e;f=a+24|0;g=c[f>>2]|0;if(!g){h=va(4)|0;c[h>>2]=12636;ya(h|0,10800,50);}else{xc[c[(c[g>>2]|0)+24>>2]&31](g,d);c[a>>2]=0;i=f;break;}}else i=a+24|0;}while(0);d=c[i>>2]|0;if((a+8|0)==(d|0)){wc[c[(c[d>>2]|0)+16>>2]&127](d);l=b;return;}if(!d){l=b;return;}wc[c[(c[d>>2]|0)+20>>2]&127](d);l=b;return;}function te(a){a=a|0;var b=0;b=c[a+16>>2]|0;if((a|0)==(b|0)){wc[c[(c[b>>2]|0)+16>>2]&127](b);return;}if(!b)return;wc[c[(c[b>>2]|0)+20>>2]&127](b);return;}function ue(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=b;b=qc[a&63](f,d)|0;ab(c[f>>2]|0);l=e;return b|0;}function ve(a){a=a|0;return 10152;}function we(a){a=a|0;if(!a)return;xe(a);Vz(a);return;}function xe(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b;e=c[a>>2]|0;do{if(e){c[d>>2]=e;f=a+24|0;g=c[f>>2]|0;if(!g){h=va(4)|0;c[h>>2]=12636;ya(h|0,10800,50);}else{xc[c[(c[g>>2]|0)+24>>2]&31](g,d);c[a>>2]=0;i=f;break;}}else i=a+24|0;}while(0);d=c[i>>2]|0;if((a+8|0)==(d|0)){wc[c[(c[d>>2]|0)+16>>2]&127](d);l=b;return;}if(!d){l=b;return;}wc[c[(c[d>>2]|0)+20>>2]&127](d);l=b;return;}function ye(a){a=a|0;var b=0;b=c[a+16>>2]|0;if((a|0)==(b|0)){wc[c[(c[b>>2]|0)+16>>2]&127](b);return;}if(!b)return;wc[c[(c[b>>2]|0)+20>>2]&127](b);return;}function ze(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=pc[a&63](e)|0;ab(c[e>>2]|0);l=d;return b|0;}function Ae(a){a=a|0;return 10200;}function Be(a){a=a|0;if(!a)return;Vz(a);return;}function Ce(){return Uz(1)|0;}function De(a){a=a|0;return oc[a&7]()|0;}function Ee(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]|0;f=c[a+4>>2]|0;a=b+(f>>1)|0;if(!(f&1))g=e;else g=c[(c[a>>2]|0)+e>>2]|0;return qc[g&63](a,d)|0;}function Fe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]|0;f=c[a+4>>2]|0;a=b+(f>>1)|0;if(!(f&1))g=e;else g=c[(c[a>>2]|0)+e>>2]|0;return qc[g&63](a,d)|0;}function Ge(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[a>>2]|0;h=c[a+4>>2]|0;a=b+(h>>1)|0;if(!(h&1))i=g;else i=c[(c[a>>2]|0)+g>>2]|0;return sc[i&15](a,d,e,f)|0;}function He(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=c[a>>2]|0;g=c[a+4>>2]|0;a=b+(g>>1)|0;if(!(g&1))h=f;else h=c[(c[a>>2]|0)+f>>2]|0;return rc[h&31](a,d,e)|0;}function Ie(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[a>>2]|0;h=c[a+4>>2]|0;a=b+(h>>1)|0;if(!(h&1))i=g;else i=c[(c[a>>2]|0)+g>>2]|0;return sc[i&15](a,d,e,f)|0;}function Je(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[a>>2]|0;h=c[a+4>>2]|0;a=b+(h>>1)|0;if(!(h&1))i=g;else i=c[(c[a>>2]|0)+g>>2]|0;return sc[i&15](a,d,e,f)|0;}function Ke(a){a=a|0;return 10240;}function Le(a){a=a|0;if(!a)return;$f(a);Vz(a);return;}function Me(){var a=0;a=Uz(36)|0;_f(a);return a|0;}function Ne(a){a=a|0;return oc[a&7]()|0;}function Oe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]|0;f=c[a+4>>2]|0;a=b+(f>>1)|0;if(!(f&1))g=e;else g=c[(c[a>>2]|0)+e>>2]|0;return qc[g&63](a,d)|0;}function Pe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]|0;f=c[a+4>>2]|0;a=b+(f>>1)|0;if(!(f&1))g=e;else g=c[(c[a>>2]|0)+e>>2]|0;return qc[g&63](a,d)|0;}function Qe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+16|0;g=f+4|0;h=f;i=c[a>>2]|0;j=c[a+4>>2]|0;a=b+(j>>1)|0;if(!(j&1))k=i;else k=c[(c[a>>2]|0)+i>>2]|0;c[g>>2]=d;c[h>>2]=e;e=rc[k&31](a,g,h)|0;ab(c[h>>2]|0);ab(c[g>>2]|0);l=f;return e|0;}function Re(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e;g=c[a>>2]|0;h=c[a+4>>2]|0;a=b+(h>>1)|0;if(!(h&1))i=g;else i=c[(c[a>>2]|0)+g>>2]|0;c[f>>2]=d;d=qc[i&63](a,f)|0;ab(c[f>>2]|0);l=e;return d|0;}function Se(a){a=a|0;return 10280;}function Te(a){a=a|0;if(!a)return;Ag(a);Vz(a);return;}function Ue(){var a=0;a=Uz(36)|0;zg(a);return a|0;}function Ve(a){a=a|0;return oc[a&7]()|0;}function We(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a>>2]|0;e=c[a+4>>2]|0;a=b+(e>>1)|0;if(!(e&1))f=d;else f=c[(c[a>>2]|0)+d>>2]|0;return pc[f&63](a)|0;}function Xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]|0;f=c[a+4>>2]|0;a=b+(f>>1)|0;if(!(f&1))g=e;else g=c[(c[a>>2]|0)+e>>2]|0;return qc[g&63](a,d)|0;}function Ye(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+16|0;g=f+4|0;h=f;i=c[a>>2]|0;j=c[a+4>>2]|0;a=b+(j>>1)|0;if(!(j&1))k=i;else k=c[(c[a>>2]|0)+i>>2]|0;c[g>>2]=d;c[h>>2]=e;e=rc[k&31](a,g,h)|0;ab(c[h>>2]|0);ab(c[g>>2]|0);l=f;return e|0;}function Ze(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e;g=c[a>>2]|0;h=c[a+4>>2]|0;a=b+(h>>1)|0;if(!(h&1))i=g;else i=c[(c[a>>2]|0)+g>>2]|0;c[f>>2]=d;d=qc[i&63](a,f)|0;ab(c[f>>2]|0);l=e;return d|0;}function _e(){$c(0);return;}function $e(a,b){a=a|0;b=b|0;a=lj(b)|0;b=(Ph(a)|0)==0;return(b?a>>>0>2147483646?-2:a:-1)|0;}function af(a,b){a=a|0;b=b|0;var d=0;a=c[b>>2]|0;d=wq(a,(c[b+4>>2]|0)-a|0)|0;a=(Ph(d)|0)==0;return(a?d>>>0>2147483646?-2:d:-1)|0;}function bf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;a=c[b>>2]|0;f=c[d>>2]|0;g=Go(a,(c[b+4>>2]|0)-a|0,f,(c[d+4>>2]|0)-f|0,e)|0;e=(Ph(g)|0)==0;return(e?g>>>0>2147483646?-2:g:-1)|0;}function cf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=c[b>>2]|0;e=c[d>>2]|0;f=ux(a,(c[b+4>>2]|0)-a|0,e,(c[d+4>>2]|0)-e|0)|0;e=(Ph(f)|0)==0;return(e?f>>>0>2147483646?-2:f:-1)|0;}function df(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;a=l;l=l+32|0;f=a;g=mj()|0;c[f>>2]=g;h=f+8|0;c[f+24>>2]=h;c[h>>2]=11576;c[f+12>>2]=68;if(!g){i=-3;ff(f);l=a;return i|0;}h=c[b>>2]|0;j=c[d>>2]|0;k=Lo(g,h,(c[b+4>>2]|0)-h|0,j,(c[d+4>>2]|0)-j|0,c[e>>2]|0)|0;e=(Ph(k)|0)==0;i=e?k>>>0>2147483646?-2:k:-1;ff(f);l=a;return i|0;}function ef(a){a=a|0;qj(a)|0;return;}function ff(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b;e=c[a>>2]|0;do{if(e){c[d>>2]=e;f=a+24|0;g=c[f>>2]|0;if(!g){h=va(4)|0;c[h>>2]=12636;ya(h|0,10800,50);}else{xc[c[(c[g>>2]|0)+24>>2]&31](g,d);c[a>>2]=0;i=f;break;}}else i=a+24|0;}while(0);d=c[i>>2]|0;if((a+8|0)==(d|0)){wc[c[(c[d>>2]|0)+16>>2]&127](d);l=b;return;}if(!d){l=b;return;}wc[c[(c[d>>2]|0)+20>>2]&127](d);l=b;return;}function gf(a){a=a|0;var b=0;b=c[a+16>>2]|0;if((a|0)==(b|0)){wc[c[(c[b>>2]|0)+16>>2]&127](b);return;}if(!b)return;wc[c[(c[b>>2]|0)+20>>2]&127](b);return;}function hf(a){a=a|0;return;}function jf(a){a=a|0;Vz(a);return;}function kf(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11576;c[b+4>>2]=c[a+4>>2];return b|0;}function lf(a,b){a=a|0;b=b|0;c[b>>2]=11576;c[b+4>>2]=c[a+4>>2];return;}function mf(a){a=a|0;return;}function nf(a){a=a|0;Vz(a);return;}function of(a,b){a=a|0;b=b|0;wc[c[a+4>>2]&127](c[b>>2]|0);return;}function pf(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==15195?a+4|0:0)|0;}function qf(a){a=a|0;return 10336;}function rf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;a=l;l=l+32|0;f=a;g=Wp()|0;c[f>>2]=g;h=f+8|0;c[f+24>>2]=h;c[h>>2]=11620;c[f+12>>2]=69;if(!g){i=-4;tf(f);l=a;return i|0;}h=c[b>>2]|0;j=c[d>>2]|0;k=Dx(g,h,(c[b+4>>2]|0)-h|0,j,(c[d+4>>2]|0)-j|0,c[e>>2]|0)|0;e=(Ph(k)|0)==0;i=e?k>>>0>2147483646?-2:k:-1;tf(f);l=a;return i|0;}function sf(a){a=a|0;Xp(a)|0;return;}function tf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b;e=c[a>>2]|0;do{if(e){c[d>>2]=e;f=a+24|0;g=c[f>>2]|0;if(!g){h=va(4)|0;c[h>>2]=12636;ya(h|0,10800,50);}else{xc[c[(c[g>>2]|0)+24>>2]&31](g,d);c[a>>2]=0;i=f;break;}}else i=a+24|0;}while(0);d=c[i>>2]|0;if((a+8|0)==(d|0)){wc[c[(c[d>>2]|0)+16>>2]&127](d);l=b;return;}if(!d){l=b;return;}wc[c[(c[d>>2]|0)+20>>2]&127](d);l=b;return;}function uf(a){a=a|0;var b=0;b=c[a+16>>2]|0;if((a|0)==(b|0)){wc[c[(c[b>>2]|0)+16>>2]&127](b);return;}if(!b)return;wc[c[(c[b>>2]|0)+20>>2]&127](b);return;}function vf(a){a=a|0;return;}function wf(a){a=a|0;Vz(a);return;}function xf(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11620;c[b+4>>2]=c[a+4>>2];return b|0;}function yf(a,b){a=a|0;b=b|0;c[b>>2]=11620;c[b+4>>2]=c[a+4>>2];return;}function zf(a){a=a|0;return;}function Af(a){a=a|0;Vz(a);return;}function Bf(a,b){a=a|0;b=b|0;wc[c[a+4>>2]&127](c[b>>2]|0);return;}function Cf(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==15349?a+4|0:0)|0;}function Df(a){a=a|0;return 10384;}function Ef(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b>>2]|0;c[a>>2]=Ho(e,(c[b+4>>2]|0)-e|0,d)|0;d=a+8|0;c[a+24>>2]=d;c[d>>2]=11664;c[a+12>>2]=70;return;}function Ff(a){a=a|0;rj(a)|0;return;}function Gf(a){a=a|0;return;}function Hf(a){a=a|0;Vz(a);return;}function If(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11664;c[b+4>>2]=c[a+4>>2];return b|0;}function Jf(a,b){a=a|0;b=b|0;c[b>>2]=11664;c[b+4>>2]=c[a+4>>2];return;}function Kf(a){a=a|0;return;}function Lf(a){a=a|0;Vz(a);return;}function Mf(a,b){a=a|0;b=b|0;wc[c[a+4>>2]&127](c[b>>2]|0);return;}function Nf(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==15503?a+4|0:0)|0;}function Of(a){a=a|0;return 10432;}function Pf(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=Cx(d,(c[b+4>>2]|0)-d|0)|0;d=a+8|0;c[a+24>>2]=d;c[d>>2]=11708;c[a+12>>2]=71;return;}function Qf(a){a=a|0;Yp(a)|0;return;}function Rf(a){a=a|0;return;}function Sf(a){a=a|0;Vz(a);return;}function Tf(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11708;c[b+4>>2]=c[a+4>>2];return b|0;}function Uf(a,b){a=a|0;b=b|0;c[b>>2]=11708;c[b+4>>2]=c[a+4>>2];return;}function Vf(a){a=a|0;return;}function Wf(a){a=a|0;Vz(a);return;}function Xf(a,b){a=a|0;b=b|0;wc[c[a+4>>2]&127](c[b>>2]|0);return;}function Yf(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==15661?a+4|0:0)|0;}function Zf(a){a=a|0;return 10480;}function _f(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=44;b=a+8|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;return;}function $f(a){a=a|0;var b=0;b=c[a+24>>2]|0;if(b|0){c[a+28>>2]=b;Vz(b);}b=c[a+12>>2]|0;if(b|0){c[a+16>>2]=b;Vz(b);}b=c[a>>2]|0;c[a>>2]=0;if(!b)return;pc[c[a+4>>2]&63](b)|0;return;}function ag(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11752;c[e+4>>2]=b;c[f>>2]=e;b=bg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function bg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;d=l;l=l+16|0;e=d;if(c[a>>2]|0){f=1;l=d;return f|0;}g=Mo()|0;if(!g){f=0;l=d;return f|0;}c[e>>2]=g;h=c[b+16>>2]|0;if(!h){b=va(4)|0;c[b>>2]=12636;ya(b|0,10800,50);}if(Ph(qc[c[(c[h>>2]|0)+24>>2]&63](h,e)|0)|0){Oo(g)|0;f=0;l=d;return f|0;}e=c[a>>2]|0;c[a>>2]=g;g=a+4|0;if(e|0)pc[c[g>>2]&63](e)|0;c[g>>2]=44;g=Po()|0;e=a+12|0;h=a+20|0;b=c[e>>2]|0;i=b;if(((c[h>>2]|0)-b|0)>>>0<g>>>0){j=a+16|0;k=(c[j>>2]|0)-b|0;m=Uz(g)|0;if((k|0)>0)mE(m|0,i|0,k|0)|0;c[e>>2]=m;c[j>>2]=m+k;c[h>>2]=m+g;if(b|0)Vz(i);}cg(a+24|0,Qo()|0);c[a+8>>2]=(c[h>>2]|0)-(c[e>>2]|0);f=1;l=d;return f|0;}function cg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=b+4|0;f=c[e>>2]|0;g=c[b>>2]|0;h=f-g|0;i=g;if(h>>>0>=d>>>0){if(h>>>0<=d>>>0)return;c[e>>2]=i+d;return;}j=d-h|0;k=b+8|0;l=c[k>>2]|0;if((l-f|0)>>>0>=j>>>0){m=j;n=f;do{a[n>>0]=0;n=(c[e>>2]|0)+1|0;c[e>>2]=n;m=m+-1|0;}while((m|0)!=0);return;}if((d|0)<0)Wz(b);m=l-g|0;l=m<<1;n=m>>>0<1073741823?l>>>0<d>>>0?d:l:2147483647;if(!n)o=0;else o=Uz(n)|0;oE(o+h|0,0,j|0)|0;if((h|0)>0)mE(o|0,i|0,h|0)|0;c[b>>2]=o;c[e>>2]=o+d;c[k>>2]=o+n;if(!g)return;Vz(i);return;}function dg(a){a=a|0;return;}function eg(a){a=a|0;Vz(a);return;}function fg(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11752;c[b+4>>2]=c[a+4>>2];return b|0;}function gg(a,b){a=a|0;b=b|0;c[b>>2]=11752;c[b+4>>2]=c[a+4>>2];return;}function hg(a){a=a|0;return;}function ig(a){a=a|0;Vz(a);return;}function jg(a,b){a=a|0;b=b|0;return Wo(c[b>>2]|0,c[a+4>>2]|0)|0;}function kg(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==15819?a+4|0:0)|0;}function lg(a){a=a|0;return 10528;}function mg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11796;c[e+4>>2]=b;c[f>>2]=e;b=bg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function ng(a){a=a|0;Vz(a);return;}function og(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11796;c[b+4>>2]=c[a+4>>2];return b|0;}function pg(a,b){a=a|0;b=b|0;c[b>>2]=11796;c[b+4>>2]=c[a+4>>2];return;}function qg(a){a=a|0;return;}function rg(a){a=a|0;Vz(a);return;}function sg(a,b){a=a|0;b=b|0;return Uo(c[b>>2]|0,c[c[a+4>>2]>>2]|0)|0;}function tg(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==16003?a+4|0:0)|0;}function ug(a){a=a|0;return 10560;}function vg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;if(!(c[b>>2]|0)){f=0;return f|0;}g=d+4|0;h=c[d>>2]|0;i=(c[g>>2]|0)-h|0;if(!i){f=1;return f|0;}j=b+12|0;k=b+20|0;l=b+16|0;m=b+8|0;n=0;o=h;h=i;a:while(1){i=c[k>>2]|0;p=c[j>>2]|0;q=c[l>>2]|0;r=p-q+(i-p)|0;s=h-n|0;t=s>>>0<r>>>0?s:r;s=o+n|0;u=s+t|0;n=t+n|0;if(!t){v=p;w=q;}else{p=q;q=i;i=s;while(1){if((p|0)==(q|0)){s=c[j>>2]|0;t=q-s|0;x=t+1|0;y=s;if((x|0)<0){z=9;break a;}A=t<<1;B=t>>>0<1073741823?A>>>0<x>>>0?x:A:2147483647;if(!B)C=0;else C=Uz(B)|0;A=C+t|0;a[A>>0]=a[i>>0]|0;if((t|0)>0)mE(C|0,y|0,t|0)|0;c[j>>2]=C;c[l>>2]=A+1;c[k>>2]=C+B;if(s|0)Vz(y);}else{a[p>>0]=a[i>>0]|0;c[l>>2]=(c[l>>2]|0)+1;}y=i+1|0;if((y|0)==(u|0))break;p=c[l>>2]|0;q=c[k>>2]|0;i=y;}v=c[j>>2]|0;w=c[l>>2]|0;}if(((r|0)==0?1:(w-v|0)>>>0>=(c[m>>2]|0)>>>0)?!(wg(b,e)|0):0){f=0;z=22;break;}o=c[d>>2]|0;h=(c[g>>2]|0)-o|0;if(h>>>0<=n>>>0){f=1;z=22;break;}}if((z|0)==9)Wz(j);else if((z|0)==22)return f|0;return 0;}function wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;d=l;l=l+32|0;e=d+12|0;f=d;g=a+12|0;h=c[g>>2]|0;i=a+16|0;j=c[i>>2]|0;k=h;if((h|0)==(j|0)){m=1;l=d;return m|0;}c[e>>2]=h;h=e+4|0;n=j-k|0;c[h>>2]=n;j=e+8|0;c[j>>2]=0;do{if(n){o=a+24|0;p=a+32|0;q=f+4|0;r=a+28|0;s=f+8|0;t=a+8|0;u=b+16|0;while(1){cg(o,(c[p>>2]|0)-(c[o>>2]|0)|0);v=c[o>>2]|0;c[f>>2]=v;c[q>>2]=(c[r>>2]|0)-v;c[s>>2]=0;v=Zo(c[a>>2]|0,f,e)|0;c[t>>2]=v;if(Ph(v)|0){w=8;break;}cg(o,c[s>>2]|0);v=c[u>>2]|0;if(!v){w=6;break;}xc[c[(c[v>>2]|0)+24>>2]&31](v,o);if((c[j>>2]|0)>>>0>=(c[h>>2]|0)>>>0){w=9;break;}}if((w|0)==6){o=va(4)|0;c[o>>2]=12636;ya(o|0,10800,50);}else if((w|0)==8){x=0;break;}else if((w|0)==9){y=c[g>>2]|0;w=10;break;}}else{y=k;w=10;}}while(0);if((w|0)==10){c[i>>2]=y;x=1;}m=x;l=d;return m|0;}function xg(a,b){a=a|0;b=b|0;return wg(a,b)|0;}function yg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=l;l=l+16|0;e=d;if(!(c[a>>2]|0)){f=1;l=d;return f|0;}if((c[a+12>>2]|0)!=(c[a+16>>2]|0)?!(wg(a,b)|0):0)g=0;else h=4;do{if((h|0)==4){i=a+24|0;cg(i,(c[a+32>>2]|0)-(c[i>>2]|0)|0);j=c[i>>2]|0;c[e>>2]=j;c[e+4>>2]=(c[a+28>>2]|0)-j;j=e+8|0;c[j>>2]=0;if(_o(c[a>>2]|0,e)|0){f=0;l=d;return f|0;}cg(i,c[j>>2]|0);j=c[b+16>>2]|0;if(!j){k=va(4)|0;c[k>>2]=12636;ya(k|0,10800,50);}else{xc[c[(c[j>>2]|0)+24>>2]&31](j,i);g=1;break;}}}while(0);b=c[a>>2]|0;c[a>>2]=0;if(!b){f=g;l=d;return f|0;}pc[c[a+4>>2]&63](b)|0;f=g;l=d;return f|0;}function zg(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=45;b=a+8|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;return;}function Ag(a){a=a|0;var b=0;b=c[a+24>>2]|0;if(b|0){c[a+28>>2]=b;Vz(b);}b=c[a+12>>2]|0;if(b|0){c[a+16>>2]=b;Vz(b);}b=c[a>>2]|0;c[a>>2]=0;if(!b)return;pc[c[a+4>>2]&63](b)|0;return;}function Bg(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+32|0;d=b;e=d+16|0;c[d>>2]=11840;c[e>>2]=d;f=Cg(a,d)|0;a=c[e>>2]|0;if((d|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=b;return f|0;}if(!a){l=b;return f|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=b;return f|0;}function Cg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;d=l;l=l+16|0;e=d;if(c[a>>2]|0){f=1;l=d;return f|0;}g=Ex()|0;if(!g){f=0;l=d;return f|0;}c[e>>2]=g;h=c[b+16>>2]|0;if(!h){b=va(4)|0;c[b>>2]=12636;ya(b|0,10800,50);}b=qc[c[(c[h>>2]|0)+24>>2]&63](h,e)|0;if(Ph(b)|0){Gx(g)|0;f=0;l=d;return f|0;}e=c[a>>2]|0;c[a>>2]=g;g=a+4|0;if(e|0)pc[c[g>>2]&63](e)|0;c[g>>2]=45;g=Hx()|0;e=a+12|0;h=a+20|0;i=c[e>>2]|0;j=i;if(((c[h>>2]|0)-i|0)>>>0<g>>>0){k=a+16|0;m=(c[k>>2]|0)-i|0;n=Uz(g)|0;if((m|0)>0)mE(n|0,j|0,m|0)|0;c[e>>2]=n;c[k>>2]=n+m;c[h>>2]=n+g;if(i|0)Vz(j);}cg(a+24|0,Ix()|0);c[a+8>>2]=b;f=1;l=d;return f|0;}function Dg(a){a=a|0;return;}function Eg(a){a=a|0;Vz(a);return;}function Fg(a){a=a|0;a=Uz(8)|0;c[a>>2]=11840;return a|0;}function Gg(a,b){a=a|0;b=b|0;c[b>>2]=11840;return;}function Hg(a){a=a|0;return;}function Ig(a){a=a|0;Vz(a);return;}function Jg(a,b){a=a|0;b=b|0;return Mx(c[b>>2]|0)|0;}function Kg(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==16184?a+4|0:0)|0;}function Lg(a){a=a|0;return 10584;}function Mg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11884;c[e+4>>2]=b;c[f>>2]=e;b=Cg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function Ng(a){a=a|0;Vz(a);return;}function Og(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11884;c[b+4>>2]=c[a+4>>2];return b|0;}function Pg(a,b){a=a|0;b=b|0;c[b>>2]=11884;c[b+4>>2]=c[a+4>>2];return;}function Qg(a){a=a|0;return;}function Rg(a){a=a|0;Vz(a);return;}function Sg(a,b){a=a|0;b=b|0;return Nx(c[b>>2]|0,c[c[a+4>>2]>>2]|0)|0;}function Tg(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==16372?a+4|0:0)|0;}function Ug(a){a=a|0;return 10616;}function Vg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;if(!(c[b>>2]|0)){f=0;return f|0;}g=d+4|0;h=c[d>>2]|0;i=(c[g>>2]|0)-h|0;if(!i){f=1;return f|0;}j=b+12|0;k=b+20|0;l=b+16|0;m=b+8|0;n=0;o=h;h=i;a:while(1){i=c[k>>2]|0;p=c[j>>2]|0;q=c[l>>2]|0;r=p-q+(i-p)|0;s=h-n|0;t=s>>>0<r>>>0?s:r;s=o+n|0;u=s+t|0;n=t+n|0;if(!t){v=p;w=q;}else{p=q;q=i;i=s;while(1){if((p|0)==(q|0)){s=c[j>>2]|0;t=q-s|0;x=t+1|0;y=s;if((x|0)<0){z=9;break a;}A=t<<1;B=t>>>0<1073741823?A>>>0<x>>>0?x:A:2147483647;if(!B)C=0;else C=Uz(B)|0;A=C+t|0;a[A>>0]=a[i>>0]|0;if((t|0)>0)mE(C|0,y|0,t|0)|0;c[j>>2]=C;c[l>>2]=A+1;c[k>>2]=C+B;if(s|0)Vz(y);}else{a[p>>0]=a[i>>0]|0;c[l>>2]=(c[l>>2]|0)+1;}y=i+1|0;if((y|0)==(u|0))break;p=c[l>>2]|0;q=c[k>>2]|0;i=y;}v=c[j>>2]|0;w=c[l>>2]|0;}if(((r|0)==0?1:(w-v|0)>>>0>=(c[m>>2]|0)>>>0)?!(Wg(b,e)|0):0){f=0;z=22;break;}o=c[d>>2]|0;h=(c[g>>2]|0)-o|0;if(h>>>0<=n>>>0){f=1;z=22;break;}}if((z|0)==9)Wz(j);else if((z|0)==22)return f|0;return 0;}function Wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;d=l;l=l+32|0;e=d+12|0;f=d;g=a+12|0;h=c[g>>2]|0;i=a+16|0;j=c[i>>2]|0;k=h;if((h|0)==(j|0)){m=1;l=d;return m|0;}c[e>>2]=h;h=e+4|0;n=j-k|0;c[h>>2]=n;j=e+8|0;c[j>>2]=0;do{if(n){o=a+24|0;p=a+32|0;q=f+4|0;r=a+28|0;s=f+8|0;t=a+8|0;u=b+16|0;while(1){cg(o,(c[p>>2]|0)-(c[o>>2]|0)|0);v=c[o>>2]|0;c[f>>2]=v;c[q>>2]=(c[r>>2]|0)-v;c[s>>2]=0;v=Qx(c[a>>2]|0,f,e)|0;c[t>>2]=v;if(Ph(v)|0){w=8;break;}cg(o,c[s>>2]|0);v=c[u>>2]|0;if(!v){w=6;break;}xc[c[(c[v>>2]|0)+24>>2]&31](v,o);if((c[j>>2]|0)>>>0>=(c[h>>2]|0)>>>0){w=9;break;}}if((w|0)==6){o=va(4)|0;c[o>>2]=12636;ya(o|0,10800,50);}else if((w|0)==8){x=0;break;}else if((w|0)==9){y=c[g>>2]|0;w=10;break;}}else{y=k;w=10;}}while(0);if((w|0)==10){c[i>>2]=y;x=1;}m=x;l=d;return m|0;}function Xg(a,b){a=a|0;b=b|0;return Wg(a,b)|0;}function Yg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a>>2]|0;if(!d){e=1;return e|0;}if((c[a+12>>2]|0)!=(c[a+16>>2]|0)){f=Wg(a,b)|0;b=c[a>>2]|0;c[a>>2]=0;if(!b){e=f;return e|0;}else{g=f;h=b;}}else{c[a>>2]=0;g=1;h=d;}pc[c[a+4>>2]&63](h)|0;e=g;return e|0;}function Zg(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=_g(c[d>>2]|0)|0;l=b;return a|0;}function _g(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function $g(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=_g(c[d>>2]|0)|0;l=b;return a|0;}function ah(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;h=l;l=l+80|0;i=h+72|0;j=h+68|0;k=h+64|0;m=h+60|0;n=h+56|0;o=h+52|0;p=h+48|0;q=h+44|0;r=h+40|0;s=h+36|0;t=h+32|0;u=h+28|0;v=h+24|0;w=h+20|0;x=h+16|0;y=h+12|0;z=h+8|0;A=h+4|0;B=h;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[p>>2];c[x>>2]=0;c[y>>2]=0;if((c[o>>2]|0)>>>0<4){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=bh(c[r>>2]|0)|0;c[s>>2]=(c[v>>2]&15)+5;if((c[s>>2]|0)>15){c[i>>2]=-44;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=(c[v>>2]|0)>>>4;c[w>>2]=4;c[c[m>>2]>>2]=c[s>>2];c[t>>2]=(1<<c[s>>2])+1;c[u>>2]=1<<c[s>>2];c[s>>2]=(c[s>>2]|0)+1;a:while(1){if(!(((c[t>>2]|0)>1?(c[x>>2]|0)>>>0<=(c[c[k>>2]>>2]|0)>>>0:0)|0))break;do{if(c[y>>2]|0){c[z>>2]=c[x>>2];while(1){if((c[v>>2]&65535|0)!=65535)break;c[z>>2]=(c[z>>2]|0)+24;if((c[r>>2]|0)>>>0<((c[q>>2]|0)+-5|0)>>>0){c[r>>2]=(c[r>>2]|0)+2;m=bh(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]|0);}else{c[v>>2]=(c[v>>2]|0)>>>16;c[w>>2]=(c[w>>2]|0)+16;}}while(1){if((c[v>>2]&3|0)!=3)break;c[z>>2]=(c[z>>2]|0)+3;c[v>>2]=(c[v>>2]|0)>>>2;c[w>>2]=(c[w>>2]|0)+2;}c[z>>2]=(c[z>>2]|0)+(c[v>>2]&3);c[w>>2]=(c[w>>2]|0)+2;if((c[z>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0){D=18;break a;}while(1){if((c[x>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break;m=c[j>>2]|0;o=c[x>>2]|0;c[x>>2]=o+1;b[m+(o<<1)>>1]=0;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[v>>2]=(c[v>>2]|0)>>>2;break;}c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;o=bh(c[r>>2]|0)|0;c[v>>2]=o>>>(c[w>>2]|0);}}while(0);c[A>>2]=(c[u>>2]<<1)-1-(c[t>>2]|0);o=c[v>>2]|0;m=c[u>>2]|0;if((c[v>>2]&(c[u>>2]|0)-1)>>>0<(c[A>>2]|0)>>>0){c[B>>2]=o&m-1;c[w>>2]=(c[w>>2]|0)+((c[s>>2]|0)-1);}else{c[B>>2]=o&(m<<1)-1;if((c[B>>2]|0)>=(c[u>>2]|0))c[B>>2]=(c[B>>2]|0)-(c[A>>2]|0);c[w>>2]=(c[w>>2]|0)+(c[s>>2]|0);}c[B>>2]=(c[B>>2]|0)+-1;m=c[B>>2]|0;c[t>>2]=(c[t>>2]|0)-((c[B>>2]|0)<0?0-m|0:m);m=c[B>>2]&65535;o=c[j>>2]|0;n=c[x>>2]|0;c[x>>2]=n+1;b[o+(n<<1)>>1]=m;c[y>>2]=((c[B>>2]|0)!=0^1)&1;while(1){if((c[t>>2]|0)>=(c[u>>2]|0))break;c[s>>2]=(c[s>>2]|0)+-1;c[u>>2]=c[u>>2]>>1;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[w>>2]=(c[w>>2]|0)-((c[q>>2]|0)+-4-(c[r>>2]|0)<<3);c[r>>2]=(c[q>>2]|0)+-4;}else{c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;}m=bh(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]&31);}if((D|0)==18){c[i>>2]=-48;C=c[i>>2]|0;l=h;return C|0;}if((c[t>>2]|0)!=1){c[i>>2]=-20;C=c[i>>2]|0;l=h;return C|0;}if((c[w>>2]|0)>32){c[i>>2]=-20;C=c[i>>2]|0;l=h;return C|0;}else{c[c[k>>2]>>2]=(c[x>>2]|0)-1;c[r>>2]=(c[r>>2]|0)+((c[w>>2]|0)+7>>3);c[i>>2]=(c[r>>2]|0)-(c[p>>2]|0);C=c[i>>2]|0;l=h;return C|0;}return 0;}function bh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(ch()|0)!=0;f=dh(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=eh(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function ch(){return d[11936]|0|0;}function dh(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function eh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function fh(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;k=l;l=l+336|0;m=k+332|0;n=k+328|0;o=k+324|0;p=k+320|0;q=k+316|0;r=k+312|0;s=k+308|0;t=k+304|0;u=k+300|0;v=k+296|0;w=k+292|0;x=k+288|0;y=k+284|0;z=k;A=k+280|0;B=k+276|0;C=k+272|0;D=k+268|0;E=k+264|0;F=k+260|0;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[v>>2]=c[s>>2];if(!(c[t>>2]|0)){c[m>>2]=-72;G=c[m>>2]|0;l=k;return G|0;}c[w>>2]=d[c[v>>2]>>0];s=c[w>>2]|0;a:do{if((c[w>>2]|0)>>>0<128){if((s+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;G=c[m>>2]|0;l=k;return G|0;}c[x>>2]=gh(c[n>>2]|0,(c[o>>2]|0)-1|0,(c[v>>2]|0)+1|0,c[w>>2]|0,z,6)|0;if(Zg(c[x>>2]|0)|0){c[m>>2]=c[x>>2];G=c[m>>2]|0;l=k;return G|0;}}else{c[x>>2]=s-127;c[w>>2]=(((c[x>>2]|0)+1|0)>>>0)/2|0;if(((c[w>>2]|0)+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;G=c[m>>2]|0;l=k;return G|0;}if((c[x>>2]|0)>>>0>=(c[o>>2]|0)>>>0){c[m>>2]=-20;G=c[m>>2]|0;l=k;return G|0;}c[v>>2]=(c[v>>2]|0)+1;c[y>>2]=0;while(1){if((c[y>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break a;a[(c[n>>2]|0)+(c[y>>2]|0)>>0]=(d[(c[v>>2]|0)+(((c[y>>2]|0)>>>0)/2|0)>>0]|0)>>4;a[(c[n>>2]|0)+((c[y>>2]|0)+1)>>0]=(d[(c[v>>2]|0)+(((c[y>>2]|0)>>>0)/2|0)>>0]|0)&15;c[y>>2]=(c[y>>2]|0)+2;}}}while(0);y=c[p>>2]|0;v=y+52|0;do{c[y>>2]=0;y=y+4|0;}while((y|0)<(v|0));c[u>>2]=0;c[A>>2]=0;while(1){if((c[A>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break;if((d[(c[n>>2]|0)+(c[A>>2]|0)>>0]|0|0)>=12){H=18;break;}y=(c[p>>2]|0)+((d[(c[n>>2]|0)+(c[A>>2]|0)>>0]|0)<<2)|0;c[y>>2]=(c[y>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+(1<<(d[(c[n>>2]|0)+(c[A>>2]|0)>>0]|0)>>1);c[A>>2]=(c[A>>2]|0)+1;}if((H|0)==18){c[m>>2]=-20;G=c[m>>2]|0;l=k;return G|0;}if(!(c[u>>2]|0)){c[m>>2]=-20;G=c[m>>2]|0;l=k;return G|0;}c[B>>2]=(hh(c[u>>2]|0)|0)+1;if((c[B>>2]|0)>>>0>12){c[m>>2]=-20;G=c[m>>2]|0;l=k;return G|0;}c[c[r>>2]>>2]=c[B>>2];c[C>>2]=1<<c[B>>2];c[D>>2]=(c[C>>2]|0)-(c[u>>2]|0);c[E>>2]=1<<(hh(c[D>>2]|0)|0);c[F>>2]=(hh(c[D>>2]|0)|0)+1;if((c[E>>2]|0)!=(c[D>>2]|0)){c[m>>2]=-20;G=c[m>>2]|0;l=k;return G|0;}a[(c[n>>2]|0)+(c[x>>2]|0)>>0]=c[F>>2];n=(c[p>>2]|0)+(c[F>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;if((c[(c[p>>2]|0)+4>>2]|0)>>>0>=2?(c[(c[p>>2]|0)+4>>2]&1|0)==0:0){c[c[q>>2]>>2]=(c[x>>2]|0)+1;c[m>>2]=(c[w>>2]|0)+1;G=c[m>>2]|0;l=k;return G|0;}c[m>>2]=-20;G=c[m>>2]|0;l=k;return G|0;}function gh(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+576|0;i=h+560|0;j=h+556|0;k=h+552|0;m=h+548|0;n=h+544|0;o=h+540|0;p=h+536|0;q=h+532|0;r=h+528|0;s=h;t=h+524|0;u=h+520|0;v=h+516|0;w=h+512|0;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=c[m>>2];c[r>>2]=c[q>>2];c[u>>2]=255;c[v>>2]=ah(s,u,t,c[q>>2]|0,c[n>>2]|0)|0;if(ih(c[v>>2]|0)|0){c[i>>2]=c[v>>2];x=c[i>>2]|0;l=h;return x|0;}if((c[t>>2]|0)>>>0>(c[p>>2]|0)>>>0){c[i>>2]=-44;x=c[i>>2]|0;l=h;return x|0;}c[r>>2]=(c[r>>2]|0)+(c[v>>2]|0);c[n>>2]=(c[n>>2]|0)-(c[v>>2]|0);c[w>>2]=jh(c[o>>2]|0,s,c[u>>2]|0,c[t>>2]|0)|0;if(ih(c[w>>2]|0)|0){c[i>>2]=c[w>>2];x=c[i>>2]|0;l=h;return x|0;}else{c[i>>2]=kh(c[j>>2]|0,c[k>>2]|0,c[r>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;x=c[i>>2]|0;l=h;return x|0;}return 0;}function hh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function ih(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function jh(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;i=l;l=l+608|0;j=i+580|0;k=i+576|0;m=i+572|0;n=i+568|0;o=i+564|0;p=i+560|0;q=i+556|0;r=i;s=i+552|0;t=i+548|0;u=i+544|0;v=i+588|0;w=i+584|0;x=i+540|0;y=i+536|0;z=i+532|0;A=i+528|0;B=i+524|0;C=i+520|0;D=i+516|0;E=i+592|0;F=i+512|0;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=(c[k>>2]|0)+4;c[q>>2]=c[p>>2];c[s>>2]=(c[n>>2]|0)+1;c[t>>2]=1<<c[o>>2];c[u>>2]=(c[t>>2]|0)-1;if((c[n>>2]|0)>>>0>255){c[j>>2]=-46;G=c[j>>2]|0;l=i;return G|0;}if((c[o>>2]|0)>>>0>12){c[j>>2]=-44;G=c[j>>2]|0;l=i;return G|0;}b[v>>1]=c[o>>2];b[v+2>>1]=1;b[w>>1]=1<<(c[o>>2]|0)-1;c[x>>2]=0;while(1){if((c[x>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;if((b[(c[m>>2]|0)+(c[x>>2]<<1)>>1]|0)==-1){n=c[x>>2]&255;p=c[q>>2]|0;h=c[u>>2]|0;c[u>>2]=h+-1;a[p+(h<<2)+2>>0]=n;b[r+(c[x>>2]<<1)>>1]=1;}else{if((b[(c[m>>2]|0)+(c[x>>2]<<1)>>1]|0)>=(b[w>>1]|0))b[v+2>>1]=0;b[r+(c[x>>2]<<1)>>1]=b[(c[m>>2]|0)+(c[x>>2]<<1)>>1]|0;}c[x>>2]=(c[x>>2]|0)+1;}x=c[k>>2]|0;b[x>>1]=b[v>>1]|0;b[x+2>>1]=b[v+2>>1]|0;c[y>>2]=(c[t>>2]|0)-1;c[z>>2]=((c[t>>2]|0)>>>1)+((c[t>>2]|0)>>>3)+3;c[B>>2]=0;c[A>>2]=0;while(1){if((c[A>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;c[C>>2]=0;while(1){H=c[A>>2]|0;if((c[C>>2]|0)>=(b[(c[m>>2]|0)+(c[A>>2]<<1)>>1]|0))break;a[(c[q>>2]|0)+(c[B>>2]<<2)+2>>0]=H;c[B>>2]=(c[B>>2]|0)+(c[z>>2]|0)&c[y>>2];while(1){if((c[B>>2]|0)>>>0<=(c[u>>2]|0)>>>0)break;c[B>>2]=(c[B>>2]|0)+(c[z>>2]|0)&c[y>>2];}c[C>>2]=(c[C>>2]|0)+1;}c[A>>2]=H+1;}if(c[B>>2]|0){c[j>>2]=-1;G=c[j>>2]|0;l=i;return G|0;}c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;a[E>>0]=a[(c[q>>2]|0)+(c[D>>2]<<2)+2>>0]|0;B=r+(d[E>>0]<<1)|0;H=b[B>>1]|0;b[B>>1]=H+1<<16>>16;c[F>>2]=H&65535;H=c[o>>2]|0;B=H-(Eh(c[F>>2]|0)|0)&255;a[(c[q>>2]|0)+(c[D>>2]<<2)+3>>0]=B;b[(c[q>>2]|0)+(c[D>>2]<<2)>>1]=(c[F>>2]<<d[(c[q>>2]|0)+(c[D>>2]<<2)+3>>0])-(c[t>>2]|0);c[D>>2]=(c[D>>2]|0)+1;}c[j>>2]=0;G=c[j>>2]|0;l=i;return G|0;}function kh(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;i=l;l=l+208|0;j=i+204|0;k=i+200|0;m=i+196|0;n=i+192|0;o=i+188|0;p=i+184|0;q=i+180|0;r=i+176|0;s=i+172|0;t=i+168|0;u=i+164|0;v=i+144|0;w=i+136|0;x=i+128|0;y=i+120|0;z=i+116|0;A=i+112|0;B=i+108|0;C=i+104|0;D=i+100|0;E=i+96|0;F=i+92|0;G=i+88|0;H=i+84|0;I=i+80|0;J=i+76|0;K=i+56|0;L=i+48|0;M=i+40|0;N=i+36|0;O=i+32|0;P=i+28|0;Q=i+24|0;R=i+20|0;S=i+16|0;T=i+12|0;U=i+8|0;V=i+4|0;W=i;c[P>>2]=b;c[Q>>2]=d;c[R>>2]=f;c[S>>2]=g;c[T>>2]=h;c[U>>2]=c[T>>2];c[V>>2]=c[U>>2];c[W>>2]=e[(c[V>>2]|0)+2>>1];V=c[P>>2]|0;P=c[Q>>2]|0;Q=c[R>>2]|0;R=c[S>>2]|0;S=c[T>>2]|0;if(c[W>>2]|0){c[A>>2]=V;c[B>>2]=P;c[C>>2]=Q;c[D>>2]=R;c[E>>2]=S;c[F>>2]=1;c[G>>2]=c[A>>2];c[H>>2]=c[G>>2];c[I>>2]=(c[H>>2]|0)+(c[B>>2]|0);c[J>>2]=(c[I>>2]|0)+-3;c[N>>2]=lh(K,c[C>>2]|0,c[D>>2]|0)|0;do{if(ih(c[N>>2]|0)|0)c[z>>2]=c[N>>2];else{mh(L,K,c[E>>2]|0);mh(M,K,c[E>>2]|0);while(1){D=(nh(K)|0)==0&1;if(!(D&(c[H>>2]|0)>>>0<(c[J>>2]|0)>>>0))break;if(c[F>>2]|0)X=(oh(L,K)|0)&255;else X=(ph(L,K)|0)&255;a[c[H>>2]>>0]=X;if(c[F>>2]|0)Y=(oh(M,K)|0)&255;else Y=(ph(M,K)|0)&255;a[(c[H>>2]|0)+1>>0]=Y;if((nh(K)|0)>>>0>0){Z=13;break;}if(c[F>>2]|0)_=(oh(L,K)|0)&255;else _=(ph(L,K)|0)&255;a[(c[H>>2]|0)+2>>0]=_;if(c[F>>2]|0)$=(oh(M,K)|0)&255;else $=(ph(M,K)|0)&255;a[(c[H>>2]|0)+3>>0]=$;c[H>>2]=(c[H>>2]|0)+4;}if((Z|0)==13)c[H>>2]=(c[H>>2]|0)+2;while(1){if((c[H>>2]|0)>>>0>((c[I>>2]|0)+-2|0)>>>0){Z=23;break;}if(c[F>>2]|0)aa=(oh(L,K)|0)&255;else aa=(ph(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=aa;if((nh(K)|0)==3){Z=28;break;}if((c[H>>2]|0)>>>0>((c[I>>2]|0)+-2|0)>>>0){Z=33;break;}if(c[F>>2]|0)ba=(oh(M,K)|0)&255;else ba=(ph(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ba;if((nh(K)|0)==3){Z=38;break;}}if((Z|0)==23){c[z>>2]=-70;break;}else if((Z|0)==28){if(c[F>>2]|0)ca=(oh(M,K)|0)&255;else ca=(ph(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ca;}else if((Z|0)==33){c[z>>2]=-70;break;}else if((Z|0)==38){if(c[F>>2]|0)da=(oh(L,K)|0)&255;else da=(ph(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=da;}c[z>>2]=(c[H>>2]|0)-(c[G>>2]|0);}}while(0);c[O>>2]=c[z>>2];ea=c[O>>2]|0;l=i;return ea|0;}else{c[k>>2]=V;c[m>>2]=P;c[n>>2]=Q;c[o>>2]=R;c[p>>2]=S;c[q>>2]=0;c[r>>2]=c[k>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[s>>2]|0)+(c[m>>2]|0);c[u>>2]=(c[t>>2]|0)+-3;c[y>>2]=lh(v,c[n>>2]|0,c[o>>2]|0)|0;do{if(ih(c[y>>2]|0)|0)c[j>>2]=c[y>>2];else{mh(w,v,c[p>>2]|0);mh(x,v,c[p>>2]|0);while(1){o=(nh(v)|0)==0&1;if(!(o&(c[s>>2]|0)>>>0<(c[u>>2]|0)>>>0))break;if(c[q>>2]|0)fa=(oh(w,v)|0)&255;else fa=(ph(w,v)|0)&255;a[c[s>>2]>>0]=fa;if(c[q>>2]|0)ga=(oh(x,v)|0)&255;else ga=(ph(x,v)|0)&255;a[(c[s>>2]|0)+1>>0]=ga;if((nh(v)|0)>>>0>0){Z=56;break;}if(c[q>>2]|0)ha=(oh(w,v)|0)&255;else ha=(ph(w,v)|0)&255;a[(c[s>>2]|0)+2>>0]=ha;if(c[q>>2]|0)ia=(oh(x,v)|0)&255;else ia=(ph(x,v)|0)&255;a[(c[s>>2]|0)+3>>0]=ia;c[s>>2]=(c[s>>2]|0)+4;}if((Z|0)==56)c[s>>2]=(c[s>>2]|0)+2;while(1){if((c[s>>2]|0)>>>0>((c[t>>2]|0)+-2|0)>>>0){Z=66;break;}if(c[q>>2]|0)ja=(oh(w,v)|0)&255;else ja=(ph(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ja;if((nh(v)|0)==3){Z=71;break;}if((c[s>>2]|0)>>>0>((c[t>>2]|0)+-2|0)>>>0){Z=76;break;}if(c[q>>2]|0)ka=(oh(x,v)|0)&255;else ka=(ph(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ka;if((nh(v)|0)==3){Z=81;break;}}if((Z|0)==66){c[j>>2]=-70;break;}else if((Z|0)==71){if(c[q>>2]|0)la=(oh(x,v)|0)&255;else la=(ph(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=la;}else if((Z|0)==76){c[j>>2]=-70;break;}else if((Z|0)==81){if(c[q>>2]|0)ma=(oh(w,v)|0)&255;else ma=(ph(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ma;}c[j>>2]=(c[s>>2]|0)-(c[r>>2]|0);}}while(0);c[O>>2]=c[j>>2];ea=c[O>>2]|0;l=i;return ea|0;}return 0;}function lh(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+17|0;n=g+16|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;if((c[k>>2]|0)>>>0<1){f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[h>>2]=-72;o=c[h>>2]|0;l=g;return o|0;}c[(c[i>>2]|0)+12>>2]=c[j>>2];c[(c[i>>2]|0)+16>>2]=(c[(c[i>>2]|0)+12>>2]|0)+4;do{if((c[k>>2]|0)>>>0>=4){c[(c[i>>2]|0)+8>>2]=(c[j>>2]|0)+(c[k>>2]|0)+-4;f=vh(c[(c[i>>2]|0)+8>>2]|0)|0;c[c[i>>2]>>2]=f;a[m>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[m>>0]|0|0)p=8-(Eh(d[m>>0]|0)|0)|0;else p=0;c[(c[i>>2]|0)+4>>2]=p;if(!(d[m>>0]|0)){c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}}else{c[(c[i>>2]|0)+8>>2]=c[(c[i>>2]|0)+12>>2];c[c[i>>2]>>2]=d[c[(c[i>>2]|0)+12>>2]>>0];switch(c[k>>2]|0){case 7:{f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+6>>0]|0)<<16);q=10;break;}case 6:{q=10;break;}case 5:{q=11;break;}case 4:{q=12;break;}case 3:{q=13;break;}case 2:{q=14;break;}default:{}}if((q|0)==10){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)<<8);q=11;}if((q|0)==11){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+4>>0]|0)<<0);q=12;}if((q|0)==12){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+3>>0]|0)<<24);q=13;}if((q|0)==13){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+2>>0]|0)<<16);q=14;}if((q|0)==14){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+1>>0]|0)<<8);}a[n>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[n>>0]|0|0)r=8-(Eh(d[n>>0]|0)|0)|0;else r=0;c[(c[i>>2]|0)+4>>2]=r;if(d[n>>0]|0|0){f=(c[i>>2]|0)+4|0;c[f>>2]=(c[f>>2]|0)+(4-(c[k>>2]|0)<<3);break;}c[h>>2]=-20;o=c[h>>2]|0;l=g;return o|0;}}while(0);c[h>>2]=c[k>>2];o=c[h>>2]|0;l=g;return o|0;}function mh(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=c[i>>2];c[k>>2]=c[j>>2];j=qh(c[h>>2]|0,e[c[k>>2]>>1]|0)|0;c[c[g>>2]>>2]=j;nh(c[h>>2]|0)|0;c[(c[g>>2]|0)+4>>2]=(c[i>>2]|0)+4;l=f;return;}function nh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=vh(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=vh(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function oh(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=th(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function ph(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=qh(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function qh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=rh(c[e>>2]|0,c[f>>2]|0)|0;sh(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>1>>>(31-(c[f>>2]|0)&31)|0;}function sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function th(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=uh(c[e>>2]|0,c[f>>2]|0)|0;sh(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function uh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function vh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(wh()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=xh(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=yh(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function wh(){return 1;}function xh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(zh()|0)!=0;f=Ch(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=Dh(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function yh(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(zh()|0)!=0;f=Ah(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=Bh(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function zh(){return d[11936]|0|0;}function Ah(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function Bh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Ch(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Dh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Eh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Fh(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;l=d;return c[f>>2]|0;}function Gh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Hh(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;a[f+4>>0]=a[b+4>>0]|0;a[f+5>>0]=a[b+5>>0]|0;a[f+6>>0]=a[b+6>>0]|0;a[f+7>>0]=a[b+7>>0]|0;b=f;y=c[b+4>>2]|0;l=d;return c[b>>2]|0;}function Ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Jh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+16|0;g=f+8|0;h=f;i=g;c[i>>2]=a;c[i+4>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;e=h;h=cE(c[e>>2]|0,c[e+4>>2]|0,668265295,-1028477379)|0;e=g;b=dE(c[e>>2]|0,c[e+4>>2]|0,h|0,y|0)|0;h=g;c[h>>2]=b;c[h+4>>2]=y;h=g;b=jE(c[h>>2]|0,c[h+4>>2]|0,31)|0;h=y;e=g;d=iE(c[e>>2]|0,c[e+4>>2]|0,33)|0;e=g;c[e>>2]=b|d;c[e+4>>2]=h|y;h=g;e=cE(c[h>>2]|0,c[h+4>>2]|0,-2048144761,-1640531535)|0;h=g;c[h>>2]=e;c[h+4>>2]=y;h=g;y=c[h+4>>2]|0;l=f;return c[h>>2]|0;}function Kh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+16|0;g=f+8|0;h=f;i=g;c[i>>2]=a;c[i+4>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;e=h;b=Jh(0,0,c[e>>2]|0,c[e+4>>2]|0)|0;e=h;c[e>>2]=b;c[e+4>>2]=y;e=h;h=g;b=c[h+4>>2]^c[e+4>>2];d=g;c[d>>2]=c[h>>2]^c[e>>2];c[d+4>>2]=b;b=g;d=cE(c[b>>2]|0,c[b+4>>2]|0,-2048144761,-1640531535)|0;b=dE(d|0,y|0,-1028477341,-2048144777)|0;d=g;c[d>>2]=b;c[d+4>>2]=y;d=g;y=c[d+4>>2]|0;l=f;return c[d>>2]|0;}function Lh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+112|0;f=e+96|0;g=e+88|0;h=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;d=h;a=d+80|0;do{c[d>>2]=0;d=d+4|0;}while((d|0)<(a|0));b=g;i=dE(c[b>>2]|0,c[b+4>>2]|0,-2048144761,-1640531535)|0;b=dE(i|0,y|0,668265295,-1028477379)|0;i=h+8|0;c[i>>2]=b;c[i+4>>2]=y;i=g;b=dE(c[i>>2]|0,c[i+4>>2]|0,668265295,-1028477379)|0;i=h+16|0;c[i>>2]=b;c[i+4>>2]=y;i=g;b=dE(c[i>>2]|0,c[i+4>>2]|0,0,0)|0;i=h+24|0;c[i>>2]=b;c[i+4>>2]=y;i=g;g=eE(c[i>>2]|0,c[i+4>>2]|0,-2048144761,-1640531535)|0;i=h+32|0;c[i>>2]=g;c[i+4>>2]=y;d=c[f>>2]|0;f=h;a=d+88|0;do{c[d>>2]=c[f>>2];d=d+4|0;f=f+4|0;}while((d|0)<(a|0));l=e;return 0;}function Mh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=c[f>>2]|0;mE(d|0,c[g>>2]|0,c[h>>2]|0)|0;l=e;return d|0;}function Nh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0;f=l;l=l+608|0;g=f+184|0;h=f+592|0;i=f+588|0;j=f+584|0;k=f+580|0;m=f+576|0;n=f+176|0;o=f+572|0;p=f+568|0;q=f+564|0;r=f+560|0;s=f+556|0;t=f+168|0;u=f+552|0;v=f+548|0;w=f+544|0;x=f+540|0;z=f+536|0;A=f+160|0;B=f+532|0;C=f+528|0;D=f+524|0;E=f+520|0;F=f+516|0;G=f+152|0;H=f+512|0;I=f+508|0;J=f+504|0;K=f+500|0;L=f+496|0;M=f+144|0;N=f+492|0;O=f+488|0;P=f+484|0;Q=f+480|0;R=f+476|0;S=f+136|0;T=f+472|0;U=f+468|0;V=f+464|0;W=f+460|0;X=f+456|0;Y=f+128|0;Z=f+452|0;_=f+448|0;$=f+444|0;aa=f+440|0;ba=f+436|0;ca=f+432|0;da=f+428|0;ea=f+424|0;fa=f+420|0;ga=f+416|0;ha=f+412|0;ia=f+408|0;ja=f+404|0;ka=f+120|0;la=f+112|0;ma=f+104|0;na=f+96|0;oa=f+88|0;pa=f+400|0;qa=f+396|0;ra=f+392|0;sa=f+388|0;ta=f+384|0;ua=f+80|0;va=f+380|0;wa=f+376|0;xa=f+372|0;ya=f+368|0;za=f+364|0;Aa=f+72|0;Ba=f+360|0;Ca=f+356|0;Da=f+352|0;Ea=f+348|0;Fa=f+344|0;Ga=f+64|0;Ha=f+340|0;Ia=f+336|0;Ja=f+332|0;Ka=f+328|0;La=f+324|0;Ma=f+56|0;Na=f+320|0;Oa=f+316|0;Pa=f+312|0;Qa=f+308|0;Ra=f+304|0;Sa=f+48|0;Ta=f+300|0;Ua=f+296|0;Va=f+292|0;Wa=f+288|0;Xa=f+284|0;Ya=f+40|0;Za=f+280|0;_a=f+276|0;$a=f+272|0;ab=f+268|0;bb=f+264|0;cb=f+32|0;db=f+260|0;eb=f+256|0;fb=f+252|0;gb=f+248|0;hb=f+244|0;ib=f+240|0;jb=f+236|0;kb=f+232|0;lb=f+228|0;mb=f+224|0;nb=f+220|0;ob=f+216|0;pb=f+212|0;qb=f+24|0;rb=f+16|0;sb=f+8|0;tb=f;ub=f+208|0;vb=f+204|0;wb=f+200|0;xb=f+196|0;yb=f+192|0;c[vb>>2]=b;c[wb>>2]=d;c[xb>>2]=e;c[yb>>2]=a[11920];e=c[vb>>2]|0;vb=c[wb>>2]|0;wb=c[xb>>2]|0;if((c[yb>>2]|0)==1){c[jb>>2]=e;c[kb>>2]=vb;c[lb>>2]=wb;c[mb>>2]=1;c[nb>>2]=c[kb>>2];c[ob>>2]=(c[nb>>2]|0)+(c[lb>>2]|0);yb=c[jb>>2]|0;xb=yb;d=dE(c[xb>>2]|0,c[xb+4>>2]|0,c[lb>>2]|0,0)|0;xb=yb;c[xb>>2]=d;c[xb+4>>2]=y;xb=c[jb>>2]|0;if(((c[(c[jb>>2]|0)+72>>2]|0)+(c[lb>>2]|0)|0)>>>0<32){Mh(xb+40+(c[(c[jb>>2]|0)+72>>2]|0)|0,c[kb>>2]|0,c[lb>>2]|0)|0;d=(c[jb>>2]|0)+72|0;c[d>>2]=(c[d>>2]|0)+(c[lb>>2]|0);c[ib>>2]=0;}else{if(c[xb+72>>2]|0){Mh((c[jb>>2]|0)+40+(c[(c[jb>>2]|0)+72>>2]|0)|0,c[kb>>2]|0,32-(c[(c[jb>>2]|0)+72>>2]|0)|0)|0;kb=(c[jb>>2]|0)+8|0;xb=c[kb>>2]|0;lb=c[kb+4>>2]|0;kb=c[mb>>2]|0;c[gb>>2]=(c[jb>>2]|0)+40;c[hb>>2]=kb;kb=c[hb>>2]|0;c[db>>2]=c[gb>>2];c[eb>>2]=kb;c[fb>>2]=1;kb=(c[eb>>2]|0)==1;eb=c[db>>2]|0;if((c[fb>>2]|0)==1){fb=Hh(eb)|0;db=y;if(kb){zb=fb;Ab=db;}else{gb=Ih(fb,db)|0;zb=gb;Ab=y;}gb=cb;c[gb>>2]=zb;c[gb+4>>2]=Ab;}else{Ab=eb;eb=c[Ab>>2]|0;gb=c[Ab+4>>2]|0;if(kb){Bb=eb;Cb=gb;}else{kb=Ih(eb,gb)|0;Bb=kb;Cb=y;}kb=cb;c[kb>>2]=Bb;c[kb+4>>2]=Cb;}Cb=cb;cb=Jh(xb,lb,c[Cb>>2]|0,c[Cb+4>>2]|0)|0;Cb=(c[jb>>2]|0)+8|0;c[Cb>>2]=cb;c[Cb+4>>2]=y;Cb=(c[jb>>2]|0)+16|0;cb=c[Cb>>2]|0;lb=c[Cb+4>>2]|0;Cb=c[mb>>2]|0;c[ab>>2]=(c[jb>>2]|0)+40+8;c[bb>>2]=Cb;Cb=c[bb>>2]|0;c[Za>>2]=c[ab>>2];c[_a>>2]=Cb;c[$a>>2]=1;Cb=(c[_a>>2]|0)==1;_a=c[Za>>2]|0;if((c[$a>>2]|0)==1){$a=Hh(_a)|0;Za=y;if(Cb){Db=$a;Eb=Za;}else{ab=Ih($a,Za)|0;Db=ab;Eb=y;}ab=Ya;c[ab>>2]=Db;c[ab+4>>2]=Eb;}else{Eb=_a;_a=c[Eb>>2]|0;ab=c[Eb+4>>2]|0;if(Cb){Fb=_a;Gb=ab;}else{Cb=Ih(_a,ab)|0;Fb=Cb;Gb=y;}Cb=Ya;c[Cb>>2]=Fb;c[Cb+4>>2]=Gb;}Gb=Ya;Ya=Jh(cb,lb,c[Gb>>2]|0,c[Gb+4>>2]|0)|0;Gb=(c[jb>>2]|0)+16|0;c[Gb>>2]=Ya;c[Gb+4>>2]=y;Gb=(c[jb>>2]|0)+24|0;Ya=c[Gb>>2]|0;lb=c[Gb+4>>2]|0;Gb=c[mb>>2]|0;c[Wa>>2]=(c[jb>>2]|0)+40+16;c[Xa>>2]=Gb;Gb=c[Xa>>2]|0;c[Ta>>2]=c[Wa>>2];c[Ua>>2]=Gb;c[Va>>2]=1;Gb=(c[Ua>>2]|0)==1;Ua=c[Ta>>2]|0;if((c[Va>>2]|0)==1){Va=Hh(Ua)|0;Ta=y;if(Gb){Hb=Va;Ib=Ta;}else{Wa=Ih(Va,Ta)|0;Hb=Wa;Ib=y;}Wa=Sa;c[Wa>>2]=Hb;c[Wa+4>>2]=Ib;}else{Ib=Ua;Ua=c[Ib>>2]|0;Wa=c[Ib+4>>2]|0;if(Gb){Jb=Ua;Kb=Wa;}else{Gb=Ih(Ua,Wa)|0;Jb=Gb;Kb=y;}Gb=Sa;c[Gb>>2]=Jb;c[Gb+4>>2]=Kb;}Kb=Sa;Sa=Jh(Ya,lb,c[Kb>>2]|0,c[Kb+4>>2]|0)|0;Kb=(c[jb>>2]|0)+24|0;c[Kb>>2]=Sa;c[Kb+4>>2]=y;Kb=(c[jb>>2]|0)+32|0;Sa=c[Kb>>2]|0;lb=c[Kb+4>>2]|0;Kb=c[mb>>2]|0;c[Qa>>2]=(c[jb>>2]|0)+40+24;c[Ra>>2]=Kb;Kb=c[Ra>>2]|0;c[Na>>2]=c[Qa>>2];c[Oa>>2]=Kb;c[Pa>>2]=1;Kb=(c[Oa>>2]|0)==1;Oa=c[Na>>2]|0;if((c[Pa>>2]|0)==1){Pa=Hh(Oa)|0;Na=y;if(Kb){Lb=Pa;Mb=Na;}else{Qa=Ih(Pa,Na)|0;Lb=Qa;Mb=y;}Qa=Ma;c[Qa>>2]=Lb;c[Qa+4>>2]=Mb;}else{Mb=Oa;Oa=c[Mb>>2]|0;Qa=c[Mb+4>>2]|0;if(Kb){Nb=Oa;Ob=Qa;}else{Kb=Ih(Oa,Qa)|0;Nb=Kb;Ob=y;}Kb=Ma;c[Kb>>2]=Nb;c[Kb+4>>2]=Ob;}Ob=Ma;Ma=Jh(Sa,lb,c[Ob>>2]|0,c[Ob+4>>2]|0)|0;Ob=(c[jb>>2]|0)+32|0;c[Ob>>2]=Ma;c[Ob+4>>2]=y;c[nb>>2]=(c[nb>>2]|0)+(32-(c[(c[jb>>2]|0)+72>>2]|0));c[(c[jb>>2]|0)+72>>2]=0;}if(((c[nb>>2]|0)+32|0)>>>0<=(c[ob>>2]|0)>>>0){c[pb>>2]=(c[ob>>2]|0)+-32;Ob=(c[jb>>2]|0)+8|0;Ma=c[Ob+4>>2]|0;lb=qb;c[lb>>2]=c[Ob>>2];c[lb+4>>2]=Ma;Ma=(c[jb>>2]|0)+16|0;lb=c[Ma+4>>2]|0;Ob=rb;c[Ob>>2]=c[Ma>>2];c[Ob+4>>2]=lb;lb=(c[jb>>2]|0)+24|0;Ob=c[lb+4>>2]|0;Ma=sb;c[Ma>>2]=c[lb>>2];c[Ma+4>>2]=Ob;Ob=(c[jb>>2]|0)+32|0;Ma=c[Ob+4>>2]|0;lb=tb;c[lb>>2]=c[Ob>>2];c[lb+4>>2]=Ma;do{Ma=qb;lb=c[Ma>>2]|0;Ob=c[Ma+4>>2]|0;Ma=c[mb>>2]|0;c[Ka>>2]=c[nb>>2];c[La>>2]=Ma;Ma=c[La>>2]|0;c[Ha>>2]=c[Ka>>2];c[Ia>>2]=Ma;c[Ja>>2]=1;Ma=(c[Ia>>2]|0)==1;Sa=c[Ha>>2]|0;if((c[Ja>>2]|0)==1){Kb=Hh(Sa)|0;Nb=y;if(Ma){Pb=Kb;Qb=Nb;}else{Qa=Ih(Kb,Nb)|0;Pb=Qa;Qb=y;}Qa=Ga;c[Qa>>2]=Pb;c[Qa+4>>2]=Qb;}else{Qa=Sa;Sa=c[Qa>>2]|0;Nb=c[Qa+4>>2]|0;if(Ma){Rb=Sa;Sb=Nb;}else{Ma=Ih(Sa,Nb)|0;Rb=Ma;Sb=y;}Ma=Ga;c[Ma>>2]=Rb;c[Ma+4>>2]=Sb;}Ma=Ga;Nb=Jh(lb,Ob,c[Ma>>2]|0,c[Ma+4>>2]|0)|0;Ma=qb;c[Ma>>2]=Nb;c[Ma+4>>2]=y;c[nb>>2]=(c[nb>>2]|0)+8;Ma=rb;Nb=c[Ma>>2]|0;Ob=c[Ma+4>>2]|0;Ma=c[mb>>2]|0;c[Ea>>2]=c[nb>>2];c[Fa>>2]=Ma;Ma=c[Fa>>2]|0;c[Ba>>2]=c[Ea>>2];c[Ca>>2]=Ma;c[Da>>2]=1;Ma=(c[Ca>>2]|0)==1;lb=c[Ba>>2]|0;if((c[Da>>2]|0)==1){Sa=Hh(lb)|0;Qa=y;if(Ma){Tb=Sa;Ub=Qa;}else{Kb=Ih(Sa,Qa)|0;Tb=Kb;Ub=y;}Kb=Aa;c[Kb>>2]=Tb;c[Kb+4>>2]=Ub;}else{Kb=lb;lb=c[Kb>>2]|0;Qa=c[Kb+4>>2]|0;if(Ma){Vb=lb;Wb=Qa;}else{Ma=Ih(lb,Qa)|0;Vb=Ma;Wb=y;}Ma=Aa;c[Ma>>2]=Vb;c[Ma+4>>2]=Wb;}Ma=Aa;Qa=Jh(Nb,Ob,c[Ma>>2]|0,c[Ma+4>>2]|0)|0;Ma=rb;c[Ma>>2]=Qa;c[Ma+4>>2]=y;c[nb>>2]=(c[nb>>2]|0)+8;Ma=sb;Qa=c[Ma>>2]|0;Ob=c[Ma+4>>2]|0;Ma=c[mb>>2]|0;c[ya>>2]=c[nb>>2];c[za>>2]=Ma;Ma=c[za>>2]|0;c[va>>2]=c[ya>>2];c[wa>>2]=Ma;c[xa>>2]=1;Ma=(c[wa>>2]|0)==1;Nb=c[va>>2]|0;if((c[xa>>2]|0)==1){lb=Hh(Nb)|0;Kb=y;if(Ma){Xb=lb;Yb=Kb;}else{Sa=Ih(lb,Kb)|0;Xb=Sa;Yb=y;}Sa=ua;c[Sa>>2]=Xb;c[Sa+4>>2]=Yb;}else{Sa=Nb;Nb=c[Sa>>2]|0;Kb=c[Sa+4>>2]|0;if(Ma){Zb=Nb;_b=Kb;}else{Ma=Ih(Nb,Kb)|0;Zb=Ma;_b=y;}Ma=ua;c[Ma>>2]=Zb;c[Ma+4>>2]=_b;}Ma=ua;Kb=Jh(Qa,Ob,c[Ma>>2]|0,c[Ma+4>>2]|0)|0;Ma=sb;c[Ma>>2]=Kb;c[Ma+4>>2]=y;c[nb>>2]=(c[nb>>2]|0)+8;Ma=tb;Kb=c[Ma>>2]|0;Ob=c[Ma+4>>2]|0;Ma=c[mb>>2]|0;c[sa>>2]=c[nb>>2];c[ta>>2]=Ma;Ma=c[ta>>2]|0;c[pa>>2]=c[sa>>2];c[qa>>2]=Ma;c[ra>>2]=1;Ma=(c[qa>>2]|0)==1;Qa=c[pa>>2]|0;if((c[ra>>2]|0)==1){Nb=Hh(Qa)|0;Sa=y;if(Ma){$b=Nb;ac=Sa;}else{lb=Ih(Nb,Sa)|0;$b=lb;ac=y;}lb=oa;c[lb>>2]=$b;c[lb+4>>2]=ac;}else{lb=Qa;Qa=c[lb>>2]|0;Sa=c[lb+4>>2]|0;if(Ma){bc=Qa;cc=Sa;}else{Ma=Ih(Qa,Sa)|0;bc=Ma;cc=y;}Ma=oa;c[Ma>>2]=bc;c[Ma+4>>2]=cc;}Ma=oa;Sa=Jh(Kb,Ob,c[Ma>>2]|0,c[Ma+4>>2]|0)|0;Ma=tb;c[Ma>>2]=Sa;c[Ma+4>>2]=y;c[nb>>2]=(c[nb>>2]|0)+8;}while((c[nb>>2]|0)>>>0<=(c[pb>>2]|0)>>>0);pb=qb;qb=c[pb+4>>2]|0;oa=(c[jb>>2]|0)+8|0;c[oa>>2]=c[pb>>2];c[oa+4>>2]=qb;qb=rb;rb=c[qb+4>>2]|0;oa=(c[jb>>2]|0)+16|0;c[oa>>2]=c[qb>>2];c[oa+4>>2]=rb;rb=sb;sb=c[rb+4>>2]|0;oa=(c[jb>>2]|0)+24|0;c[oa>>2]=c[rb>>2];c[oa+4>>2]=sb;sb=tb;tb=c[sb+4>>2]|0;oa=(c[jb>>2]|0)+32|0;c[oa>>2]=c[sb>>2];c[oa+4>>2]=tb;}if((c[nb>>2]|0)>>>0<(c[ob>>2]|0)>>>0){Mh((c[jb>>2]|0)+40|0,c[nb>>2]|0,(c[ob>>2]|0)-(c[nb>>2]|0)|0)|0;c[(c[jb>>2]|0)+72>>2]=(c[ob>>2]|0)-(c[nb>>2]|0);}c[ib>>2]=0;}c[ub>>2]=c[ib>>2];dc=c[ub>>2]|0;l=f;return dc|0;}else{c[da>>2]=e;c[ea>>2]=vb;c[fa>>2]=wb;c[ga>>2]=0;c[ha>>2]=c[ea>>2];c[ia>>2]=(c[ha>>2]|0)+(c[fa>>2]|0);wb=c[da>>2]|0;vb=wb;e=dE(c[vb>>2]|0,c[vb+4>>2]|0,c[fa>>2]|0,0)|0;vb=wb;c[vb>>2]=e;c[vb+4>>2]=y;vb=c[da>>2]|0;if(((c[(c[da>>2]|0)+72>>2]|0)+(c[fa>>2]|0)|0)>>>0<32){Mh(vb+40+(c[(c[da>>2]|0)+72>>2]|0)|0,c[ea>>2]|0,c[fa>>2]|0)|0;e=(c[da>>2]|0)+72|0;c[e>>2]=(c[e>>2]|0)+(c[fa>>2]|0);c[ca>>2]=0;}else{if(c[vb+72>>2]|0){Mh((c[da>>2]|0)+40+(c[(c[da>>2]|0)+72>>2]|0)|0,c[ea>>2]|0,32-(c[(c[da>>2]|0)+72>>2]|0)|0)|0;ea=(c[da>>2]|0)+8|0;vb=c[ea>>2]|0;fa=c[ea+4>>2]|0;ea=c[ga>>2]|0;c[aa>>2]=(c[da>>2]|0)+40;c[ba>>2]=ea;ea=c[ba>>2]|0;c[Z>>2]=c[aa>>2];c[_>>2]=ea;c[$>>2]=1;ea=(c[_>>2]|0)==1;_=c[Z>>2]|0;if((c[$>>2]|0)==1){$=Hh(_)|0;Z=y;if(ea){ec=$;fc=Z;}else{aa=Ih($,Z)|0;ec=aa;fc=y;}aa=Y;c[aa>>2]=ec;c[aa+4>>2]=fc;}else{fc=_;_=c[fc>>2]|0;aa=c[fc+4>>2]|0;if(ea){gc=_;hc=aa;}else{ea=Ih(_,aa)|0;gc=ea;hc=y;}ea=Y;c[ea>>2]=gc;c[ea+4>>2]=hc;}hc=Y;Y=Jh(vb,fa,c[hc>>2]|0,c[hc+4>>2]|0)|0;hc=(c[da>>2]|0)+8|0;c[hc>>2]=Y;c[hc+4>>2]=y;hc=(c[da>>2]|0)+16|0;Y=c[hc>>2]|0;fa=c[hc+4>>2]|0;hc=c[ga>>2]|0;c[W>>2]=(c[da>>2]|0)+40+8;c[X>>2]=hc;hc=c[X>>2]|0;c[T>>2]=c[W>>2];c[U>>2]=hc;c[V>>2]=1;hc=(c[U>>2]|0)==1;U=c[T>>2]|0;if((c[V>>2]|0)==1){V=Hh(U)|0;T=y;if(hc){ic=V;jc=T;}else{W=Ih(V,T)|0;ic=W;jc=y;}W=S;c[W>>2]=ic;c[W+4>>2]=jc;}else{jc=U;U=c[jc>>2]|0;W=c[jc+4>>2]|0;if(hc){kc=U;lc=W;}else{hc=Ih(U,W)|0;kc=hc;lc=y;}hc=S;c[hc>>2]=kc;c[hc+4>>2]=lc;}lc=S;S=Jh(Y,fa,c[lc>>2]|0,c[lc+4>>2]|0)|0;lc=(c[da>>2]|0)+16|0;c[lc>>2]=S;c[lc+4>>2]=y;lc=(c[da>>2]|0)+24|0;S=c[lc>>2]|0;fa=c[lc+4>>2]|0;lc=c[ga>>2]|0;c[Q>>2]=(c[da>>2]|0)+40+16;c[R>>2]=lc;lc=c[R>>2]|0;c[N>>2]=c[Q>>2];c[O>>2]=lc;c[P>>2]=1;lc=(c[O>>2]|0)==1;O=c[N>>2]|0;if((c[P>>2]|0)==1){P=Hh(O)|0;N=y;if(lc){mc=P;nc=N;}else{Q=Ih(P,N)|0;mc=Q;nc=y;}Q=M;c[Q>>2]=mc;c[Q+4>>2]=nc;}else{nc=O;O=c[nc>>2]|0;Q=c[nc+4>>2]|0;if(lc){oc=O;pc=Q;}else{lc=Ih(O,Q)|0;oc=lc;pc=y;}lc=M;c[lc>>2]=oc;c[lc+4>>2]=pc;}pc=M;M=Jh(S,fa,c[pc>>2]|0,c[pc+4>>2]|0)|0;pc=(c[da>>2]|0)+24|0;c[pc>>2]=M;c[pc+4>>2]=y;pc=(c[da>>2]|0)+32|0;M=c[pc>>2]|0;fa=c[pc+4>>2]|0;pc=c[ga>>2]|0;c[K>>2]=(c[da>>2]|0)+40+24;c[L>>2]=pc;pc=c[L>>2]|0;c[H>>2]=c[K>>2];c[I>>2]=pc;c[J>>2]=1;pc=(c[I>>2]|0)==1;I=c[H>>2]|0;if((c[J>>2]|0)==1){J=Hh(I)|0;H=y;if(pc){qc=J;rc=H;}else{K=Ih(J,H)|0;qc=K;rc=y;}K=G;c[K>>2]=qc;c[K+4>>2]=rc;}else{rc=I;I=c[rc>>2]|0;K=c[rc+4>>2]|0;if(pc){sc=I;tc=K;}else{pc=Ih(I,K)|0;sc=pc;tc=y;}pc=G;c[pc>>2]=sc;c[pc+4>>2]=tc;}tc=G;G=Jh(M,fa,c[tc>>2]|0,c[tc+4>>2]|0)|0;tc=(c[da>>2]|0)+32|0;c[tc>>2]=G;c[tc+4>>2]=y;c[ha>>2]=(c[ha>>2]|0)+(32-(c[(c[da>>2]|0)+72>>2]|0));c[(c[da>>2]|0)+72>>2]=0;}if(((c[ha>>2]|0)+32|0)>>>0<=(c[ia>>2]|0)>>>0){c[ja>>2]=(c[ia>>2]|0)+-32;tc=(c[da>>2]|0)+8|0;G=c[tc+4>>2]|0;fa=ka;c[fa>>2]=c[tc>>2];c[fa+4>>2]=G;G=(c[da>>2]|0)+16|0;fa=c[G+4>>2]|0;tc=la;c[tc>>2]=c[G>>2];c[tc+4>>2]=fa;fa=(c[da>>2]|0)+24|0;tc=c[fa+4>>2]|0;G=ma;c[G>>2]=c[fa>>2];c[G+4>>2]=tc;tc=(c[da>>2]|0)+32|0;G=c[tc+4>>2]|0;fa=na;c[fa>>2]=c[tc>>2];c[fa+4>>2]=G;do{G=ka;fa=c[G>>2]|0;tc=c[G+4>>2]|0;G=c[ga>>2]|0;c[E>>2]=c[ha>>2];c[F>>2]=G;G=c[F>>2]|0;c[B>>2]=c[E>>2];c[C>>2]=G;c[D>>2]=1;G=(c[C>>2]|0)==1;M=c[B>>2]|0;if((c[D>>2]|0)==1){pc=Hh(M)|0;sc=y;if(G){uc=pc;vc=sc;}else{K=Ih(pc,sc)|0;uc=K;vc=y;}K=A;c[K>>2]=uc;c[K+4>>2]=vc;}else{K=M;M=c[K>>2]|0;sc=c[K+4>>2]|0;if(G){wc=M;xc=sc;}else{G=Ih(M,sc)|0;wc=G;xc=y;}G=A;c[G>>2]=wc;c[G+4>>2]=xc;}G=A;sc=Jh(fa,tc,c[G>>2]|0,c[G+4>>2]|0)|0;G=ka;c[G>>2]=sc;c[G+4>>2]=y;c[ha>>2]=(c[ha>>2]|0)+8;G=la;sc=c[G>>2]|0;tc=c[G+4>>2]|0;G=c[ga>>2]|0;c[x>>2]=c[ha>>2];c[z>>2]=G;G=c[z>>2]|0;c[u>>2]=c[x>>2];c[v>>2]=G;c[w>>2]=1;G=(c[v>>2]|0)==1;fa=c[u>>2]|0;if((c[w>>2]|0)==1){M=Hh(fa)|0;K=y;if(G){yc=M;zc=K;}else{pc=Ih(M,K)|0;yc=pc;zc=y;}pc=t;c[pc>>2]=yc;c[pc+4>>2]=zc;}else{pc=fa;fa=c[pc>>2]|0;K=c[pc+4>>2]|0;if(G){Ac=fa;Bc=K;}else{G=Ih(fa,K)|0;Ac=G;Bc=y;}G=t;c[G>>2]=Ac;c[G+4>>2]=Bc;}G=t;K=Jh(sc,tc,c[G>>2]|0,c[G+4>>2]|0)|0;G=la;c[G>>2]=K;c[G+4>>2]=y;c[ha>>2]=(c[ha>>2]|0)+8;G=ma;K=c[G>>2]|0;tc=c[G+4>>2]|0;G=c[ga>>2]|0;c[r>>2]=c[ha>>2];c[s>>2]=G;G=c[s>>2]|0;c[o>>2]=c[r>>2];c[p>>2]=G;c[q>>2]=1;G=(c[p>>2]|0)==1;sc=c[o>>2]|0;if((c[q>>2]|0)==1){fa=Hh(sc)|0;pc=y;if(G){Cc=fa;Dc=pc;}else{M=Ih(fa,pc)|0;Cc=M;Dc=y;}M=n;c[M>>2]=Cc;c[M+4>>2]=Dc;}else{M=sc;sc=c[M>>2]|0;pc=c[M+4>>2]|0;if(G){Ec=sc;Fc=pc;}else{G=Ih(sc,pc)|0;Ec=G;Fc=y;}G=n;c[G>>2]=Ec;c[G+4>>2]=Fc;}G=n;pc=Jh(K,tc,c[G>>2]|0,c[G+4>>2]|0)|0;G=ma;c[G>>2]=pc;c[G+4>>2]=y;c[ha>>2]=(c[ha>>2]|0)+8;G=na;pc=c[G>>2]|0;tc=c[G+4>>2]|0;G=c[ga>>2]|0;c[k>>2]=c[ha>>2];c[m>>2]=G;G=c[m>>2]|0;c[h>>2]=c[k>>2];c[i>>2]=G;c[j>>2]=1;G=(c[i>>2]|0)==1;K=c[h>>2]|0;if((c[j>>2]|0)==1){sc=Hh(K)|0;M=y;if(G){Gc=sc;Hc=M;}else{fa=Ih(sc,M)|0;Gc=fa;Hc=y;}fa=g;c[fa>>2]=Gc;c[fa+4>>2]=Hc;}else{fa=K;K=c[fa>>2]|0;M=c[fa+4>>2]|0;if(G){Ic=K;Jc=M;}else{G=Ih(K,M)|0;Ic=G;Jc=y;}G=g;c[G>>2]=Ic;c[G+4>>2]=Jc;}G=g;M=Jh(pc,tc,c[G>>2]|0,c[G+4>>2]|0)|0;G=na;c[G>>2]=M;c[G+4>>2]=y;c[ha>>2]=(c[ha>>2]|0)+8;}while((c[ha>>2]|0)>>>0<=(c[ja>>2]|0)>>>0);ja=ka;ka=c[ja+4>>2]|0;g=(c[da>>2]|0)+8|0;c[g>>2]=c[ja>>2];c[g+4>>2]=ka;ka=la;la=c[ka+4>>2]|0;g=(c[da>>2]|0)+16|0;c[g>>2]=c[ka>>2];c[g+4>>2]=la;la=ma;ma=c[la+4>>2]|0;g=(c[da>>2]|0)+24|0;c[g>>2]=c[la>>2];c[g+4>>2]=ma;ma=na;na=c[ma+4>>2]|0;g=(c[da>>2]|0)+32|0;c[g>>2]=c[ma>>2];c[g+4>>2]=na;}if((c[ha>>2]|0)>>>0<(c[ia>>2]|0)>>>0){Mh((c[da>>2]|0)+40|0,c[ha>>2]|0,(c[ia>>2]|0)-(c[ha>>2]|0)|0)|0;c[(c[da>>2]|0)+72>>2]=(c[ia>>2]|0)-(c[ha>>2]|0);}c[ca>>2]=0;}c[ub>>2]=c[ca>>2];dc=c[ub>>2]|0;l=f;return dc|0;}return 0;}function Oh(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;e=l;l=l+256|0;f=e+244|0;g=e+240|0;h=e+236|0;i=e+232|0;j=e+228|0;k=e+224|0;m=e+112|0;n=e+220|0;o=e+216|0;p=e+212|0;q=e+208|0;r=e+204|0;s=e+200|0;t=e+196|0;u=e+192|0;v=e+188|0;w=e+104|0;x=e+96|0;z=e+88|0;A=e+80|0;B=e+72|0;C=e+64|0;D=e+184|0;E=e+180|0;F=e+176|0;G=e+172|0;H=e+168|0;I=e+164|0;J=e+56|0;K=e+160|0;L=e+156|0;M=e+152|0;N=e+148|0;O=e+144|0;P=e+140|0;Q=e+136|0;R=e+132|0;S=e+128|0;T=e+48|0;U=e+40|0;V=e+32|0;W=e+24|0;X=e+16|0;Y=e+8|0;Z=e;_=e+124|0;$=e+120|0;c[_>>2]=b;c[$>>2]=a[11920];b=c[_>>2]|0;if((c[$>>2]|0)==1){c[P>>2]=b;c[Q>>2]=1;c[R>>2]=(c[P>>2]|0)+40;c[S>>2]=(c[P>>2]|0)+40+(c[(c[P>>2]|0)+72>>2]|0);$=c[P>>2]|0;_=c[$+4>>2]|0;aa=c[P>>2]|0;if(_>>>0>0|(_|0)==0&(c[$>>2]|0)>>>0>=32){$=aa+8|0;_=c[$+4>>2]|0;ba=U;c[ba>>2]=c[$>>2];c[ba+4>>2]=_;_=(c[P>>2]|0)+16|0;ba=c[_+4>>2]|0;$=V;c[$>>2]=c[_>>2];c[$+4>>2]=ba;ba=(c[P>>2]|0)+24|0;$=c[ba+4>>2]|0;_=W;c[_>>2]=c[ba>>2];c[_+4>>2]=$;$=(c[P>>2]|0)+32|0;_=c[$+4>>2]|0;ba=X;c[ba>>2]=c[$>>2];c[ba+4>>2]=_;_=U;ba=jE(c[_>>2]|0,c[_+4>>2]|0,1)|0;_=y;$=U;ca=iE(c[$>>2]|0,c[$+4>>2]|0,63)|0;$=_|y;_=V;da=jE(c[_>>2]|0,c[_+4>>2]|0,7)|0;_=y;ea=V;fa=iE(c[ea>>2]|0,c[ea+4>>2]|0,57)|0;ea=dE(ba|ca|0,$|0,da|fa|0,_|y|0)|0;_=y;fa=W;da=jE(c[fa>>2]|0,c[fa+4>>2]|0,12)|0;fa=y;$=W;ca=iE(c[$>>2]|0,c[$+4>>2]|0,52)|0;$=dE(ea|0,_|0,da|ca|0,fa|y|0)|0;fa=y;ca=X;da=jE(c[ca>>2]|0,c[ca+4>>2]|0,18)|0;ca=y;_=X;ea=iE(c[_>>2]|0,c[_+4>>2]|0,46)|0;_=dE($|0,fa|0,da|ea|0,ca|y|0)|0;ca=T;c[ca>>2]=_;c[ca+4>>2]=y;ca=T;_=U;U=Kh(c[ca>>2]|0,c[ca+4>>2]|0,c[_>>2]|0,c[_+4>>2]|0)|0;_=T;c[_>>2]=U;c[_+4>>2]=y;_=T;U=V;V=Kh(c[_>>2]|0,c[_+4>>2]|0,c[U>>2]|0,c[U+4>>2]|0)|0;U=T;c[U>>2]=V;c[U+4>>2]=y;U=T;V=W;W=Kh(c[U>>2]|0,c[U+4>>2]|0,c[V>>2]|0,c[V+4>>2]|0)|0;V=T;c[V>>2]=W;c[V+4>>2]=y;V=T;W=X;X=Kh(c[V>>2]|0,c[V+4>>2]|0,c[W>>2]|0,c[W+4>>2]|0)|0;W=T;c[W>>2]=X;c[W+4>>2]=y;}else{W=aa+24|0;aa=dE(c[W>>2]|0,c[W+4>>2]|0,374761413,668265263)|0;W=T;c[W>>2]=aa;c[W+4>>2]=y;}W=c[P>>2]|0;P=T;aa=dE(c[P>>2]|0,c[P+4>>2]|0,c[W>>2]|0,c[W+4>>2]|0)|0;W=T;c[W>>2]=aa;c[W+4>>2]=y;while(1){ga=c[R>>2]|0;if(((c[R>>2]|0)+8|0)>>>0>(c[S>>2]|0)>>>0)break;W=c[Q>>2]|0;c[N>>2]=ga;c[O>>2]=W;W=c[O>>2]|0;c[K>>2]=c[N>>2];c[L>>2]=W;c[M>>2]=1;W=(c[L>>2]|0)==1;aa=c[K>>2]|0;if((c[M>>2]|0)==1){P=Hh(aa)|0;X=y;if(W){ha=P;ia=X;}else{V=Ih(P,X)|0;ha=V;ia=y;}V=J;c[V>>2]=ha;c[V+4>>2]=ia;}else{V=aa;aa=c[V>>2]|0;X=c[V+4>>2]|0;if(W){ja=aa;ka=X;}else{W=Ih(aa,X)|0;ja=W;ka=y;}W=J;c[W>>2]=ja;c[W+4>>2]=ka;}W=J;X=Jh(0,0,c[W>>2]|0,c[W+4>>2]|0)|0;W=Y;c[W>>2]=X;c[W+4>>2]=y;W=Y;X=T;aa=c[X+4>>2]^c[W+4>>2];V=T;c[V>>2]=c[X>>2]^c[W>>2];c[V+4>>2]=aa;aa=T;V=jE(c[aa>>2]|0,c[aa+4>>2]|0,27)|0;aa=y;W=T;X=iE(c[W>>2]|0,c[W+4>>2]|0,37)|0;W=cE(V|X|0,aa|y|0,-2048144761,-1640531535)|0;aa=dE(W|0,y|0,-1028477341,-2048144777)|0;W=T;c[W>>2]=aa;c[W+4>>2]=y;c[R>>2]=(c[R>>2]|0)+8;}if((ga+4|0)>>>0<=(c[S>>2]|0)>>>0){ga=c[Q>>2]|0;c[H>>2]=c[R>>2];c[I>>2]=ga;ga=c[I>>2]|0;c[E>>2]=c[H>>2];c[F>>2]=ga;c[G>>2]=1;ga=(c[F>>2]|0)==1;F=c[E>>2]|0;if((c[G>>2]|0)==1){G=Fh(F)|0;if(ga)la=G;else la=Gh(G)|0;c[D>>2]=la;}else{la=c[F>>2]|0;if(ga)ma=la;else ma=Gh(la)|0;c[D>>2]=ma;}ma=cE(c[D>>2]|0,0,-2048144761,-1640531535)|0;D=T;la=c[D+4>>2]^y;ga=T;c[ga>>2]=c[D>>2]^ma;c[ga+4>>2]=la;la=T;ga=jE(c[la>>2]|0,c[la+4>>2]|0,23)|0;la=y;ma=T;D=iE(c[ma>>2]|0,c[ma+4>>2]|0,41)|0;ma=cE(ga|D|0,la|y|0,668265295,-1028477379)|0;la=dE(ma|0,y|0,-1640531463,374761393)|0;ma=T;c[ma>>2]=la;c[ma+4>>2]=y;c[R>>2]=(c[R>>2]|0)+4;}while(1){if((c[R>>2]|0)>>>0>=(c[S>>2]|0)>>>0)break;ma=cE(d[c[R>>2]>>0]|0,0,374761413,668265263)|0;la=T;D=c[la+4>>2]^y;ga=T;c[ga>>2]=c[la>>2]^ma;c[ga+4>>2]=D;D=T;ga=jE(c[D>>2]|0,c[D+4>>2]|0,11)|0;D=y;ma=T;la=iE(c[ma>>2]|0,c[ma+4>>2]|0,53)|0;ma=cE(ga|la|0,D|y|0,-2048144761,-1640531535)|0;D=T;c[D>>2]=ma;c[D+4>>2]=y;c[R>>2]=(c[R>>2]|0)+1;}R=T;S=iE(c[R>>2]|0,c[R+4>>2]|0,33)|0;R=T;D=c[R+4>>2]^y;ma=T;c[ma>>2]=c[R>>2]^S;c[ma+4>>2]=D;D=T;ma=cE(c[D>>2]|0,c[D+4>>2]|0,668265295,-1028477379)|0;D=T;c[D>>2]=ma;c[D+4>>2]=y;D=T;ma=iE(c[D>>2]|0,c[D+4>>2]|0,29)|0;D=T;S=c[D+4>>2]^y;R=T;c[R>>2]=c[D>>2]^ma;c[R+4>>2]=S;S=T;R=cE(c[S>>2]|0,c[S+4>>2]|0,-1640531463,374761393)|0;S=T;c[S>>2]=R;c[S+4>>2]=y;S=T;R=c[S+4>>2]|0;ma=T;c[ma>>2]=c[S>>2]^c[T+4>>2];c[ma+4>>2]=R;R=T;T=c[R+4>>2]|0;ma=Z;c[ma>>2]=c[R>>2];c[ma+4>>2]=T;na=Z;oa=na;pa=c[oa>>2]|0;qa=na+4|0;ra=qa;sa=c[ra>>2]|0;y=sa;l=e;return pa|0;}else{c[s>>2]=b;c[t>>2]=0;c[u>>2]=(c[s>>2]|0)+40;c[v>>2]=(c[s>>2]|0)+40+(c[(c[s>>2]|0)+72>>2]|0);b=c[s>>2]|0;T=c[b+4>>2]|0;ma=c[s>>2]|0;if(T>>>0>0|(T|0)==0&(c[b>>2]|0)>>>0>=32){b=ma+8|0;T=c[b+4>>2]|0;R=x;c[R>>2]=c[b>>2];c[R+4>>2]=T;T=(c[s>>2]|0)+16|0;R=c[T+4>>2]|0;b=z;c[b>>2]=c[T>>2];c[b+4>>2]=R;R=(c[s>>2]|0)+24|0;b=c[R+4>>2]|0;T=A;c[T>>2]=c[R>>2];c[T+4>>2]=b;b=(c[s>>2]|0)+32|0;T=c[b+4>>2]|0;R=B;c[R>>2]=c[b>>2];c[R+4>>2]=T;T=x;R=jE(c[T>>2]|0,c[T+4>>2]|0,1)|0;T=y;b=x;S=iE(c[b>>2]|0,c[b+4>>2]|0,63)|0;b=T|y;T=z;D=jE(c[T>>2]|0,c[T+4>>2]|0,7)|0;T=y;la=z;ga=iE(c[la>>2]|0,c[la+4>>2]|0,57)|0;la=dE(R|S|0,b|0,D|ga|0,T|y|0)|0;T=y;ga=A;D=jE(c[ga>>2]|0,c[ga+4>>2]|0,12)|0;ga=y;b=A;S=iE(c[b>>2]|0,c[b+4>>2]|0,52)|0;b=dE(la|0,T|0,D|S|0,ga|y|0)|0;ga=y;S=B;D=jE(c[S>>2]|0,c[S+4>>2]|0,18)|0;S=y;T=B;la=iE(c[T>>2]|0,c[T+4>>2]|0,46)|0;T=dE(b|0,ga|0,D|la|0,S|y|0)|0;S=w;c[S>>2]=T;c[S+4>>2]=y;S=w;T=x;x=Kh(c[S>>2]|0,c[S+4>>2]|0,c[T>>2]|0,c[T+4>>2]|0)|0;T=w;c[T>>2]=x;c[T+4>>2]=y;T=w;x=z;z=Kh(c[T>>2]|0,c[T+4>>2]|0,c[x>>2]|0,c[x+4>>2]|0)|0;x=w;c[x>>2]=z;c[x+4>>2]=y;x=w;z=A;A=Kh(c[x>>2]|0,c[x+4>>2]|0,c[z>>2]|0,c[z+4>>2]|0)|0;z=w;c[z>>2]=A;c[z+4>>2]=y;z=w;A=B;B=Kh(c[z>>2]|0,c[z+4>>2]|0,c[A>>2]|0,c[A+4>>2]|0)|0;A=w;c[A>>2]=B;c[A+4>>2]=y;}else{A=ma+24|0;ma=dE(c[A>>2]|0,c[A+4>>2]|0,374761413,668265263)|0;A=w;c[A>>2]=ma;c[A+4>>2]=y;}A=c[s>>2]|0;s=w;ma=dE(c[s>>2]|0,c[s+4>>2]|0,c[A>>2]|0,c[A+4>>2]|0)|0;A=w;c[A>>2]=ma;c[A+4>>2]=y;while(1){ta=c[u>>2]|0;if(((c[u>>2]|0)+8|0)>>>0>(c[v>>2]|0)>>>0)break;A=c[t>>2]|0;c[q>>2]=ta;c[r>>2]=A;A=c[r>>2]|0;c[n>>2]=c[q>>2];c[o>>2]=A;c[p>>2]=1;A=(c[o>>2]|0)==1;ma=c[n>>2]|0;if((c[p>>2]|0)==1){s=Hh(ma)|0;B=y;if(A){ua=s;va=B;}else{z=Ih(s,B)|0;ua=z;va=y;}z=m;c[z>>2]=ua;c[z+4>>2]=va;}else{z=ma;ma=c[z>>2]|0;B=c[z+4>>2]|0;if(A){wa=ma;xa=B;}else{A=Ih(ma,B)|0;wa=A;xa=y;}A=m;c[A>>2]=wa;c[A+4>>2]=xa;}A=m;B=Jh(0,0,c[A>>2]|0,c[A+4>>2]|0)|0;A=C;c[A>>2]=B;c[A+4>>2]=y;A=C;B=w;ma=c[B+4>>2]^c[A+4>>2];z=w;c[z>>2]=c[B>>2]^c[A>>2];c[z+4>>2]=ma;ma=w;z=jE(c[ma>>2]|0,c[ma+4>>2]|0,27)|0;ma=y;A=w;B=iE(c[A>>2]|0,c[A+4>>2]|0,37)|0;A=cE(z|B|0,ma|y|0,-2048144761,-1640531535)|0;ma=dE(A|0,y|0,-1028477341,-2048144777)|0;A=w;c[A>>2]=ma;c[A+4>>2]=y;c[u>>2]=(c[u>>2]|0)+8;}if((ta+4|0)>>>0<=(c[v>>2]|0)>>>0){ta=c[t>>2]|0;c[j>>2]=c[u>>2];c[k>>2]=ta;ta=c[k>>2]|0;c[g>>2]=c[j>>2];c[h>>2]=ta;c[i>>2]=1;ta=(c[h>>2]|0)==1;h=c[g>>2]|0;if((c[i>>2]|0)==1){i=Fh(h)|0;if(ta)ya=i;else ya=Gh(i)|0;c[f>>2]=ya;}else{ya=c[h>>2]|0;if(ta)za=ya;else za=Gh(ya)|0;c[f>>2]=za;}za=cE(c[f>>2]|0,0,-2048144761,-1640531535)|0;f=w;ya=c[f+4>>2]^y;ta=w;c[ta>>2]=c[f>>2]^za;c[ta+4>>2]=ya;ya=w;ta=jE(c[ya>>2]|0,c[ya+4>>2]|0,23)|0;ya=y;za=w;f=iE(c[za>>2]|0,c[za+4>>2]|0,41)|0;za=cE(ta|f|0,ya|y|0,668265295,-1028477379)|0;ya=dE(za|0,y|0,-1640531463,374761393)|0;za=w;c[za>>2]=ya;c[za+4>>2]=y;c[u>>2]=(c[u>>2]|0)+4;}while(1){if((c[u>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;za=cE(d[c[u>>2]>>0]|0,0,374761413,668265263)|0;ya=w;f=c[ya+4>>2]^y;ta=w;c[ta>>2]=c[ya>>2]^za;c[ta+4>>2]=f;f=w;ta=jE(c[f>>2]|0,c[f+4>>2]|0,11)|0;f=y;za=w;ya=iE(c[za>>2]|0,c[za+4>>2]|0,53)|0;za=cE(ta|ya|0,f|y|0,-2048144761,-1640531535)|0;f=w;c[f>>2]=za;c[f+4>>2]=y;c[u>>2]=(c[u>>2]|0)+1;}u=w;v=iE(c[u>>2]|0,c[u+4>>2]|0,33)|0;u=w;f=c[u+4>>2]^y;za=w;c[za>>2]=c[u>>2]^v;c[za+4>>2]=f;f=w;za=cE(c[f>>2]|0,c[f+4>>2]|0,668265295,-1028477379)|0;f=w;c[f>>2]=za;c[f+4>>2]=y;f=w;za=iE(c[f>>2]|0,c[f+4>>2]|0,29)|0;f=w;v=c[f+4>>2]^y;u=w;c[u>>2]=c[f>>2]^za;c[u+4>>2]=v;v=w;u=cE(c[v>>2]|0,c[v+4>>2]|0,-1640531463,374761393)|0;v=w;c[v>>2]=u;c[v+4>>2]=y;v=w;u=c[v+4>>2]|0;za=w;c[za>>2]=c[v>>2]^c[w+4>>2];c[za+4>>2]=u;u=w;w=c[u+4>>2]|0;za=Z;c[za>>2]=c[u>>2];c[za+4>>2]=w;na=Z;oa=na;pa=c[oa>>2]|0;qa=na+4|0;ra=qa;sa=c[ra>>2]|0;y=sa;l=e;return pa|0;}return 0;}function Ph(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=Qh(c[d>>2]|0)|0;l=b;return a|0;}function Qh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function Rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=a;if(c[b>>2]|0){c[e>>2]=qc[c[b>>2]&63](c[b+8>>2]|0,c[f>>2]|0)|0;g=c[e>>2]|0;l=d;return g|0;}else{c[e>>2]=Cy(c[f>>2]|0)|0;g=c[e>>2]|0;l=d;return g|0;}return 0;}function Sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=a;if(c[b>>2]|0){c[g>>2]=qc[c[b>>2]&63](c[b+8>>2]|0,c[f>>2]|0)|0;oE(c[g>>2]|0,0,c[f>>2]|0)|0;c[e>>2]=c[g>>2];h=c[e>>2]|0;l=d;return h|0;}else{c[e>>2]=Ey(1,c[f>>2]|0)|0;h=c[e>>2]|0;l=d;return h|0;}return 0;}function Th(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;if(!(c[e>>2]|0)){l=d;return;}if(c[b+4>>2]|0){xc[c[b+4>>2]&31](c[b+8>>2]|0,c[e>>2]|0);l=d;return;}else{Dy(c[e>>2]|0);l=d;return;}}function Uh(e,f,g,h,i,j){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;k=l;l=l+1136|0;m=k+1124|0;n=k+1120|0;o=k+1116|0;p=k+1112|0;q=k+1108|0;r=k+1104|0;s=k+1100|0;t=k+1096|0;u=k+1092|0;v=k+1088|0;w=k+1084|0;x=k+1080|0;y=k+1076|0;z=k+1072|0;A=k;B=k+1068|0;C=k+1064|0;D=k+1060|0;E=k+1056|0;F=k+1052|0;G=k+1048|0;H=k+1044|0;I=k+1128|0;J=k+1040|0;K=k+1036|0;L=k+1032|0;M=k+1028|0;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=i;c[s>>2]=j;c[t>>2]=1<<c[q>>2];c[u>>2]=(c[t>>2]|0)-1;c[v>>2]=c[n>>2];c[w>>2]=(c[v>>2]|0)+4;c[x>>2]=(c[v>>2]|0)+4+((c[q>>2]|0?(c[t>>2]|0)>>>1:1)<<2);c[y>>2]=c[x>>2];c[z>>2]=((c[t>>2]|0)>>>1)+((c[t>>2]|0)>>>3)+3;c[B>>2]=c[r>>2];c[C>>2]=(c[t>>2]|0)-1;if(1<<c[q>>2]>>>0>(c[s>>2]|0)>>>0){c[m>>2]=-44;N=c[m>>2]|0;l=k;return N|0;}b[(c[w>>2]|0)+-4>>1]=c[q>>2];b[(c[w>>2]|0)+-2>>1]=c[p>>2];c[A>>2]=0;c[D>>2]=1;while(1){if((c[D>>2]|0)>>>0>((c[p>>2]|0)+1|0)>>>0)break;s=c[A+((c[D>>2]|0)-1<<2)>>2]|0;if((b[(c[o>>2]|0)+((c[D>>2]|0)-1<<1)>>1]|0)==-1){c[A+(c[D>>2]<<2)>>2]=s+1;r=(c[D>>2]|0)-1&255;x=c[B>>2]|0;v=c[C>>2]|0;c[C>>2]=v+-1;a[x+v>>0]=r;}else c[A+(c[D>>2]<<2)>>2]=s+(b[(c[o>>2]|0)+((c[D>>2]|0)-1<<1)>>1]|0);c[D>>2]=(c[D>>2]|0)+1;}c[A+((c[p>>2]|0)+1<<2)>>2]=(c[t>>2]|0)+1;c[E>>2]=0;c[F>>2]=0;while(1){if((c[F>>2]|0)>>>0>(c[p>>2]|0)>>>0)break;c[G>>2]=0;while(1){O=c[F>>2]|0;if((c[G>>2]|0)>=(b[(c[o>>2]|0)+(c[F>>2]<<1)>>1]|0))break;a[(c[B>>2]|0)+(c[E>>2]|0)>>0]=O;c[E>>2]=(c[E>>2]|0)+(c[z>>2]|0)&c[u>>2];while(1){if((c[E>>2]|0)>>>0<=(c[C>>2]|0)>>>0)break;c[E>>2]=(c[E>>2]|0)+(c[z>>2]|0)&c[u>>2];}c[G>>2]=(c[G>>2]|0)+1;}c[F>>2]=O+1;}if(c[E>>2]|0){c[m>>2]=-1;N=c[m>>2]|0;l=k;return N|0;}c[H>>2]=0;while(1){if((c[H>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;a[I>>0]=a[(c[B>>2]|0)+(c[H>>2]|0)>>0]|0;E=(c[t>>2]|0)+(c[H>>2]|0)&65535;O=c[w>>2]|0;F=A+(d[I>>0]<<2)|0;G=c[F>>2]|0;c[F>>2]=G+1;b[O+(G<<1)>>1]=E;c[H>>2]=(c[H>>2]|0)+1;}c[J>>2]=0;c[K>>2]=0;while(1){if((c[K>>2]|0)>>>0>(c[p>>2]|0)>>>0)break;switch(b[(c[o>>2]|0)+(c[K>>2]<<1)>>1]|0){case 0:break;case 1:case-1:{c[(c[y>>2]|0)+(c[K>>2]<<3)+4>>2]=(c[q>>2]<<16)-(1<<c[q>>2]);c[(c[y>>2]|0)+(c[K>>2]<<3)>>2]=(c[J>>2]|0)-1;c[J>>2]=(c[J>>2]|0)+1;break;}default:{c[L>>2]=(c[q>>2]|0)-(Vh((b[(c[o>>2]|0)+(c[K>>2]<<1)>>1]|0)-1|0)|0);c[M>>2]=b[(c[o>>2]|0)+(c[K>>2]<<1)>>1]<<c[L>>2];c[(c[y>>2]|0)+(c[K>>2]<<3)+4>>2]=(c[L>>2]<<16)-(c[M>>2]|0);c[(c[y>>2]|0)+(c[K>>2]<<3)>>2]=(c[J>>2]|0)-(b[(c[o>>2]|0)+(c[K>>2]<<1)>>1]|0);c[J>>2]=(c[J>>2]|0)+(b[(c[o>>2]|0)+(c[K>>2]<<1)>>1]|0);}}c[K>>2]=(c[K>>2]|0)+1;}c[m>>2]=0;N=c[m>>2]|0;l=k;return N|0;}function Vh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Wh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=((N((c[e>>2]|0)+1|0,c[f>>2]|0)|0)>>>3)+3;l=d;return(c[e>>2]|0?c[g>>2]|0:512)|0;}function Xh(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;do{if((c[n>>2]|0)>>>0<=12){if((c[n>>2]|0)>>>0<5){c[h>>2]=-1;break;}f=c[j>>2]|0;e=f>>>0<(Wh(c[m>>2]|0,c[n>>2]|0)|0)>>>0;f=c[i>>2]|0;d=c[j>>2]|0;b=c[k>>2]|0;a=c[m>>2]|0;o=c[n>>2]|0;if(e){c[h>>2]=Yh(f,d,b,a,o,0)|0;break;}else{c[h>>2]=Yh(f,d,b,a,o,1)|0;break;}}else c[h>>2]=-44;}while(0);l=g;return c[h>>2]|0;}function Yh(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;j=l;l=l+96|0;k=j+80|0;m=j+76|0;n=j+72|0;o=j+68|0;p=j+64|0;q=j+60|0;r=j+56|0;s=j+52|0;t=j+48|0;u=j+44|0;v=j+40|0;w=j+36|0;x=j+32|0;y=j+28|0;z=j+24|0;A=j+20|0;B=j+16|0;C=j+12|0;D=j+8|0;E=j+4|0;F=j;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=i;c[s>>2]=c[m>>2];c[t>>2]=c[s>>2];c[u>>2]=(c[s>>2]|0)+(c[n>>2]|0);c[w>>2]=1<<c[q>>2];c[B>>2]=0;c[C>>2]=0;c[z>>2]=0;c[A>>2]=0;c[z>>2]=(c[z>>2]|0)+((c[q>>2]|0)-5<<c[A>>2]);c[A>>2]=(c[A>>2]|0)+4;c[x>>2]=(c[w>>2]|0)+1;c[y>>2]=c[w>>2];c[v>>2]=(c[q>>2]|0)+1;a:while(1){if((c[x>>2]|0)<=1){G=34;break;}if(c[C>>2]|0){c[D>>2]=c[B>>2];while(1){if(!((b[(c[o>>2]|0)+(c[B>>2]<<1)>>1]|0)!=0^1))break;c[B>>2]=(c[B>>2]|0)+1;}while(1){if((c[B>>2]|0)>>>0<((c[D>>2]|0)+24|0)>>>0)break;c[D>>2]=(c[D>>2]|0)+24;c[z>>2]=(c[z>>2]|0)+(65535<<c[A>>2]);if((c[r>>2]|0)==0?(c[t>>2]|0)>>>0>((c[u>>2]|0)+-2|0)>>>0:0){G=11;break a;}a[c[t>>2]>>0]=c[z>>2];a[(c[t>>2]|0)+1>>0]=(c[z>>2]|0)>>>8;c[t>>2]=(c[t>>2]|0)+2;c[z>>2]=(c[z>>2]|0)>>>16;}while(1){if((c[B>>2]|0)>>>0<((c[D>>2]|0)+3|0)>>>0)break;c[D>>2]=(c[D>>2]|0)+3;c[z>>2]=(c[z>>2]|0)+(3<<c[A>>2]);c[A>>2]=(c[A>>2]|0)+2;}c[z>>2]=(c[z>>2]|0)+((c[B>>2]|0)-(c[D>>2]|0)<<c[A>>2]);c[A>>2]=(c[A>>2]|0)+2;if((c[A>>2]|0)>16){if((c[r>>2]|0)==0?(c[t>>2]|0)>>>0>((c[u>>2]|0)+-2|0)>>>0:0){G=19;break;}a[c[t>>2]>>0]=c[z>>2];a[(c[t>>2]|0)+1>>0]=(c[z>>2]|0)>>>8;c[t>>2]=(c[t>>2]|0)+2;c[z>>2]=(c[z>>2]|0)>>>16;c[A>>2]=(c[A>>2]|0)-16;}}q=c[o>>2]|0;w=c[B>>2]|0;c[B>>2]=w+1;c[E>>2]=b[q+(w<<1)>>1];c[F>>2]=(c[y>>2]<<1)-1-(c[x>>2]|0);w=c[E>>2]|0;c[x>>2]=(c[x>>2]|0)-((c[E>>2]|0)<0?0-w|0:w);c[E>>2]=(c[E>>2]|0)+1;if((c[E>>2]|0)>=(c[y>>2]|0))c[E>>2]=(c[E>>2]|0)+(c[F>>2]|0);c[z>>2]=(c[z>>2]|0)+(c[E>>2]<<c[A>>2]);c[A>>2]=(c[A>>2]|0)+(c[v>>2]|0);c[A>>2]=(c[A>>2]|0)-((c[E>>2]|0)<(c[F>>2]|0)&1);c[C>>2]=(c[E>>2]|0)==1&1;if((c[x>>2]|0)<1){G=24;break;}while(1){if((c[x>>2]|0)>=(c[y>>2]|0))break;c[v>>2]=(c[v>>2]|0)+-1;c[y>>2]=c[y>>2]>>1;}if((c[A>>2]|0)>16){if((c[r>>2]|0)==0?(c[t>>2]|0)>>>0>((c[u>>2]|0)+-2|0)>>>0:0){G=31;break;}a[c[t>>2]>>0]=c[z>>2];a[(c[t>>2]|0)+1>>0]=(c[z>>2]|0)>>>8;c[t>>2]=(c[t>>2]|0)+2;c[z>>2]=(c[z>>2]|0)>>>16;c[A>>2]=(c[A>>2]|0)-16;}}if((G|0)==11){c[k>>2]=-70;H=c[k>>2]|0;l=j;return H|0;}else if((G|0)==19){c[k>>2]=-70;H=c[k>>2]|0;l=j;return H|0;}else if((G|0)==24){c[k>>2]=-1;H=c[k>>2]|0;l=j;return H|0;}else if((G|0)==31){c[k>>2]=-70;H=c[k>>2]|0;l=j;return H|0;}else if((G|0)==34){if((c[r>>2]|0)==0?(c[t>>2]|0)>>>0>((c[u>>2]|0)+-2|0)>>>0:0){c[k>>2]=-70;H=c[k>>2]|0;l=j;return H|0;}a[c[t>>2]>>0]=c[z>>2];a[(c[t>>2]|0)+1>>0]=(c[z>>2]|0)>>>8;c[t>>2]=(c[t>>2]|0)+(((c[A>>2]|0)+7|0)/8|0);if((c[B>>2]|0)>>>0>((c[p>>2]|0)+1|0)>>>0){c[k>>2]=-1;H=c[k>>2]|0;l=j;return H|0;}else{c[k>>2]=(c[t>>2]|0)-(c[s>>2]|0);H=c[k>>2]|0;l=j;return H|0;}}return 0;}function Zh(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=l;l=l+48|0;h=g+36|0;i=g+32|0;j=g+28|0;k=g+24|0;m=g+20|0;n=g+16|0;o=g+12|0;p=g+8|0;q=g+4|0;r=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[k>>2];c[o>>2]=(c[n>>2]|0)+(c[m>>2]|0);c[p>>2]=c[c[j>>2]>>2];c[q>>2]=0;oE(c[i>>2]|0,0,(c[p>>2]|0)+1<<2|0)|0;if(!(c[m>>2]|0)){c[c[j>>2]>>2]=0;c[h>>2]=0;s=c[h>>2]|0;l=g;return s|0;}while(1){if((c[n>>2]|0)>>>0>=(c[o>>2]|0)>>>0)break;m=c[i>>2]|0;k=c[n>>2]|0;c[n>>2]=k+1;f=m+((d[k>>0]|0)<<2)|0;c[f>>2]=(c[f>>2]|0)+1;}while(1){t=c[p>>2]|0;if(!((c[(c[i>>2]|0)+(c[p>>2]<<2)>>2]|0)!=0^1))break;c[p>>2]=t+-1;}c[c[j>>2]>>2]=t;c[r>>2]=0;while(1){if((c[r>>2]|0)>>>0>(c[p>>2]|0)>>>0)break;if((c[(c[i>>2]|0)+(c[r>>2]<<2)>>2]|0)>>>0>(c[q>>2]|0)>>>0)c[q>>2]=c[(c[i>>2]|0)+(c[r>>2]<<2)>>2];c[r>>2]=(c[r>>2]|0)+1;}c[h>>2]=c[q>>2];s=c[h>>2]|0;l=g;return s|0;}function _h(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;f=c[i>>2]|0;i=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;if((c[m>>2]|0)>>>0<1500){c[h>>2]=Zh(f,i,j,k)|0;o=c[h>>2]|0;l=g;return o|0;}else{c[h>>2]=$h(f,i,j,k,0,c[n>>2]|0)|0;o=c[h>>2]|0;l=g;return o|0;}return 0;}function $h(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;i=l;l=l+80|0;j=i+72|0;k=i+68|0;m=i+64|0;n=i+60|0;o=i+56|0;p=i+52|0;q=i+48|0;r=i+44|0;s=i+40|0;t=i+36|0;u=i+32|0;v=i+28|0;w=i+24|0;x=i+20|0;y=i+16|0;z=i+12|0;A=i+8|0;B=i+4|0;C=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=c[n>>2];c[s>>2]=(c[r>>2]|0)+(c[o>>2]|0);c[t>>2]=c[c[m>>2]>>2];c[u>>2]=0;c[v>>2]=c[q>>2];c[w>>2]=(c[v>>2]|0)+1024;c[x>>2]=(c[w>>2]|0)+1024;c[y>>2]=(c[x>>2]|0)+1024;oE(c[q>>2]|0,0,4096)|0;if(!(c[o>>2]|0)){oE(c[k>>2]|0,0,(c[t>>2]|0)+1|0)|0;c[c[m>>2]>>2]=0;c[j>>2]=0;D=c[j>>2]|0;l=i;return D|0;}if(!(c[t>>2]|0))c[t>>2]=255;c[z>>2]=ai(c[r>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+4;while(1){if((c[r>>2]|0)>>>0>=((c[s>>2]|0)+-15|0)>>>0)break;c[A>>2]=c[z>>2];c[z>>2]=ai(c[r>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+4;o=(c[v>>2]|0)+((c[A>>2]&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[w>>2]|0)+(((c[A>>2]|0)>>>8&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[x>>2]|0)+(((c[A>>2]|0)>>>16&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[y>>2]|0)+((c[A>>2]|0)>>>24<<2)|0;c[o>>2]=(c[o>>2]|0)+1;c[A>>2]=c[z>>2];c[z>>2]=ai(c[r>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+4;o=(c[v>>2]|0)+((c[A>>2]&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[w>>2]|0)+(((c[A>>2]|0)>>>8&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[x>>2]|0)+(((c[A>>2]|0)>>>16&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[y>>2]|0)+((c[A>>2]|0)>>>24<<2)|0;c[o>>2]=(c[o>>2]|0)+1;c[A>>2]=c[z>>2];c[z>>2]=ai(c[r>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+4;o=(c[v>>2]|0)+((c[A>>2]&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[w>>2]|0)+(((c[A>>2]|0)>>>8&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[x>>2]|0)+(((c[A>>2]|0)>>>16&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[y>>2]|0)+((c[A>>2]|0)>>>24<<2)|0;c[o>>2]=(c[o>>2]|0)+1;c[A>>2]=c[z>>2];c[z>>2]=ai(c[r>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+4;o=(c[v>>2]|0)+((c[A>>2]&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[w>>2]|0)+(((c[A>>2]|0)>>>8&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[x>>2]|0)+(((c[A>>2]|0)>>>16&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[y>>2]|0)+((c[A>>2]|0)>>>24<<2)|0;c[o>>2]=(c[o>>2]|0)+1;}c[r>>2]=(c[r>>2]|0)+-4;while(1){if((c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;A=c[v>>2]|0;z=c[r>>2]|0;c[r>>2]=z+1;o=A+((d[z>>0]|0)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;}a:do{if(c[p>>2]|0){c[B>>2]=255;while(1){if((c[B>>2]|0)>>>0<=(c[t>>2]|0)>>>0)break a;r=(c[v>>2]|0)+(c[B>>2]<<2)|0;c[r>>2]=(c[r>>2]|0)+((c[(c[w>>2]|0)+(c[B>>2]<<2)>>2]|0)+(c[(c[x>>2]|0)+(c[B>>2]<<2)>>2]|0)+(c[(c[y>>2]|0)+(c[B>>2]<<2)>>2]|0));if(c[(c[v>>2]|0)+(c[B>>2]<<2)>>2]|0)break;c[B>>2]=(c[B>>2]|0)+-1;}c[j>>2]=-48;D=c[j>>2]|0;l=i;return D|0;}}while(0);if((c[t>>2]|0)>>>0>255)c[t>>2]=255;c[C>>2]=0;while(1){if((c[C>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[(c[k>>2]|0)+(c[C>>2]<<2)>>2]=(c[(c[v>>2]|0)+(c[C>>2]<<2)>>2]|0)+(c[(c[w>>2]|0)+(c[C>>2]<<2)>>2]|0)+(c[(c[x>>2]|0)+(c[C>>2]<<2)>>2]|0)+(c[(c[y>>2]|0)+(c[C>>2]<<2)>>2]|0);if((c[(c[k>>2]|0)+(c[C>>2]<<2)>>2]|0)>>>0>(c[u>>2]|0)>>>0)c[u>>2]=c[(c[k>>2]|0)+(c[C>>2]<<2)>>2];c[C>>2]=(c[C>>2]|0)+1;}while(1){E=c[t>>2]|0;if(!((c[(c[k>>2]|0)+(c[t>>2]<<2)>>2]|0)!=0^1))break;c[t>>2]=E+-1;}c[c[m>>2]>>2]=E;c[j>>2]=c[u>>2];D=c[j>>2]|0;l=i;return D|0;}function ai(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function bi(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[c[j>>2]>>2]|0)>>>0<255){c[h>>2]=$h(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,1,c[n>>2]|0)|0;o=c[h>>2]|0;l=g;return o|0;}else{c[c[j>>2]>>2]=255;c[h>>2]=_h(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;o=c[h>>2]|0;l=g;return o|0;}return 0;}function ci(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+12|0;k=f+8|0;m=f+4|0;n=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;e=Vh((c[h>>2]|0)-1|0)|0;c[k>>2]=e-(c[j>>2]|0);c[m>>2]=c[g>>2];c[n>>2]=di(c[h>>2]|0,c[i>>2]|0)|0;if(!(c[m>>2]|0))c[m>>2]=11;if((c[k>>2]|0)>>>0<(c[m>>2]|0)>>>0)c[m>>2]=c[k>>2];if((c[n>>2]|0)>>>0>(c[m>>2]|0)>>>0)c[m>>2]=c[n>>2];if((c[m>>2]|0)>>>0<5)c[m>>2]=5;if((c[m>>2]|0)>>>0<=12){o=c[m>>2]|0;l=f;return o|0;}c[m>>2]=12;o=c[m>>2]|0;l=f;return o|0;}function di(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=l;l=l+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;i=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=(Vh((c[e>>2]|0)-1|0)|0)+1;c[h>>2]=(Vh(c[f>>2]|0)|0)+2;c[i>>2]=(c[g>>2]|0)>>>0<(c[h>>2]|0)>>>0?c[g>>2]|0:c[h>>2]|0;l=d;return c[i>>2]|0;}function ei(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=ci(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,2)|0;l=e;return d|0;}function fi(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0;h=l;l=l+80|0;i=h+72|0;j=h+68|0;k=h+64|0;m=h+60|0;n=h+56|0;o=h+52|0;p=h+24|0;q=h+16|0;r=h+8|0;s=h+48|0;t=h+44|0;u=h+40|0;v=h+78|0;w=h+36|0;x=h+76|0;z=h;A=h+32|0;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;if(!(c[k>>2]|0))c[k>>2]=11;if((c[k>>2]|0)>>>0<5){c[i>>2]=-1;B=c[i>>2]|0;l=h;return B|0;}if((c[k>>2]|0)>>>0>12){c[i>>2]=-44;B=c[i>>2]|0;l=h;return B|0;}g=c[k>>2]|0;if(g>>>0<(di(c[n>>2]|0,c[o>>2]|0)|0)>>>0){c[i>>2]=-1;B=c[i>>2]|0;l=h;return B|0;}g=p;c[g>>2]=62-(c[k>>2]|0);c[g+4>>2]=0;g=hE(0,1073741824,c[n>>2]|0,0)|0;f=q;c[f>>2]=g;c[f+4>>2]=y;f=p;g=eE(c[f>>2]|0,c[f+4>>2]|0,20,0)|0;f=jE(1,0,g|0)|0;g=r;c[g>>2]=f;c[g+4>>2]=y;c[s>>2]=1<<c[k>>2];c[u>>2]=0;b[v>>1]=0;c[w>>2]=(c[n>>2]|0)>>>(c[k>>2]|0);c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;if((c[(c[m>>2]|0)+(c[t>>2]<<2)>>2]|0)==(c[n>>2]|0)){C=12;break;}do{if(!(c[(c[m>>2]|0)+(c[t>>2]<<2)>>2]|0))b[(c[j>>2]|0)+(c[t>>2]<<1)>>1]=0;else{if((c[(c[m>>2]|0)+(c[t>>2]<<2)>>2]|0)>>>0<=(c[w>>2]|0)>>>0){b[(c[j>>2]|0)+(c[t>>2]<<1)>>1]=-1;c[s>>2]=(c[s>>2]|0)+-1;break;}g=q;f=cE(c[(c[m>>2]|0)+(c[t>>2]<<2)>>2]|0,0,c[g>>2]|0,c[g+4>>2]|0)|0;g=iE(f|0,y|0,c[p>>2]|0)|0;b[x>>1]=g;if((b[x>>1]|0)<8){g=r;f=cE(c[g>>2]|0,c[g+4>>2]|0,c[192+(b[x>>1]<<2)>>2]|0,0)|0;g=z;c[g>>2]=f;c[g+4>>2]=y;g=q;f=cE(c[(c[m>>2]|0)+(c[t>>2]<<2)>>2]|0,0,c[g>>2]|0,c[g+4>>2]|0)|0;g=y;e=b[x>>1]|0;d=jE(e|0,((e|0)<0)<<31>>31|0,c[p>>2]|0)|0;e=eE(f|0,g|0,d|0,y|0)|0;d=y;g=z;f=c[g+4>>2]|0;b[x>>1]=(b[x>>1]|0)+((d>>>0>f>>>0|((d|0)==(f|0)?e>>>0>(c[g>>2]|0)>>>0:0))&1);}if((b[x>>1]|0)>(b[v>>1]|0)){b[v>>1]=b[x>>1]|0;c[u>>2]=c[t>>2];}b[(c[j>>2]|0)+(c[t>>2]<<1)>>1]=b[x>>1]|0;c[s>>2]=(c[s>>2]|0)-(b[x>>1]|0);}}while(0);c[t>>2]=(c[t>>2]|0)+1;}if((C|0)==12){c[i>>2]=0;B=c[i>>2]|0;l=h;return B|0;}if((0-(c[s>>2]|0)|0)>=(b[(c[j>>2]|0)+(c[u>>2]<<1)>>1]>>1|0)){c[A>>2]=gi(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;if(hi(c[A>>2]|0)|0){c[i>>2]=c[A>>2];B=c[i>>2]|0;l=h;return B|0;}}else{A=(c[j>>2]|0)+(c[u>>2]<<1)|0;b[A>>1]=(b[A>>1]|0)+((c[s>>2]&65535)<<16>>16);}c[i>>2]=c[k>>2];B=c[i>>2]|0;l=h;return B|0;}function gi(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;h=l;l=l+112|0;i=h+100|0;j=h+96|0;k=h+92|0;m=h+88|0;n=h+84|0;o=h+80|0;p=h+76|0;q=h+72|0;r=h+68|0;s=h+64|0;t=h+60|0;u=h+56|0;v=h+52|0;w=h+32|0;x=h+24|0;z=h+16|0;A=h+8|0;B=h;C=h+48|0;D=h+44|0;E=h+40|0;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;b[h+104>>1]=-2;c[q>>2]=0;c[s>>2]=(c[n>>2]|0)>>>(c[k>>2]|0);c[t>>2]=((c[n>>2]|0)*3|0)>>>((c[k>>2]|0)+1|0);c[p>>2]=0;while(1){if((c[p>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;do{if(c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0){if((c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0)>>>0<=(c[s>>2]|0)>>>0){b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]=-1;c[q>>2]=(c[q>>2]|0)+1;c[n>>2]=(c[n>>2]|0)-(c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0);break;}g=(c[j>>2]|0)+(c[p>>2]<<1)|0;if((c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0)>>>0<=(c[t>>2]|0)>>>0){b[g>>1]=1;c[q>>2]=(c[q>>2]|0)+1;c[n>>2]=(c[n>>2]|0)-(c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0);break;}else{b[g>>1]=-2;break;}}else b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]=0;}while(0);c[p>>2]=(c[p>>2]|0)+1;}c[r>>2]=(1<<c[k>>2])-(c[q>>2]|0);if((((c[n>>2]|0)>>>0)/((c[r>>2]|0)>>>0)|0)>>>0>(c[t>>2]|0)>>>0){c[t>>2]=(((c[n>>2]|0)*3|0)>>>0)/(c[r>>2]<<1>>>0)|0;c[p>>2]=0;while(1){if((c[p>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;if((b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]|0)==-2?(c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0)>>>0<=(c[t>>2]|0)>>>0:0){b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]=1;c[q>>2]=(c[q>>2]|0)+1;c[n>>2]=(c[n>>2]|0)-(c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0);}c[p>>2]=(c[p>>2]|0)+1;}c[r>>2]=(1<<c[k>>2])-(c[q>>2]|0);}if((c[q>>2]|0)==((c[o>>2]|0)+1|0)){c[u>>2]=0;c[v>>2]=0;c[p>>2]=0;while(1){if((c[p>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;if((c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0)>>>0>(c[v>>2]|0)>>>0){c[u>>2]=c[p>>2];c[v>>2]=c[(c[m>>2]|0)+(c[p>>2]<<2)>>2];}c[p>>2]=(c[p>>2]|0)+1;}v=(c[j>>2]|0)+(c[u>>2]<<1)|0;b[v>>1]=(b[v>>1]|0)+((c[r>>2]&65535)<<16>>16);c[i>>2]=0;F=c[i>>2]|0;l=h;return F|0;}if(!(c[n>>2]|0)){c[p>>2]=0;while(1){if((c[r>>2]|0)>>>0<=0)break;if((b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]|0)>0){c[r>>2]=(c[r>>2]|0)+-1;v=(c[j>>2]|0)+(c[p>>2]<<1)|0;b[v>>1]=(b[v>>1]|0)+1<<16>>16;}c[p>>2]=(((c[p>>2]|0)+1|0)>>>0)%(((c[o>>2]|0)+1|0)>>>0)|0;}c[i>>2]=0;F=c[i>>2]|0;l=h;return F|0;}v=w;c[v>>2]=62-(c[k>>2]|0);c[v+4>>2]=0;v=w;k=eE(c[v>>2]|0,c[v+4>>2]|0,1,0)|0;v=jE(1,0,k|0)|0;k=eE(v|0,y|0,1,0)|0;v=x;c[v>>2]=k;c[v+4>>2]=y;v=jE(1,0,c[w>>2]|0)|0;k=cE(v|0,y|0,c[r>>2]|0,0)|0;r=x;v=dE(k|0,y|0,c[r>>2]|0,c[r+4>>2]|0)|0;r=hE(v|0,y|0,c[n>>2]|0,0)|0;n=z;c[n>>2]=r;c[n+4>>2]=y;n=x;x=c[n+4>>2]|0;r=A;c[r>>2]=c[n>>2];c[r+4>>2]=x;c[p>>2]=0;while(1){if((c[p>>2]|0)>>>0>(c[o>>2]|0)>>>0){G=40;break;}if((b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]|0)==-2){x=A;r=c[x>>2]|0;n=c[x+4>>2]|0;x=z;v=cE(c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0,0,c[x>>2]|0,c[x+4>>2]|0)|0;x=dE(r|0,n|0,v|0,y|0)|0;v=B;c[v>>2]=x;c[v+4>>2]=y;v=A;x=iE(c[v>>2]|0,c[v+4>>2]|0,c[w>>2]|0)|0;c[C>>2]=x;x=B;v=iE(c[x>>2]|0,c[x+4>>2]|0,c[w>>2]|0)|0;c[D>>2]=v;c[E>>2]=(c[D>>2]|0)-(c[C>>2]|0);if((c[E>>2]|0)>>>0<1){G=37;break;}b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]=c[E>>2];v=B;x=c[v+4>>2]|0;n=A;c[n>>2]=c[v>>2];c[n+4>>2]=x;}c[p>>2]=(c[p>>2]|0)+1;}if((G|0)==37){c[i>>2]=-1;F=c[i>>2]|0;l=h;return F|0;}else if((G|0)==40){c[i>>2]=0;F=c[i>>2]|0;l=h;return F|0;}return 0;}function hi(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function ii(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;g=l;l=l+32|0;h=g+16|0;i=g+20|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[h>>2]=e;a[i>>0]=f;c[j>>2]=c[h>>2];c[k>>2]=(c[j>>2]|0)+4;c[m>>2]=(c[j>>2]|0)+8;c[n>>2]=c[m>>2];b[(c[k>>2]|0)+-4>>1]=0;b[(c[k>>2]|0)+-2>>1]=d[i>>0]|0;b[c[k>>2]>>1]=0;b[(c[k>>2]|0)+2>>1]=0;c[(c[n>>2]|0)+((d[i>>0]|0)<<3)+4>>2]=0;c[(c[n>>2]|0)+((d[i>>0]|0)<<3)>>2]=0;l=g;return 0;}function ji(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g+24|0;i=g+20|0;j=g+16|0;k=g+12|0;m=g+8|0;n=g+4|0;o=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=(c[j>>2]|0)>>>0>=((c[m>>2]|0)+((c[m>>2]|0)>>>7)|0)>>>0&1;f=c[i>>2]|0;i=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;if(c[o>>2]|0){c[h>>2]=ki(f,i,j,k,m,1)|0;p=c[h>>2]|0;l=g;return p|0;}else{c[h>>2]=ki(f,i,j,k,m,0)|0;p=c[h>>2]|0;l=g;return p|0;}return 0;}function ki(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;i=l;l=l+112|0;j=i+96|0;k=i+92|0;m=i+88|0;n=i+84|0;o=i+80|0;p=i+76|0;q=i+72|0;r=i+68|0;s=i+64|0;t=i+60|0;u=i+40|0;v=i+24|0;w=i+8|0;x=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=c[n>>2];c[s>>2]=(c[r>>2]|0)+(c[o>>2]|0);c[t>>2]=c[s>>2];if((c[o>>2]|0)>>>0<=2){c[j>>2]=0;y=c[j>>2]|0;l=i;return y|0;}c[x>>2]=li(u,c[k>>2]|0,c[m>>2]|0)|0;if(hi(c[x>>2]|0)|0){c[j>>2]=0;y=c[j>>2]|0;l=i;return y|0;}x=(c[o>>2]&1|0)!=0;m=c[p>>2]|0;k=(c[t>>2]|0)+-1|0;c[t>>2]=k;s=d[k>>0]|0;do{if(x){mi(v,m,s);k=c[p>>2]|0;n=(c[t>>2]|0)+-1|0;c[t>>2]=n;mi(w,k,d[n>>0]|0);n=(c[t>>2]|0)+-1|0;c[t>>2]=n;ni(u,v,d[n>>0]|0);if(c[q>>2]|0){oi(u);break;}else{pi(u);break;}}else{mi(w,m,s);n=c[p>>2]|0;k=(c[t>>2]|0)+-1|0;c[t>>2]=k;mi(v,n,d[k>>0]|0);}}while(0);c[o>>2]=(c[o>>2]|0)-2;while(1){if((c[t>>2]|0)>>>0<=(c[r>>2]|0)>>>0)break;o=(c[t>>2]|0)+-1|0;c[t>>2]=o;ni(u,w,d[o>>0]|0);o=(c[t>>2]|0)+-1|0;c[t>>2]=o;ni(u,v,d[o>>0]|0);if(c[q>>2]|0)oi(u);else pi(u);}qi(u,w);qi(u,v);c[j>>2]=ri(u)|0;y=c[j>>2]|0;l=i;return y|0;}function li(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[c[g>>2]>>2]=0;c[(c[g>>2]|0)+4>>2]=0;c[(c[g>>2]|0)+8>>2]=c[h>>2];c[(c[g>>2]|0)+12>>2]=c[(c[g>>2]|0)+8>>2];c[(c[g>>2]|0)+16>>2]=(c[(c[g>>2]|0)+8>>2]|0)+(c[i>>2]|0)+-4;if((c[i>>2]|0)>>>0<=4){c[f>>2]=-70;j=c[f>>2]|0;l=e;return j|0;}else{c[f>>2]=0;j=c[f>>2]|0;l=e;return j|0;}return 0;}function mi(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;Di(c[g>>2]|0,c[h>>2]|0);h=(c[(c[g>>2]|0)+8>>2]|0)+(c[i>>2]<<3)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[k>>2]=c[(c[g>>2]|0)+4>>2];c[m>>2]=((c[j+4>>2]|0)+32768|0)>>>16;c[c[g>>2]>>2]=(c[m>>2]<<16)-(c[j+4>>2]|0);c[c[g>>2]>>2]=e[(c[k>>2]|0)+((c[c[g>>2]>>2]>>c[m>>2])+(c[j>>2]|0)<<1)>>1];l=f;return;}function ni(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;d=(c[(c[h>>2]|0)+8>>2]|0)+(c[i>>2]<<3)|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[k>>2]=c[(c[h>>2]|0)+4>>2];c[m>>2]=((c[c[h>>2]>>2]|0)+(c[j+4>>2]|0)|0)>>>16;ti(c[g>>2]|0,c[c[h>>2]>>2]|0,c[m>>2]|0);c[c[h>>2]>>2]=e[(c[k>>2]|0)+((c[c[h>>2]>>2]>>c[m>>2])+(c[j>>2]|0)<<1)>>1];l=f;return;}function oi(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=(c[(c[d>>2]|0)+4>>2]|0)>>>3;ui(c[(c[d>>2]|0)+12>>2]|0,c[c[d>>2]>>2]|0);a=(c[d>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+(c[e>>2]|0);a=(c[d>>2]|0)+4|0;c[a>>2]=c[a>>2]&7;a=c[d>>2]|0;c[a>>2]=(c[a>>2]|0)>>>(c[e>>2]<<3);l=b;return;}function pi(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=(c[(c[d>>2]|0)+4>>2]|0)>>>3;ui(c[(c[d>>2]|0)+12>>2]|0,c[c[d>>2]>>2]|0);a=(c[d>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+(c[e>>2]|0);if((c[(c[d>>2]|0)+12>>2]|0)>>>0>(c[(c[d>>2]|0)+16>>2]|0)>>>0)c[(c[d>>2]|0)+12>>2]=c[(c[d>>2]|0)+16>>2];a=(c[d>>2]|0)+4|0;c[a>>2]=c[a>>2]&7;a=c[d>>2]|0;c[a>>2]=(c[a>>2]|0)>>>(c[e>>2]<<3);l=b;return;}function qi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;ti(c[e>>2]|0,c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+12>>2]|0);pi(c[e>>2]|0);l=d;return;}function ri(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;si(c[e>>2]|0,1,1);pi(c[e>>2]|0);if((c[(c[e>>2]|0)+12>>2]|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{c[d>>2]=(c[(c[e>>2]|0)+12>>2]|0)-(c[(c[e>>2]|0)+8>>2]|0)+((c[(c[e>>2]|0)+4>>2]|0)>>>0>0&1);f=c[d>>2]|0;l=b;return f|0;}return 0;}function si(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=c[f>>2]|0;c[d>>2]=c[d>>2]|c[g>>2]<<c[(c[f>>2]|0)+4>>2];g=(c[f>>2]|0)+4|0;c[g>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function ti(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=c[f>>2]|0;c[d>>2]=c[d>>2]|(c[g>>2]&c[2800+(c[h>>2]<<2)>>2])<<c[(c[f>>2]|0)+4>>2];g=(c[f>>2]|0)+4|0;c[g>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function ui(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(vi()|0)!=0;a=c[e>>2]|0;e=c[f>>2]|0;if(b){wi(a,e);l=d;return;}else{xi(a,e,0);l=d;return;}}function vi(){return 1;}function wi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(yi()|0)!=0;a=c[e>>2]|0;e=c[f>>2]|0;if(b){Bi(a,e);l=d;return;}else{Bi(a,Ci(e)|0);l=d;return;}}function xi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;d=(yi()|0)!=0;a=c[f>>2]|0;f=g;g=c[f>>2]|0;b=c[f+4>>2]|0;if(d){zi(a,g,b);l=e;return;}else{d=Ai(g,b)|0;zi(a,d,y);l=e;return;}}function yi(){return d[11936]|0|0;}function zi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f+8|0;h=f;c[g>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;e=h;h=c[e>>2]|0;b=c[e+4>>2]|0;e=c[g>>2]|0;g=e;a[g>>0]=h;a[g+1>>0]=h>>8;a[g+2>>0]=h>>16;a[g+3>>0]=h>>24;h=e+4|0;a[h>>0]=b;a[h+1>>0]=b>>8;a[h+2>>0]=b>>16;a[h+3>>0]=b>>24;l=f;return;}function Ai(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Bi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[g>>2]|0;g=c[f>>2]|0;a[g>>0]=d;a[g+1>>0]=d>>8;a[g+2>>0]=d>>16;a[g+3>>0]=d>>24;l=e;return;}function Ci(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Di(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;i=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=c[f>>2];c[h>>2]=c[g>>2];c[i>>2]=(Ei(c[g>>2]|0)|0)&65535;c[c[e>>2]>>2]=1<<c[i>>2];c[(c[e>>2]|0)+4>>2]=(c[h>>2]|0)+4;if(c[i>>2]|0)j=1<<(c[i>>2]|0)-1;else j=1;c[(c[e>>2]|0)+8>>2]=(c[f>>2]|0)+4+(j<<2);c[(c[e>>2]|0)+12>>2]=c[i>>2];l=d;return;}function Ei(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function Fi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=ci(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,1)|0;l=e;return d|0;}function Gi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;f=l;l=l+464|0;g=f+452|0;h=f+448|0;i=f+444|0;j=f+440|0;k=f+436|0;m=f+432|0;n=f+428|0;o=f+424|0;p=f+420|0;q=f+416|0;r=f+160|0;s=f+32|0;t=f;u=f+412|0;v=f+408|0;w=f+404|0;x=f+400|0;y=f+396|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[h>>2];c[n>>2]=c[m>>2];c[o>>2]=(c[m>>2]|0)+(c[i>>2]|0);c[p>>2]=12;c[q>>2]=6;if((c[k>>2]|0)>>>0<=1){c[g>>2]=0;z=c[g>>2]|0;l=f;return z|0;}c[u>>2]=Zh(s,p,c[j>>2]|0,c[k>>2]|0)|0;i=(Hi(c[u>>2]|0)|0)!=0;h=c[u>>2]|0;if(i){c[g>>2]=h;z=c[g>>2]|0;l=f;return z|0;}if((h|0)==(c[k>>2]|0)){c[g>>2]=1;z=c[g>>2]|0;l=f;return z|0;}if((c[u>>2]|0)==1){c[g>>2]=0;z=c[g>>2]|0;l=f;return z|0;}c[q>>2]=ei(c[q>>2]|0,c[k>>2]|0,c[p>>2]|0)|0;c[v>>2]=fi(t,c[q>>2]|0,s,c[k>>2]|0,c[p>>2]|0)|0;if(Hi(c[v>>2]|0)|0){c[g>>2]=c[v>>2];z=c[g>>2]|0;l=f;return z|0;}c[w>>2]=Xh(c[n>>2]|0,(c[o>>2]|0)-(c[n>>2]|0)|0,t,c[p>>2]|0,c[q>>2]|0)|0;v=(Hi(c[w>>2]|0)|0)!=0;s=c[w>>2]|0;if(v){c[g>>2]=s;z=c[g>>2]|0;l=f;return z|0;}c[n>>2]=(c[n>>2]|0)+s;c[x>>2]=Uh(r,t,c[p>>2]|0,c[q>>2]|0,f+96|0,64)|0;if(Hi(c[x>>2]|0)|0){c[g>>2]=c[x>>2];z=c[g>>2]|0;l=f;return z|0;}c[y>>2]=ji(c[n>>2]|0,(c[o>>2]|0)-(c[n>>2]|0)|0,c[j>>2]|0,c[k>>2]|0,r)|0;r=(Hi(c[y>>2]|0)|0)!=0;k=c[y>>2]|0;if(r){c[g>>2]=k;z=c[g>>2]|0;l=f;return z|0;}if(!k){c[g>>2]=0;z=c[g>>2]|0;l=f;return z|0;}else{c[n>>2]=(c[n>>2]|0)+(c[y>>2]|0);c[g>>2]=(c[n>>2]|0)-(c[m>>2]|0);z=c[g>>2]|0;l=f;return z|0;}return 0;}function Hi(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function Ii(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;i=l;l=l+320|0;j=i+288|0;k=i+284|0;m=i+280|0;n=i+276|0;o=i+272|0;p=i+268|0;q=i+292|0;r=i;s=i+264|0;t=i+260|0;u=i+256|0;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[s>>2]=c[k>>2];if((c[o>>2]|0)>>>0>255){c[j>>2]=-46;v=c[j>>2]|0;l=i;return v|0;}a[q>>0]=0;c[t>>2]=1;while(1){if((c[t>>2]|0)>>>0>=((c[p>>2]|0)+1|0)>>>0)break;a[q+(c[t>>2]|0)>>0]=(c[p>>2]|0)+1-(c[t>>2]|0);c[t>>2]=(c[t>>2]|0)+1;}c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>=(c[o>>2]|0)>>>0)break;a[r+(c[t>>2]|0)>>0]=a[q+(d[(c[n>>2]|0)+(c[t>>2]<<2)+2>>0]|0)>>0]|0;c[t>>2]=(c[t>>2]|0)+1;}c[u>>2]=Gi((c[s>>2]|0)+1|0,(c[m>>2]|0)-1|0,r,c[o>>2]|0)|0;n=(Hi(c[u>>2]|0)|0)!=0;q=c[u>>2]|0;if(n){c[j>>2]=q;v=c[j>>2]|0;l=i;return v|0;}if((q>>>0>1?(c[u>>2]|0)>>>0<(((c[o>>2]|0)>>>0)/2|0)>>>0:0)|0){a[c[s>>2]>>0]=c[u>>2];c[j>>2]=(c[u>>2]|0)+1;v=c[j>>2]|0;l=i;return v|0;}if((c[o>>2]|0)>>>0>128){c[j>>2]=-1;v=c[j>>2]|0;l=i;return v|0;}if((((((c[o>>2]|0)+1|0)>>>0)/2|0)+1|0)>>>0>(c[m>>2]|0)>>>0){c[j>>2]=-70;v=c[j>>2]|0;l=i;return v|0;}a[c[s>>2]>>0]=128+((c[o>>2]|0)-1);a[r+(c[o>>2]|0)>>0]=0;c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>=(c[o>>2]|0)>>>0)break;a[(c[s>>2]|0)+((((c[t>>2]|0)>>>0)/2|0)+1)>>0]=((d[r+(c[t>>2]|0)>>0]|0)<<4)+(d[r+((c[t>>2]|0)+1)>>0]|0);c[t>>2]=(c[t>>2]|0)+2;}c[j>>2]=((((c[o>>2]|0)+1|0)>>>0)/2|0)+1;v=c[j>>2]|0;l=i;return v|0;}function Ji(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;j=l;l=l+464|0;k=j+444|0;m=j+440|0;n=j+436|0;o=j+432|0;p=j+428|0;q=j+128|0;r=j+64|0;s=j+424|0;t=j+420|0;u=j+416|0;v=j+412|0;w=j+408|0;x=j+404|0;y=j+400|0;z=j+396|0;A=j+32|0;B=j;C=j+392|0;D=j+448|0;E=j+388|0;F=j+384|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=i;c[s>>2]=0;c[t>>2]=0;c[u>>2]=fh(q,256,r,t,s,c[o>>2]|0,c[p>>2]|0)|0;if(Hi(c[u>>2]|0)|0){c[k>>2]=c[u>>2];G=c[k>>2]|0;l=j;return G|0;}if((c[s>>2]|0)>>>0>12){c[k>>2]=-44;G=c[k>>2]|0;l=j;return G|0;}if((c[t>>2]|0)>>>0>((c[c[n>>2]>>2]|0)+1|0)>>>0){c[k>>2]=-48;G=c[k>>2]|0;l=j;return G|0;}c[w>>2]=0;c[v>>2]=1;while(1){if((c[v>>2]|0)>>>0>(c[s>>2]|0)>>>0)break;c[x>>2]=c[w>>2];c[w>>2]=(c[w>>2]|0)+(c[r+(c[v>>2]<<2)>>2]<<(c[v>>2]|0)-1);c[r+(c[v>>2]<<2)>>2]=c[x>>2];c[v>>2]=(c[v>>2]|0)+1;}c[y>>2]=0;while(1){if((c[y>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;c[z>>2]=d[q+(c[y>>2]|0)>>0];a[(c[m>>2]|0)+(c[y>>2]<<2)+2>>0]=(c[s>>2]|0)+1-(c[z>>2]|0);c[y>>2]=(c[y>>2]|0)+1;}c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;c[A+12>>2]=0;c[A+16>>2]=0;c[A+20>>2]=0;c[A+24>>2]=0;c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;c[B+12>>2]=0;c[B+16>>2]=0;c[B+20>>2]=0;c[B+24>>2]=0;c[C>>2]=0;while(1){if((c[C>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;y=A+((d[(c[m>>2]|0)+(c[C>>2]<<2)+2>>0]|0)<<1)|0;b[y>>1]=(b[y>>1]|0)+1<<16>>16;c[C>>2]=(c[C>>2]|0)+1;}b[B+((c[s>>2]|0)+1<<1)>>1]=0;b[D>>1]=0;c[E>>2]=c[s>>2];while(1){if((c[E>>2]|0)>>>0<=0)break;b[B+(c[E>>2]<<1)>>1]=b[D>>1]|0;b[D>>1]=(e[D>>1]|0)+(e[A+(c[E>>2]<<1)>>1]|0);b[D>>1]=(e[D>>1]|0)>>1;c[E>>2]=(c[E>>2]|0)+-1;}c[F>>2]=0;while(1){if((c[F>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;E=B+((d[(c[m>>2]|0)+(c[F>>2]<<2)+2>>0]|0)<<1)|0;D=b[E>>1]|0;b[E>>1]=D+1<<16>>16;b[(c[m>>2]|0)+(c[F>>2]<<2)>>1]=D;c[F>>2]=(c[F>>2]|0)+1;}c[c[n>>2]>>2]=(c[t>>2]|0)-1;c[k>>2]=c[u>>2];G=c[k>>2]|0;l=j;return G|0;}function Ki(f,g,h,i,j,k){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;m=l;l=l+128|0;n=m+120|0;o=m+116|0;p=m+112|0;q=m+108|0;r=m+104|0;s=m+100|0;t=m+96|0;u=m+92|0;v=m+88|0;w=m+84|0;x=m+80|0;y=m+76|0;z=m+72|0;A=m+126|0;B=m+68|0;C=m+64|0;D=m+60|0;E=m+32|0;F=m;G=m+124|0;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=i;c[s>>2]=j;c[t>>2]=k;c[u>>2]=c[s>>2];c[v>>2]=(c[u>>2]|0)+8;b[A>>1]=256;if(c[s>>2]&3|0){c[n>>2]=-1;H=c[n>>2]|0;l=m;return H|0;}if((c[t>>2]|0)>>>0<4096){c[n>>2]=-66;H=c[n>>2]|0;l=m;return H|0;}if(!(c[r>>2]|0))c[r>>2]=11;if((c[q>>2]|0)>>>0>255){c[n>>2]=-46;H=c[n>>2]|0;l=m;return H|0;}oE(c[u>>2]|0,0,4096)|0;Li(c[v>>2]|0,c[p>>2]|0,c[q>>2]|0);c[x>>2]=c[q>>2];while(1){I=c[x>>2]|0;if(c[(c[v>>2]|0)+(c[x>>2]<<3)>>2]|0)break;c[x>>2]=I+-1;}c[y>>2]=I;c[B>>2]=(e[A>>1]|0)+(c[y>>2]|0)-1;c[z>>2]=e[A>>1];c[(c[v>>2]|0)+((e[A>>1]|0)<<3)>>2]=(c[(c[v>>2]|0)+(c[y>>2]<<3)>>2]|0)+(c[(c[v>>2]|0)+((c[y>>2]|0)-1<<3)>>2]|0);I=b[A>>1]|0;b[(c[v>>2]|0)+((c[y>>2]|0)-1<<3)+4>>1]=I;b[(c[v>>2]|0)+(c[y>>2]<<3)+4>>1]=I;b[A>>1]=(b[A>>1]|0)+1<<16>>16;c[y>>2]=(c[y>>2]|0)-2;c[w>>2]=e[A>>1];while(1){if((c[w>>2]|0)>>>0>(c[B>>2]|0)>>>0)break;c[(c[v>>2]|0)+(c[w>>2]<<3)>>2]=1073741824;c[w>>2]=(c[w>>2]|0)+1;}c[c[u>>2]>>2]=-2147483648;while(1){J=c[v>>2]|0;if((e[A>>1]|0)>>>0>(c[B>>2]|0)>>>0)break;if((c[J+(c[y>>2]<<3)>>2]|0)>>>0<(c[(c[v>>2]|0)+(c[z>>2]<<3)>>2]|0)>>>0){u=c[y>>2]|0;c[y>>2]=u+-1;K=u;}else{u=c[z>>2]|0;c[z>>2]=u+1;K=u;}c[C>>2]=K;if((c[(c[v>>2]|0)+(c[y>>2]<<3)>>2]|0)>>>0<(c[(c[v>>2]|0)+(c[z>>2]<<3)>>2]|0)>>>0){u=c[y>>2]|0;c[y>>2]=u+-1;L=u;}else{u=c[z>>2]|0;c[z>>2]=u+1;L=u;}c[D>>2]=L;c[(c[v>>2]|0)+((e[A>>1]|0)<<3)>>2]=(c[(c[v>>2]|0)+(c[C>>2]<<3)>>2]|0)+(c[(c[v>>2]|0)+(c[D>>2]<<3)>>2]|0);u=b[A>>1]|0;b[(c[v>>2]|0)+(c[D>>2]<<3)+4>>1]=u;b[(c[v>>2]|0)+(c[C>>2]<<3)+4>>1]=u;b[A>>1]=(b[A>>1]|0)+1<<16>>16;}a[J+(c[B>>2]<<3)+7>>0]=0;c[w>>2]=(c[B>>2]|0)-1;while(1){if((c[w>>2]|0)>>>0<256)break;a[(c[v>>2]|0)+(c[w>>2]<<3)+7>>0]=(d[(c[v>>2]|0)+((e[(c[v>>2]|0)+(c[w>>2]<<3)+4>>1]|0)<<3)+7>>0]|0)+1;c[w>>2]=(c[w>>2]|0)+-1;}c[w>>2]=0;while(1){M=c[v>>2]|0;if((c[w>>2]|0)>>>0>(c[x>>2]|0)>>>0)break;a[(c[v>>2]|0)+(c[w>>2]<<3)+7>>0]=(d[M+((e[(c[v>>2]|0)+(c[w>>2]<<3)+4>>1]|0)<<3)+7>>0]|0)+1;c[w>>2]=(c[w>>2]|0)+1;}c[r>>2]=Mi(M,c[x>>2]|0,c[r>>2]|0)|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;c[E+16>>2]=0;c[E+20>>2]=0;b[E+24>>1]=0;c[F>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[F+12>>2]=0;c[F+16>>2]=0;c[F+20>>2]=0;b[F+24>>1]=0;if((c[r>>2]|0)>>>0>12){c[n>>2]=-1;H=c[n>>2]|0;l=m;return H|0;}c[w>>2]=0;while(1){if((c[w>>2]|0)>>>0>(c[x>>2]|0)>>>0)break;M=E+((d[(c[v>>2]|0)+(c[w>>2]<<3)+7>>0]|0)<<1)|0;b[M>>1]=(b[M>>1]|0)+1<<16>>16;c[w>>2]=(c[w>>2]|0)+1;}b[G>>1]=0;c[w>>2]=c[r>>2];while(1){if((c[w>>2]|0)>>>0<=0)break;b[F+(c[w>>2]<<1)>>1]=b[G>>1]|0;b[G>>1]=(e[G>>1]|0)+(e[E+(c[w>>2]<<1)>>1]|0);b[G>>1]=(e[G>>1]|0)>>1;c[w>>2]=(c[w>>2]|0)+-1;}c[w>>2]=0;while(1){if((c[w>>2]|0)>>>0>(c[q>>2]|0)>>>0)break;a[(c[o>>2]|0)+((d[(c[v>>2]|0)+(c[w>>2]<<3)+6>>0]|0)<<2)+2>>0]=a[(c[v>>2]|0)+(c[w>>2]<<3)+7>>0]|0;c[w>>2]=(c[w>>2]|0)+1;}c[w>>2]=0;while(1){if((c[w>>2]|0)>>>0>(c[q>>2]|0)>>>0)break;v=F+((d[(c[o>>2]|0)+(c[w>>2]<<2)+2>>0]|0)<<1)|0;G=b[v>>1]|0;b[v>>1]=G+1<<16>>16;b[(c[o>>2]|0)+(c[w>>2]<<2)>>1]=G;c[w>>2]=(c[w>>2]|0)+1;}c[n>>2]=c[r>>2];H=c[n>>2]|0;l=m;return H|0;}function Li(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+288|0;g=f+284|0;h=f+280|0;i=f+276|0;j=f;k=f+272|0;m=f+268|0;n=f+264|0;o=f+260|0;p=f+256|0;c[g>>2]=b;c[h>>2]=d;c[i>>2]=e;oE(j|0,0,256)|0;c[k>>2]=0;while(1){if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0)break;c[m>>2]=Ni((c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)+1|0)|0;e=j+(c[m>>2]<<3)|0;c[e>>2]=(c[e>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+1;}c[k>>2]=30;while(1){if((c[k>>2]|0)>>>0<=0)break;m=j+((c[k>>2]|0)-1<<3)|0;c[m>>2]=(c[m>>2]|0)+(c[j+(c[k>>2]<<3)>>2]|0);c[k>>2]=(c[k>>2]|0)+-1;}c[k>>2]=0;while(1){if((c[k>>2]|0)>>>0>=32)break;c[j+(c[k>>2]<<3)+4>>2]=c[j+(c[k>>2]<<3)>>2];c[k>>2]=(c[k>>2]|0)+1;}c[k>>2]=0;while(1){if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0)break;c[n>>2]=c[(c[h>>2]|0)+(c[k>>2]<<2)>>2];c[o>>2]=(Ni((c[n>>2]|0)+1|0)|0)+1;m=j+(c[o>>2]<<3)+4|0;e=c[m>>2]|0;c[m>>2]=e+1;c[p>>2]=e;while(1){if((c[p>>2]|0)>>>0<=(c[j+(c[o>>2]<<3)>>2]|0)>>>0)break;if((c[n>>2]|0)>>>0<=(c[(c[g>>2]|0)+((c[p>>2]|0)-1<<3)>>2]|0)>>>0)break;e=(c[g>>2]|0)+(c[p>>2]<<3)|0;m=(c[g>>2]|0)+((c[p>>2]|0)-1<<3)|0;c[e>>2]=c[m>>2];c[e+4>>2]=c[m+4>>2];c[p>>2]=(c[p>>2]|0)+-1;}c[(c[g>>2]|0)+(c[p>>2]<<3)>>2]=c[n>>2];a[(c[g>>2]|0)+(c[p>>2]<<3)+6>>0]=c[k>>2];c[k>>2]=(c[k>>2]|0)+1;}l=f;return;}function Mi(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;g=l;l=l+128|0;h=g+116|0;i=g+112|0;j=g+108|0;k=g+104|0;m=g+100|0;n=g+96|0;o=g+92|0;p=g+88|0;q=g+84|0;r=g;s=g+80|0;t=g+76|0;u=g+72|0;v=g+68|0;w=g+64|0;x=g+60|0;y=g+56|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=d[(c[i>>2]|0)+(c[j>>2]<<3)+7>>0];if((c[m>>2]|0)>>>0<=(c[k>>2]|0)>>>0){c[h>>2]=c[m>>2];z=c[h>>2]|0;l=g;return z|0;}c[n>>2]=0;c[o>>2]=1<<(c[m>>2]|0)-(c[k>>2]|0);c[p>>2]=c[j>>2];while(1){if((d[(c[i>>2]|0)+(c[p>>2]<<3)+7>>0]|0)>>>0<=(c[k>>2]|0)>>>0)break;c[n>>2]=(c[n>>2]|0)+((c[o>>2]|0)-(1<<(c[m>>2]|0)-(d[(c[i>>2]|0)+(c[p>>2]<<3)+7>>0]|0)));a[(c[i>>2]|0)+(c[p>>2]<<3)+7>>0]=c[k>>2];c[p>>2]=(c[p>>2]|0)+-1;}while(1){if((d[(c[i>>2]|0)+(c[p>>2]<<3)+7>>0]|0|0)!=(c[k>>2]|0))break;c[p>>2]=(c[p>>2]|0)+-1;}c[n>>2]=c[n>>2]>>(c[m>>2]|0)-(c[k>>2]|0);c[q>>2]=-252645136;q=r;m=q+56|0;do{c[q>>2]=-252645136;q=q+4|0;}while((q|0)<(m|0));c[t>>2]=c[k>>2];c[s>>2]=c[p>>2];while(1){if((c[s>>2]|0)<0)break;if((d[(c[i>>2]|0)+(c[s>>2]<<3)+7>>0]|0)>>>0<(c[t>>2]|0)>>>0){c[t>>2]=d[(c[i>>2]|0)+(c[s>>2]<<3)+7>>0];c[r+((c[k>>2]|0)-(c[t>>2]|0)<<2)>>2]=c[s>>2];}c[s>>2]=(c[s>>2]|0)+-1;}while(1){if((c[n>>2]|0)<=0)break;c[u>>2]=(Ni(c[n>>2]|0)|0)+1;while(1){if((c[u>>2]|0)>>>0<=1)break;c[v>>2]=c[r+(c[u>>2]<<2)>>2];c[w>>2]=c[r+((c[u>>2]|0)-1<<2)>>2];if((c[v>>2]|0)!=-252645136){if((c[w>>2]|0)==-252645136)break;c[x>>2]=c[(c[i>>2]|0)+(c[v>>2]<<3)>>2];c[y>>2]=c[(c[i>>2]|0)+(c[w>>2]<<3)>>2]<<1;if((c[x>>2]|0)>>>0<=(c[y>>2]|0)>>>0)break;}c[u>>2]=(c[u>>2]|0)+-1;}while(1){if((c[u>>2]|0)>>>0<=12)A=(c[r+(c[u>>2]<<2)>>2]|0)==-252645136;else A=0;B=c[u>>2]|0;if(!A)break;c[u>>2]=B+1;}c[n>>2]=(c[n>>2]|0)-(1<<B-1);if((c[r+((c[u>>2]|0)-1<<2)>>2]|0)==-252645136)c[r+((c[u>>2]|0)-1<<2)>>2]=c[r+(c[u>>2]<<2)>>2];s=(c[i>>2]|0)+(c[r+(c[u>>2]<<2)>>2]<<3)+7|0;a[s>>0]=(a[s>>0]|0)+1<<24>>24;s=r+(c[u>>2]<<2)|0;if(c[r+(c[u>>2]<<2)>>2]|0){c[s>>2]=(c[s>>2]|0)+-1;if((d[(c[i>>2]|0)+(c[r+(c[u>>2]<<2)>>2]<<3)+7>>0]|0|0)!=((c[k>>2]|0)-(c[u>>2]|0)|0))c[r+(c[u>>2]<<2)>>2]=-252645136;}else c[s>>2]=-252645136;}while(1){if((c[n>>2]|0)>=0)break;if((c[r+4>>2]|0)!=-252645136){u=(c[i>>2]|0)+((c[r+4>>2]|0)+1<<3)+7|0;a[u>>0]=(a[u>>0]|0)+-1<<24>>24;u=r+4|0;c[u>>2]=(c[u>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+1;continue;}while(1){if((d[(c[i>>2]|0)+(c[p>>2]<<3)+7>>0]|0|0)!=(c[k>>2]|0))break;c[p>>2]=(c[p>>2]|0)+-1;}u=(c[i>>2]|0)+((c[p>>2]|0)+1<<3)+7|0;a[u>>0]=(a[u>>0]|0)+-1<<24>>24;c[r+4>>2]=(c[p>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+1;}c[h>>2]=c[k>>2];z=c[h>>2]|0;l=g;return z|0;}function Ni(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Oi(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;if(c[p>>2]|0){c[i>>2]=Pi(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}else{c[i>>2]=Qi(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function Pi(a,b,f,g,h){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;i=l;l=l+176|0;j=i+168|0;k=i+164|0;m=i+160|0;n=i+156|0;o=i+152|0;p=i+148|0;q=i+144|0;r=i+140|0;s=i+136|0;t=i+132|0;u=i+128|0;v=i+124|0;w=i+120|0;x=i+116|0;y=i+112|0;z=i+108|0;A=i+104|0;B=i+100|0;C=i+96|0;D=i+92|0;E=i+88|0;F=i+84|0;G=i+80|0;H=i+76|0;I=i+72|0;J=i+68|0;K=i+64|0;L=i+60|0;M=i+56|0;N=i+52|0;O=i+48|0;P=i+44|0;Q=i+24|0;R=i+20|0;S=i+16|0;T=i+12|0;U=i+8|0;V=i+4|0;W=i;c[S>>2]=a;c[T>>2]=b;c[U>>2]=f;c[V>>2]=g;c[W>>2]=h;h=c[T>>2]|0;T=c[U>>2]|0;U=c[V>>2]|0;V=c[W>>2]|0;c[G>>2]=c[S>>2];c[H>>2]=h;c[I>>2]=T;c[J>>2]=U;c[K>>2]=V;c[L>>2]=c[I>>2];c[M>>2]=c[G>>2];c[N>>2]=(c[M>>2]|0)+(c[H>>2]|0);c[O>>2]=c[M>>2];if((c[H>>2]|0)>>>0<8){c[F>>2]=0;X=c[F>>2]|0;l=i;return X|0;}c[R>>2]=Ri(Q,c[O>>2]|0,(c[N>>2]|0)-(c[O>>2]|0)|0)|0;if(Hi(c[R>>2]|0)|0){c[F>>2]=0;X=c[F>>2]|0;l=i;return X|0;}c[P>>2]=c[J>>2]&-4;switch(c[J>>2]&3|0){case 3:{J=d[(c[L>>2]|0)+((c[P>>2]|0)+2)>>0]|0;R=c[K>>2]|0;c[C>>2]=Q;c[D>>2]=J;c[E>>2]=R;Si(c[C>>2]|0,e[(c[E>>2]|0)+(c[D>>2]<<2)>>1]|0,d[(c[E>>2]|0)+(c[D>>2]<<2)+2>>0]|0);Ti(Q);Y=7;break;}case 2:{Y=7;break;}case 1:{Y=8;break;}case 0:break;default:{}}if((Y|0)==7){D=d[(c[L>>2]|0)+((c[P>>2]|0)+1)>>0]|0;E=c[K>>2]|0;c[z>>2]=Q;c[A>>2]=D;c[B>>2]=E;Si(c[z>>2]|0,e[(c[B>>2]|0)+(c[A>>2]<<2)>>1]|0,d[(c[B>>2]|0)+(c[A>>2]<<2)+2>>0]|0);Y=8;}if((Y|0)==8){Y=d[(c[L>>2]|0)+(c[P>>2]|0)>>0]|0;A=c[K>>2]|0;c[w>>2]=Q;c[x>>2]=Y;c[y>>2]=A;Si(c[w>>2]|0,e[(c[y>>2]|0)+(c[x>>2]<<2)>>1]|0,d[(c[y>>2]|0)+(c[x>>2]<<2)+2>>0]|0);Ti(Q);}while(1){if((c[P>>2]|0)>>>0<=0)break;x=d[(c[L>>2]|0)+((c[P>>2]|0)-1)>>0]|0;y=c[K>>2]|0;c[t>>2]=Q;c[u>>2]=x;c[v>>2]=y;Si(c[t>>2]|0,e[(c[v>>2]|0)+(c[u>>2]<<2)>>1]|0,d[(c[v>>2]|0)+(c[u>>2]<<2)+2>>0]|0);y=d[(c[L>>2]|0)+((c[P>>2]|0)-2)>>0]|0;x=c[K>>2]|0;c[q>>2]=Q;c[r>>2]=y;c[s>>2]=x;Si(c[q>>2]|0,e[(c[s>>2]|0)+(c[r>>2]<<2)>>1]|0,d[(c[s>>2]|0)+(c[r>>2]<<2)+2>>0]|0);Ti(Q);x=d[(c[L>>2]|0)+((c[P>>2]|0)-3)>>0]|0;y=c[K>>2]|0;c[n>>2]=Q;c[o>>2]=x;c[p>>2]=y;Si(c[n>>2]|0,e[(c[p>>2]|0)+(c[o>>2]<<2)>>1]|0,d[(c[p>>2]|0)+(c[o>>2]<<2)+2>>0]|0);y=d[(c[L>>2]|0)+((c[P>>2]|0)-4)>>0]|0;x=c[K>>2]|0;c[j>>2]=Q;c[k>>2]=y;c[m>>2]=x;Si(c[j>>2]|0,e[(c[m>>2]|0)+(c[k>>2]<<2)>>1]|0,d[(c[m>>2]|0)+(c[k>>2]<<2)+2>>0]|0);Ti(Q);c[P>>2]=(c[P>>2]|0)-4;}c[F>>2]=Ui(Q)|0;X=c[F>>2]|0;l=i;return X|0;}function Qi(a,b,f,g,h){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;i=l;l=l+176|0;j=i+168|0;k=i+164|0;m=i+160|0;n=i+156|0;o=i+152|0;p=i+148|0;q=i+144|0;r=i+140|0;s=i+136|0;t=i+132|0;u=i+128|0;v=i+124|0;w=i+120|0;x=i+116|0;y=i+112|0;z=i+108|0;A=i+104|0;B=i+100|0;C=i+96|0;D=i+92|0;E=i+88|0;F=i+84|0;G=i+80|0;H=i+76|0;I=i+72|0;J=i+68|0;K=i+64|0;L=i+60|0;M=i+56|0;N=i+52|0;O=i+48|0;P=i+44|0;Q=i+24|0;R=i+20|0;S=i+16|0;T=i+12|0;U=i+8|0;V=i+4|0;W=i;c[S>>2]=a;c[T>>2]=b;c[U>>2]=f;c[V>>2]=g;c[W>>2]=h;h=c[T>>2]|0;T=c[U>>2]|0;U=c[V>>2]|0;V=c[W>>2]|0;c[G>>2]=c[S>>2];c[H>>2]=h;c[I>>2]=T;c[J>>2]=U;c[K>>2]=V;c[L>>2]=c[I>>2];c[M>>2]=c[G>>2];c[N>>2]=(c[M>>2]|0)+(c[H>>2]|0);c[O>>2]=c[M>>2];if((c[H>>2]|0)>>>0<8){c[F>>2]=0;X=c[F>>2]|0;l=i;return X|0;}c[R>>2]=Ri(Q,c[O>>2]|0,(c[N>>2]|0)-(c[O>>2]|0)|0)|0;if(Hi(c[R>>2]|0)|0){c[F>>2]=0;X=c[F>>2]|0;l=i;return X|0;}c[P>>2]=c[J>>2]&-4;switch(c[J>>2]&3|0){case 3:{J=d[(c[L>>2]|0)+((c[P>>2]|0)+2)>>0]|0;R=c[K>>2]|0;c[C>>2]=Q;c[D>>2]=J;c[E>>2]=R;Si(c[C>>2]|0,e[(c[E>>2]|0)+(c[D>>2]<<2)>>1]|0,d[(c[E>>2]|0)+(c[D>>2]<<2)+2>>0]|0);Ti(Q);Y=7;break;}case 2:{Y=7;break;}case 1:{Y=8;break;}case 0:break;default:{}}if((Y|0)==7){D=d[(c[L>>2]|0)+((c[P>>2]|0)+1)>>0]|0;E=c[K>>2]|0;c[z>>2]=Q;c[A>>2]=D;c[B>>2]=E;Si(c[z>>2]|0,e[(c[B>>2]|0)+(c[A>>2]<<2)>>1]|0,d[(c[B>>2]|0)+(c[A>>2]<<2)+2>>0]|0);Y=8;}if((Y|0)==8){Y=d[(c[L>>2]|0)+(c[P>>2]|0)>>0]|0;A=c[K>>2]|0;c[w>>2]=Q;c[x>>2]=Y;c[y>>2]=A;Si(c[w>>2]|0,e[(c[y>>2]|0)+(c[x>>2]<<2)>>1]|0,d[(c[y>>2]|0)+(c[x>>2]<<2)+2>>0]|0);Ti(Q);}while(1){if((c[P>>2]|0)>>>0<=0)break;x=d[(c[L>>2]|0)+((c[P>>2]|0)-1)>>0]|0;y=c[K>>2]|0;c[t>>2]=Q;c[u>>2]=x;c[v>>2]=y;Si(c[t>>2]|0,e[(c[v>>2]|0)+(c[u>>2]<<2)>>1]|0,d[(c[v>>2]|0)+(c[u>>2]<<2)+2>>0]|0);y=d[(c[L>>2]|0)+((c[P>>2]|0)-2)>>0]|0;x=c[K>>2]|0;c[q>>2]=Q;c[r>>2]=y;c[s>>2]=x;Si(c[q>>2]|0,e[(c[s>>2]|0)+(c[r>>2]<<2)>>1]|0,d[(c[s>>2]|0)+(c[r>>2]<<2)+2>>0]|0);Ti(Q);x=d[(c[L>>2]|0)+((c[P>>2]|0)-3)>>0]|0;y=c[K>>2]|0;c[n>>2]=Q;c[o>>2]=x;c[p>>2]=y;Si(c[n>>2]|0,e[(c[p>>2]|0)+(c[o>>2]<<2)>>1]|0,d[(c[p>>2]|0)+(c[o>>2]<<2)+2>>0]|0);y=d[(c[L>>2]|0)+((c[P>>2]|0)-4)>>0]|0;x=c[K>>2]|0;c[j>>2]=Q;c[k>>2]=y;c[m>>2]=x;Si(c[j>>2]|0,e[(c[m>>2]|0)+(c[k>>2]<<2)>>1]|0,d[(c[m>>2]|0)+(c[k>>2]<<2)+2>>0]|0);Ti(Q);c[P>>2]=(c[P>>2]|0)-4;}c[F>>2]=Ui(Q)|0;X=c[F>>2]|0;l=i;return X|0;}function Ri(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[c[g>>2]>>2]=0;c[(c[g>>2]|0)+4>>2]=0;c[(c[g>>2]|0)+8>>2]=c[h>>2];c[(c[g>>2]|0)+12>>2]=c[(c[g>>2]|0)+8>>2];c[(c[g>>2]|0)+16>>2]=(c[(c[g>>2]|0)+8>>2]|0)+(c[i>>2]|0)+-4;if((c[i>>2]|0)>>>0<=4){c[f>>2]=-70;j=c[f>>2]|0;l=e;return j|0;}else{c[f>>2]=0;j=c[f>>2]|0;l=e;return j|0;}return 0;}function Si(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=c[f>>2]|0;c[d>>2]=c[d>>2]|c[g>>2]<<c[(c[f>>2]|0)+4>>2];g=(c[f>>2]|0)+4|0;c[g>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function Ti(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=(c[(c[d>>2]|0)+4>>2]|0)>>>3;Vi(c[(c[d>>2]|0)+12>>2]|0,c[c[d>>2]>>2]|0);a=(c[d>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+(c[e>>2]|0);if((c[(c[d>>2]|0)+12>>2]|0)>>>0>(c[(c[d>>2]|0)+16>>2]|0)>>>0)c[(c[d>>2]|0)+12>>2]=c[(c[d>>2]|0)+16>>2];a=(c[d>>2]|0)+4|0;c[a>>2]=c[a>>2]&7;a=c[d>>2]|0;c[a>>2]=(c[a>>2]|0)>>>(c[e>>2]<<3);l=b;return;}function Ui(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;Si(c[e>>2]|0,1,1);Ti(c[e>>2]|0);if((c[(c[e>>2]|0)+12>>2]|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{c[d>>2]=(c[(c[e>>2]|0)+12>>2]|0)-(c[(c[e>>2]|0)+8>>2]|0)+((c[(c[e>>2]|0)+4>>2]|0)>>>0>0&1);f=c[d>>2]|0;l=b;return f|0;}return 0;}function Vi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(Wi()|0)!=0;a=c[e>>2]|0;e=c[f>>2]|0;if(b){Xi(a,e);l=d;return;}else{Yi(a,e,0);l=d;return;}}function Wi(){return 1;}function Xi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(Zi()|0)!=0;a=c[e>>2]|0;e=c[f>>2]|0;if(b){aj(a,e);l=d;return;}else{aj(a,bj(e)|0);l=d;return;}}function Yi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;d=(Zi()|0)!=0;a=c[f>>2]|0;f=g;g=c[f>>2]|0;b=c[f+4>>2]|0;if(d){_i(a,g,b);l=e;return;}else{d=$i(g,b)|0;_i(a,d,y);l=e;return;}}function Zi(){return d[11936]|0|0;}function _i(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f+8|0;h=f;c[g>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;e=h;h=c[e>>2]|0;b=c[e+4>>2]|0;e=c[g>>2]|0;g=e;a[g>>0]=h;a[g+1>>0]=h>>8;a[g+2>>0]=h>>16;a[g+3>>0]=h>>24;h=e+4|0;a[h>>0]=b;a[h+1>>0]=b>>8;a[h+2>>0]=b>>16;a[h+3>>0]=b>>24;l=f;return;}function $i(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function aj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[g>>2]|0;g=c[f>>2]|0;a[g>>0]=d;a[g+1>>0]=d>>8;a[g+2>>0]=d>>16;a[g+3>>0]=d>>24;l=e;return;}function bj(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function cj(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+20|0;v=h+16|0;w=h+12|0;x=h+8|0;y=h+4|0;z=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=(((c[n>>2]|0)+3|0)>>>0)/4|0;c[r>>2]=c[m>>2];c[s>>2]=(c[r>>2]|0)+(c[n>>2]|0);c[t>>2]=c[j>>2];c[u>>2]=(c[t>>2]|0)+(c[k>>2]|0);c[v>>2]=c[t>>2];if((c[k>>2]|0)>>>0<17){c[i>>2]=0;A=c[i>>2]|0;l=h;return A|0;}if((c[n>>2]|0)>>>0<12){c[i>>2]=0;A=c[i>>2]|0;l=h;return A|0;}c[v>>2]=(c[v>>2]|0)+6;c[w>>2]=Oi(c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,c[r>>2]|0,c[q>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;n=(Hi(c[w>>2]|0)|0)!=0;k=c[w>>2]|0;if(n){c[i>>2]=k;A=c[i>>2]|0;l=h;return A|0;}if(!k){c[i>>2]=0;A=c[i>>2]|0;l=h;return A|0;}dj(c[t>>2]|0,c[w>>2]&65535);c[v>>2]=(c[v>>2]|0)+(c[w>>2]|0);c[r>>2]=(c[r>>2]|0)+(c[q>>2]|0);c[x>>2]=Oi(c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,c[r>>2]|0,c[q>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;w=(Hi(c[x>>2]|0)|0)!=0;k=c[x>>2]|0;if(w){c[i>>2]=k;A=c[i>>2]|0;l=h;return A|0;}if(!k){c[i>>2]=0;A=c[i>>2]|0;l=h;return A|0;}dj((c[t>>2]|0)+2|0,c[x>>2]&65535);c[v>>2]=(c[v>>2]|0)+(c[x>>2]|0);c[r>>2]=(c[r>>2]|0)+(c[q>>2]|0);c[y>>2]=Oi(c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,c[r>>2]|0,c[q>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;x=(Hi(c[y>>2]|0)|0)!=0;k=c[y>>2]|0;if(x){c[i>>2]=k;A=c[i>>2]|0;l=h;return A|0;}if(!k){c[i>>2]=0;A=c[i>>2]|0;l=h;return A|0;}dj((c[t>>2]|0)+4|0,c[y>>2]&65535);c[v>>2]=(c[v>>2]|0)+(c[y>>2]|0);c[r>>2]=(c[r>>2]|0)+(c[q>>2]|0);c[z>>2]=Oi(c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,c[r>>2]|0,(c[s>>2]|0)-(c[r>>2]|0)|0,c[o>>2]|0,c[p>>2]|0)|0;p=(Hi(c[z>>2]|0)|0)!=0;o=c[z>>2]|0;if(p){c[i>>2]=o;A=c[i>>2]|0;l=h;return A|0;}if(!o){c[i>>2]=0;A=c[i>>2]|0;l=h;return A|0;}else{c[v>>2]=(c[v>>2]|0)+(c[z>>2]|0);c[i>>2]=(c[v>>2]|0)-(c[t>>2]|0);A=c[i>>2]|0;l=h;return A|0;}return 0;}function dj(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(Zi()|0)!=0;d=c[h>>2]|0;if(f){ej(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function ej(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=b[h>>1]|0;h=c[g>>2]|0;a[h>>0]=e;a[h+1>>0]=e>>8;l=f;return;}function fj(b,d,e,f,g,h,i,j,k,m,n,o,p){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;q=l;l=l+96|0;r=q+88|0;s=q+84|0;t=q+80|0;u=q+76|0;v=q+72|0;w=q+68|0;x=q+64|0;y=q+60|0;z=q+56|0;A=q+52|0;B=q+48|0;C=q+44|0;D=q+40|0;E=q+36|0;F=q+32|0;G=q+28|0;H=q+24|0;I=q+20|0;J=q+16|0;K=q+12|0;L=q+8|0;M=q+4|0;N=q;c[s>>2]=b;c[t>>2]=d;c[u>>2]=e;c[v>>2]=f;c[w>>2]=g;c[x>>2]=h;c[y>>2]=i;c[z>>2]=j;c[A>>2]=k;c[B>>2]=m;c[C>>2]=n;c[D>>2]=o;c[E>>2]=p;c[F>>2]=c[z>>2];c[G>>2]=c[s>>2];c[H>>2]=(c[G>>2]|0)+(c[t>>2]|0);c[I>>2]=c[G>>2];if(c[z>>2]&3|0){c[r>>2]=-1;O=c[r>>2]|0;l=q;return O|0;}if((c[A>>2]|0)>>>0<6144){c[r>>2]=-66;O=c[r>>2]|0;l=q;return O|0;}if(!(c[v>>2]|0)){c[r>>2]=0;O=c[r>>2]|0;l=q;return O|0;}if(!(c[t>>2]|0)){c[r>>2]=0;O=c[r>>2]|0;l=q;return O|0;}if((c[v>>2]|0)>>>0>131072){c[r>>2]=-72;O=c[r>>2]|0;l=q;return O|0;}if((c[x>>2]|0)>>>0>12){c[r>>2]=-44;O=c[r>>2]|0;l=q;return O|0;}if((c[w>>2]|0)>>>0>255){c[r>>2]=-46;O=c[r>>2]|0;l=q;return O|0;}if(!(c[w>>2]|0))c[w>>2]=255;if(!(c[x>>2]|0))c[x>>2]=11;if((c[D>>2]|0)!=0&(c[C>>2]|0)!=0?(c[c[C>>2]>>2]|0)==2:0){c[r>>2]=gj(c[G>>2]|0,c[I>>2]|0,c[H>>2]|0,c[u>>2]|0,c[v>>2]|0,c[y>>2]|0,c[B>>2]|0,c[E>>2]|0)|0;O=c[r>>2]|0;l=q;return O|0;}c[J>>2]=bi(c[F>>2]|0,w,c[u>>2]|0,c[v>>2]|0,c[F>>2]|0)|0;A=(Hi(c[J>>2]|0)|0)!=0;z=c[J>>2]|0;if(A){c[r>>2]=z;O=c[r>>2]|0;l=q;return O|0;}if((z|0)==(c[v>>2]|0)){a[c[G>>2]>>0]=a[c[u>>2]>>0]|0;c[r>>2]=1;O=c[r>>2]|0;l=q;return O|0;}if((c[J>>2]|0)>>>0<=(((c[v>>2]|0)>>>7)+1|0)>>>0){c[r>>2]=0;O=c[r>>2]|0;l=q;return O|0;}if((c[C>>2]|0?(c[c[C>>2]>>2]|0)==1:0)?(hj(c[B>>2]|0,c[F>>2]|0,c[w>>2]|0)|0)==0:0)c[c[C>>2]>>2]=0;if((c[D>>2]|0)!=0&(c[C>>2]|0)!=0?c[c[C>>2]>>2]|0:0){c[r>>2]=gj(c[G>>2]|0,c[I>>2]|0,c[H>>2]|0,c[u>>2]|0,c[v>>2]|0,c[y>>2]|0,c[B>>2]|0,c[E>>2]|0)|0;O=c[r>>2]|0;l=q;return O|0;}c[x>>2]=Fi(c[x>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;c[K>>2]=Ki((c[F>>2]|0)+1024|0,c[F>>2]|0,c[w>>2]|0,c[x>>2]|0,(c[F>>2]|0)+2048|0,4096)|0;D=(Hi(c[K>>2]|0)|0)!=0;J=c[K>>2]|0;if(D){c[r>>2]=J;O=c[r>>2]|0;l=q;return O|0;}c[x>>2]=J;oE((c[F>>2]|0)+1024+((c[w>>2]|0)+1<<2)|0,0,1024-((c[w>>2]|0)+1<<2)|0)|0;c[L>>2]=Ii(c[I>>2]|0,c[t>>2]|0,(c[F>>2]|0)+1024|0,c[w>>2]|0,c[x>>2]|0)|0;if(Hi(c[L>>2]|0)|0){c[r>>2]=c[L>>2];O=c[r>>2]|0;l=q;return O|0;}do{if(c[C>>2]|0?c[c[C>>2]>>2]|0:0){c[M>>2]=ij(c[B>>2]|0,c[F>>2]|0,c[w>>2]|0)|0;c[N>>2]=ij((c[F>>2]|0)+1024|0,c[F>>2]|0,c[w>>2]|0)|0;if((c[M>>2]|0)>>>0>((c[L>>2]|0)+(c[N>>2]|0)|0)>>>0?((c[L>>2]|0)+12|0)>>>0<(c[v>>2]|0)>>>0:0)break;c[r>>2]=gj(c[G>>2]|0,c[I>>2]|0,c[H>>2]|0,c[u>>2]|0,c[v>>2]|0,c[y>>2]|0,c[B>>2]|0,c[E>>2]|0)|0;O=c[r>>2]|0;l=q;return O|0;}}while(0);if(((c[L>>2]|0)+12|0)>>>0>=(c[v>>2]|0)>>>0){c[r>>2]=0;O=c[r>>2]|0;l=q;return O|0;}c[I>>2]=(c[I>>2]|0)+(c[L>>2]|0);if(c[C>>2]|0)c[c[C>>2]>>2]=0;if(c[B>>2]|0)mE(c[B>>2]|0,(c[F>>2]|0)+1024|0,1024)|0;c[r>>2]=gj(c[G>>2]|0,c[I>>2]|0,c[H>>2]|0,c[u>>2]|0,c[v>>2]|0,c[y>>2]|0,(c[F>>2]|0)+1024|0,c[E>>2]|0)|0;O=c[r>>2]|0;l=q;return O|0;}function gj(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=l;l=l+48|0;k=j+36|0;m=j+32|0;n=j+28|0;o=j+24|0;p=j+20|0;q=j+16|0;r=j+12|0;s=j+8|0;t=j+4|0;u=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;i=c[n>>2]|0;h=(c[o>>2]|0)-(c[n>>2]|0)|0;o=c[p>>2]|0;p=c[q>>2]|0;g=c[s>>2]|0;s=c[t>>2]|0;if(c[r>>2]|0)v=Oi(i,h,o,p,g,s)|0;else v=cj(i,h,o,p,g,s)|0;c[u>>2]=v;v=(Hi(c[u>>2]|0)|0)!=0;s=c[u>>2]|0;if(v){c[k>>2]=s;w=c[k>>2]|0;l=j;return w|0;}if(!s){c[k>>2]=0;w=c[k>>2]|0;l=j;return w|0;}c[n>>2]=(c[n>>2]|0)+(c[u>>2]|0);if(((c[n>>2]|0)-(c[m>>2]|0)|0)>>>0>=((c[q>>2]|0)-1|0)>>>0){c[k>>2]=0;w=c[k>>2]|0;l=j;return w|0;}else{c[k>>2]=(c[n>>2]|0)-(c[m>>2]|0);w=c[k>>2]|0;l=j;return w|0;}return 0;}function hj(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=e;c[j>>2]=0;c[k>>2]=0;while(1){if((c[k>>2]|0)>(c[i>>2]|0))break;c[j>>2]=c[j>>2]|(c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0?(d[(c[g>>2]|0)+(c[k>>2]<<2)+2>>0]|0|0)==0:0);c[k>>2]=(c[k>>2]|0)+1;}l=f;return((c[j>>2]|0)!=0^1)&1|0;}function ij(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=e;c[j>>2]=0;c[k>>2]=0;while(1){if((c[k>>2]|0)>(c[i>>2]|0))break;e=N(d[(c[g>>2]|0)+(c[k>>2]<<2)+2>>0]|0,c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+e;c[k>>2]=(c[k>>2]|0)+1;}l=f;return(c[j>>2]|0)>>>3|0;}function jj(a,b,d,e,f,g,h,i,j,k,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;o=l;l=l+48|0;p=o+44|0;q=o+40|0;r=o+36|0;s=o+32|0;t=o+28|0;u=o+24|0;v=o+20|0;w=o+16|0;x=o+12|0;y=o+8|0;z=o+4|0;A=o;c[p>>2]=a;c[q>>2]=b;c[r>>2]=d;c[s>>2]=e;c[t>>2]=f;c[u>>2]=g;c[v>>2]=h;c[w>>2]=i;c[x>>2]=j;c[y>>2]=k;c[z>>2]=m;c[A>>2]=n;n=fj(c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,1,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;l=o;return n|0;}function kj(a,b,d,e,f,g,h,i,j,k,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;o=l;l=l+48|0;p=o+44|0;q=o+40|0;r=o+36|0;s=o+32|0;t=o+28|0;u=o+24|0;v=o+20|0;w=o+16|0;x=o+12|0;y=o+8|0;z=o+4|0;A=o;c[p>>2]=a;c[q>>2]=b;c[r>>2]=d;c[s>>2]=e;c[t>>2]=f;c[u>>2]=g;c[v>>2]=h;c[w>>2]=i;c[x>>2]=j;c[y>>2]=k;c[z>>2]=m;c[A>>2]=n;n=fj(c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;l=o;return n|0;}function lj(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+((c[d>>2]|0)>>>8)|0;if((c[d>>2]|0)>>>0>=131072){e=0;f=a+e|0;l=b;return f|0;}e=(131072-(c[d>>2]|0)|0)>>>11;f=a+e|0;l=b;return f|0;}function mj(){var a=0,b=0,d=0;a=l;l=l+16|0;b=a;c[b>>2]=c[5406];c[b+4>>2]=c[5407];c[b+8>>2]=c[5408];d=nj(b)|0;l=a;return d|0;}function nj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+48|0;d=b+24|0;e=b+20|0;f=b+16|0;g=b;if(((c[a>>2]|0)!=0^1)&1^((c[a+4>>2]|0)!=0^1)&1|0){c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;};c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[f>>2]=Sh(656,d)|0;if(c[f>>2]|0){i=(c[f>>2]|0)+352|0;c[i>>2]=c[a>>2];c[i+4>>2]=c[a+4>>2];c[i+8>>2]=c[a+8>>2];c[(c[f>>2]|0)+12+44>>2]=3;c[(c[f>>2]|0)+12+32>>2]=1;oj(g);c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];g=pj(d)|0;c[(c[f>>2]|0)+8>>2]=g;c[e>>2]=c[f>>2];h=c[e>>2]|0;l=b;return h|0;}else{c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}return 0;}function oj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+32|0;d=b+28|0;e=b+24|0;f=b+20|0;g=b+16|0;h=b;c[d>>2]=0;c[e>>2]=0;c[f>>2]=0;c[g>>2]=0;c[h>>2]=c[d>>2];c[h+4>>2]=c[e>>2];c[h+8>>2]=c[f>>2];c[h+12>>2]=c[g>>2];c[a>>2]=c[h>>2];c[a+4>>2]=c[h+4>>2];c[a+8>>2]=c[h+8>>2];c[a+12>>2]=c[h+12>>2];l=b;return;}function pj(a){a=a|0;return(c[a+8>>2]&256|0)!=0|0;}function qj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+32|0;d=b+8|0;e=b+4|0;f=b;c[f>>2]=a;if(!(c[f>>2]|0)){c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;}if(c[(c[f>>2]|0)+364>>2]|0){c[e>>2]=-64;g=c[e>>2]|0;l=b;return g|0;}else{a=c[(c[f>>2]|0)+224>>2]|0;h=(c[f>>2]|0)+352|0;c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];Th(a,d);c[(c[f>>2]|0)+224>>2]=0;rj(c[(c[f>>2]|0)+636>>2]|0)|0;c[(c[f>>2]|0)+636>>2]=0;a=c[f>>2]|0;h=(c[f>>2]|0)+352|0;c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];Th(a,d);c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;}return 0;}function rj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+32|0;d=b+20|0;e=b+16|0;f=b+12|0;g=b;c[f>>2]=a;if(!(c[f>>2]|0)){c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}else{a=(c[f>>2]|0)+4748|0;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];a=c[(c[f>>2]|0)+12>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);a=c[c[f>>2]>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);a=c[f>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}return 0;}function sj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0;g=l;l=l+96|0;h=g+64|0;i=g+60|0;j=g+8|0;k=g+56|0;m=g+52|0;n=g;o=g+48|0;p=g+44|0;q=g+16|0;c[i>>2]=b;b=j;c[b>>2]=d;c[b+4>>2]=e;c[k>>2]=f;f=j;c[m>>2]=(c[f>>2]|0)!=0|(c[f+4>>2]|0)!=0?0:500;f=j;e=dE(c[f>>2]|0,c[f+4>>2]|0,c[k>>2]|0,0)|0;if((e|0)!=0|(y|0)!=0){e=j;f=dE(c[e>>2]|0,c[e+4>>2]|0,c[k>>2]|0,0)|0;e=dE(f|0,y|0,c[m>>2]|0,0)|0;r=e;s=y;}else{r=-1;s=-1;}e=n;c[e>>2]=r;c[e+4>>2]=s;s=n;e=c[s+4>>2]|0;r=n;m=c[r+4>>2]|0;f=n;n=c[f+4>>2]|0;c[o>>2]=((e>>>0<0|(e|0)==0&(c[s>>2]|0)>>>0<=262144)&1)+((m>>>0<0|(m|0)==0&(c[r>>2]|0)>>>0<=131072)&1)+((n>>>0<0|(n|0)==0&(c[f>>2]|0)>>>0<=16384)&1);f=c[i>>2]|0;c[p>>2]=f;n=(c[i>>2]|0)==0?3:f;c[p>>2]=n;f=(c[i>>2]|0)<0?0:n;c[p>>2]=f;c[p>>2]=(c[i>>2]|0)>22?22:f;f=224+((c[o>>2]|0)*644|0)+((c[p>>2]|0)*28|0)|0;c[q>>2]=c[f>>2];c[q+4>>2]=c[f+4>>2];c[q+8>>2]=c[f+8>>2];c[q+12>>2]=c[f+12>>2];c[q+16>>2]=c[f+16>>2];c[q+20>>2]=c[f+20>>2];c[q+24>>2]=c[f+24>>2];if((c[i>>2]|0)>=0){t=j;u=t;v=c[u>>2]|0;w=t+4|0;x=w;z=c[x>>2]|0;A=c[k>>2]|0;c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[h+16>>2]=c[q+16>>2];c[h+20>>2]=c[q+20>>2];c[h+24>>2]=c[q+24>>2];tj(a,h,v,z,A);l=g;return;}c[q+20>>2]=0-(c[i>>2]|0);t=j;u=t;v=c[u>>2]|0;w=t+4|0;x=w;z=c[x>>2]|0;A=c[k>>2]|0;c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[h+16>>2]=c[q+16>>2];c[h+20>>2]=c[q+20>>2];c[h+24>>2]=c[q+24>>2];tj(a,h,v,z,A);l=g;return;}function tj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g;i=g+20|0;j=g+16|0;k=g+12|0;m=g+8|0;n=h;c[n>>2]=d;c[n+4>>2]=e;c[i>>2]=f;if(c[i>>2]|0?(f=h,e=dE(c[f>>2]|0,c[f+4>>2]|0,1,0)|0,f=y,f>>>0<0|(f|0)==0&e>>>0<2):0){e=h;c[e>>2]=513;c[e+4>>2]=0;}else o=4;if((o|0)==4?(o=h,(c[o>>2]|0)==0&(c[o+4>>2]|0)==0):0){o=h;c[o>>2]=-1;c[o+4>>2]=-1;}o=h;e=c[o+4>>2]|0;if(e>>>0<0|(e|0)==0&(c[o>>2]|0)>>>0<536870912?0<0|0==0&(c[i>>2]|0)>>>0<536870912:0){o=h;h=dE(c[o>>2]|0,c[o+4>>2]|0,c[i>>2]|0,0)|0;c[j>>2]=h;if((c[j>>2]|0)>>>0<64)p=6;else p=(uj((c[j>>2]|0)-1|0)|0)+1|0;c[k>>2]=p;if((c[b>>2]|0)>>>0>(c[k>>2]|0)>>>0)c[b>>2]=c[k>>2];}if((c[b+8>>2]|0)>>>0>(c[b>>2]|0)>>>0)c[b+8>>2]=c[b>>2];c[m>>2]=vj(c[b+4>>2]|0,c[b+24>>2]|0)|0;if((c[m>>2]|0)>>>0>(c[b>>2]|0)>>>0){k=b+4|0;c[k>>2]=(c[k>>2]|0)-((c[m>>2]|0)-(c[b>>2]|0));}if((c[b>>2]|0)>>>0>=10){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];l=g;return;}c[b>>2]=10;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];l=g;return;}function uj(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function vj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=(c[f>>2]|0)>>>0>=6&1;l=d;return(c[e>>2]|0)-(c[g>>2]|0)|0;}function wj(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function xj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;a:do{switch(c[h>>2]|0){case 10:{if((c[i>>2]|0)>>>0>1){c[f>>2]=-40;break a;}else{c[c[g>>2]>>2]=c[i>>2];c[f>>2]=c[c[g>>2]>>2];break a;}break;}case 100:{c[j>>2]=c[i>>2];if((c[j>>2]|0)>(yj()|0))c[j>>2]=yj()|0;if(c[j>>2]|0){c[(c[g>>2]|0)+48>>2]=(c[j>>2]|0)<0&1;c[(c[g>>2]|0)+44>>2]=c[j>>2];}if((c[(c[g>>2]|0)+44>>2]|0)>=0){c[f>>2]=c[(c[g>>2]|0)+44>>2];break a;}else{c[f>>2]=0;break a;}break;}case 101:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<10|(c[i>>2]|0)>>>0>30|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+4>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+4>>2];break;}case 102:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<6|(c[i>>2]|0)>>>0>30|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+4+8>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+4+8>>2];break;}case 103:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<6|(c[i>>2]|0)>>>0>29|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+4+4>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+4+4>>2];break;}case 104:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<1|(c[i>>2]|0)>>>0>29|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+4+12>>2]=c[i>>2];c[f>>2]=c[i>>2];break;}case 105:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<3|(c[i>>2]|0)>>>0>7|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+4+16>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+4+16>>2];break;}case 106:{c[(c[g>>2]|0)+4+20>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+4+20>>2];break;}case 107:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<1|(c[i>>2]|0)>>>0>8|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+4+24>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+4+24>>2];break;}case 1e3:{c[(c[g>>2]|0)+48>>2]=((c[i>>2]|0)!=0^1)&1;c[f>>2]=((c[(c[g>>2]|0)+48>>2]|0)!=0^1)&1;break;}case 200:{c[(c[g>>2]|0)+32>>2]=(c[i>>2]|0)>>>0>0&1;c[f>>2]=c[(c[g>>2]|0)+32>>2];break;}case 201:{c[(c[g>>2]|0)+32+4>>2]=(c[i>>2]|0)>>>0>0&1;c[f>>2]=c[(c[g>>2]|0)+32+4>>2];break;}case 202:{c[(c[g>>2]|0)+32+8>>2]=((c[i>>2]|0)!=0^1)&1;c[f>>2]=((c[(c[g>>2]|0)+32+8>>2]|0)!=0^1)&1;break;}case 1100:{c[(c[g>>2]|0)+52>>2]=(c[i>>2]|0)>>>0>0&1;c[f>>2]=c[(c[g>>2]|0)+52>>2];break;}case 400:{if((c[i>>2]|0)>>>0>0){c[f>>2]=-40;break a;}else{c[f>>2]=0;break a;}break;}case 401:{c[f>>2]=-40;break;}case 402:{c[f>>2]=-40;break;}case 160:{c[(c[g>>2]|0)+68>>2]=(c[i>>2]|0)>>>0>0&1;c[f>>2]=c[(c[g>>2]|0)+68>>2];break;}case 161:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<6|(c[i>>2]|0)>>>0>30|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+68+4>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+68+4>>2];break;}case 162:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<4|(c[i>>2]|0)>>>0>4096|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+68+12>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+68+12>>2];break;}case 163:{if((c[i>>2]|0)>>>0>8){c[f>>2]=-42;break a;}else{c[(c[g>>2]|0)+68+8>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+68+8>>2];break a;}break;}case 164:{if((c[i>>2]|0)>>>0>24){c[f>>2]=-42;break a;}else{c[(c[g>>2]|0)+68+16>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+68+16>>2];break a;}break;}default:c[f>>2]=-40;}}while(0);l=e;return c[f>>2]|0;}function yj(){return 22;}function zj(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=l;l=l+64|0;i=h+32|0;j=h+28|0;k=h+24|0;m=h+20|0;n=h+16|0;o=h+12|0;p=h+8|0;q=h+4|0;r=h;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;if(((c[g>>2]|0)!=0^1)&1^((c[g+4>>2]|0)!=0^1)&1|0){c[j>>2]=0;s=c[j>>2]|0;l=h;return s|0;};c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[p>>2]=Rh(4764,i)|0;c[q>>2]=6144+(Aj(f,0)|0);e=c[q>>2]|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[r>>2]=Rh(e,i)|0;e=c[p>>2]|0;if(!((c[p>>2]|0)!=0&(c[r>>2]|0)!=0)){c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];Th(e,i);d=c[r>>2]|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];Th(d,i);c[j>>2]=0;s=c[j>>2]|0;l=h;return s|0;}d=e+4748|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[(c[p>>2]|0)+12>>2]=c[r>>2];c[(c[p>>2]|0)+16>>2]=c[q>>2];q=c[p>>2]|0;r=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];f=(Ph(Bj(q,r,k,m,n,i)|0)|0)!=0;i=c[p>>2]|0;if(f){rj(i)|0;c[j>>2]=0;s=c[j>>2]|0;l=h;return s|0;}else{c[j>>2]=i;s=c[j>>2]|0;l=h;return s|0;}return 0;}function Aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;d=l;l=l+48|0;e=d+32|0;f=d+28|0;g=d+24|0;h=d+20|0;i=d+16|0;j=d+12|0;k=d+8|0;m=d+4|0;n=d;c[e>>2]=a;c[f>>2]=b;if((c[(c[e>>2]|0)+24>>2]|0)==1)o=0;else o=1<<c[(c[e>>2]|0)+4>>2];c[g>>2]=o;c[h>>2]=1<<c[(c[e>>2]|0)+8>>2];if(c[f>>2]|0?(c[(c[e>>2]|0)+16>>2]|0)==3:0){if(17<(c[c[e>>2]>>2]|0)>>>0)p=17;else p=c[c[e>>2]>>2]|0;}else p=0;c[i>>2]=p;c[j>>2]=1<<c[i>>2];c[k>>2]=(c[g>>2]|0)+(c[h>>2]|0)+(c[j>>2]|0)<<2;c[m>>2]=149e3;if(c[f>>2]|0){if((c[(c[e>>2]|0)+24>>2]|0)==7)q=1;else q=(c[(c[e>>2]|0)+24>>2]|0)==8;}else q=0;c[n>>2]=q?149e3:0;l=d;return(c[k>>2]|0)+(c[n>>2]|0)|0;}function Bj(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;h=l;l=l+160|0;i=h+144|0;j=h+140|0;k=h+136|0;m=h+132|0;n=h+128|0;o=h+124|0;p=h+120|0;q=h+116|0;r=h+112|0;s=h+8|0;t=h;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;f=(c[k>>2]|0)+4720|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];c[f+16>>2]=c[g+16>>2];c[f+20>>2]=c[g+20>>2];c[f+24>>2]=c[g+24>>2];do{if((c[o>>2]|0)!=1&(c[m>>2]|0)!=0&(c[n>>2]|0)!=0){f=c[n>>2]|0;e=(c[k>>2]|0)+4748|0;c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[q>>2]=Rh(f,i)|0;c[c[k>>2]>>2]=c[q>>2];c[(c[k>>2]|0)+4>>2]=c[q>>2];if(c[q>>2]|0){mE(c[q>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;break;}c[j>>2]=-64;u=c[j>>2]|0;l=h;return u|0;}else{c[c[k>>2]>>2]=0;c[(c[k>>2]|0)+4>>2]=c[m>>2];}}while(0);c[(c[k>>2]|0)+8>>2]=c[n>>2];Cj((c[k>>2]|0)+128|0);c[r>>2]=Dj((c[k>>2]|0)+20|0,(c[(c[k>>2]|0)+12>>2]|0)+6144|0,g,0,0)|0;r=s;n=r+104|0;do{c[r>>2]=0;r=r+4|0;}while((r|0)<(n|0));c[s+44>>2]=3;c[s+32>>2]=1;r=s+4|0;c[r>>2]=c[g>>2];c[r+4>>2]=c[g+4>>2];c[r+8>>2]=c[g+8>>2];c[r+12>>2]=c[g+12>>2];c[r+16>>2]=c[g+16>>2];c[r+20>>2]=c[g+20>>2];c[r+24>>2]=c[g+24>>2];c[t>>2]=Ej((c[k>>2]|0)+128|0,(c[k>>2]|0)+20|0,s,c[(c[k>>2]|0)+4>>2]|0,c[(c[k>>2]|0)+8>>2]|0,c[p>>2]|0,c[(c[k>>2]|0)+12>>2]|0)|0;p=(Ph(c[t>>2]|0)|0)!=0;s=c[t>>2]|0;if(p){c[j>>2]=s;u=c[j>>2]|0;l=h;return u|0;}else{c[(c[k>>2]|0)+4760>>2]=s;c[j>>2]=0;u=c[j>>2]|0;l=h;return u|0;}return 0;}function Cj(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=0;while(1){if((c[e>>2]|0)>=3)break;c[(c[d>>2]|0)+4580+(c[e>>2]<<2)>>2]=c[11940+(c[e>>2]<<2)>>2];c[e>>2]=(c[e>>2]|0)+1;}c[(c[d>>2]|0)+4564>>2]=0;c[(c[d>>2]|0)+4568>>2]=0;c[(c[d>>2]|0)+4572>>2]=0;c[(c[d>>2]|0)+4576>>2]=0;l=b;return;}function Dj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+48|0;h=g+36|0;i=g+32|0;j=g+28|0;k=g+24|0;m=g+20|0;n=g+16|0;o=g+12|0;p=g+8|0;q=g+4|0;r=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;if((c[(c[j>>2]|0)+24>>2]|0)==1)s=0;else s=1<<c[(c[j>>2]|0)+4>>2];c[n>>2]=s;c[o>>2]=1<<c[(c[j>>2]|0)+8>>2];if(c[m>>2]|0?(c[(c[j>>2]|0)+16>>2]|0)==3:0){if(17<(c[c[j>>2]>>2]|0)>>>0)t=17;else t=c[c[j>>2]>>2]|0;}else t=0;c[p>>2]=t;c[q>>2]=1<<c[p>>2];c[r>>2]=(c[n>>2]|0)+(c[o>>2]|0)+(c[q>>2]|0)<<2;c[(c[h>>2]|0)+32>>2]=c[p>>2];p=c[h>>2]|0;c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;hl(c[h>>2]|0);if(c[m>>2]|0?((c[(c[j>>2]|0)+24>>2]|0)==7?1:(c[(c[j>>2]|0)+24>>2]|0)==8)|0:0){c[(c[h>>2]|0)+48>>2]=c[i>>2];c[(c[h>>2]|0)+48+4>>2]=(c[(c[h>>2]|0)+48>>2]|0)+1024;c[(c[h>>2]|0)+48+8>>2]=(c[(c[h>>2]|0)+48+4>>2]|0)+144;c[(c[h>>2]|0)+48+12>>2]=(c[(c[h>>2]|0)+48+8>>2]|0)+212;c[i>>2]=(c[(c[h>>2]|0)+48+12>>2]|0)+128;c[(c[h>>2]|0)+48+16>>2]=c[i>>2];c[i>>2]=(c[(c[h>>2]|0)+48+16>>2]|0)+32768+8;c[(c[h>>2]|0)+48+20>>2]=c[i>>2];c[i>>2]=(c[(c[h>>2]|0)+48+20>>2]|0)+114688+28;}if((c[k>>2]|0)==1){u=c[i>>2]|0;v=c[h>>2]|0;w=v+36|0;c[w>>2]=u;x=c[h>>2]|0;y=x+36|0;z=c[y>>2]|0;A=c[o>>2]|0;B=z+(A<<2)|0;C=c[h>>2]|0;D=C+44|0;c[D>>2]=B;E=c[h>>2]|0;F=E+44|0;G=c[F>>2]|0;H=c[n>>2]|0;I=G+(H<<2)|0;J=c[h>>2]|0;K=J+40|0;c[K>>2]=I;L=c[h>>2]|0;M=L+40|0;N=c[M>>2]|0;O=c[q>>2]|0;P=N+(O<<2)|0;c[i>>2]=P;Q=c[i>>2]|0;l=g;return Q|0;}oE(c[i>>2]|0,0,c[r>>2]|0)|0;u=c[i>>2]|0;v=c[h>>2]|0;w=v+36|0;c[w>>2]=u;x=c[h>>2]|0;y=x+36|0;z=c[y>>2]|0;A=c[o>>2]|0;B=z+(A<<2)|0;C=c[h>>2]|0;D=C+44|0;c[D>>2]=B;E=c[h>>2]|0;F=E+44|0;G=c[F>>2]|0;H=c[n>>2]|0;I=G+(H<<2)|0;J=c[h>>2]|0;K=J+40|0;c[K>>2]=I;L=c[h>>2]|0;M=L+40|0;N=c[M>>2]|0;O=c[q>>2]|0;P=N+(O<<2)|0;c[i>>2]=P;Q=c[i>>2]|0;l=g;return Q|0;}function Ej(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=l;l=l+32|0;j=i+28|0;k=i+24|0;m=i+20|0;n=i+16|0;o=i+12|0;p=i+8|0;q=i+4|0;r=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;if((c[o>>2]|0)==0|(c[p>>2]|0)>>>0<=8){c[j>>2]=0;s=c[j>>2]|0;l=i;return s|0;}Cj(c[k>>2]|0);if((c[q>>2]|0)==1){c[j>>2]=Fj(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;s=c[j>>2]|0;l=i;return s|0;}if((Gj(c[o>>2]|0)|0)!=-332356553){if(!(c[q>>2]|0)){c[j>>2]=Fj(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;s=c[j>>2]|0;l=i;return s|0;}if((c[q>>2]|0)==2){c[j>>2]=-32;s=c[j>>2]|0;l=i;return s|0;}}c[j>>2]=Hj(c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[r>>2]|0)|0;s=c[j>>2]|0;l=i;return s|0;}function Fj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[j>>2];c[n>>2]=(c[m>>2]|0)+(c[k>>2]|0);c[o>>2]=(c[i>>2]|0)+4;Mj(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;if(c[(c[i>>2]|0)+52>>2]|0)p=0;else p=(c[n>>2]|0)-(c[(c[h>>2]|0)+4>>2]|0)|0;c[(c[h>>2]|0)+20>>2]=p;if((c[k>>2]|0)>>>0<=8){c[g>>2]=0;q=c[g>>2]|0;l=f;return q|0;}switch(c[(c[i>>2]|0)+4+24>>2]|0){case 1:{Nj(c[h>>2]|0,c[o>>2]|0,c[n>>2]|0);break;}case 2:{Oj(c[h>>2]|0,c[o>>2]|0,c[n>>2]|0);break;}case 5:case 4:case 3:{if((c[k>>2]|0)>>>0>=8)Pj(c[h>>2]|0,c[o>>2]|0,(c[n>>2]|0)+-8|0)|0;break;}case 8:case 7:case 6:{if((c[k>>2]|0)>>>0>=8)Qj(c[h>>2]|0,c[o>>2]|0,(c[n>>2]|0)+-8|0,c[n>>2]|0);break;}default:{}}c[(c[h>>2]|0)+24>>2]=(c[n>>2]|0)-(c[(c[h>>2]|0)+4>>2]|0);c[g>>2]=0;q=c[g>>2]|0;l=f;return q|0;}function Gj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Jj()|0)!=0;f=Kj(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=Lj(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Hj(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;h=l;l=l+384|0;i=h+380|0;j=h+376|0;k=h+372|0;m=h+368|0;n=h+364|0;o=h+360|0;p=h+356|0;q=h+352|0;r=h+348|0;s=h+192|0;t=h+344|0;u=h+340|0;v=h+336|0;w=h+332|0;x=h+328|0;y=h+324|0;z=h+320|0;A=h+80|0;B=h+316|0;C=h+312|0;D=h+308|0;E=h+304|0;F=h+300|0;G=h;H=h+296|0;I=h+292|0;J=h+288|0;K=h+284|0;L=h+280|0;M=h+276|0;N=h+272|0;O=h+268|0;P=h+264|0;Q=h+260|0;R=h+256|0;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=c[n>>2];c[r>>2]=(c[q>>2]|0)+(c[o>>2]|0);c[t>>2]=31;c[q>>2]=(c[q>>2]|0)+4;if(c[(c[m>>2]|0)+32+8>>2]|0)S=0;else S=Gj(c[q>>2]|0)|0;c[u>>2]=S;c[q>>2]=(c[q>>2]|0)+4;c[v>>2]=255;c[w>>2]=Ji(c[j>>2]|0,v,c[q>>2]|0,(c[r>>2]|0)-(c[q>>2]|0)|0)|0;if($g(c[w>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}if((c[v>>2]|0)>>>0<255){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[q>>2]=(c[q>>2]|0)+(c[w>>2]|0);c[y>>2]=ah(s,t,x,c[q>>2]|0,(c[r>>2]|0)-(c[q>>2]|0)|0)|0;if(Zg(c[y>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}if((c[x>>2]|0)>>>0>8){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[z>>2]=Uh((c[j>>2]|0)+1024|0,s,c[t>>2]|0,c[x>>2]|0,c[p>>2]|0,6144)|0;if(wj(c[z>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[q>>2]=(c[q>>2]|0)+(c[y>>2]|0);c[B>>2]=52;c[D>>2]=ah(A,B,C,c[q>>2]|0,(c[r>>2]|0)-(c[q>>2]|0)|0)|0;if(Zg(c[D>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}if((c[C>>2]|0)>>>0>9){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[E>>2]=Ij(A,c[B>>2]|0,52)|0;if(wj(c[E>>2]|0)|0){c[i>>2]=c[E>>2];T=c[i>>2]|0;l=h;return T|0;}c[F>>2]=Uh((c[j>>2]|0)+1796|0,A,c[B>>2]|0,c[C>>2]|0,c[p>>2]|0,6144)|0;if(wj(c[F>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[q>>2]=(c[q>>2]|0)+(c[D>>2]|0);c[H>>2]=35;c[J>>2]=ah(G,H,I,c[q>>2]|0,(c[r>>2]|0)-(c[q>>2]|0)|0)|0;if(Zg(c[J>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}if((c[I>>2]|0)>>>0>9){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[K>>2]=Ij(G,c[H>>2]|0,35)|0;if(wj(c[K>>2]|0)|0){c[i>>2]=c[K>>2];T=c[i>>2]|0;l=h;return T|0;}c[L>>2]=Uh((c[j>>2]|0)+3248|0,G,c[H>>2]|0,c[I>>2]|0,c[p>>2]|0,6144)|0;if(wj(c[L>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[q>>2]=(c[q>>2]|0)+(c[J>>2]|0);if(((c[q>>2]|0)+12|0)>>>0>(c[r>>2]|0)>>>0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}J=Gj(c[q>>2]|0)|0;c[(c[j>>2]|0)+4580>>2]=J;J=Gj((c[q>>2]|0)+4|0)|0;c[(c[j>>2]|0)+4580+4>>2]=J;J=Gj((c[q>>2]|0)+8|0)|0;c[(c[j>>2]|0)+4580+8>>2]=J;c[q>>2]=(c[q>>2]|0)+12;c[M>>2]=(c[r>>2]|0)-(c[q>>2]|0);c[N>>2]=31;if((c[M>>2]|0)>>>0<=4294836223){c[O>>2]=(c[M>>2]|0)+131072;c[N>>2]=uj(c[O>>2]|0)|0;}c[P>>2]=Ij(s,c[t>>2]|0,(c[N>>2]|0)>>>0<31?c[N>>2]|0:31)|0;if(wj(c[P>>2]|0)|0){c[i>>2]=c[P>>2];T=c[i>>2]|0;l=h;return T|0;}c[Q>>2]=0;while(1){U=c[j>>2]|0;if((c[Q>>2]|0)>>>0>=3){V=42;break;}if(!(c[U+4580+(c[Q>>2]<<2)>>2]|0)){V=38;break;}if((c[(c[j>>2]|0)+4580+(c[Q>>2]<<2)>>2]|0)>>>0>(c[M>>2]|0)>>>0){V=40;break;}c[Q>>2]=(c[Q>>2]|0)+1;}if((V|0)==38){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}else if((V|0)==40){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}else if((V|0)==42){c[U+4564>>2]=2;c[(c[j>>2]|0)+4568>>2]=2;c[(c[j>>2]|0)+4572>>2]=2;c[(c[j>>2]|0)+4576>>2]=2;c[R>>2]=Fj(c[k>>2]|0,c[m>>2]|0,c[q>>2]|0,c[M>>2]|0)|0;if(wj(c[R>>2]|0)|0){c[i>>2]=c[R>>2];T=c[i>>2]|0;l=h;return T|0;}else{c[i>>2]=c[u>>2];T=c[i>>2]|0;l=h;return T|0;}}return 0;}function Ij(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=d;c[j>>2]=e;if((c[i>>2]|0)>>>0<(c[j>>2]|0)>>>0){c[g>>2]=-30;m=c[g>>2]|0;l=f;return m|0;}c[k>>2]=0;while(1){if((c[k>>2]|0)>>>0>(c[j>>2]|0)>>>0){n=8;break;}if(!(b[(c[h>>2]|0)+(c[k>>2]<<1)>>1]|0)){n=6;break;}c[k>>2]=(c[k>>2]|0)+1;}if((n|0)==6){c[g>>2]=-30;m=c[g>>2]|0;l=f;return m|0;}else if((n|0)==8){c[g>>2]=0;m=c[g>>2]|0;l=f;return m|0;}return 0;}function Jj(){return d[11936]|0|0;}function Kj(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Lj(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Mj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;e=l;l=l+32|0;f=e+28|0;g=e+24|0;h=e+20|0;i=e+16|0;j=e+12|0;k=e+8|0;m=e+4|0;n=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=1;if((c[g>>2]|0)!=(c[c[f>>2]>>2]|0)){c[k>>2]=(c[c[f>>2]>>2]|0)-(c[(c[f>>2]|0)+4>>2]|0);c[(c[f>>2]|0)+16>>2]=c[(c[f>>2]|0)+12>>2];c[(c[f>>2]|0)+12>>2]=c[k>>2];c[(c[f>>2]|0)+8>>2]=c[(c[f>>2]|0)+4>>2];c[(c[f>>2]|0)+4>>2]=(c[i>>2]|0)+(0-(c[k>>2]|0));if(((c[(c[f>>2]|0)+12>>2]|0)-(c[(c[f>>2]|0)+16>>2]|0)|0)>>>0<8)c[(c[f>>2]|0)+16>>2]=c[(c[f>>2]|0)+12>>2];c[j>>2]=0;}c[c[f>>2]>>2]=(c[i>>2]|0)+(c[h>>2]|0);if(!(((c[i>>2]|0)>>>0<((c[(c[f>>2]|0)+8>>2]|0)+(c[(c[f>>2]|0)+12>>2]|0)|0)>>>0?((c[i>>2]|0)+(c[h>>2]|0)|0)>>>0>((c[(c[f>>2]|0)+8>>2]|0)+(c[(c[f>>2]|0)+16>>2]|0)|0)>>>0:0)|0)){o=c[j>>2]|0;l=e;return o|0;}c[m>>2]=(c[i>>2]|0)+(c[h>>2]|0)-(c[(c[f>>2]|0)+8>>2]|0);if((c[m>>2]|0)>(c[(c[f>>2]|0)+12>>2]|0))p=c[(c[f>>2]|0)+12>>2]|0;else p=c[m>>2]|0;c[n>>2]=p;c[(c[f>>2]|0)+16>>2]=c[n>>2];o=c[j>>2]|0;l=e;return o|0;}function Nj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=l;l=l+64|0;f=e+48|0;g=e+44|0;h=e+40|0;i=e+36|0;j=e+32|0;k=e+28|0;m=e+24|0;n=e+20|0;o=e+16|0;p=e+8|0;q=e+4|0;r=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[(c[f>>2]|0)+36>>2];c[j>>2]=c[(c[g>>2]|0)+8>>2];c[k>>2]=c[(c[g>>2]|0)+16>>2];c[m>>2]=c[(c[f>>2]|0)+4>>2];c[n>>2]=(c[m>>2]|0)+(c[(c[f>>2]|0)+24>>2]|0);c[o>>2]=(c[h>>2]|0)+-8;c[e+12>>2]=3;while(1){if(((c[n>>2]|0)+3+-1|0)>>>0>(c[o>>2]|0)>>>0)break;c[p>>2]=(c[n>>2]|0)-(c[m>>2]|0);c[q>>2]=0;while(1){s=c[n>>2]|0;if((c[q>>2]|0)>>>0>=3)break;c[r>>2]=Tk(s+(c[q>>2]|0)|0,c[j>>2]|0,c[k>>2]|0)|0;if(!((c[q>>2]|0)!=0?(c[(c[i>>2]|0)+(c[r>>2]<<2)>>2]|0)!=0:0))c[(c[i>>2]|0)+(c[r>>2]<<2)>>2]=(c[p>>2]|0)+(c[q>>2]|0);c[q>>2]=(c[q>>2]|0)+1;}c[n>>2]=s+3;}l=e;return;}function Oj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;e=l;l=l+64|0;f=e+60|0;g=e+56|0;h=e+52|0;i=e+48|0;j=e+44|0;k=e+40|0;m=e+36|0;n=e+32|0;o=e+28|0;p=e+24|0;q=e+20|0;r=e+12|0;s=e+8|0;t=e+4|0;u=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[(c[f>>2]|0)+36>>2];c[j>>2]=c[(c[g>>2]|0)+8>>2];c[k>>2]=c[(c[g>>2]|0)+16>>2];c[m>>2]=c[(c[f>>2]|0)+44>>2];c[n>>2]=c[(c[g>>2]|0)+4>>2];c[o>>2]=c[(c[f>>2]|0)+4>>2];c[p>>2]=(c[o>>2]|0)+(c[(c[f>>2]|0)+24>>2]|0);c[q>>2]=(c[h>>2]|0)+-8;c[e+16>>2]=3;while(1){if(((c[p>>2]|0)+3+-1|0)>>>0>(c[q>>2]|0)>>>0)break;c[r>>2]=(c[p>>2]|0)-(c[o>>2]|0);c[s>>2]=0;while(1){v=c[p>>2]|0;if((c[s>>2]|0)>>>0>=3)break;c[t>>2]=Dk(v+(c[s>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0;c[u>>2]=Dk((c[p>>2]|0)+(c[s>>2]|0)|0,c[j>>2]|0,8)|0;if(!(c[s>>2]|0))c[(c[m>>2]|0)+(c[t>>2]<<2)>>2]=(c[r>>2]|0)+(c[s>>2]|0);if(!((c[s>>2]|0)!=0?(c[(c[i>>2]|0)+(c[u>>2]<<2)>>2]|0)!=0:0))c[(c[i>>2]|0)+(c[u>>2]<<2)>>2]=(c[r>>2]|0)+(c[s>>2]|0);c[s>>2]=(c[s>>2]|0)+1;}c[p>>2]=v+3;}l=e;return;}function Pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=mk(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,c[(c[g>>2]|0)+16>>2]|0)|0;l=e;return d|0;}function Qj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=l;l=l+64|0;g=f+48|0;h=f+44|0;i=f+40|0;j=f+36|0;k=f+32|0;m=f+28|0;n=f+24|0;o=f+20|0;p=f+16|0;q=f+12|0;r=f+8|0;s=f+4|0;t=f;c[q>>2]=a;c[r>>2]=b;c[s>>2]=d;c[t>>2]=e;e=c[r>>2]|0;d=c[s>>2]|0;s=c[t>>2]|0;t=c[(c[r>>2]|0)+16>>2]|0;c[g>>2]=c[q>>2];c[h>>2]=e;c[i>>2]=d;c[j>>2]=s;c[k>>2]=t;c[m>>2]=0;c[n>>2]=c[(c[g>>2]|0)+4>>2];c[o>>2]=(c[i>>2]|0)-(c[n>>2]|0);c[p>>2]=c[(c[g>>2]|0)+24>>2];while(1){if((c[p>>2]|0)>>>0>=(c[o>>2]|0)>>>0)break;i=Rj(c[g>>2]|0,c[h>>2]|0,(c[n>>2]|0)+(c[p>>2]|0)|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[p>>2]=(c[p>>2]|0)+i;}c[(c[g>>2]|0)+24>>2]=c[o>>2];l=f;return;}function Rj(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;i=l;l=l+144|0;j=i+128|0;k=i+124|0;m=i+120|0;n=i+116|0;o=i+112|0;p=i+108|0;q=i+104|0;r=i+100|0;s=i+96|0;t=i+92|0;u=i+88|0;v=i+84|0;w=i+80|0;x=i+76|0;y=i+72|0;z=i+68|0;A=i+64|0;B=i+60|0;C=i+56|0;D=i+52|0;E=i+48|0;F=i+44|0;G=i+40|0;H=i+36|0;I=i+32|0;J=i+28|0;K=i+24|0;L=i+20|0;M=i+16|0;N=i+12|0;O=i+8|0;P=i+4|0;Q=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=c[(c[k>>2]|0)+36>>2];c[s>>2]=c[(c[m>>2]|0)+8>>2];c[t>>2]=Sj(c[n>>2]|0,c[s>>2]|0,c[p>>2]|0)|0;c[u>>2]=c[(c[k>>2]|0)+44>>2];c[v>>2]=(c[(c[m>>2]|0)+4>>2]|0)-1;c[w>>2]=(1<<c[v>>2])-1;c[x>>2]=c[(c[r>>2]|0)+(c[t>>2]<<2)>>2];c[y>>2]=0;c[z>>2]=0;c[A>>2]=c[(c[k>>2]|0)+4>>2];c[B>>2]=c[(c[k>>2]|0)+8>>2];c[C>>2]=c[(c[k>>2]|0)+12>>2];c[D>>2]=(c[B>>2]|0)+(c[C>>2]|0);c[E>>2]=(c[A>>2]|0)+(c[C>>2]|0);c[G>>2]=(c[n>>2]|0)-(c[A>>2]|0);if((c[w>>2]|0)>>>0>=(c[G>>2]|0)>>>0)R=0;else R=(c[G>>2]|0)-(c[w>>2]|0)|0;c[H>>2]=R;c[I>>2]=(c[u>>2]|0)+((c[G>>2]&c[w>>2])<<1<<2);c[J>>2]=(c[I>>2]|0)+4;c[L>>2]=c[(c[k>>2]|0)+16>>2];c[M>>2]=(c[G>>2]|0)+8+1;c[N>>2]=8;c[O>>2]=1<<c[(c[m>>2]|0)+12>>2];c[(c[r>>2]|0)+(c[t>>2]<<2)>>2]=c[G>>2];while(1){t=c[O>>2]|0;c[O>>2]=t+-1;if(!t)break;if((c[x>>2]|0)>>>0<=(c[L>>2]|0)>>>0)break;c[P>>2]=(c[u>>2]|0)+((c[x>>2]&c[w>>2])<<1<<2);c[Q>>2]=(c[y>>2]|0)>>>0<(c[z>>2]|0)>>>0?c[y>>2]|0:c[z>>2]|0;if(c[q>>2]|0?((c[x>>2]|0)+(c[Q>>2]|0)|0)>>>0<(c[C>>2]|0)>>>0:0){c[F>>2]=(c[B>>2]|0)+(c[x>>2]|0);t=Uj((c[n>>2]|0)+(c[Q>>2]|0)|0,(c[F>>2]|0)+(c[Q>>2]|0)|0,c[o>>2]|0,c[D>>2]|0,c[E>>2]|0)|0;c[Q>>2]=(c[Q>>2]|0)+t;if(((c[x>>2]|0)+(c[Q>>2]|0)|0)>>>0>=(c[C>>2]|0)>>>0)c[F>>2]=(c[A>>2]|0)+(c[x>>2]|0);}else{c[F>>2]=(c[A>>2]|0)+(c[x>>2]|0);t=Tj((c[n>>2]|0)+(c[Q>>2]|0)|0,(c[F>>2]|0)+(c[Q>>2]|0)|0,c[o>>2]|0)|0;c[Q>>2]=(c[Q>>2]|0)+t;}if((c[Q>>2]|0)>>>0>(c[N>>2]|0)>>>0?(c[N>>2]=c[Q>>2],(c[Q>>2]|0)>>>0>((c[M>>2]|0)-(c[x>>2]|0)|0)>>>0):0)c[M>>2]=(c[x>>2]|0)+(c[Q>>2]|0);if(((c[n>>2]|0)+(c[Q>>2]|0)|0)==(c[o>>2]|0))break;t=c[x>>2]|0;if((d[(c[F>>2]|0)+(c[Q>>2]|0)>>0]|0|0)<(d[(c[n>>2]|0)+(c[Q>>2]|0)>>0]|0|0)){c[c[I>>2]>>2]=t;c[y>>2]=c[Q>>2];if((c[x>>2]|0)>>>0<=(c[H>>2]|0)>>>0){S=17;break;}c[I>>2]=(c[P>>2]|0)+4;c[x>>2]=c[(c[P>>2]|0)+4>>2];}else{c[c[J>>2]>>2]=t;c[z>>2]=c[Q>>2];if((c[x>>2]|0)>>>0<=(c[H>>2]|0)>>>0){S=20;break;}c[J>>2]=c[P>>2];c[x>>2]=c[c[P>>2]>>2];}}if((S|0)==17)c[I>>2]=K;else if((S|0)==20)c[J>>2]=K;c[c[J>>2]>>2]=0;c[c[I>>2]>>2]=0;if((c[N>>2]|0)>>>0>384){c[j>>2]=192<((c[N>>2]|0)-384|0)>>>0?192:(c[N>>2]|0)-384|0;T=c[j>>2]|0;l=i;return T|0;}else{c[j>>2]=(c[M>>2]|0)-((c[G>>2]|0)+8);T=c[j>>2]|0;l=i;return T|0;}return 0;}function Sj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;switch(c[i>>2]|0){case 8:{c[f>>2]=dk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 5:{c[f>>2]=ak(c[g>>2]|0,c[h>>2]|0)|0;break;}case 6:{c[f>>2]=bk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 7:{c[f>>2]=ck(c[g>>2]|0,c[h>>2]|0)|0;break;}default:c[f>>2]=$j(c[g>>2]|0,c[h>>2]|0)|0;}l=e;return c[f>>2]|0;}function Tj(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];c[m>>2]=(c[j>>2]|0)+-3;a:do{if((c[h>>2]|0)>>>0<(c[m>>2]|0)>>>0){e=Vj(c[i>>2]|0)|0;c[n>>2]=e^(Vj(c[h>>2]|0)|0);if(c[n>>2]|0){c[g>>2]=Wj(c[n>>2]|0)|0;p=c[g>>2]|0;l=f;return p|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;while(1){if((c[h>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break a;e=Vj(c[i>>2]|0)|0;c[o>>2]=e^(Vj(c[h>>2]|0)|0);if(c[o>>2]|0)break;c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}e=Wj(c[o>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+e;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}}while(0);if((Xj()|0?(c[h>>2]|0)>>>0<((c[j>>2]|0)+-3|0)>>>0:0)?(o=Yj(c[i>>2]|0)|0,(o|0)==(Yj(c[h>>2]|0)|0)):0){c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}if((c[h>>2]|0)>>>0<((c[j>>2]|0)+-1|0)>>>0?(o=(Zj(c[i>>2]|0)|0)&65535,(o|0)==((Zj(c[h>>2]|0)|0)&65535|0)):0){c[h>>2]=(c[h>>2]|0)+2;c[i>>2]=(c[i>>2]|0)+2;}if((c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?(d[c[i>>2]>>0]|0|0)==(d[c[h>>2]>>0]|0|0):0)c[h>>2]=(c[h>>2]|0)+1;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}function Uj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if(((c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0)>>>0<(c[k>>2]|0)>>>0)q=(c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0;else q=c[k>>2]|0;c[o>>2]=q;c[p>>2]=Tj(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0)|0;o=c[p>>2]|0;if(((c[j>>2]|0)+(c[p>>2]|0)|0)!=(c[m>>2]|0)){c[h>>2]=o;r=c[h>>2]|0;l=g;return r|0;}else{c[h>>2]=o+(Tj((c[i>>2]|0)+(c[p>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0);r=c[h>>2]|0;l=g;return r|0;}return 0;}function Vj(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Wj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(_j()|0)!=0;f=(Xj()|0)!=0;g=c[e>>2]|0;do{if(a){if(f){e=ob(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(fE(g|0)|0)>>3;break;}}else if(f){e=lE(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(Q(g|0)|0)>>3;break;}}while(0);l=b;return c[d>>2]|0;}function Xj(){return 0;}function Yj(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Zj(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function _j(){return d[11936]|0|0;}function $j(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Yj(c[e>>2]|0)|0;e=lk(b,c[f>>2]|0)|0;l=d;return e|0;}function ak(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=ek(c[e>>2]|0)|0;e=kk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function bk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=ek(c[e>>2]|0)|0;e=jk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function ck(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=ek(c[e>>2]|0)|0;e=ik(b,y,c[f>>2]|0)|0;l=d;return e|0;}function dk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=ek(c[e>>2]|0)|0;e=fk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function ek(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(_j()|0)!=0;f=gk(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=hk(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function fk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=cE(c[d>>2]|0,c[d+4>>2]|0,-1213897629,-820265764)|0;d=iE(f|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return d|0;}function gk(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function hk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function ik(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,8)|0;d=cE(f|0,y|0,-591420061,13573052)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function jk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,16)|0;d=cE(f|0,y|0,-1126383717,53019)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function kk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,24)|0;d=cE(f|0,y|0,465362107,207)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function lk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=N(c[e>>2]|0,-1640531535)|0;l=d;return b>>>(32-(c[f>>2]|0)|0)|0;}function mk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+48|0;g=f+44|0;h=f+40|0;i=f+36|0;j=f+32|0;k=f+28|0;m=f+24|0;n=f+20|0;o=f+16|0;p=f+12|0;q=f+8|0;r=f+4|0;s=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=c[(c[g>>2]|0)+36>>2];c[m>>2]=c[(c[h>>2]|0)+8>>2];c[n>>2]=c[(c[g>>2]|0)+44>>2];c[o>>2]=(1<<c[(c[h>>2]|0)+4>>2])-1;c[p>>2]=c[(c[g>>2]|0)+4>>2];c[q>>2]=(c[i>>2]|0)-(c[p>>2]|0);c[r>>2]=c[(c[g>>2]|0)+24>>2];while(1){if((c[r>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break;c[s>>2]=nk((c[p>>2]|0)+(c[r>>2]|0)|0,c[m>>2]|0,c[j>>2]|0)|0;c[(c[n>>2]|0)+((c[r>>2]&c[o>>2])<<2)>>2]=c[(c[k>>2]|0)+(c[s>>2]<<2)>>2];c[(c[k>>2]|0)+(c[s>>2]<<2)>>2]=c[r>>2];c[r>>2]=(c[r>>2]|0)+1;}c[(c[g>>2]|0)+24>>2]=c[q>>2];q=c[k>>2]|0;k=c[q+((nk(c[i>>2]|0,c[m>>2]|0,c[j>>2]|0)|0)<<2)>>2]|0;l=f;return k|0;}function nk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;switch(c[i>>2]|0){case 8:{c[f>>2]=sk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 5:{c[f>>2]=pk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 6:{c[f>>2]=qk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 7:{c[f>>2]=rk(c[g>>2]|0,c[h>>2]|0)|0;break;}default:c[f>>2]=ok(c[g>>2]|0,c[h>>2]|0)|0;}l=e;return c[f>>2]|0;}function ok(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Bk(c[e>>2]|0)|0;e=Ck(b,c[f>>2]|0)|0;l=d;return e|0;}function pk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=tk(c[e>>2]|0)|0;e=Ak(b,y,c[f>>2]|0)|0;l=d;return e|0;}function qk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=tk(c[e>>2]|0)|0;e=zk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function rk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=tk(c[e>>2]|0)|0;e=yk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function sk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=tk(c[e>>2]|0)|0;e=uk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function tk(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(vk()|0)!=0;f=wk(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=xk(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function uk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=cE(c[d>>2]|0,c[d+4>>2]|0,-1213897629,-820265764)|0;d=iE(f|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return d|0;}function vk(){return d[11936]|0|0;}function wk(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function xk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function yk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,8)|0;d=cE(f|0,y|0,-591420061,13573052)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function zk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,16)|0;d=cE(f|0,y|0,-1126383717,53019)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function Ak(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,24)|0;d=cE(f|0,y|0,465362107,207)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function Bk(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Ck(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=N(c[e>>2]|0,-1640531535)|0;l=d;return b>>>(32-(c[f>>2]|0)|0)|0;}function Dk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;switch(c[i>>2]|0){case 8:{c[f>>2]=Ik(c[g>>2]|0,c[h>>2]|0)|0;break;}case 5:{c[f>>2]=Fk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 6:{c[f>>2]=Gk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 7:{c[f>>2]=Hk(c[g>>2]|0,c[h>>2]|0)|0;break;}default:c[f>>2]=Ek(c[g>>2]|0,c[h>>2]|0)|0;}l=e;return c[f>>2]|0;}function Ek(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Rk(c[e>>2]|0)|0;e=Sk(b,c[f>>2]|0)|0;l=d;return e|0;}function Fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Jk(c[e>>2]|0)|0;e=Qk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Gk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Jk(c[e>>2]|0)|0;e=Pk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Hk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Jk(c[e>>2]|0)|0;e=Ok(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Ik(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Jk(c[e>>2]|0)|0;e=Kk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Jk(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(Lk()|0)!=0;f=Mk(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=Nk(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function Kk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=cE(c[d>>2]|0,c[d+4>>2]|0,-1213897629,-820265764)|0;d=iE(f|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return d|0;}function Lk(){return d[11936]|0|0;}function Mk(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function Nk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Ok(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,8)|0;d=cE(f|0,y|0,-591420061,13573052)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function Pk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,16)|0;d=cE(f|0,y|0,-1126383717,53019)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function Qk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,24)|0;d=cE(f|0,y|0,465362107,207)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function Rk(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Sk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=N(c[e>>2]|0,-1640531535)|0;l=d;return b>>>(32-(c[f>>2]|0)|0)|0;}function Tk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;switch(c[i>>2]|0){case 8:{c[f>>2]=Yk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 5:{c[f>>2]=Vk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 6:{c[f>>2]=Wk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 7:{c[f>>2]=Xk(c[g>>2]|0,c[h>>2]|0)|0;break;}default:c[f>>2]=Uk(c[g>>2]|0,c[h>>2]|0)|0;}l=e;return c[f>>2]|0;}function Uk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=fl(c[e>>2]|0)|0;e=gl(b,c[f>>2]|0)|0;l=d;return e|0;}function Vk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Zk(c[e>>2]|0)|0;e=el(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Wk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Zk(c[e>>2]|0)|0;e=dl(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Xk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Zk(c[e>>2]|0)|0;e=cl(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Yk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Zk(c[e>>2]|0)|0;e=_k(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Zk(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=($k()|0)!=0;f=al(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=bl(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function _k(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=cE(c[d>>2]|0,c[d+4>>2]|0,-1213897629,-820265764)|0;d=iE(f|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return d|0;}function $k(){return d[11936]|0|0;}function al(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function cl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,8)|0;d=cE(f|0,y|0,-591420061,13573052)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function dl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,16)|0;d=cE(f|0,y|0,-1126383717,53019)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function el(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,24)|0;d=cE(f|0,y|0,465362107,207)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function fl(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function gl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=N(c[e>>2]|0,-1640531535)|0;l=d;return b>>>(32-(c[f>>2]|0)|0)|0;}function hl(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;il(c[d>>2]|0);c[(c[d>>2]|0)+24>>2]=(c[(c[d>>2]|0)+12>>2]|0)+1;c[(c[d>>2]|0)+20>>2]=0;c[(c[d>>2]|0)+48+28>>2]=0;l=b;return;}function il(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+8|0;e=b+4|0;f=b;c[d>>2]=a;c[e>>2]=(c[c[d>>2]>>2]|0)-(c[(c[d>>2]|0)+4>>2]|0);c[f>>2]=c[e>>2];c[(c[d>>2]|0)+16>>2]=c[f>>2];c[(c[d>>2]|0)+12>>2]=c[f>>2];l=b;return;}function jl(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+628>>2]=0;a=(c[d>>2]|0)+240|0;c[a>>2]=0;c[a+4>>2]=0;l=b;return;}function kl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[d>>2]=1<<c[a+4>>2];c[e>>2]=(c[a+8>>2]|0)>>>0<(c[a+4>>2]|0)>>>0?c[a+8>>2]|0:c[a+4>>2]|0;c[f>>2]=1<<(c[a+4>>2]|0)-(c[e>>2]|0);c[g>>2]=(c[f>>2]|0)+(c[d>>2]<<3);l=b;return(c[a>>2]|0?c[g>>2]|0:0)|0;}function ll(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[e>>2]=b;if(!(c[a>>2]|0)){f=0;l=d;return f|0;}f=((c[e>>2]|0)>>>0)/((c[a+12>>2]|0)>>>0)|0;l=d;return f|0;}function ml(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;h=l;l=l+304|0;i=h+200|0;j=h+80|0;k=h+196|0;m=h+192|0;n=h;o=h+188|0;p=h+184|0;q=h+76|0;r=h+72|0;s=h+68|0;t=h+64|0;u=h+60|0;v=h+56|0;w=h+52|0;x=h+48|0;z=h+44|0;A=h+40|0;B=h+36|0;C=h+32|0;D=h+28|0;E=h+24|0;F=h+20|0;G=h+16|0;H=h+12|0;I=h+8|0;c[m>>2]=a;a=n;c[a>>2]=d;c[a+4>>2]=e;c[o>>2]=f;c[p>>2]=g;if(!(c[o>>2]|0)){g=c[(c[m>>2]|0)+596>>2]|0;f=c[(c[m>>2]|0)+232>>2]|0;e=c[p>>2]|0;a=n;d=c[a>>2]|0;J=c[a+4>>2]|0;K=j;L=(c[m>>2]|0)+116|0;M=K+104|0;do{c[K>>2]=c[L>>2];K=K+4|0;L=L+4|0;}while((K|0)<(M|0));K=i;L=b;M=K+104|0;do{c[K>>2]=c[L>>2];K=K+4|0;L=L+4|0;}while((K|0)<(M|0));if(nl(j,i,g,f,e,d,J)|0){J=c[m>>2]|0;d=n;e=c[d>>2]|0;f=c[d+4>>2]|0;K=i;L=b;M=K+104|0;do{c[K>>2]=c[L>>2];K=K+4|0;L=L+4|0;}while((K|0)<(M|0));c[k>>2]=ol(J,i,e,f)|0;N=c[k>>2]|0;l=h;return N|0;}}if(c[b+68>>2]|0){c[b+68+20>>2]=c[b+4>>2];pl(b+68|0,b+4|0);f=ql(c[b+68+12>>2]|0)|0;e=(c[m>>2]|0)+408+32|0;c[e>>2]=f;c[e+4>>2]=y;}e=jE(1,0,c[b+4>>2]|0)|0;f=y;J=n;d=c[J+4>>2]|0;if(f>>>0<d>>>0|((f|0)==(d|0)?e>>>0<(c[J>>2]|0)>>>0:0)){J=jE(1,0,c[b+4>>2]|0)|0;O=J;P=y;}else{J=n;O=c[J>>2]|0;P=c[J+4>>2]|0;}if(1>O>>>0)Q=1;else{O=jE(1,0,c[b+4>>2]|0)|0;J=y;P=n;e=c[P+4>>2]|0;if(J>>>0<e>>>0|((J|0)==(e|0)?O>>>0<(c[P>>2]|0)>>>0:0)){P=jE(1,0,c[b+4>>2]|0)|0;R=P;S=y;}else{P=n;R=c[P>>2]|0;S=c[P+4>>2]|0;}Q=R;}c[q>>2]=Q;c[r>>2]=131072<(c[q>>2]|0)>>>0?131072:c[q>>2]|0;c[s>>2]=(c[b+4+16>>2]|0)==3?3:4;c[t>>2]=((c[r>>2]|0)>>>0)/((c[s>>2]|0)>>>0)|0;c[u>>2]=(c[r>>2]|0)+((c[t>>2]|0)*11|0);if((c[p>>2]|0)==1)T=(lj(c[r>>2]|0)|0)+1|0;else T=0;c[v>>2]=T;if((c[p>>2]|0)==1)U=(c[q>>2]|0)+(c[r>>2]|0)|0;else U=0;c[w>>2]=U;c[x>>2]=Aj(b+4|0,1)|0;U=b+68|0;q=c[r>>2]|0;c[i>>2]=c[U>>2];c[i+4>>2]=c[U+4>>2];c[i+8>>2]=c[U+8>>2];c[i+12>>2]=c[U+12>>2];c[i+16>>2]=c[U+16>>2];c[i+20>>2]=c[U+20>>2];c[z>>2]=ll(i,q)|0;c[B>>2]=6144;c[C>>2]=9184;c[D>>2]=(c[w>>2]|0)+(c[v>>2]|0);C=b+68|0;c[i>>2]=c[C>>2];c[i+4>>2]=c[C+4>>2];c[i+8>>2]=c[C+8>>2];c[i+12>>2]=c[C+12>>2];c[i+16>>2]=c[C+16>>2];c[i+20>>2]=c[C+20>>2];c[E>>2]=kl(i)|0;c[F>>2]=(c[z>>2]|0)*12;c[G>>2]=15328+(c[E>>2]|0)+(c[F>>2]|0)+(c[x>>2]|0)+(c[u>>2]|0)+(c[D>>2]|0);do{if((c[(c[m>>2]|0)+228>>2]|0)>>>0<(c[G>>2]|0)>>>0){if(c[(c[m>>2]|0)+364>>2]|0){c[k>>2]=-64;N=c[k>>2]|0;l=h;return N|0;}c[(c[m>>2]|0)+228>>2]=0;D=c[(c[m>>2]|0)+224>>2]|0;u=(c[m>>2]|0)+352|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];Th(D,i);D=c[G>>2]|0;u=(c[m>>2]|0)+352|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];u=Rh(D,i)|0;c[(c[m>>2]|0)+224>>2]=u;if(c[(c[m>>2]|0)+224>>2]|0){c[(c[m>>2]|0)+228>>2]=c[G>>2];c[A>>2]=c[(c[m>>2]|0)+224>>2];c[(c[m>>2]|0)+472>>2]=c[(c[m>>2]|0)+224>>2];c[(c[m>>2]|0)+472+4>>2]=(c[(c[m>>2]|0)+472>>2]|0)+4592;c[A>>2]=(c[(c[m>>2]|0)+472+4>>2]|0)+4592;c[(c[m>>2]|0)+588>>2]=c[A>>2];break;}c[k>>2]=-64;N=c[k>>2]|0;l=h;return N|0;}}while(0);K=(c[m>>2]|0)+116|0;L=b;M=K+104|0;do{c[K>>2]=c[L>>2];K=K+4|0;L=L+4|0;}while((K|0)<(M|0));L=n;K=dE(c[L>>2]|0,c[L+4>>2]|0,1,0)|0;L=(c[m>>2]|0)+240|0;c[L>>2]=K;c[L+4>>2]=y;L=(c[m>>2]|0)+248|0;c[L>>2]=0;c[L+4>>2]=0;L=(c[m>>2]|0)+256|0;c[L>>2]=0;c[L+4>>2]=0;L=n;if((c[L>>2]|0)==-1?(c[L+4>>2]|0)==-1:0)c[(c[m>>2]|0)+116+32>>2]=0;c[(c[m>>2]|0)+232>>2]=c[r>>2];Lh((c[m>>2]|0)+264|0,0,0)|0;c[c[m>>2]>>2]=1;c[(c[m>>2]|0)+220>>2]=0;Cj(c[(c[m>>2]|0)+472>>2]|0);c[A>>2]=(c[(c[m>>2]|0)+588>>2]|0)+6144;if(c[b+68>>2]|0){c[H>>2]=1<<c[b+68+4>>2];oE(c[A>>2]|0,0,c[H>>2]<<3|0)|0;c[(c[m>>2]|0)+408+20>>2]=c[A>>2];c[A>>2]=(c[(c[m>>2]|0)+408+20>>2]|0)+(c[H>>2]<<3);c[(c[m>>2]|0)+448>>2]=c[A>>2];c[A>>2]=(c[(c[m>>2]|0)+448>>2]|0)+((c[z>>2]|0)*12|0);c[(c[m>>2]|0)+452>>2]=c[z>>2];z=(c[m>>2]|0)+408|0;c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;c[z+16>>2]=0;}c[A>>2]=Dj((c[m>>2]|0)+472+8|0,c[A>>2]|0,b+4|0,c[o>>2]|0,1)|0;c[(c[m>>2]|0)+368>>2]=c[A>>2];c[A>>2]=(c[(c[m>>2]|0)+368>>2]|0)+(c[t>>2]<<3);c[(c[m>>2]|0)+368+16>>2]=c[A>>2];c[(c[m>>2]|0)+368+20>>2]=(c[(c[m>>2]|0)+368+16>>2]|0)+(c[t>>2]|0);c[(c[m>>2]|0)+368+24>>2]=(c[(c[m>>2]|0)+368+20>>2]|0)+(c[t>>2]|0);c[(c[m>>2]|0)+368+8>>2]=(c[(c[m>>2]|0)+368+24>>2]|0)+(c[t>>2]|0);c[A>>2]=(c[(c[m>>2]|0)+368+8>>2]|0)+(c[r>>2]|0);if(c[b+68>>2]|0){c[I>>2]=1<<(c[b+68+4>>2]|0)-(c[b+68+8>>2]|0);oE(c[A>>2]|0,0,c[I>>2]|0)|0;c[(c[m>>2]|0)+408+24>>2]=c[A>>2];c[A>>2]=(c[(c[m>>2]|0)+408+24>>2]|0)+(c[I>>2]|0);il((c[m>>2]|0)+408|0);}rl(c[m>>2]|0,0,0)|0;c[(c[m>>2]|0)+596>>2]=c[w>>2];c[(c[m>>2]|0)+592>>2]=c[A>>2];c[(c[m>>2]|0)+616>>2]=c[v>>2];c[(c[m>>2]|0)+612>>2]=(c[(c[m>>2]|0)+592>>2]|0)+(c[w>>2]|0);c[k>>2]=0;N=c[k>>2]|0;l=h;return N|0;}function nl(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;i=l;l=l+80|0;j=i+48|0;k=i+16|0;m=i+44|0;n=i+12|0;o=i+8|0;p=i;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;f=p;c[f>>2]=g;c[f+4>>2]=h;h=a+4|0;f=b+4|0;c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];c[k+12>>2]=c[h+12>>2];c[k+16>>2]=c[h+16>>2];c[k+20>>2]=c[h+20>>2];c[k+24>>2]=c[h+24>>2];c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];if(!(tl(k,j)|0)){q=0;r=q&1;l=i;return r|0;}f=a+68|0;a=b+68|0;c[k>>2]=c[f>>2];c[k+4>>2]=c[f+4>>2];c[k+8>>2]=c[f+8>>2];c[k+12>>2]=c[f+12>>2];c[k+16>>2]=c[f+16>>2];c[k+20>>2]=c[f+20>>2];c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[j+16>>2]=c[a+16>>2];c[j+20>>2]=c[a+20>>2];if(!(ul(k,j)|0)){q=0;r=q&1;l=i;return r|0;}k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=b+4|0;b=p;p=c[b>>2]|0;a=c[b+4>>2]|0;c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[j+12>>2]=c[o+12>>2];c[j+16>>2]=c[o+16>>2];c[j+20>>2]=c[o+20>>2];c[j+24>>2]=c[o+24>>2];q=(vl(k,m,n,j,p,a)|0)!=0;r=q&1;l=i;return r|0;}function ol(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0;f=l;l=l+32|0;g=f+16|0;h=f;i=f+12|0;j=f+8|0;c[g>>2]=a;a=h;c[a>>2]=d;c[a+4>>2]=e;e=jE(1,0,c[b+4>>2]|0)|0;a=y;d=h;k=c[d+4>>2]|0;if(a>>>0<k>>>0|((a|0)==(k|0)?e>>>0<(c[d>>2]|0)>>>0:0)){d=jE(1,0,c[b+4>>2]|0)|0;m=y;n=d;}else{d=h;m=c[d+4>>2]|0;n=c[d>>2]|0;}if(1>n>>>0)o=1;else{n=jE(1,0,c[b+4>>2]|0)|0;d=y;m=h;e=c[m+4>>2]|0;if(d>>>0<e>>>0|((d|0)==(e|0)?n>>>0<(c[m>>2]|0)>>>0:0)){m=jE(1,0,c[b+4>>2]|0)|0;p=m;q=y;}else{m=h;p=c[m>>2]|0;q=c[m+4>>2]|0;}o=p;}c[i>>2]=o;c[j>>2]=131072<(c[i>>2]|0)>>>0?131072:c[i>>2]|0;c[(c[g>>2]|0)+232>>2]=c[j>>2];j=(c[g>>2]|0)+116|0;i=b;o=j+104|0;do{c[j>>2]=c[i>>2];j=j+4|0;i=i+4|0;}while((j|0)<(o|0));i=h;j=dE(c[i>>2]|0,c[i+4>>2]|0,1,0)|0;i=(c[g>>2]|0)+240|0;c[i>>2]=j;c[i+4>>2]=y;i=(c[g>>2]|0)+248|0;c[i>>2]=0;c[i+4>>2]=0;i=(c[g>>2]|0)+256|0;c[i>>2]=0;c[i+4>>2]=0;i=h;if((c[i>>2]|0)==-1?(c[i+4>>2]|0)==-1:0)c[(c[g>>2]|0)+116+32>>2]=0;c[c[g>>2]>>2]=1;c[(c[g>>2]|0)+220>>2]=0;if(!(c[b+68>>2]|0)){r=c[g>>2]|0;rl(r,0,0)|0;s=c[g>>2]|0;t=s+472|0;u=t+8|0;hl(u);v=c[g>>2]|0;w=v+472|0;x=c[w>>2]|0;Cj(x);z=c[g>>2]|0;A=z+264|0;Lh(A,0,0)|0;l=f;return 0;}il((c[g>>2]|0)+408|0);r=c[g>>2]|0;rl(r,0,0)|0;s=c[g>>2]|0;t=s+472|0;u=t+8|0;hl(u);v=c[g>>2]|0;w=v+472|0;x=c[w>>2]|0;Cj(x);z=c[g>>2]|0;A=z+264|0;Lh(A,0,0)|0;l=f;return 0;}function pl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;d=l;l=l+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=c[c[f>>2]>>2];if(!(c[(c[e>>2]|0)+8>>2]|0))c[(c[e>>2]|0)+8>>2]=3;if(!(c[(c[e>>2]|0)+12>>2]|0))c[(c[e>>2]|0)+12>>2]=64;if((c[(c[f>>2]|0)+24>>2]|0)>>>0>=7){if((c[(c[f>>2]|0)+20>>2]|0)>>>0>(c[(c[e>>2]|0)+12>>2]|0)>>>0)i=c[(c[f>>2]|0)+20>>2]|0;else i=c[(c[e>>2]|0)+12>>2]|0;c[h>>2]=i;c[(c[e>>2]|0)+12>>2]=c[h>>2];}if(!(c[(c[e>>2]|0)+4>>2]|0))c[(c[e>>2]|0)+4>>2]=6>((c[g>>2]|0)-7|0)>>>0?6:(c[g>>2]|0)-7|0;if(!(c[(c[e>>2]|0)+16>>2]|0)){if((c[g>>2]|0)>>>0<(c[(c[e>>2]|0)+4>>2]|0)>>>0)j=0;else j=(c[g>>2]|0)-(c[(c[e>>2]|0)+4>>2]|0)|0;c[(c[e>>2]|0)+16>>2]=j;}j=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0<(c[(c[e>>2]|0)+4>>2]|0)>>>0){k=c[j+8>>2]|0;m=c[e>>2]|0;n=m+8|0;c[n>>2]=k;l=d;return;}else{k=c[j+4>>2]|0;m=c[e>>2]|0;n=m+8|0;c[n>>2]=k;l=d;return;}}function ql(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=sl(-1213897629,-820265764,(c[d>>2]|0)-1|0,0)|0;l=b;return a|0;}function rl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[c[g>>2]>>2]|0)!=1){c[f>>2]=-60;j=c[f>>2]|0;l=e;return j|0;}if(c[(c[g>>2]|0)+116+68>>2]|0){c[f>>2]=-40;j=c[f>>2]|0;l=e;return j|0;}else{c[(c[g>>2]|0)+456>>2]=c[h>>2];c[(c[g>>2]|0)+456+8>>2]=c[i>>2];c[(c[g>>2]|0)+456+12>>2]=c[i>>2];c[(c[g>>2]|0)+456+4>>2]=0;c[f>>2]=0;j=c[f>>2]|0;l=e;return j|0;}return 0;}function sl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+32|0;g=f+16|0;h=f+8|0;i=f;j=g;c[j>>2]=a;c[j+4>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;e=i;c[e>>2]=1;c[e+4>>2]=0;while(1){e=h;if(!((c[e>>2]|0)!=0|(c[e+4>>2]|0)!=0))break;if((c[h>>2]&1|0)!=0|0!=0){e=g;b=i;d=cE(c[b>>2]|0,c[b+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;e=i;c[e>>2]=d;c[e+4>>2]=y;}e=h;d=iE(c[e>>2]|0,c[e+4>>2]|0,1)|0;e=h;c[e>>2]=d;c[e+4>>2]=y;e=g;d=g;b=cE(c[d>>2]|0,c[d+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;e=g;c[e>>2]=b;c[e+4>>2]=y;}g=i;y=c[g+4>>2]|0;l=f;return c[g>>2]|0;}function tl(a,b){a=a|0;b=b|0;return((c[a+8>>2]|0)==(c[b+8>>2]|0)?(c[a+4>>2]|0)==(c[b+4>>2]|0):0)&(c[a+24>>2]|0)==(c[b+24>>2]|0)&((c[a+16>>2]|0)==3|0)==((c[b+16>>2]|0)==3|0)|0;}function ul(a,b){a=a|0;b=b|0;var d=0;if(!(c[a>>2]|0)?!(c[b>>2]|0):0)d=1;else if((((c[a>>2]|0)==(c[b>>2]|0)?(c[a+4>>2]|0)==(c[b+4>>2]|0):0)?(c[a+8>>2]|0)==(c[b+8>>2]|0):0)?(c[a+12>>2]|0)==(c[b+12>>2]|0):0)d=(c[a+16>>2]|0)==(c[b+16>>2]|0);else d=0;return d&1|0;}function vl(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;h=l;l=l+32|0;i=h+28|0;j=h+24|0;k=h+20|0;m=h;n=h+16|0;o=h+12|0;p=h+8|0;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;d=m;c[d>>2]=f;c[d+4>>2]=g;g=jE(1,0,c[e>>2]|0)|0;d=y;f=m;b=c[f+4>>2]|0;if(d>>>0<b>>>0|((d|0)==(b|0)?g>>>0<(c[f>>2]|0)>>>0:0)){f=jE(1,0,c[e>>2]|0)|0;q=f;r=y;}else{f=m;q=c[f>>2]|0;r=c[f+4>>2]|0;}if(1>q>>>0)s=1;else{q=jE(1,0,c[e>>2]|0)|0;f=y;r=m;g=c[r+4>>2]|0;if(f>>>0<g>>>0|((f|0)==(g|0)?q>>>0<(c[r>>2]|0)>>>0:0)){r=jE(1,0,c[e>>2]|0)|0;t=r;u=y;}else{r=m;t=c[r>>2]|0;u=c[r+4>>2]|0;}s=t;}c[n>>2]=s;c[o>>2]=131072<(c[n>>2]|0)>>>0?131072:c[n>>2]|0;if((c[k>>2]|0)!=1){v=0;c[p>>2]=v;w=c[o>>2]|0;x=c[j>>2]|0;z=w>>>0<=x>>>0;A=z&1;B=c[p>>2]|0;C=c[i>>2]|0;D=B>>>0<=C>>>0;E=D&1;F=A&E;l=h;return F|0;}v=(c[n>>2]|0)+(c[o>>2]|0)|0;c[p>>2]=v;w=c[o>>2]|0;x=c[j>>2]|0;z=w>>>0<=x>>>0;A=z&1;B=c[p>>2]|0;C=c[i>>2]|0;D=B>>>0<=C>>>0;E=D&1;F=A&E;l=h;return F|0;}function wl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;xl(c[f>>2]|0,c[g>>2]&65535);a[(c[f>>2]|0)+2>>0]=(c[g>>2]|0)>>>16;l=e;return;}function xl(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(Jj()|0)!=0;d=c[h>>2]|0;if(f){yl(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function yl(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=b[h>>1]|0;h=c[g>>2]|0;a[h>>0]=e;a[h+1>>0]=e>>8;l=f;return;}function zl(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;d=l;l=l+48|0;f=d+32|0;g=d+28|0;h=d+24|0;i=d+20|0;j=d+16|0;k=d+12|0;m=d+8|0;n=d+4|0;o=d;c[f>>2]=b;c[g>>2]=c[c[f>>2]>>2];c[h>>2]=c[(c[f>>2]|0)+16>>2];c[i>>2]=c[(c[f>>2]|0)+24>>2];c[j>>2]=c[(c[f>>2]|0)+20>>2];c[k>>2]=((c[(c[f>>2]|0)+4>>2]|0)-(c[c[f>>2]>>2]|0)|0)/8|0;c[m>>2]=0;while(1){if((c[m>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;c[n>>2]=e[(c[g>>2]|0)+(c[m>>2]<<3)+4>>1];c[o>>2]=e[(c[g>>2]|0)+(c[m>>2]<<3)+6>>1];b=(Al(c[n>>2]|0)|0)&255;a[(c[h>>2]|0)+(c[m>>2]|0)>>0]=b;b=(uj(c[(c[g>>2]|0)+(c[m>>2]<<3)>>2]|0)|0)&255;a[(c[i>>2]|0)+(c[m>>2]|0)>>0]=b;b=(Bl(c[o>>2]|0)|0)&255;a[(c[j>>2]|0)+(c[m>>2]|0)>>0]=b;c[m>>2]=(c[m>>2]|0)+1;}if((c[(c[f>>2]|0)+28>>2]|0)==1)a[(c[h>>2]|0)+(c[(c[f>>2]|0)+32>>2]|0)>>0]=35;if((c[(c[f>>2]|0)+28>>2]|0)!=2){l=d;return;}a[(c[j>>2]|0)+(c[(c[f>>2]|0)+32>>2]|0)>>0]=52;l=d;return;}function Al(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;if((c[e>>2]|0)>>>0>63){f=(uj(a)|0)+19|0;l=b;return f|0;}else{f=d[3008+a>>0]|0;l=b;return f|0;}return 0;}function Bl(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;if((c[e>>2]|0)>>>0>127){f=(uj(a)|0)+36|0;l=b;return f|0;}else{f=d[3072+a>>0]|0;l=b;return f|0;}return 0;}function Cl(a,b,d,e,f,g,h,i,j,k,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;o=l;l=l+64|0;p=o+48|0;q=o+44|0;r=o+40|0;s=o+36|0;t=o+32|0;u=o+28|0;v=o+24|0;w=o+20|0;x=o+16|0;y=o+12|0;z=o+8|0;A=o+4|0;B=o;c[q>>2]=a;c[r>>2]=b;c[s>>2]=d;c[t>>2]=e;c[u>>2]=f;c[v>>2]=g;c[w>>2]=h;c[x>>2]=i;c[y>>2]=j;c[z>>2]=k;c[A>>2]=m;c[B>>2]=n;if(c[B>>2]|0){c[p>>2]=Dl(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;C=c[p>>2]|0;l=o;return C|0;}else{c[p>>2]=El(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;C=c[p>>2]|0;l=o;return C|0;}return 0;}function Dl(b,f,g,h,i,j,k,m,n,o,p){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;q=l;l=l+208|0;r=q+192|0;s=q+188|0;t=q+184|0;u=q+180|0;v=q+176|0;w=q+172|0;x=q+168|0;y=q+164|0;z=q+160|0;A=q+156|0;B=q+152|0;C=q+148|0;D=q+128|0;E=q+112|0;F=q+96|0;G=q+80|0;H=q+76|0;I=q+72|0;J=q+68|0;K=q+64|0;L=q+198|0;M=q+197|0;N=q+196|0;O=q+60|0;P=q+56|0;Q=q+52|0;R=q+48|0;S=q+44|0;T=q+40|0;U=q+36|0;V=q+32|0;W=q+28|0;X=q+24|0;Y=q+20|0;Z=q+16|0;_=q+12|0;$=q+8|0;aa=q+4|0;ba=q;c[T>>2]=b;c[U>>2]=f;c[V>>2]=g;c[W>>2]=h;c[X>>2]=i;c[Y>>2]=j;c[Z>>2]=k;c[_>>2]=m;c[$>>2]=n;c[aa>>2]=o;c[ba>>2]=p;p=c[U>>2]|0;U=c[V>>2]|0;V=c[W>>2]|0;W=c[X>>2]|0;X=c[Y>>2]|0;Y=c[Z>>2]|0;Z=c[_>>2]|0;_=c[$>>2]|0;$=c[aa>>2]|0;aa=c[ba>>2]|0;c[s>>2]=c[T>>2];c[t>>2]=p;c[u>>2]=U;c[v>>2]=V;c[w>>2]=W;c[x>>2]=X;c[y>>2]=Y;c[z>>2]=Z;c[A>>2]=_;c[B>>2]=$;c[C>>2]=aa;c[H>>2]=Fl(D,c[s>>2]|0,c[t>>2]|0)|0;if(wj(c[H>>2]|0)|0){c[r>>2]=-70;ca=c[r>>2]|0;l=q;return ca|0;}Gl(E,c[u>>2]|0,d[(c[v>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Gl(F,c[w>>2]|0,d[(c[x>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Gl(G,c[y>>2]|0,d[(c[z>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Hl(D,e[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)+4>>1]|0,c[5696+((d[(c[z>>2]|0)+((c[B>>2]|0)-1)>>0]|0)<<2)>>2]|0);if(Il()|0)Jl(D);Hl(D,e[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)+6>>1]|0,c[5840+((d[(c[v>>2]|0)+((c[B>>2]|0)-1)>>0]|0)<<2)>>2]|0);if(Il()|0)Jl(D);if(c[C>>2]|0){c[I>>2]=d[(c[x>>2]|0)+((c[B>>2]|0)-1)>>0];y=c[I>>2]|0;w=c[I>>2]|0;u=(Il()|0)!=0;if(w>>>0<((u?25:57)-1|0)>>>0)da=c[I>>2]|0;else{u=(Il()|0)!=0;da=(u?25:57)-1|0;}c[J>>2]=y-da;if(c[J>>2]|0){Hl(D,c[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)>>2]|0,c[J>>2]|0);Jl(D);}Hl(D,(c[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)>>2]|0)>>>(c[J>>2]|0),(c[I>>2]|0)-(c[J>>2]|0)|0);}else Hl(D,c[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)>>2]|0,d[(c[x>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Jl(D);c[K>>2]=(c[B>>2]|0)-2;while(1){if((c[K>>2]|0)>>>0>=(c[B>>2]|0)>>>0)break;a[L>>0]=a[(c[z>>2]|0)+(c[K>>2]|0)>>0]|0;a[M>>0]=a[(c[x>>2]|0)+(c[K>>2]|0)>>0]|0;a[N>>0]=a[(c[v>>2]|0)+(c[K>>2]|0)>>0]|0;c[O>>2]=c[5696+((d[L>>0]|0)<<2)>>2];c[P>>2]=d[M>>0];c[Q>>2]=c[5840+((d[N>>0]|0)<<2)>>2];Kl(D,F,d[M>>0]|0);Kl(D,E,d[N>>0]|0);if(Il()|0)Jl(D);Kl(D,G,d[L>>0]|0);if(!(!(Il()|0)?((c[P>>2]|0)+(c[Q>>2]|0)+(c[O>>2]|0)|0)>>>0<31:0))Jl(D);Hl(D,e[(c[A>>2]|0)+(c[K>>2]<<3)+4>>1]|0,c[O>>2]|0);if(Il()|0?((c[O>>2]|0)+(c[Q>>2]|0)|0)>>>0>24:0)Jl(D);Hl(D,e[(c[A>>2]|0)+(c[K>>2]<<3)+6>>1]|0,c[Q>>2]|0);if(!(!(Il()|0)?((c[P>>2]|0)+(c[Q>>2]|0)+(c[O>>2]|0)|0)>>>0<=56:0))Jl(D);if(c[C>>2]|0){J=c[P>>2]|0;I=c[P>>2]|0;da=(Il()|0)!=0;if(I>>>0<((da?25:57)-1|0)>>>0)ea=c[P>>2]|0;else{da=(Il()|0)!=0;ea=(da?25:57)-1|0;}c[R>>2]=J-ea;if(c[R>>2]|0){Hl(D,c[(c[A>>2]|0)+(c[K>>2]<<3)>>2]|0,c[R>>2]|0);Jl(D);}Hl(D,(c[(c[A>>2]|0)+(c[K>>2]<<3)>>2]|0)>>>(c[R>>2]|0),(c[P>>2]|0)-(c[R>>2]|0)|0);}else Hl(D,c[(c[A>>2]|0)+(c[K>>2]<<3)>>2]|0,c[P>>2]|0);Jl(D);c[K>>2]=(c[K>>2]|0)+-1;}Ll(D,E);Ll(D,F);Ll(D,G);c[S>>2]=Ml(D)|0;if(!(c[S>>2]|0)){c[r>>2]=-70;ca=c[r>>2]|0;l=q;return ca|0;}else{c[r>>2]=c[S>>2];ca=c[r>>2]|0;l=q;return ca|0;}return 0;}function El(b,f,g,h,i,j,k,m,n,o,p){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;q=l;l=l+208|0;r=q+192|0;s=q+188|0;t=q+184|0;u=q+180|0;v=q+176|0;w=q+172|0;x=q+168|0;y=q+164|0;z=q+160|0;A=q+156|0;B=q+152|0;C=q+148|0;D=q+128|0;E=q+112|0;F=q+96|0;G=q+80|0;H=q+76|0;I=q+72|0;J=q+68|0;K=q+64|0;L=q+198|0;M=q+197|0;N=q+196|0;O=q+60|0;P=q+56|0;Q=q+52|0;R=q+48|0;S=q+44|0;T=q+40|0;U=q+36|0;V=q+32|0;W=q+28|0;X=q+24|0;Y=q+20|0;Z=q+16|0;_=q+12|0;$=q+8|0;aa=q+4|0;ba=q;c[T>>2]=b;c[U>>2]=f;c[V>>2]=g;c[W>>2]=h;c[X>>2]=i;c[Y>>2]=j;c[Z>>2]=k;c[_>>2]=m;c[$>>2]=n;c[aa>>2]=o;c[ba>>2]=p;p=c[U>>2]|0;U=c[V>>2]|0;V=c[W>>2]|0;W=c[X>>2]|0;X=c[Y>>2]|0;Y=c[Z>>2]|0;Z=c[_>>2]|0;_=c[$>>2]|0;$=c[aa>>2]|0;aa=c[ba>>2]|0;c[s>>2]=c[T>>2];c[t>>2]=p;c[u>>2]=U;c[v>>2]=V;c[w>>2]=W;c[x>>2]=X;c[y>>2]=Y;c[z>>2]=Z;c[A>>2]=_;c[B>>2]=$;c[C>>2]=aa;c[H>>2]=Fl(D,c[s>>2]|0,c[t>>2]|0)|0;if(wj(c[H>>2]|0)|0){c[r>>2]=-70;ca=c[r>>2]|0;l=q;return ca|0;}Gl(E,c[u>>2]|0,d[(c[v>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Gl(F,c[w>>2]|0,d[(c[x>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Gl(G,c[y>>2]|0,d[(c[z>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Hl(D,e[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)+4>>1]|0,c[5696+((d[(c[z>>2]|0)+((c[B>>2]|0)-1)>>0]|0)<<2)>>2]|0);if(Il()|0)Jl(D);Hl(D,e[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)+6>>1]|0,c[5840+((d[(c[v>>2]|0)+((c[B>>2]|0)-1)>>0]|0)<<2)>>2]|0);if(Il()|0)Jl(D);if(c[C>>2]|0){c[I>>2]=d[(c[x>>2]|0)+((c[B>>2]|0)-1)>>0];y=c[I>>2]|0;w=c[I>>2]|0;u=(Il()|0)!=0;if(w>>>0<((u?25:57)-1|0)>>>0)da=c[I>>2]|0;else{u=(Il()|0)!=0;da=(u?25:57)-1|0;}c[J>>2]=y-da;if(c[J>>2]|0){Hl(D,c[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)>>2]|0,c[J>>2]|0);Jl(D);}Hl(D,(c[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)>>2]|0)>>>(c[J>>2]|0),(c[I>>2]|0)-(c[J>>2]|0)|0);}else Hl(D,c[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)>>2]|0,d[(c[x>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Jl(D);c[K>>2]=(c[B>>2]|0)-2;while(1){if((c[K>>2]|0)>>>0>=(c[B>>2]|0)>>>0)break;a[L>>0]=a[(c[z>>2]|0)+(c[K>>2]|0)>>0]|0;a[M>>0]=a[(c[x>>2]|0)+(c[K>>2]|0)>>0]|0;a[N>>0]=a[(c[v>>2]|0)+(c[K>>2]|0)>>0]|0;c[O>>2]=c[5696+((d[L>>0]|0)<<2)>>2];c[P>>2]=d[M>>0];c[Q>>2]=c[5840+((d[N>>0]|0)<<2)>>2];Kl(D,F,d[M>>0]|0);Kl(D,E,d[N>>0]|0);if(Il()|0)Jl(D);Kl(D,G,d[L>>0]|0);if(!(!(Il()|0)?((c[P>>2]|0)+(c[Q>>2]|0)+(c[O>>2]|0)|0)>>>0<31:0))Jl(D);Hl(D,e[(c[A>>2]|0)+(c[K>>2]<<3)+4>>1]|0,c[O>>2]|0);if(Il()|0?((c[O>>2]|0)+(c[Q>>2]|0)|0)>>>0>24:0)Jl(D);Hl(D,e[(c[A>>2]|0)+(c[K>>2]<<3)+6>>1]|0,c[Q>>2]|0);if(!(!(Il()|0)?((c[P>>2]|0)+(c[Q>>2]|0)+(c[O>>2]|0)|0)>>>0<=56:0))Jl(D);if(c[C>>2]|0){J=c[P>>2]|0;I=c[P>>2]|0;da=(Il()|0)!=0;if(I>>>0<((da?25:57)-1|0)>>>0)ea=c[P>>2]|0;else{da=(Il()|0)!=0;ea=(da?25:57)-1|0;}c[R>>2]=J-ea;if(c[R>>2]|0){Hl(D,c[(c[A>>2]|0)+(c[K>>2]<<3)>>2]|0,c[R>>2]|0);Jl(D);}Hl(D,(c[(c[A>>2]|0)+(c[K>>2]<<3)>>2]|0)>>>(c[R>>2]|0),(c[P>>2]|0)-(c[R>>2]|0)|0);}else Hl(D,c[(c[A>>2]|0)+(c[K>>2]<<3)>>2]|0,c[P>>2]|0);Jl(D);c[K>>2]=(c[K>>2]|0)+-1;}Ll(D,E);Ll(D,F);Ll(D,G);c[S>>2]=Ml(D)|0;if(!(c[S>>2]|0)){c[r>>2]=-70;ca=c[r>>2]|0;l=q;return ca|0;}else{c[r>>2]=c[S>>2];ca=c[r>>2]|0;l=q;return ca|0;}return 0;}function Fl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[c[g>>2]>>2]=0;c[(c[g>>2]|0)+4>>2]=0;c[(c[g>>2]|0)+8>>2]=c[h>>2];c[(c[g>>2]|0)+12>>2]=c[(c[g>>2]|0)+8>>2];c[(c[g>>2]|0)+16>>2]=(c[(c[g>>2]|0)+8>>2]|0)+(c[i>>2]|0)+-4;if((c[i>>2]|0)>>>0<=4){c[f>>2]=-70;j=c[f>>2]|0;l=e;return j|0;}else{c[f>>2]=0;j=c[f>>2]|0;l=e;return j|0;}return 0;}function Gl(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;Ul(c[g>>2]|0,c[h>>2]|0);h=(c[(c[g>>2]|0)+8>>2]|0)+(c[i>>2]<<3)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[k>>2]=c[(c[g>>2]|0)+4>>2];c[m>>2]=((c[j+4>>2]|0)+32768|0)>>>16;c[c[g>>2]>>2]=(c[m>>2]<<16)-(c[j+4>>2]|0);c[c[g>>2]>>2]=e[(c[k>>2]|0)+((c[c[g>>2]>>2]>>c[m>>2])+(c[j>>2]|0)<<1)>>1];l=f;return;}function Hl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=c[f>>2]|0;c[d>>2]=c[d>>2]|(c[g>>2]&c[2800+(c[h>>2]<<2)>>2])<<c[(c[f>>2]|0)+4>>2];g=(c[f>>2]|0)+4|0;c[g>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function Il(){return 1;}function Jl(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=(c[(c[d>>2]|0)+4>>2]|0)>>>3;Ol(c[(c[d>>2]|0)+12>>2]|0,c[c[d>>2]>>2]|0);a=(c[d>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+(c[e>>2]|0);if((c[(c[d>>2]|0)+12>>2]|0)>>>0>(c[(c[d>>2]|0)+16>>2]|0)>>>0)c[(c[d>>2]|0)+12>>2]=c[(c[d>>2]|0)+16>>2];a=(c[d>>2]|0)+4|0;c[a>>2]=c[a>>2]&7;a=c[d>>2]|0;c[a>>2]=(c[a>>2]|0)>>>(c[e>>2]<<3);l=b;return;}function Kl(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;d=(c[(c[h>>2]|0)+8>>2]|0)+(c[i>>2]<<3)|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[k>>2]=c[(c[h>>2]|0)+4>>2];c[m>>2]=((c[c[h>>2]>>2]|0)+(c[j+4>>2]|0)|0)>>>16;Hl(c[g>>2]|0,c[c[h>>2]>>2]|0,c[m>>2]|0);c[c[h>>2]>>2]=e[(c[k>>2]|0)+((c[c[h>>2]>>2]>>c[m>>2])+(c[j>>2]|0)<<1)>>1];l=f;return;}function Ll(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;Hl(c[e>>2]|0,c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+12>>2]|0);Jl(c[e>>2]|0);l=d;return;}function Ml(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;Nl(c[e>>2]|0,1,1);Jl(c[e>>2]|0);if((c[(c[e>>2]|0)+12>>2]|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{c[d>>2]=(c[(c[e>>2]|0)+12>>2]|0)-(c[(c[e>>2]|0)+8>>2]|0)+((c[(c[e>>2]|0)+4>>2]|0)>>>0>0&1);f=c[d>>2]|0;l=b;return f|0;}return 0;}function Nl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=c[f>>2]|0;c[d>>2]=c[d>>2]|c[g>>2]<<c[(c[f>>2]|0)+4>>2];g=(c[f>>2]|0)+4|0;c[g>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function Ol(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(Il()|0)!=0;a=c[e>>2]|0;e=c[f>>2]|0;if(b){Pl(a,e);l=d;return;}else{Ql(a,e,0);l=d;return;}}function Pl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(Jj()|0)!=0;a=c[e>>2]|0;e=c[f>>2]|0;if(b){Tl(a,e);l=d;return;}else{Tl(a,Lj(e)|0);l=d;return;}}function Ql(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;d=(Jj()|0)!=0;a=c[f>>2]|0;f=g;g=c[f>>2]|0;b=c[f+4>>2]|0;if(d){Rl(a,g,b);l=e;return;}else{d=Sl(g,b)|0;Rl(a,d,y);l=e;return;}}function Rl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f+8|0;h=f;c[g>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;e=h;h=c[e>>2]|0;b=c[e+4>>2]|0;e=c[g>>2]|0;g=e;a[g>>0]=h;a[g+1>>0]=h>>8;a[g+2>>0]=h>>16;a[g+3>>0]=h>>24;h=e+4|0;a[h>>0]=b;a[h+1>>0]=b>>8;a[h+2>>0]=b>>16;a[h+3>>0]=b>>24;l=f;return;}function Sl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Tl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[g>>2]|0;g=c[f>>2]|0;a[g>>0]=d;a[g+1>>0]=d>>8;a[g+2>>0]=d>>16;a[g+3>>0]=d>>24;l=e;return;}function Ul(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;i=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=c[f>>2];c[h>>2]=c[g>>2];c[i>>2]=(Vl(c[g>>2]|0)|0)&65535;c[c[e>>2]>>2]=1<<c[i>>2];c[(c[e>>2]|0)+4>>2]=(c[h>>2]|0)+4;if(c[i>>2]|0)j=1<<(c[i>>2]|0)-1;else j=1;c[(c[e>>2]|0)+8>>2]=(c[f>>2]|0)+4+(j<<2);c[(c[e>>2]|0)+12>>2]=c[i>>2];l=d;return;}function Vl(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function Wl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;l=d;return c[2928+(((c[f>>2]|0)!=0&1)*36|0)+(c[e>>2]<<2)>>2]|0;}function Xl(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0;i=l;l=l+512|0;j=i+500|0;k=i+496|0;m=i+492|0;n=i+488|0;o=i+484|0;p=i+480|0;q=i+476|0;r=i+472|0;s=i+468|0;t=i+464|0;u=i+460|0;v=i+456|0;w=i+452|0;x=i+448|0;y=i+444|0;z=i+440|0;A=i+436|0;B=i+432|0;C=i+428|0;D=i+424|0;E=i+420|0;F=i+416|0;G=i+412|0;H=i+408|0;I=i+404|0;J=i+400|0;K=i+396|0;L=i+392|0;M=i+388|0;N=i+384|0;O=i+380|0;P=i+376|0;Q=i+372|0;R=i+368|0;S=i+364|0;T=i+360|0;U=i+356|0;V=i+352|0;W=i+348|0;X=i+344|0;Y=i+340|0;Z=i+336|0;_=i+332|0;$=i+328|0;aa=i+324|0;ba=i+320|0;ca=i+316|0;da=i+312|0;ea=i+308|0;fa=i+304|0;ga=i+300|0;ha=i+296|0;ia=i+292|0;ja=i+288|0;ka=i+284|0;la=i+280|0;ma=i+276|0;na=i+272|0;oa=i+268|0;pa=i+264|0;qa=i+260|0;ra=i+256|0;sa=i+252|0;ta=i+248|0;ua=i+244|0;va=i+240|0;wa=i+236|0;xa=i+232|0;ya=i+228|0;za=i+224|0;Aa=i+220|0;Ba=i+216|0;Ca=i+212|0;Da=i+208|0;Ea=i+204|0;Fa=i+200|0;Ga=i+196|0;Ha=i+192|0;Ia=i+188|0;Ja=i+184|0;Ka=i+180|0;La=i+176|0;Ma=i+172|0;Na=i+168|0;Oa=i+164|0;Pa=i+160|0;Qa=i+156|0;Ra=i+152|0;Sa=i+148|0;Ta=i+144|0;Ua=i+140|0;Va=i+136|0;Wa=i+132|0;Xa=i+128|0;Ya=i+124|0;Za=i+120|0;_a=i+116|0;$a=i+112|0;ab=i+108|0;bb=i+104|0;cb=i+100|0;db=i+96|0;eb=i+92|0;fb=i+88|0;gb=i+84|0;hb=i+80|0;ib=i+76|0;jb=i+72|0;kb=i+68|0;lb=i+64|0;mb=i+60|0;nb=i+56|0;ob=i+52|0;pb=i+48|0;qb=i+44|0;rb=i+40|0;sb=i+36|0;tb=i+32|0;ub=i+28|0;vb=i+24|0;wb=i+20|0;xb=i+16|0;yb=i+12|0;zb=i+8|0;Ab=i+4|0;Bb=i;c[tb>>2]=a;c[ub>>2]=b;c[vb>>2]=e;c[wb>>2]=f;c[xb>>2]=g;c[yb>>2]=h;c[zb>>2]=c[(c[wb>>2]|0)+8>>2];c[Ab>>2]=c[(c[wb>>2]|0)+16>>2];c[Bb>>2]=c[(c[wb>>2]|0)+20>>2];switch(c[Ab>>2]|0){case 7:{Ab=c[ub>>2]|0;wb=c[vb>>2]|0;h=c[xb>>2]|0;g=c[yb>>2]|0;f=c[zb>>2]|0;e=c[Bb>>2]|0;c[j>>2]=c[tb>>2];c[k>>2]=Ab;c[m>>2]=wb;c[n>>2]=h;c[o>>2]=g;c[p>>2]=f;c[q>>2]=e;c[r>>2]=7;c[s>>2]=c[(c[j>>2]|0)+36>>2];c[t>>2]=c[(c[j>>2]|0)+4>>2];c[u>>2]=c[n>>2];c[v>>2]=c[u>>2];c[w>>2]=c[u>>2];c[x>>2]=c[(c[j>>2]|0)+12>>2];c[y>>2]=(c[t>>2]|0)+(c[x>>2]|0);c[z>>2]=(c[u>>2]|0)+(c[o>>2]|0);c[A>>2]=(c[z>>2]|0)+-8;c[B>>2]=c[c[m>>2]>>2];c[C>>2]=c[(c[m>>2]|0)+4>>2];c[D>>2]=0;c[v>>2]=(c[v>>2]|0)+((c[v>>2]|0)==(c[y>>2]|0)&1);c[E>>2]=(c[v>>2]|0)-(c[y>>2]|0);if((c[C>>2]|0)>>>0>(c[E>>2]|0)>>>0){c[D>>2]=c[C>>2];c[C>>2]=0;}if((c[B>>2]|0)>>>0>(c[E>>2]|0)>>>0){c[D>>2]=c[B>>2];c[B>>2]=0;}a:while(1){if((c[v>>2]|0)>>>0>=(c[A>>2]|0)>>>0)break;c[G>>2]=Tk(c[v>>2]|0,c[p>>2]|0,c[r>>2]|0)|0;c[H>>2]=(c[v>>2]|0)-(c[t>>2]|0);c[I>>2]=c[(c[s>>2]|0)+(c[G>>2]<<2)>>2];c[J>>2]=(c[t>>2]|0)+(c[I>>2]|0);c[(c[s>>2]|0)+(c[G>>2]<<2)>>2]=c[H>>2];E=(c[B>>2]|0)>>>0>0&1;o=fl((c[v>>2]|0)+1+(0-(c[B>>2]|0))|0)|0;do{if(E&(o|0)==(fl((c[v>>2]|0)+1|0)|0)|0){c[F>>2]=(nn((c[v>>2]|0)+1+4|0,(c[v>>2]|0)+1+4+(0-(c[B>>2]|0))|0,c[z>>2]|0)|0)+4;c[v>>2]=(c[v>>2]|0)+1;kn(c[k>>2]|0,(c[v>>2]|0)-(c[w>>2]|0)|0,c[w>>2]|0,0,(c[F>>2]|0)-3|0);}else{if((c[I>>2]|0)>>>0>(c[x>>2]|0)>>>0?(u=fl(c[J>>2]|0)|0,(u|0)==(fl(c[v>>2]|0)|0)):0){c[F>>2]=(nn((c[v>>2]|0)+4|0,(c[J>>2]|0)+4|0,c[z>>2]|0)|0)+4;c[K>>2]=(c[v>>2]|0)-(c[J>>2]|0);while(1){if(!(((c[v>>2]|0)>>>0>(c[w>>2]|0)>>>0?(c[J>>2]|0)>>>0>(c[y>>2]|0)>>>0:0)|0))break;if((d[(c[v>>2]|0)+-1>>0]|0|0)!=(d[(c[J>>2]|0)+-1>>0]|0|0))break;c[v>>2]=(c[v>>2]|0)+-1;c[J>>2]=(c[J>>2]|0)+-1;c[F>>2]=(c[F>>2]|0)+1;}c[C>>2]=c[B>>2];c[B>>2]=c[K>>2];kn(c[k>>2]|0,(c[v>>2]|0)-(c[w>>2]|0)|0,c[w>>2]|0,(c[K>>2]|0)+2|0,(c[F>>2]|0)-3|0);break;}c[v>>2]=(c[v>>2]|0)+(((c[v>>2]|0)-(c[w>>2]|0)>>8)+(c[q>>2]|0));continue a;}}while(0);c[v>>2]=(c[v>>2]|0)+(c[F>>2]|0);c[w>>2]=c[v>>2];b:do{if((c[v>>2]|0)>>>0<=(c[A>>2]|0)>>>0){o=(c[H>>2]|0)+2|0;E=c[s>>2]|0;c[E+((Tk((c[t>>2]|0)+(c[H>>2]|0)+2|0,c[p>>2]|0,c[r>>2]|0)|0)<<2)>>2]=o;o=(c[v>>2]|0)+-2-(c[t>>2]|0)|0;E=c[s>>2]|0;c[E+((Tk((c[v>>2]|0)+-2|0,c[p>>2]|0,c[r>>2]|0)|0)<<2)>>2]=o;while(1){if((c[v>>2]|0)>>>0>(c[A>>2]|0)>>>0)break b;o=(c[C>>2]|0)>>>0>0&1;E=fl(c[v>>2]|0)|0;if(!(o&(E|0)==(fl((c[v>>2]|0)+(0-(c[C>>2]|0))|0)|0)))break b;c[L>>2]=(nn((c[v>>2]|0)+4|0,(c[v>>2]|0)+4+(0-(c[C>>2]|0))|0,c[z>>2]|0)|0)+4;c[M>>2]=c[C>>2];c[C>>2]=c[B>>2];c[B>>2]=c[M>>2];E=(c[v>>2]|0)-(c[t>>2]|0)|0;o=c[s>>2]|0;c[o+((Tk(c[v>>2]|0,c[p>>2]|0,c[r>>2]|0)|0)<<2)>>2]=E;kn(c[k>>2]|0,0,c[w>>2]|0,0,(c[L>>2]|0)-3|0);c[v>>2]=(c[v>>2]|0)+(c[L>>2]|0);c[w>>2]=c[v>>2];}}}while(0);}c[c[m>>2]>>2]=c[B>>2]|0?c[B>>2]|0:c[D>>2]|0;c[(c[m>>2]|0)+4>>2]=c[C>>2]|0?c[C>>2]|0:c[D>>2]|0;c[sb>>2]=(c[z>>2]|0)-(c[w>>2]|0);Cb=c[sb>>2]|0;l=i;return Cb|0;}case 5:{w=c[ub>>2]|0;z=c[vb>>2]|0;D=c[xb>>2]|0;C=c[yb>>2]|0;m=c[zb>>2]|0;B=c[Bb>>2]|0;c[oa>>2]=c[tb>>2];c[pa>>2]=w;c[qa>>2]=z;c[ra>>2]=D;c[sa>>2]=C;c[ta>>2]=m;c[ua>>2]=B;c[va>>2]=5;c[wa>>2]=c[(c[oa>>2]|0)+36>>2];c[xa>>2]=c[(c[oa>>2]|0)+4>>2];c[ya>>2]=c[ra>>2];c[za>>2]=c[ya>>2];c[Aa>>2]=c[ya>>2];c[Ba>>2]=c[(c[oa>>2]|0)+12>>2];c[Ca>>2]=(c[xa>>2]|0)+(c[Ba>>2]|0);c[Da>>2]=(c[ya>>2]|0)+(c[sa>>2]|0);c[Ea>>2]=(c[Da>>2]|0)+-8;c[Fa>>2]=c[c[qa>>2]>>2];c[Ga>>2]=c[(c[qa>>2]|0)+4>>2];c[Ha>>2]=0;c[za>>2]=(c[za>>2]|0)+((c[za>>2]|0)==(c[Ca>>2]|0)&1);c[Ia>>2]=(c[za>>2]|0)-(c[Ca>>2]|0);if((c[Ga>>2]|0)>>>0>(c[Ia>>2]|0)>>>0){c[Ha>>2]=c[Ga>>2];c[Ga>>2]=0;}if((c[Fa>>2]|0)>>>0>(c[Ia>>2]|0)>>>0){c[Ha>>2]=c[Fa>>2];c[Fa>>2]=0;}c:while(1){if((c[za>>2]|0)>>>0>=(c[Ea>>2]|0)>>>0)break;c[Ka>>2]=Tk(c[za>>2]|0,c[ta>>2]|0,c[va>>2]|0)|0;c[La>>2]=(c[za>>2]|0)-(c[xa>>2]|0);c[Ma>>2]=c[(c[wa>>2]|0)+(c[Ka>>2]<<2)>>2];c[Na>>2]=(c[xa>>2]|0)+(c[Ma>>2]|0);c[(c[wa>>2]|0)+(c[Ka>>2]<<2)>>2]=c[La>>2];Ia=(c[Fa>>2]|0)>>>0>0&1;sa=fl((c[za>>2]|0)+1+(0-(c[Fa>>2]|0))|0)|0;do{if(Ia&(sa|0)==(fl((c[za>>2]|0)+1|0)|0)|0){c[Ja>>2]=(nn((c[za>>2]|0)+1+4|0,(c[za>>2]|0)+1+4+(0-(c[Fa>>2]|0))|0,c[Da>>2]|0)|0)+4;c[za>>2]=(c[za>>2]|0)+1;kn(c[pa>>2]|0,(c[za>>2]|0)-(c[Aa>>2]|0)|0,c[Aa>>2]|0,0,(c[Ja>>2]|0)-3|0);}else{if((c[Ma>>2]|0)>>>0>(c[Ba>>2]|0)>>>0?(ya=fl(c[Na>>2]|0)|0,(ya|0)==(fl(c[za>>2]|0)|0)):0){c[Ja>>2]=(nn((c[za>>2]|0)+4|0,(c[Na>>2]|0)+4|0,c[Da>>2]|0)|0)+4;c[Oa>>2]=(c[za>>2]|0)-(c[Na>>2]|0);while(1){if(!(((c[za>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?(c[Na>>2]|0)>>>0>(c[Ca>>2]|0)>>>0:0)|0))break;if((d[(c[za>>2]|0)+-1>>0]|0|0)!=(d[(c[Na>>2]|0)+-1>>0]|0|0))break;c[za>>2]=(c[za>>2]|0)+-1;c[Na>>2]=(c[Na>>2]|0)+-1;c[Ja>>2]=(c[Ja>>2]|0)+1;}c[Ga>>2]=c[Fa>>2];c[Fa>>2]=c[Oa>>2];kn(c[pa>>2]|0,(c[za>>2]|0)-(c[Aa>>2]|0)|0,c[Aa>>2]|0,(c[Oa>>2]|0)+2|0,(c[Ja>>2]|0)-3|0);break;}c[za>>2]=(c[za>>2]|0)+(((c[za>>2]|0)-(c[Aa>>2]|0)>>8)+(c[ua>>2]|0));continue c;}}while(0);c[za>>2]=(c[za>>2]|0)+(c[Ja>>2]|0);c[Aa>>2]=c[za>>2];d:do{if((c[za>>2]|0)>>>0<=(c[Ea>>2]|0)>>>0){sa=(c[La>>2]|0)+2|0;Ia=c[wa>>2]|0;c[Ia+((Tk((c[xa>>2]|0)+(c[La>>2]|0)+2|0,c[ta>>2]|0,c[va>>2]|0)|0)<<2)>>2]=sa;sa=(c[za>>2]|0)+-2-(c[xa>>2]|0)|0;Ia=c[wa>>2]|0;c[Ia+((Tk((c[za>>2]|0)+-2|0,c[ta>>2]|0,c[va>>2]|0)|0)<<2)>>2]=sa;while(1){if((c[za>>2]|0)>>>0>(c[Ea>>2]|0)>>>0)break d;sa=(c[Ga>>2]|0)>>>0>0&1;Ia=fl(c[za>>2]|0)|0;if(!(sa&(Ia|0)==(fl((c[za>>2]|0)+(0-(c[Ga>>2]|0))|0)|0)))break d;c[Pa>>2]=(nn((c[za>>2]|0)+4|0,(c[za>>2]|0)+4+(0-(c[Ga>>2]|0))|0,c[Da>>2]|0)|0)+4;c[Qa>>2]=c[Ga>>2];c[Ga>>2]=c[Fa>>2];c[Fa>>2]=c[Qa>>2];Ia=(c[za>>2]|0)-(c[xa>>2]|0)|0;sa=c[wa>>2]|0;c[sa+((Tk(c[za>>2]|0,c[ta>>2]|0,c[va>>2]|0)|0)<<2)>>2]=Ia;kn(c[pa>>2]|0,0,c[Aa>>2]|0,0,(c[Pa>>2]|0)-3|0);c[za>>2]=(c[za>>2]|0)+(c[Pa>>2]|0);c[Aa>>2]=c[za>>2];}}}while(0);}c[c[qa>>2]>>2]=c[Fa>>2]|0?c[Fa>>2]|0:c[Ha>>2]|0;c[(c[qa>>2]|0)+4>>2]=c[Ga>>2]|0?c[Ga>>2]|0:c[Ha>>2]|0;c[sb>>2]=(c[Da>>2]|0)-(c[Aa>>2]|0);Cb=c[sb>>2]|0;l=i;return Cb|0;}case 6:{Aa=c[ub>>2]|0;Da=c[vb>>2]|0;Ha=c[xb>>2]|0;Ga=c[yb>>2]|0;qa=c[zb>>2]|0;Fa=c[Bb>>2]|0;c[N>>2]=c[tb>>2];c[O>>2]=Aa;c[P>>2]=Da;c[Q>>2]=Ha;c[R>>2]=Ga;c[S>>2]=qa;c[T>>2]=Fa;c[U>>2]=6;c[V>>2]=c[(c[N>>2]|0)+36>>2];c[W>>2]=c[(c[N>>2]|0)+4>>2];c[X>>2]=c[Q>>2];c[Y>>2]=c[X>>2];c[Z>>2]=c[X>>2];c[_>>2]=c[(c[N>>2]|0)+12>>2];c[$>>2]=(c[W>>2]|0)+(c[_>>2]|0);c[aa>>2]=(c[X>>2]|0)+(c[R>>2]|0);c[ba>>2]=(c[aa>>2]|0)+-8;c[ca>>2]=c[c[P>>2]>>2];c[da>>2]=c[(c[P>>2]|0)+4>>2];c[ea>>2]=0;c[Y>>2]=(c[Y>>2]|0)+((c[Y>>2]|0)==(c[$>>2]|0)&1);c[fa>>2]=(c[Y>>2]|0)-(c[$>>2]|0);if((c[da>>2]|0)>>>0>(c[fa>>2]|0)>>>0){c[ea>>2]=c[da>>2];c[da>>2]=0;}if((c[ca>>2]|0)>>>0>(c[fa>>2]|0)>>>0){c[ea>>2]=c[ca>>2];c[ca>>2]=0;}e:while(1){if((c[Y>>2]|0)>>>0>=(c[ba>>2]|0)>>>0)break;c[ha>>2]=Tk(c[Y>>2]|0,c[S>>2]|0,c[U>>2]|0)|0;c[ia>>2]=(c[Y>>2]|0)-(c[W>>2]|0);c[ja>>2]=c[(c[V>>2]|0)+(c[ha>>2]<<2)>>2];c[ka>>2]=(c[W>>2]|0)+(c[ja>>2]|0);c[(c[V>>2]|0)+(c[ha>>2]<<2)>>2]=c[ia>>2];fa=(c[ca>>2]|0)>>>0>0&1;R=fl((c[Y>>2]|0)+1+(0-(c[ca>>2]|0))|0)|0;do{if(fa&(R|0)==(fl((c[Y>>2]|0)+1|0)|0)|0){c[ga>>2]=(nn((c[Y>>2]|0)+1+4|0,(c[Y>>2]|0)+1+4+(0-(c[ca>>2]|0))|0,c[aa>>2]|0)|0)+4;c[Y>>2]=(c[Y>>2]|0)+1;kn(c[O>>2]|0,(c[Y>>2]|0)-(c[Z>>2]|0)|0,c[Z>>2]|0,0,(c[ga>>2]|0)-3|0);}else{if((c[ja>>2]|0)>>>0>(c[_>>2]|0)>>>0?(X=fl(c[ka>>2]|0)|0,(X|0)==(fl(c[Y>>2]|0)|0)):0){c[ga>>2]=(nn((c[Y>>2]|0)+4|0,(c[ka>>2]|0)+4|0,c[aa>>2]|0)|0)+4;c[la>>2]=(c[Y>>2]|0)-(c[ka>>2]|0);while(1){if(!(((c[Y>>2]|0)>>>0>(c[Z>>2]|0)>>>0?(c[ka>>2]|0)>>>0>(c[$>>2]|0)>>>0:0)|0))break;if((d[(c[Y>>2]|0)+-1>>0]|0|0)!=(d[(c[ka>>2]|0)+-1>>0]|0|0))break;c[Y>>2]=(c[Y>>2]|0)+-1;c[ka>>2]=(c[ka>>2]|0)+-1;c[ga>>2]=(c[ga>>2]|0)+1;}c[da>>2]=c[ca>>2];c[ca>>2]=c[la>>2];kn(c[O>>2]|0,(c[Y>>2]|0)-(c[Z>>2]|0)|0,c[Z>>2]|0,(c[la>>2]|0)+2|0,(c[ga>>2]|0)-3|0);break;}c[Y>>2]=(c[Y>>2]|0)+(((c[Y>>2]|0)-(c[Z>>2]|0)>>8)+(c[T>>2]|0));continue e;}}while(0);c[Y>>2]=(c[Y>>2]|0)+(c[ga>>2]|0);c[Z>>2]=c[Y>>2];f:do{if((c[Y>>2]|0)>>>0<=(c[ba>>2]|0)>>>0){R=(c[ia>>2]|0)+2|0;fa=c[V>>2]|0;c[fa+((Tk((c[W>>2]|0)+(c[ia>>2]|0)+2|0,c[S>>2]|0,c[U>>2]|0)|0)<<2)>>2]=R;R=(c[Y>>2]|0)+-2-(c[W>>2]|0)|0;fa=c[V>>2]|0;c[fa+((Tk((c[Y>>2]|0)+-2|0,c[S>>2]|0,c[U>>2]|0)|0)<<2)>>2]=R;while(1){if((c[Y>>2]|0)>>>0>(c[ba>>2]|0)>>>0)break f;R=(c[da>>2]|0)>>>0>0&1;fa=fl(c[Y>>2]|0)|0;if(!(R&(fa|0)==(fl((c[Y>>2]|0)+(0-(c[da>>2]|0))|0)|0)))break f;c[ma>>2]=(nn((c[Y>>2]|0)+4|0,(c[Y>>2]|0)+4+(0-(c[da>>2]|0))|0,c[aa>>2]|0)|0)+4;c[na>>2]=c[da>>2];c[da>>2]=c[ca>>2];c[ca>>2]=c[na>>2];fa=(c[Y>>2]|0)-(c[W>>2]|0)|0;R=c[V>>2]|0;c[R+((Tk(c[Y>>2]|0,c[S>>2]|0,c[U>>2]|0)|0)<<2)>>2]=fa;kn(c[O>>2]|0,0,c[Z>>2]|0,0,(c[ma>>2]|0)-3|0);c[Y>>2]=(c[Y>>2]|0)+(c[ma>>2]|0);c[Z>>2]=c[Y>>2];}}}while(0);}c[c[P>>2]>>2]=c[ca>>2]|0?c[ca>>2]|0:c[ea>>2]|0;c[(c[P>>2]|0)+4>>2]=c[da>>2]|0?c[da>>2]|0:c[ea>>2]|0;c[sb>>2]=(c[aa>>2]|0)-(c[Z>>2]|0);Cb=c[sb>>2]|0;l=i;return Cb|0;}default:{Z=c[ub>>2]|0;ub=c[vb>>2]|0;vb=c[xb>>2]|0;xb=c[yb>>2]|0;yb=c[zb>>2]|0;zb=c[Bb>>2]|0;c[Ra>>2]=c[tb>>2];c[Sa>>2]=Z;c[Ta>>2]=ub;c[Ua>>2]=vb;c[Va>>2]=xb;c[Wa>>2]=yb;c[Xa>>2]=zb;c[Ya>>2]=4;c[Za>>2]=c[(c[Ra>>2]|0)+36>>2];c[_a>>2]=c[(c[Ra>>2]|0)+4>>2];c[$a>>2]=c[Ua>>2];c[ab>>2]=c[$a>>2];c[bb>>2]=c[$a>>2];c[cb>>2]=c[(c[Ra>>2]|0)+12>>2];c[db>>2]=(c[_a>>2]|0)+(c[cb>>2]|0);c[eb>>2]=(c[$a>>2]|0)+(c[Va>>2]|0);c[fb>>2]=(c[eb>>2]|0)+-8;c[gb>>2]=c[c[Ta>>2]>>2];c[hb>>2]=c[(c[Ta>>2]|0)+4>>2];c[ib>>2]=0;c[ab>>2]=(c[ab>>2]|0)+((c[ab>>2]|0)==(c[db>>2]|0)&1);c[jb>>2]=(c[ab>>2]|0)-(c[db>>2]|0);if((c[hb>>2]|0)>>>0>(c[jb>>2]|0)>>>0){c[ib>>2]=c[hb>>2];c[hb>>2]=0;}if((c[gb>>2]|0)>>>0>(c[jb>>2]|0)>>>0){c[ib>>2]=c[gb>>2];c[gb>>2]=0;}g:while(1){if((c[ab>>2]|0)>>>0>=(c[fb>>2]|0)>>>0)break;c[lb>>2]=Tk(c[ab>>2]|0,c[Wa>>2]|0,c[Ya>>2]|0)|0;c[mb>>2]=(c[ab>>2]|0)-(c[_a>>2]|0);c[nb>>2]=c[(c[Za>>2]|0)+(c[lb>>2]<<2)>>2];c[ob>>2]=(c[_a>>2]|0)+(c[nb>>2]|0);c[(c[Za>>2]|0)+(c[lb>>2]<<2)>>2]=c[mb>>2];jb=(c[gb>>2]|0)>>>0>0&1;Va=fl((c[ab>>2]|0)+1+(0-(c[gb>>2]|0))|0)|0;do{if(jb&(Va|0)==(fl((c[ab>>2]|0)+1|0)|0)|0){c[kb>>2]=(nn((c[ab>>2]|0)+1+4|0,(c[ab>>2]|0)+1+4+(0-(c[gb>>2]|0))|0,c[eb>>2]|0)|0)+4;c[ab>>2]=(c[ab>>2]|0)+1;kn(c[Sa>>2]|0,(c[ab>>2]|0)-(c[bb>>2]|0)|0,c[bb>>2]|0,0,(c[kb>>2]|0)-3|0);}else{if((c[nb>>2]|0)>>>0>(c[cb>>2]|0)>>>0?($a=fl(c[ob>>2]|0)|0,($a|0)==(fl(c[ab>>2]|0)|0)):0){c[kb>>2]=(nn((c[ab>>2]|0)+4|0,(c[ob>>2]|0)+4|0,c[eb>>2]|0)|0)+4;c[pb>>2]=(c[ab>>2]|0)-(c[ob>>2]|0);while(1){if(!(((c[ab>>2]|0)>>>0>(c[bb>>2]|0)>>>0?(c[ob>>2]|0)>>>0>(c[db>>2]|0)>>>0:0)|0))break;if((d[(c[ab>>2]|0)+-1>>0]|0|0)!=(d[(c[ob>>2]|0)+-1>>0]|0|0))break;c[ab>>2]=(c[ab>>2]|0)+-1;c[ob>>2]=(c[ob>>2]|0)+-1;c[kb>>2]=(c[kb>>2]|0)+1;}c[hb>>2]=c[gb>>2];c[gb>>2]=c[pb>>2];kn(c[Sa>>2]|0,(c[ab>>2]|0)-(c[bb>>2]|0)|0,c[bb>>2]|0,(c[pb>>2]|0)+2|0,(c[kb>>2]|0)-3|0);break;}c[ab>>2]=(c[ab>>2]|0)+(((c[ab>>2]|0)-(c[bb>>2]|0)>>8)+(c[Xa>>2]|0));continue g;}}while(0);c[ab>>2]=(c[ab>>2]|0)+(c[kb>>2]|0);c[bb>>2]=c[ab>>2];h:do{if((c[ab>>2]|0)>>>0<=(c[fb>>2]|0)>>>0){Va=(c[mb>>2]|0)+2|0;jb=c[Za>>2]|0;c[jb+((Tk((c[_a>>2]|0)+(c[mb>>2]|0)+2|0,c[Wa>>2]|0,c[Ya>>2]|0)|0)<<2)>>2]=Va;Va=(c[ab>>2]|0)+-2-(c[_a>>2]|0)|0;jb=c[Za>>2]|0;c[jb+((Tk((c[ab>>2]|0)+-2|0,c[Wa>>2]|0,c[Ya>>2]|0)|0)<<2)>>2]=Va;while(1){if((c[ab>>2]|0)>>>0>(c[fb>>2]|0)>>>0)break h;Va=(c[hb>>2]|0)>>>0>0&1;jb=fl(c[ab>>2]|0)|0;if(!(Va&(jb|0)==(fl((c[ab>>2]|0)+(0-(c[hb>>2]|0))|0)|0)))break h;c[qb>>2]=(nn((c[ab>>2]|0)+4|0,(c[ab>>2]|0)+4+(0-(c[hb>>2]|0))|0,c[eb>>2]|0)|0)+4;c[rb>>2]=c[hb>>2];c[hb>>2]=c[gb>>2];c[gb>>2]=c[rb>>2];jb=(c[ab>>2]|0)-(c[_a>>2]|0)|0;Va=c[Za>>2]|0;c[Va+((Tk(c[ab>>2]|0,c[Wa>>2]|0,c[Ya>>2]|0)|0)<<2)>>2]=jb;kn(c[Sa>>2]|0,0,c[bb>>2]|0,0,(c[qb>>2]|0)-3|0);c[ab>>2]=(c[ab>>2]|0)+(c[qb>>2]|0);c[bb>>2]=c[ab>>2];}}}while(0);}c[c[Ta>>2]>>2]=c[gb>>2]|0?c[gb>>2]|0:c[ib>>2]|0;c[(c[Ta>>2]|0)+4>>2]=c[hb>>2]|0?c[hb>>2]|0:c[ib>>2]|0;c[sb>>2]=(c[eb>>2]|0)-(c[bb>>2]|0);Cb=c[sb>>2]|0;l=i;return Cb|0;}}return 0;}function Yl(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0;i=l;l=l+624|0;j=i+620|0;k=i+616|0;m=i+612|0;n=i+608|0;o=i+604|0;p=i+600|0;q=i+596|0;r=i+592|0;s=i+588|0;t=i+584|0;u=i+580|0;v=i+576|0;w=i+572|0;x=i+568|0;z=i+564|0;A=i+560|0;B=i+556|0;C=i+552|0;D=i+548|0;E=i+544|0;F=i+540|0;G=i+536|0;H=i+532|0;I=i+528|0;J=i+524|0;K=i+520|0;L=i+516|0;M=i+512|0;N=i+508|0;O=i+504|0;P=i+500|0;Q=i+496|0;R=i+492|0;S=i+488|0;T=i+484|0;U=i+480|0;V=i+476|0;W=i+472|0;X=i+468|0;Y=i+464|0;Z=i+460|0;_=i+456|0;$=i+452|0;aa=i+448|0;ba=i+444|0;ca=i+440|0;da=i+436|0;ea=i+432|0;fa=i+428|0;ga=i+424|0;ha=i+420|0;ia=i+416|0;ja=i+412|0;ka=i+408|0;la=i+404|0;ma=i+400|0;na=i+396|0;oa=i+392|0;pa=i+388|0;qa=i+384|0;ra=i+380|0;sa=i+376|0;ta=i+372|0;ua=i+368|0;va=i+364|0;wa=i+360|0;xa=i+356|0;ya=i+352|0;za=i+348|0;Aa=i+344|0;Ba=i+340|0;Ca=i+336|0;Da=i+332|0;Ea=i+328|0;Fa=i+324|0;Ga=i+320|0;Ha=i+316|0;Ia=i+312|0;Ja=i+308|0;Ka=i+304|0;La=i+300|0;Ma=i+296|0;Na=i+292|0;Oa=i+288|0;Pa=i+284|0;Qa=i+280|0;Ra=i+276|0;Sa=i+272|0;Ta=i+268|0;Ua=i+264|0;Va=i+260|0;Wa=i+256|0;Xa=i+252|0;Ya=i+248|0;Za=i+244|0;_a=i+240|0;$a=i+236|0;ab=i+232|0;bb=i+228|0;cb=i+224|0;db=i+220|0;eb=i+216|0;fb=i+212|0;gb=i+208|0;hb=i+204|0;ib=i+200|0;jb=i+196|0;kb=i+192|0;lb=i+188|0;mb=i+184|0;nb=i+180|0;ob=i+176|0;pb=i+172|0;qb=i+168|0;rb=i+164|0;sb=i+160|0;tb=i+156|0;ub=i+152|0;vb=i+148|0;wb=i+144|0;xb=i+140|0;yb=i+136|0;zb=i+132|0;Ab=i+128|0;Bb=i+124|0;Cb=i+120|0;Db=i+116|0;Eb=i+112|0;Fb=i+108|0;Gb=i+104|0;Hb=i+100|0;Ib=i+96|0;Jb=i+92|0;Kb=i+88|0;Lb=i+84|0;Mb=i+80|0;Nb=i+76|0;Ob=i+72|0;Pb=i+68|0;Qb=i+64|0;Rb=i+60|0;Sb=i+56|0;Tb=i+52|0;Ub=i+48|0;Vb=i+44|0;Wb=i+40|0;Xb=i+36|0;Yb=i+32|0;Zb=i+28|0;_b=i+24|0;$b=i+20|0;ac=i+16|0;bc=i+12|0;cc=i+8|0;dc=i+4|0;ec=i;c[_b>>2]=a;c[$b>>2]=b;c[ac>>2]=e;c[bc>>2]=f;c[cc>>2]=g;c[dc>>2]=h;c[ec>>2]=c[(c[bc>>2]|0)+16>>2];switch(c[ec>>2]|0){case 7:{ec=c[$b>>2]|0;h=c[ac>>2]|0;g=c[bc>>2]|0;f=c[cc>>2]|0;e=c[dc>>2]|0;c[j>>2]=c[_b>>2];c[k>>2]=ec;c[m>>2]=h;c[n>>2]=g;c[o>>2]=f;c[p>>2]=e;c[q>>2]=7;c[r>>2]=c[(c[j>>2]|0)+36>>2];c[s>>2]=c[(c[n>>2]|0)+8>>2];c[t>>2]=c[(c[j>>2]|0)+44>>2];c[u>>2]=c[(c[n>>2]|0)+4>>2];c[v>>2]=c[(c[j>>2]|0)+4>>2];c[w>>2]=c[o>>2];c[x>>2]=c[w>>2];c[z>>2]=c[w>>2];c[A>>2]=c[(c[j>>2]|0)+12>>2];c[B>>2]=(c[v>>2]|0)+(c[A>>2]|0);c[C>>2]=(c[w>>2]|0)+(c[p>>2]|0);c[D>>2]=(c[C>>2]|0)+-8;c[E>>2]=c[c[m>>2]>>2];c[F>>2]=c[(c[m>>2]|0)+4>>2];c[G>>2]=0;c[x>>2]=(c[x>>2]|0)+((c[x>>2]|0)==(c[B>>2]|0)&1);c[H>>2]=(c[x>>2]|0)-(c[B>>2]|0);if((c[F>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[G>>2]=c[F>>2];c[F>>2]=0;}if((c[E>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[G>>2]=c[E>>2];c[E>>2]=0;}a:while(1){if((c[x>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break;c[J>>2]=Dk(c[x>>2]|0,c[s>>2]|0,8)|0;c[K>>2]=Dk(c[x>>2]|0,c[u>>2]|0,c[q>>2]|0)|0;c[L>>2]=(c[x>>2]|0)-(c[v>>2]|0);c[M>>2]=c[(c[r>>2]|0)+(c[J>>2]<<2)>>2];c[N>>2]=c[(c[t>>2]|0)+(c[K>>2]<<2)>>2];c[O>>2]=(c[v>>2]|0)+(c[M>>2]|0);c[P>>2]=(c[v>>2]|0)+(c[N>>2]|0);H=c[L>>2]|0;c[(c[t>>2]|0)+(c[K>>2]<<2)>>2]=H;c[(c[r>>2]|0)+(c[J>>2]<<2)>>2]=H;H=(c[E>>2]|0)>>>0>0&1;p=Rk((c[x>>2]|0)+1+(0-(c[E>>2]|0))|0)|0;if(H&(p|0)==(Rk((c[x>>2]|0)+1|0)|0)|0){c[I>>2]=(cn((c[x>>2]|0)+1+4|0,(c[x>>2]|0)+1+4+(0-(c[E>>2]|0))|0,c[C>>2]|0)|0)+4;c[x>>2]=(c[x>>2]|0)+1;$m(c[k>>2]|0,(c[x>>2]|0)-(c[z>>2]|0)|0,c[z>>2]|0,0,(c[I>>2]|0)-3|0);}else{b:do{if((c[M>>2]|0)>>>0>(c[A>>2]|0)>>>0?(p=Mk(c[O>>2]|0)|0,H=y,w=Mk(c[x>>2]|0)|0,(p|0)==(w|0)&(H|0)==(y|0)):0){c[I>>2]=(cn((c[x>>2]|0)+8|0,(c[O>>2]|0)+8|0,c[C>>2]|0)|0)+8;c[Q>>2]=(c[x>>2]|0)-(c[O>>2]|0);while(1){if(!(((c[x>>2]|0)>>>0>(c[z>>2]|0)>>>0?(c[O>>2]|0)>>>0>(c[B>>2]|0)>>>0:0)|0))break b;if((d[(c[x>>2]|0)+-1>>0]|0|0)!=(d[(c[O>>2]|0)+-1>>0]|0|0))break b;c[x>>2]=(c[x>>2]|0)+-1;c[O>>2]=(c[O>>2]|0)+-1;c[I>>2]=(c[I>>2]|0)+1;}}else fc=121;}while(0);c:do{if((fc|0)==121){fc=0;if((c[N>>2]|0)>>>0>(c[A>>2]|0)>>>0?(H=Rk(c[P>>2]|0)|0,(H|0)==(Rk(c[x>>2]|0)|0)):0){c[R>>2]=Dk((c[x>>2]|0)+1|0,c[s>>2]|0,8)|0;c[S>>2]=c[(c[r>>2]|0)+(c[R>>2]<<2)>>2];c[T>>2]=(c[v>>2]|0)+(c[S>>2]|0);c[(c[r>>2]|0)+(c[R>>2]<<2)>>2]=(c[L>>2]|0)+1;if((c[S>>2]|0)>>>0>(c[A>>2]|0)>>>0?(H=Mk(c[T>>2]|0)|0,w=y,p=Mk((c[x>>2]|0)+1|0)|0,(H|0)==(p|0)&(w|0)==(y|0)):0){c[I>>2]=(cn((c[x>>2]|0)+9|0,(c[T>>2]|0)+8|0,c[C>>2]|0)|0)+8;c[x>>2]=(c[x>>2]|0)+1;c[Q>>2]=(c[x>>2]|0)-(c[T>>2]|0);while(1){if(!(((c[x>>2]|0)>>>0>(c[z>>2]|0)>>>0?(c[T>>2]|0)>>>0>(c[B>>2]|0)>>>0:0)|0))break c;if((d[(c[x>>2]|0)+-1>>0]|0|0)!=(d[(c[T>>2]|0)+-1>>0]|0|0))break c;c[x>>2]=(c[x>>2]|0)+-1;c[T>>2]=(c[T>>2]|0)+-1;c[I>>2]=(c[I>>2]|0)+1;}}c[I>>2]=(cn((c[x>>2]|0)+4|0,(c[P>>2]|0)+4|0,c[C>>2]|0)|0)+4;c[Q>>2]=(c[x>>2]|0)-(c[P>>2]|0);while(1){if(!(((c[x>>2]|0)>>>0>(c[z>>2]|0)>>>0?(c[P>>2]|0)>>>0>(c[B>>2]|0)>>>0:0)|0))break c;if((d[(c[x>>2]|0)+-1>>0]|0|0)!=(d[(c[P>>2]|0)+-1>>0]|0|0))break c;c[x>>2]=(c[x>>2]|0)+-1;c[P>>2]=(c[P>>2]|0)+-1;c[I>>2]=(c[I>>2]|0)+1;}}c[x>>2]=(c[x>>2]|0)+(((c[x>>2]|0)-(c[z>>2]|0)>>8)+1);continue a;}}while(0);c[F>>2]=c[E>>2];c[E>>2]=c[Q>>2];$m(c[k>>2]|0,(c[x>>2]|0)-(c[z>>2]|0)|0,c[z>>2]|0,(c[Q>>2]|0)+2|0,(c[I>>2]|0)-3|0);}c[x>>2]=(c[x>>2]|0)+(c[I>>2]|0);c[z>>2]=c[x>>2];d:do{if((c[x>>2]|0)>>>0<=(c[D>>2]|0)>>>0){w=(c[L>>2]|0)+2|0;p=c[t>>2]|0;c[p+((Dk((c[v>>2]|0)+(c[L>>2]|0)+2|0,c[u>>2]|0,c[q>>2]|0)|0)<<2)>>2]=w;p=c[r>>2]|0;c[p+((Dk((c[v>>2]|0)+(c[L>>2]|0)+2|0,c[s>>2]|0,8)|0)<<2)>>2]=w;w=(c[x>>2]|0)+-2-(c[v>>2]|0)|0;p=c[t>>2]|0;c[p+((Dk((c[x>>2]|0)+-2|0,c[u>>2]|0,c[q>>2]|0)|0)<<2)>>2]=w;p=c[r>>2]|0;c[p+((Dk((c[x>>2]|0)+-2|0,c[s>>2]|0,8)|0)<<2)>>2]=w;while(1){if((c[x>>2]|0)>>>0>(c[D>>2]|0)>>>0)break d;w=(c[F>>2]|0)>>>0>0&1;p=Rk(c[x>>2]|0)|0;if(!(w&(p|0)==(Rk((c[x>>2]|0)+(0-(c[F>>2]|0))|0)|0)))break d;c[U>>2]=(cn((c[x>>2]|0)+4|0,(c[x>>2]|0)+4+(0-(c[F>>2]|0))|0,c[C>>2]|0)|0)+4;c[V>>2]=c[F>>2];c[F>>2]=c[E>>2];c[E>>2]=c[V>>2];p=(c[x>>2]|0)-(c[v>>2]|0)|0;w=c[t>>2]|0;c[w+((Dk(c[x>>2]|0,c[u>>2]|0,c[q>>2]|0)|0)<<2)>>2]=p;p=(c[x>>2]|0)-(c[v>>2]|0)|0;w=c[r>>2]|0;c[w+((Dk(c[x>>2]|0,c[s>>2]|0,8)|0)<<2)>>2]=p;$m(c[k>>2]|0,0,c[z>>2]|0,0,(c[U>>2]|0)-3|0);c[x>>2]=(c[x>>2]|0)+(c[U>>2]|0);c[z>>2]=c[x>>2];}}}while(0);}c[c[m>>2]>>2]=c[E>>2]|0?c[E>>2]|0:c[G>>2]|0;c[(c[m>>2]|0)+4>>2]=c[F>>2]|0?c[F>>2]|0:c[G>>2]|0;c[Zb>>2]=(c[C>>2]|0)-(c[z>>2]|0);gc=c[Zb>>2]|0;l=i;return gc|0;}case 5:{z=c[$b>>2]|0;C=c[ac>>2]|0;G=c[bc>>2]|0;F=c[cc>>2]|0;m=c[dc>>2]|0;c[Fa>>2]=c[_b>>2];c[Ga>>2]=z;c[Ha>>2]=C;c[Ia>>2]=G;c[Ja>>2]=F;c[Ka>>2]=m;c[La>>2]=5;c[Ma>>2]=c[(c[Fa>>2]|0)+36>>2];c[Na>>2]=c[(c[Ia>>2]|0)+8>>2];c[Oa>>2]=c[(c[Fa>>2]|0)+44>>2];c[Pa>>2]=c[(c[Ia>>2]|0)+4>>2];c[Qa>>2]=c[(c[Fa>>2]|0)+4>>2];c[Ra>>2]=c[Ja>>2];c[Sa>>2]=c[Ra>>2];c[Ta>>2]=c[Ra>>2];c[Ua>>2]=c[(c[Fa>>2]|0)+12>>2];c[Va>>2]=(c[Qa>>2]|0)+(c[Ua>>2]|0);c[Wa>>2]=(c[Ra>>2]|0)+(c[Ka>>2]|0);c[Xa>>2]=(c[Wa>>2]|0)+-8;c[Ya>>2]=c[c[Ha>>2]>>2];c[Za>>2]=c[(c[Ha>>2]|0)+4>>2];c[_a>>2]=0;c[Sa>>2]=(c[Sa>>2]|0)+((c[Sa>>2]|0)==(c[Va>>2]|0)&1);c[$a>>2]=(c[Sa>>2]|0)-(c[Va>>2]|0);if((c[Za>>2]|0)>>>0>(c[$a>>2]|0)>>>0){c[_a>>2]=c[Za>>2];c[Za>>2]=0;}if((c[Ya>>2]|0)>>>0>(c[$a>>2]|0)>>>0){c[_a>>2]=c[Ya>>2];c[Ya>>2]=0;}e:while(1){if((c[Sa>>2]|0)>>>0>=(c[Xa>>2]|0)>>>0)break;c[bb>>2]=Dk(c[Sa>>2]|0,c[Na>>2]|0,8)|0;c[cb>>2]=Dk(c[Sa>>2]|0,c[Pa>>2]|0,c[La>>2]|0)|0;c[db>>2]=(c[Sa>>2]|0)-(c[Qa>>2]|0);c[eb>>2]=c[(c[Ma>>2]|0)+(c[bb>>2]<<2)>>2];c[fb>>2]=c[(c[Oa>>2]|0)+(c[cb>>2]<<2)>>2];c[gb>>2]=(c[Qa>>2]|0)+(c[eb>>2]|0);c[hb>>2]=(c[Qa>>2]|0)+(c[fb>>2]|0);$a=c[db>>2]|0;c[(c[Oa>>2]|0)+(c[cb>>2]<<2)>>2]=$a;c[(c[Ma>>2]|0)+(c[bb>>2]<<2)>>2]=$a;$a=(c[Ya>>2]|0)>>>0>0&1;Ka=Rk((c[Sa>>2]|0)+1+(0-(c[Ya>>2]|0))|0)|0;if($a&(Ka|0)==(Rk((c[Sa>>2]|0)+1|0)|0)|0){c[ab>>2]=(cn((c[Sa>>2]|0)+1+4|0,(c[Sa>>2]|0)+1+4+(0-(c[Ya>>2]|0))|0,c[Wa>>2]|0)|0)+4;c[Sa>>2]=(c[Sa>>2]|0)+1;$m(c[Ga>>2]|0,(c[Sa>>2]|0)-(c[Ta>>2]|0)|0,c[Ta>>2]|0,0,(c[ab>>2]|0)-3|0);}else{f:do{if((c[eb>>2]|0)>>>0>(c[Ua>>2]|0)>>>0?(Ka=Mk(c[gb>>2]|0)|0,$a=y,Ra=Mk(c[Sa>>2]|0)|0,(Ka|0)==(Ra|0)&($a|0)==(y|0)):0){c[ab>>2]=(cn((c[Sa>>2]|0)+8|0,(c[gb>>2]|0)+8|0,c[Wa>>2]|0)|0)+8;c[ib>>2]=(c[Sa>>2]|0)-(c[gb>>2]|0);while(1){if(!(((c[Sa>>2]|0)>>>0>(c[Ta>>2]|0)>>>0?(c[gb>>2]|0)>>>0>(c[Va>>2]|0)>>>0:0)|0))break f;if((d[(c[Sa>>2]|0)+-1>>0]|0|0)!=(d[(c[gb>>2]|0)+-1>>0]|0|0))break f;c[Sa>>2]=(c[Sa>>2]|0)+-1;c[gb>>2]=(c[gb>>2]|0)+-1;c[ab>>2]=(c[ab>>2]|0)+1;}}else fc=51;}while(0);g:do{if((fc|0)==51){fc=0;if((c[fb>>2]|0)>>>0>(c[Ua>>2]|0)>>>0?($a=Rk(c[hb>>2]|0)|0,($a|0)==(Rk(c[Sa>>2]|0)|0)):0){c[jb>>2]=Dk((c[Sa>>2]|0)+1|0,c[Na>>2]|0,8)|0;c[kb>>2]=c[(c[Ma>>2]|0)+(c[jb>>2]<<2)>>2];c[lb>>2]=(c[Qa>>2]|0)+(c[kb>>2]|0);c[(c[Ma>>2]|0)+(c[jb>>2]<<2)>>2]=(c[db>>2]|0)+1;if((c[kb>>2]|0)>>>0>(c[Ua>>2]|0)>>>0?($a=Mk(c[lb>>2]|0)|0,Ra=y,Ka=Mk((c[Sa>>2]|0)+1|0)|0,($a|0)==(Ka|0)&(Ra|0)==(y|0)):0){c[ab>>2]=(cn((c[Sa>>2]|0)+9|0,(c[lb>>2]|0)+8|0,c[Wa>>2]|0)|0)+8;c[Sa>>2]=(c[Sa>>2]|0)+1;c[ib>>2]=(c[Sa>>2]|0)-(c[lb>>2]|0);while(1){if(!(((c[Sa>>2]|0)>>>0>(c[Ta>>2]|0)>>>0?(c[lb>>2]|0)>>>0>(c[Va>>2]|0)>>>0:0)|0))break g;if((d[(c[Sa>>2]|0)+-1>>0]|0|0)!=(d[(c[lb>>2]|0)+-1>>0]|0|0))break g;c[Sa>>2]=(c[Sa>>2]|0)+-1;c[lb>>2]=(c[lb>>2]|0)+-1;c[ab>>2]=(c[ab>>2]|0)+1;}}c[ab>>2]=(cn((c[Sa>>2]|0)+4|0,(c[hb>>2]|0)+4|0,c[Wa>>2]|0)|0)+4;c[ib>>2]=(c[Sa>>2]|0)-(c[hb>>2]|0);while(1){if(!(((c[Sa>>2]|0)>>>0>(c[Ta>>2]|0)>>>0?(c[hb>>2]|0)>>>0>(c[Va>>2]|0)>>>0:0)|0))break g;if((d[(c[Sa>>2]|0)+-1>>0]|0|0)!=(d[(c[hb>>2]|0)+-1>>0]|0|0))break g;c[Sa>>2]=(c[Sa>>2]|0)+-1;c[hb>>2]=(c[hb>>2]|0)+-1;c[ab>>2]=(c[ab>>2]|0)+1;}}c[Sa>>2]=(c[Sa>>2]|0)+(((c[Sa>>2]|0)-(c[Ta>>2]|0)>>8)+1);continue e;}}while(0);c[Za>>2]=c[Ya>>2];c[Ya>>2]=c[ib>>2];$m(c[Ga>>2]|0,(c[Sa>>2]|0)-(c[Ta>>2]|0)|0,c[Ta>>2]|0,(c[ib>>2]|0)+2|0,(c[ab>>2]|0)-3|0);}c[Sa>>2]=(c[Sa>>2]|0)+(c[ab>>2]|0);c[Ta>>2]=c[Sa>>2];h:do{if((c[Sa>>2]|0)>>>0<=(c[Xa>>2]|0)>>>0){Ra=(c[db>>2]|0)+2|0;Ka=c[Oa>>2]|0;c[Ka+((Dk((c[Qa>>2]|0)+(c[db>>2]|0)+2|0,c[Pa>>2]|0,c[La>>2]|0)|0)<<2)>>2]=Ra;Ka=c[Ma>>2]|0;c[Ka+((Dk((c[Qa>>2]|0)+(c[db>>2]|0)+2|0,c[Na>>2]|0,8)|0)<<2)>>2]=Ra;Ra=(c[Sa>>2]|0)+-2-(c[Qa>>2]|0)|0;Ka=c[Oa>>2]|0;c[Ka+((Dk((c[Sa>>2]|0)+-2|0,c[Pa>>2]|0,c[La>>2]|0)|0)<<2)>>2]=Ra;Ka=c[Ma>>2]|0;c[Ka+((Dk((c[Sa>>2]|0)+-2|0,c[Na>>2]|0,8)|0)<<2)>>2]=Ra;while(1){if((c[Sa>>2]|0)>>>0>(c[Xa>>2]|0)>>>0)break h;Ra=(c[Za>>2]|0)>>>0>0&1;Ka=Rk(c[Sa>>2]|0)|0;if(!(Ra&(Ka|0)==(Rk((c[Sa>>2]|0)+(0-(c[Za>>2]|0))|0)|0)))break h;c[mb>>2]=(cn((c[Sa>>2]|0)+4|0,(c[Sa>>2]|0)+4+(0-(c[Za>>2]|0))|0,c[Wa>>2]|0)|0)+4;c[nb>>2]=c[Za>>2];c[Za>>2]=c[Ya>>2];c[Ya>>2]=c[nb>>2];Ka=(c[Sa>>2]|0)-(c[Qa>>2]|0)|0;Ra=c[Oa>>2]|0;c[Ra+((Dk(c[Sa>>2]|0,c[Pa>>2]|0,c[La>>2]|0)|0)<<2)>>2]=Ka;Ka=(c[Sa>>2]|0)-(c[Qa>>2]|0)|0;Ra=c[Ma>>2]|0;c[Ra+((Dk(c[Sa>>2]|0,c[Na>>2]|0,8)|0)<<2)>>2]=Ka;$m(c[Ga>>2]|0,0,c[Ta>>2]|0,0,(c[mb>>2]|0)-3|0);c[Sa>>2]=(c[Sa>>2]|0)+(c[mb>>2]|0);c[Ta>>2]=c[Sa>>2];}}}while(0);}c[c[Ha>>2]>>2]=c[Ya>>2]|0?c[Ya>>2]|0:c[_a>>2]|0;c[(c[Ha>>2]|0)+4>>2]=c[Za>>2]|0?c[Za>>2]|0:c[_a>>2]|0;c[Zb>>2]=(c[Wa>>2]|0)-(c[Ta>>2]|0);gc=c[Zb>>2]|0;l=i;return gc|0;}case 6:{Ta=c[$b>>2]|0;Wa=c[ac>>2]|0;_a=c[bc>>2]|0;Za=c[cc>>2]|0;Ha=c[dc>>2]|0;c[W>>2]=c[_b>>2];c[X>>2]=Ta;c[Y>>2]=Wa;c[Z>>2]=_a;c[_>>2]=Za;c[$>>2]=Ha;c[aa>>2]=6;c[ba>>2]=c[(c[W>>2]|0)+36>>2];c[ca>>2]=c[(c[Z>>2]|0)+8>>2];c[da>>2]=c[(c[W>>2]|0)+44>>2];c[ea>>2]=c[(c[Z>>2]|0)+4>>2];c[fa>>2]=c[(c[W>>2]|0)+4>>2];c[ga>>2]=c[_>>2];c[ha>>2]=c[ga>>2];c[ia>>2]=c[ga>>2];c[ja>>2]=c[(c[W>>2]|0)+12>>2];c[ka>>2]=(c[fa>>2]|0)+(c[ja>>2]|0);c[la>>2]=(c[ga>>2]|0)+(c[$>>2]|0);c[ma>>2]=(c[la>>2]|0)+-8;c[na>>2]=c[c[Y>>2]>>2];c[oa>>2]=c[(c[Y>>2]|0)+4>>2];c[pa>>2]=0;c[ha>>2]=(c[ha>>2]|0)+((c[ha>>2]|0)==(c[ka>>2]|0)&1);c[qa>>2]=(c[ha>>2]|0)-(c[ka>>2]|0);if((c[oa>>2]|0)>>>0>(c[qa>>2]|0)>>>0){c[pa>>2]=c[oa>>2];c[oa>>2]=0;}if((c[na>>2]|0)>>>0>(c[qa>>2]|0)>>>0){c[pa>>2]=c[na>>2];c[na>>2]=0;}i:while(1){if((c[ha>>2]|0)>>>0>=(c[ma>>2]|0)>>>0)break;c[sa>>2]=Dk(c[ha>>2]|0,c[ca>>2]|0,8)|0;c[ta>>2]=Dk(c[ha>>2]|0,c[ea>>2]|0,c[aa>>2]|0)|0;c[ua>>2]=(c[ha>>2]|0)-(c[fa>>2]|0);c[va>>2]=c[(c[ba>>2]|0)+(c[sa>>2]<<2)>>2];c[wa>>2]=c[(c[da>>2]|0)+(c[ta>>2]<<2)>>2];c[xa>>2]=(c[fa>>2]|0)+(c[va>>2]|0);c[ya>>2]=(c[fa>>2]|0)+(c[wa>>2]|0);qa=c[ua>>2]|0;c[(c[da>>2]|0)+(c[ta>>2]<<2)>>2]=qa;c[(c[ba>>2]|0)+(c[sa>>2]<<2)>>2]=qa;qa=(c[na>>2]|0)>>>0>0&1;$=Rk((c[ha>>2]|0)+1+(0-(c[na>>2]|0))|0)|0;if(qa&($|0)==(Rk((c[ha>>2]|0)+1|0)|0)|0){c[ra>>2]=(cn((c[ha>>2]|0)+1+4|0,(c[ha>>2]|0)+1+4+(0-(c[na>>2]|0))|0,c[la>>2]|0)|0)+4;c[ha>>2]=(c[ha>>2]|0)+1;$m(c[X>>2]|0,(c[ha>>2]|0)-(c[ia>>2]|0)|0,c[ia>>2]|0,0,(c[ra>>2]|0)-3|0);}else{j:do{if((c[va>>2]|0)>>>0>(c[ja>>2]|0)>>>0?($=Mk(c[xa>>2]|0)|0,qa=y,ga=Mk(c[ha>>2]|0)|0,($|0)==(ga|0)&(qa|0)==(y|0)):0){c[ra>>2]=(cn((c[ha>>2]|0)+8|0,(c[xa>>2]|0)+8|0,c[la>>2]|0)|0)+8;c[za>>2]=(c[ha>>2]|0)-(c[xa>>2]|0);while(1){if(!(((c[ha>>2]|0)>>>0>(c[ia>>2]|0)>>>0?(c[xa>>2]|0)>>>0>(c[ka>>2]|0)>>>0:0)|0))break j;if((d[(c[ha>>2]|0)+-1>>0]|0|0)!=(d[(c[xa>>2]|0)+-1>>0]|0|0))break j;c[ha>>2]=(c[ha>>2]|0)+-1;c[xa>>2]=(c[xa>>2]|0)+-1;c[ra>>2]=(c[ra>>2]|0)+1;}}else fc=86;}while(0);k:do{if((fc|0)==86){fc=0;if((c[wa>>2]|0)>>>0>(c[ja>>2]|0)>>>0?(qa=Rk(c[ya>>2]|0)|0,(qa|0)==(Rk(c[ha>>2]|0)|0)):0){c[Aa>>2]=Dk((c[ha>>2]|0)+1|0,c[ca>>2]|0,8)|0;c[Ba>>2]=c[(c[ba>>2]|0)+(c[Aa>>2]<<2)>>2];c[Ca>>2]=(c[fa>>2]|0)+(c[Ba>>2]|0);c[(c[ba>>2]|0)+(c[Aa>>2]<<2)>>2]=(c[ua>>2]|0)+1;if((c[Ba>>2]|0)>>>0>(c[ja>>2]|0)>>>0?(qa=Mk(c[Ca>>2]|0)|0,ga=y,$=Mk((c[ha>>2]|0)+1|0)|0,(qa|0)==($|0)&(ga|0)==(y|0)):0){c[ra>>2]=(cn((c[ha>>2]|0)+9|0,(c[Ca>>2]|0)+8|0,c[la>>2]|0)|0)+8;c[ha>>2]=(c[ha>>2]|0)+1;c[za>>2]=(c[ha>>2]|0)-(c[Ca>>2]|0);while(1){if(!(((c[ha>>2]|0)>>>0>(c[ia>>2]|0)>>>0?(c[Ca>>2]|0)>>>0>(c[ka>>2]|0)>>>0:0)|0))break k;if((d[(c[ha>>2]|0)+-1>>0]|0|0)!=(d[(c[Ca>>2]|0)+-1>>0]|0|0))break k;c[ha>>2]=(c[ha>>2]|0)+-1;c[Ca>>2]=(c[Ca>>2]|0)+-1;c[ra>>2]=(c[ra>>2]|0)+1;}}c[ra>>2]=(cn((c[ha>>2]|0)+4|0,(c[ya>>2]|0)+4|0,c[la>>2]|0)|0)+4;c[za>>2]=(c[ha>>2]|0)-(c[ya>>2]|0);while(1){if(!(((c[ha>>2]|0)>>>0>(c[ia>>2]|0)>>>0?(c[ya>>2]|0)>>>0>(c[ka>>2]|0)>>>0:0)|0))break k;if((d[(c[ha>>2]|0)+-1>>0]|0|0)!=(d[(c[ya>>2]|0)+-1>>0]|0|0))break k;c[ha>>2]=(c[ha>>2]|0)+-1;c[ya>>2]=(c[ya>>2]|0)+-1;c[ra>>2]=(c[ra>>2]|0)+1;}}c[ha>>2]=(c[ha>>2]|0)+(((c[ha>>2]|0)-(c[ia>>2]|0)>>8)+1);continue i;}}while(0);c[oa>>2]=c[na>>2];c[na>>2]=c[za>>2];$m(c[X>>2]|0,(c[ha>>2]|0)-(c[ia>>2]|0)|0,c[ia>>2]|0,(c[za>>2]|0)+2|0,(c[ra>>2]|0)-3|0);}c[ha>>2]=(c[ha>>2]|0)+(c[ra>>2]|0);c[ia>>2]=c[ha>>2];l:do{if((c[ha>>2]|0)>>>0<=(c[ma>>2]|0)>>>0){ga=(c[ua>>2]|0)+2|0;$=c[da>>2]|0;c[$+((Dk((c[fa>>2]|0)+(c[ua>>2]|0)+2|0,c[ea>>2]|0,c[aa>>2]|0)|0)<<2)>>2]=ga;$=c[ba>>2]|0;c[$+((Dk((c[fa>>2]|0)+(c[ua>>2]|0)+2|0,c[ca>>2]|0,8)|0)<<2)>>2]=ga;ga=(c[ha>>2]|0)+-2-(c[fa>>2]|0)|0;$=c[da>>2]|0;c[$+((Dk((c[ha>>2]|0)+-2|0,c[ea>>2]|0,c[aa>>2]|0)|0)<<2)>>2]=ga;$=c[ba>>2]|0;c[$+((Dk((c[ha>>2]|0)+-2|0,c[ca>>2]|0,8)|0)<<2)>>2]=ga;while(1){if((c[ha>>2]|0)>>>0>(c[ma>>2]|0)>>>0)break l;ga=(c[oa>>2]|0)>>>0>0&1;$=Rk(c[ha>>2]|0)|0;if(!(ga&($|0)==(Rk((c[ha>>2]|0)+(0-(c[oa>>2]|0))|0)|0)))break l;c[Da>>2]=(cn((c[ha>>2]|0)+4|0,(c[ha>>2]|0)+4+(0-(c[oa>>2]|0))|0,c[la>>2]|0)|0)+4;c[Ea>>2]=c[oa>>2];c[oa>>2]=c[na>>2];c[na>>2]=c[Ea>>2];$=(c[ha>>2]|0)-(c[fa>>2]|0)|0;ga=c[da>>2]|0;c[ga+((Dk(c[ha>>2]|0,c[ea>>2]|0,c[aa>>2]|0)|0)<<2)>>2]=$;$=(c[ha>>2]|0)-(c[fa>>2]|0)|0;ga=c[ba>>2]|0;c[ga+((Dk(c[ha>>2]|0,c[ca>>2]|0,8)|0)<<2)>>2]=$;$m(c[X>>2]|0,0,c[ia>>2]|0,0,(c[Da>>2]|0)-3|0);c[ha>>2]=(c[ha>>2]|0)+(c[Da>>2]|0);c[ia>>2]=c[ha>>2];}}}while(0);}c[c[Y>>2]>>2]=c[na>>2]|0?c[na>>2]|0:c[pa>>2]|0;c[(c[Y>>2]|0)+4>>2]=c[oa>>2]|0?c[oa>>2]|0:c[pa>>2]|0;c[Zb>>2]=(c[la>>2]|0)-(c[ia>>2]|0);gc=c[Zb>>2]|0;l=i;return gc|0;}default:{ia=c[$b>>2]|0;$b=c[ac>>2]|0;ac=c[bc>>2]|0;bc=c[cc>>2]|0;cc=c[dc>>2]|0;c[ob>>2]=c[_b>>2];c[pb>>2]=ia;c[qb>>2]=$b;c[rb>>2]=ac;c[sb>>2]=bc;c[tb>>2]=cc;c[ub>>2]=4;c[vb>>2]=c[(c[ob>>2]|0)+36>>2];c[wb>>2]=c[(c[rb>>2]|0)+8>>2];c[xb>>2]=c[(c[ob>>2]|0)+44>>2];c[yb>>2]=c[(c[rb>>2]|0)+4>>2];c[zb>>2]=c[(c[ob>>2]|0)+4>>2];c[Ab>>2]=c[sb>>2];c[Bb>>2]=c[Ab>>2];c[Cb>>2]=c[Ab>>2];c[Db>>2]=c[(c[ob>>2]|0)+12>>2];c[Eb>>2]=(c[zb>>2]|0)+(c[Db>>2]|0);c[Fb>>2]=(c[Ab>>2]|0)+(c[tb>>2]|0);c[Gb>>2]=(c[Fb>>2]|0)+-8;c[Hb>>2]=c[c[qb>>2]>>2];c[Ib>>2]=c[(c[qb>>2]|0)+4>>2];c[Jb>>2]=0;c[Bb>>2]=(c[Bb>>2]|0)+((c[Bb>>2]|0)==(c[Eb>>2]|0)&1);c[Kb>>2]=(c[Bb>>2]|0)-(c[Eb>>2]|0);if((c[Ib>>2]|0)>>>0>(c[Kb>>2]|0)>>>0){c[Jb>>2]=c[Ib>>2];c[Ib>>2]=0;}if((c[Hb>>2]|0)>>>0>(c[Kb>>2]|0)>>>0){c[Jb>>2]=c[Hb>>2];c[Hb>>2]=0;}m:while(1){if((c[Bb>>2]|0)>>>0>=(c[Gb>>2]|0)>>>0)break;c[Mb>>2]=Dk(c[Bb>>2]|0,c[wb>>2]|0,8)|0;c[Nb>>2]=Dk(c[Bb>>2]|0,c[yb>>2]|0,c[ub>>2]|0)|0;c[Ob>>2]=(c[Bb>>2]|0)-(c[zb>>2]|0);c[Pb>>2]=c[(c[vb>>2]|0)+(c[Mb>>2]<<2)>>2];c[Qb>>2]=c[(c[xb>>2]|0)+(c[Nb>>2]<<2)>>2];c[Rb>>2]=(c[zb>>2]|0)+(c[Pb>>2]|0);c[Sb>>2]=(c[zb>>2]|0)+(c[Qb>>2]|0);Kb=c[Ob>>2]|0;c[(c[xb>>2]|0)+(c[Nb>>2]<<2)>>2]=Kb;c[(c[vb>>2]|0)+(c[Mb>>2]<<2)>>2]=Kb;Kb=(c[Hb>>2]|0)>>>0>0&1;tb=Rk((c[Bb>>2]|0)+1+(0-(c[Hb>>2]|0))|0)|0;if(Kb&(tb|0)==(Rk((c[Bb>>2]|0)+1|0)|0)|0){c[Lb>>2]=(cn((c[Bb>>2]|0)+1+4|0,(c[Bb>>2]|0)+1+4+(0-(c[Hb>>2]|0))|0,c[Fb>>2]|0)|0)+4;c[Bb>>2]=(c[Bb>>2]|0)+1;$m(c[pb>>2]|0,(c[Bb>>2]|0)-(c[Cb>>2]|0)|0,c[Cb>>2]|0,0,(c[Lb>>2]|0)-3|0);}else{n:do{if((c[Pb>>2]|0)>>>0>(c[Db>>2]|0)>>>0?(tb=Mk(c[Rb>>2]|0)|0,Kb=y,Ab=Mk(c[Bb>>2]|0)|0,(tb|0)==(Ab|0)&(Kb|0)==(y|0)):0){c[Lb>>2]=(cn((c[Bb>>2]|0)+8|0,(c[Rb>>2]|0)+8|0,c[Fb>>2]|0)|0)+8;c[Tb>>2]=(c[Bb>>2]|0)-(c[Rb>>2]|0);while(1){if(!(((c[Bb>>2]|0)>>>0>(c[Cb>>2]|0)>>>0?(c[Rb>>2]|0)>>>0>(c[Eb>>2]|0)>>>0:0)|0))break n;if((d[(c[Bb>>2]|0)+-1>>0]|0|0)!=(d[(c[Rb>>2]|0)+-1>>0]|0|0))break n;c[Bb>>2]=(c[Bb>>2]|0)+-1;c[Rb>>2]=(c[Rb>>2]|0)+-1;c[Lb>>2]=(c[Lb>>2]|0)+1;}}else fc=16;}while(0);o:do{if((fc|0)==16){fc=0;if((c[Qb>>2]|0)>>>0>(c[Db>>2]|0)>>>0?(Kb=Rk(c[Sb>>2]|0)|0,(Kb|0)==(Rk(c[Bb>>2]|0)|0)):0){c[Ub>>2]=Dk((c[Bb>>2]|0)+1|0,c[wb>>2]|0,8)|0;c[Vb>>2]=c[(c[vb>>2]|0)+(c[Ub>>2]<<2)>>2];c[Wb>>2]=(c[zb>>2]|0)+(c[Vb>>2]|0);c[(c[vb>>2]|0)+(c[Ub>>2]<<2)>>2]=(c[Ob>>2]|0)+1;if((c[Vb>>2]|0)>>>0>(c[Db>>2]|0)>>>0?(Kb=Mk(c[Wb>>2]|0)|0,Ab=y,tb=Mk((c[Bb>>2]|0)+1|0)|0,(Kb|0)==(tb|0)&(Ab|0)==(y|0)):0){c[Lb>>2]=(cn((c[Bb>>2]|0)+9|0,(c[Wb>>2]|0)+8|0,c[Fb>>2]|0)|0)+8;c[Bb>>2]=(c[Bb>>2]|0)+1;c[Tb>>2]=(c[Bb>>2]|0)-(c[Wb>>2]|0);while(1){if(!(((c[Bb>>2]|0)>>>0>(c[Cb>>2]|0)>>>0?(c[Wb>>2]|0)>>>0>(c[Eb>>2]|0)>>>0:0)|0))break o;if((d[(c[Bb>>2]|0)+-1>>0]|0|0)!=(d[(c[Wb>>2]|0)+-1>>0]|0|0))break o;c[Bb>>2]=(c[Bb>>2]|0)+-1;c[Wb>>2]=(c[Wb>>2]|0)+-1;c[Lb>>2]=(c[Lb>>2]|0)+1;}}c[Lb>>2]=(cn((c[Bb>>2]|0)+4|0,(c[Sb>>2]|0)+4|0,c[Fb>>2]|0)|0)+4;c[Tb>>2]=(c[Bb>>2]|0)-(c[Sb>>2]|0);while(1){if(!(((c[Bb>>2]|0)>>>0>(c[Cb>>2]|0)>>>0?(c[Sb>>2]|0)>>>0>(c[Eb>>2]|0)>>>0:0)|0))break o;if((d[(c[Bb>>2]|0)+-1>>0]|0|0)!=(d[(c[Sb>>2]|0)+-1>>0]|0|0))break o;c[Bb>>2]=(c[Bb>>2]|0)+-1;c[Sb>>2]=(c[Sb>>2]|0)+-1;c[Lb>>2]=(c[Lb>>2]|0)+1;}}c[Bb>>2]=(c[Bb>>2]|0)+(((c[Bb>>2]|0)-(c[Cb>>2]|0)>>8)+1);continue m;}}while(0);c[Ib>>2]=c[Hb>>2];c[Hb>>2]=c[Tb>>2];$m(c[pb>>2]|0,(c[Bb>>2]|0)-(c[Cb>>2]|0)|0,c[Cb>>2]|0,(c[Tb>>2]|0)+2|0,(c[Lb>>2]|0)-3|0);}c[Bb>>2]=(c[Bb>>2]|0)+(c[Lb>>2]|0);c[Cb>>2]=c[Bb>>2];p:do{if((c[Bb>>2]|0)>>>0<=(c[Gb>>2]|0)>>>0){Ab=(c[Ob>>2]|0)+2|0;tb=c[xb>>2]|0;c[tb+((Dk((c[zb>>2]|0)+(c[Ob>>2]|0)+2|0,c[yb>>2]|0,c[ub>>2]|0)|0)<<2)>>2]=Ab;tb=c[vb>>2]|0;c[tb+((Dk((c[zb>>2]|0)+(c[Ob>>2]|0)+2|0,c[wb>>2]|0,8)|0)<<2)>>2]=Ab;Ab=(c[Bb>>2]|0)+-2-(c[zb>>2]|0)|0;tb=c[xb>>2]|0;c[tb+((Dk((c[Bb>>2]|0)+-2|0,c[yb>>2]|0,c[ub>>2]|0)|0)<<2)>>2]=Ab;tb=c[vb>>2]|0;c[tb+((Dk((c[Bb>>2]|0)+-2|0,c[wb>>2]|0,8)|0)<<2)>>2]=Ab;while(1){if((c[Bb>>2]|0)>>>0>(c[Gb>>2]|0)>>>0)break p;Ab=(c[Ib>>2]|0)>>>0>0&1;tb=Rk(c[Bb>>2]|0)|0;if(!(Ab&(tb|0)==(Rk((c[Bb>>2]|0)+(0-(c[Ib>>2]|0))|0)|0)))break p;c[Xb>>2]=(cn((c[Bb>>2]|0)+4|0,(c[Bb>>2]|0)+4+(0-(c[Ib>>2]|0))|0,c[Fb>>2]|0)|0)+4;c[Yb>>2]=c[Ib>>2];c[Ib>>2]=c[Hb>>2];c[Hb>>2]=c[Yb>>2];tb=(c[Bb>>2]|0)-(c[zb>>2]|0)|0;Ab=c[xb>>2]|0;c[Ab+((Dk(c[Bb>>2]|0,c[yb>>2]|0,c[ub>>2]|0)|0)<<2)>>2]=tb;tb=(c[Bb>>2]|0)-(c[zb>>2]|0)|0;Ab=c[vb>>2]|0;c[Ab+((Dk(c[Bb>>2]|0,c[wb>>2]|0,8)|0)<<2)>>2]=tb;$m(c[pb>>2]|0,0,c[Cb>>2]|0,0,(c[Xb>>2]|0)-3|0);c[Bb>>2]=(c[Bb>>2]|0)+(c[Xb>>2]|0);c[Cb>>2]=c[Bb>>2];}}}while(0);}c[c[qb>>2]>>2]=c[Hb>>2]|0?c[Hb>>2]|0:c[Jb>>2]|0;c[(c[qb>>2]|0)+4>>2]=c[Ib>>2]|0?c[Ib>>2]|0:c[Jb>>2]|0;c[Zb>>2]=(c[Fb>>2]|0)-(c[Cb>>2]|0);gc=c[Zb>>2]|0;l=i;return gc|0;}}return 0;}function jm(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,gg=0,hg=0,ig=0,jg=0,kg=0,lg=0,mg=0,ng=0,og=0,pg=0,qg=0,rg=0,sg=0,tg=0,ug=0,vg=0,wg=0,xg=0,yg=0,zg=0,Ag=0,Bg=0,Cg=0,Dg=0,Eg=0,Fg=0,Gg=0,Hg=0,Ig=0,Jg=0,Kg=0,Lg=0,Mg=0,Ng=0,Og=0,Pg=0,Qg=0,Rg=0,Sg=0,Tg=0,Ug=0,Vg=0,Wg=0,Xg=0,Yg=0,Zg=0,_g=0,$g=0,ah=0,bh=0,ch=0,dh=0,eh=0,fh=0,gh=0,hh=0,ih=0,jh=0,kh=0,lh=0,mh=0,nh=0,oh=0,ph=0,qh=0,rh=0,sh=0,th=0,uh=0,vh=0,wh=0,xh=0,yh=0,zh=0,Ah=0,Bh=0,Ch=0,Dh=0,Eh=0,Fh=0,Gh=0,Hh=0,Ih=0,Jh=0,Kh=0,Lh=0,Mh=0,Nh=0,Oh=0,Ph=0,Qh=0,Rh=0,Sh=0,Th=0,Uh=0,Vh=0,Wh=0,Xh=0,Yh=0,Zh=0,_h=0,$h=0,ai=0,bi=0,ci=0,di=0,ei=0,fi=0,gi=0,hi=0,ii=0,ji=0,ki=0,li=0,mi=0,ni=0,oi=0,pi=0,qi=0,ri=0,si=0,ti=0,ui=0,vi=0,wi=0,xi=0,yi=0,zi=0,Ai=0,Bi=0,Ci=0,Di=0,Ei=0,Fi=0,Gi=0,Hi=0,Ii=0,Ji=0,Ki=0,Li=0,Mi=0,Ni=0,Oi=0,Pi=0,Qi=0,Ri=0,Si=0,Ti=0,Ui=0,Vi=0,Wi=0,Xi=0,Yi=0,Zi=0,_i=0,$i=0,aj=0,bj=0,cj=0,dj=0,ej=0,fj=0,gj=0,hj=0,ij=0,jj=0,kj=0,lj=0,mj=0,nj=0,oj=0,pj=0,qj=0,rj=0,sj=0,tj=0,uj=0,vj=0,wj=0,xj=0,yj=0,zj=0,Aj=0,Bj=0,Cj=0,Dj=0,Ej=0;i=l;l=l+2144|0;j=i+2136|0;k=i+2132|0;m=i+2128|0;n=i+2124|0;o=i+2120|0;p=i+2116|0;q=i+2112|0;r=i+2108|0;s=i+2104|0;t=i+2100|0;u=i+2096|0;v=i+2092|0;w=i+2088|0;x=i+2084|0;y=i+2080|0;z=i+2076|0;A=i+2072|0;B=i+2068|0;C=i+2064|0;D=i+2060|0;E=i+2056|0;F=i+2052|0;G=i+2048|0;H=i+2044|0;I=i+2040|0;J=i+2036|0;K=i+2032|0;L=i+2028|0;M=i+2024|0;N=i+2020|0;O=i+2016|0;P=i+2012|0;Q=i+2008|0;R=i+2004|0;S=i+2e3|0;T=i+1996|0;U=i+1992|0;V=i+1988|0;W=i+1984|0;X=i+1980|0;Y=i+1976|0;Z=i+1972|0;_=i+1968|0;$=i+1964|0;aa=i+1960|0;ba=i+1956|0;ca=i+1952|0;da=i+1948|0;ea=i+1944|0;fa=i+1940|0;ga=i+1936|0;ha=i+1932|0;ia=i+1928|0;ja=i+1924|0;ka=i+1920|0;la=i+1916|0;ma=i+1912|0;na=i+1908|0;oa=i+1904|0;pa=i+1900|0;qa=i+1896|0;ra=i+1892|0;sa=i+1888|0;ta=i+1884|0;ua=i+1880|0;va=i+1876|0;wa=i+1872|0;xa=i+1868|0;ya=i+1864|0;za=i+1860|0;Aa=i+1856|0;Ba=i+1852|0;Ca=i+1848|0;Da=i+1844|0;Ea=i+1840|0;Fa=i+1836|0;Ga=i+1832|0;Ha=i+1828|0;Ia=i+1824|0;Ja=i+1820|0;Ka=i+1816|0;La=i+1812|0;Ma=i+1808|0;Na=i+1804|0;Oa=i+1800|0;Pa=i+1796|0;Qa=i+1792|0;Ra=i+1788|0;Sa=i+1784|0;Ta=i+1780|0;Ua=i+1776|0;Va=i+1772|0;Wa=i+1768|0;Xa=i+1764|0;Ya=i+1760|0;Za=i+1756|0;_a=i+1752|0;$a=i+1748|0;ab=i+1744|0;bb=i+1740|0;cb=i+1736|0;db=i+1732|0;eb=i+1728|0;fb=i+1724|0;gb=i+1720|0;hb=i+1716|0;ib=i+1712|0;jb=i+1708|0;kb=i+1704|0;lb=i+1700|0;mb=i+1696|0;nb=i+1692|0;ob=i+1688|0;pb=i+1684|0;qb=i+1680|0;rb=i+1676|0;sb=i+1672|0;tb=i+1668|0;ub=i+1664|0;vb=i+1660|0;wb=i+1656|0;xb=i+1652|0;yb=i+1648|0;zb=i+1644|0;Ab=i+1640|0;Bb=i+1636|0;Cb=i+1632|0;Db=i+1628|0;Eb=i+1624|0;Fb=i+1620|0;Gb=i+1616|0;Hb=i+1612|0;Ib=i+1608|0;Jb=i+1604|0;Kb=i+1600|0;Lb=i+1596|0;Mb=i+1592|0;Nb=i+1588|0;Ob=i+1584|0;Pb=i+1580|0;Qb=i+1576|0;Rb=i+1572|0;Sb=i+1568|0;Tb=i+1564|0;Ub=i+1560|0;Vb=i+1556|0;Wb=i+1552|0;Xb=i+1548|0;Yb=i+1544|0;Zb=i+1540|0;_b=i+1536|0;$b=i+1532|0;ac=i+1528|0;bc=i+1524|0;cc=i+1520|0;dc=i+1516|0;ec=i+1512|0;fc=i+1508|0;gc=i+1504|0;hc=i+1500|0;ic=i+1496|0;jc=i+1492|0;kc=i+1488|0;lc=i+1484|0;mc=i+1480|0;nc=i+1476|0;oc=i+1472|0;pc=i+1468|0;qc=i+1464|0;rc=i+1460|0;sc=i+1456|0;tc=i+1452|0;uc=i+1448|0;vc=i+1444|0;wc=i+1440|0;xc=i+1436|0;yc=i+1432|0;zc=i+1428|0;Ac=i+1424|0;Bc=i+1420|0;Cc=i+1416|0;Dc=i+1412|0;Ec=i+1408|0;Fc=i+1404|0;Gc=i+1400|0;Hc=i+1396|0;Ic=i+1392|0;Jc=i+1388|0;Kc=i+1384|0;Lc=i+1380|0;Mc=i+1376|0;Nc=i+1372|0;Oc=i+1368|0;Pc=i+1364|0;Qc=i+1360|0;Rc=i+1356|0;Sc=i+1352|0;Tc=i+1348|0;Uc=i+1344|0;Vc=i+1340|0;Wc=i+1336|0;Xc=i+1332|0;Yc=i+1328|0;Zc=i+1324|0;_c=i+1320|0;$c=i+1316|0;ad=i+1312|0;bd=i+1308|0;cd=i+1304|0;dd=i+1300|0;ed=i+1296|0;fd=i+1292|0;gd=i+1288|0;hd=i+1284|0;id=i+1280|0;jd=i+1276|0;kd=i+1272|0;ld=i+1268|0;md=i+1264|0;nd=i+1260|0;od=i+1256|0;pd=i+1252|0;qd=i+1248|0;rd=i+1244|0;sd=i+1240|0;td=i+1236|0;ud=i+1232|0;vd=i+1228|0;wd=i+1224|0;xd=i+1220|0;yd=i+1216|0;zd=i+1212|0;Ad=i+1208|0;Bd=i+1204|0;Cd=i+1200|0;Dd=i+1196|0;Ed=i+1192|0;Fd=i+1188|0;Gd=i+1184|0;Hd=i+1180|0;Id=i+1176|0;Jd=i+1172|0;Kd=i+1168|0;Ld=i+1164|0;Md=i+1160|0;Nd=i+1156|0;Od=i+1152|0;Pd=i+1148|0;Qd=i+1144|0;Rd=i+1140|0;Sd=i+1136|0;Td=i+1132|0;Ud=i+1128|0;Vd=i+1124|0;Wd=i+1120|0;Xd=i+1116|0;Yd=i+1112|0;Zd=i+1108|0;_d=i+1104|0;$d=i+1100|0;ae=i+1096|0;be=i+1092|0;ce=i+1088|0;de=i+1084|0;ee=i+1080|0;fe=i+1076|0;ge=i+1072|0;he=i+1068|0;ie=i+1064|0;je=i+1060|0;ke=i+1056|0;le=i+1052|0;me=i+1048|0;ne=i+1044|0;oe=i+1040|0;pe=i+1036|0;qe=i+1032|0;re=i+1028|0;se=i+1024|0;te=i+1020|0;ue=i+1016|0;ve=i+1012|0;we=i+1008|0;xe=i+1004|0;ye=i+1e3|0;ze=i+996|0;Ae=i+992|0;Be=i+988|0;Ce=i+984|0;De=i+980|0;Ee=i+976|0;Fe=i+972|0;Ge=i+968|0;He=i+964|0;Ie=i+960|0;Je=i+956|0;Ke=i+952|0;Le=i+948|0;Me=i+944|0;Ne=i+940|0;Oe=i+936|0;Pe=i+932|0;Qe=i+928|0;Re=i+924|0;Se=i+920|0;Te=i+916|0;Ue=i+912|0;Ve=i+908|0;We=i+904|0;Xe=i+900|0;Ye=i+896|0;Ze=i+892|0;_e=i+888|0;$e=i+884|0;af=i+880|0;bf=i+876|0;cf=i+872|0;df=i+868|0;ef=i+864|0;ff=i+860|0;gf=i+856|0;hf=i+852|0;jf=i+848|0;kf=i+844|0;lf=i+840|0;mf=i+836|0;nf=i+832|0;of=i+828|0;pf=i+824|0;qf=i+820|0;rf=i+816|0;sf=i+812|0;tf=i+808|0;uf=i+804|0;vf=i+800|0;wf=i+796|0;xf=i+792|0;yf=i+788|0;zf=i+784|0;Af=i+780|0;Bf=i+776|0;Cf=i+772|0;Df=i+768|0;Ef=i+764|0;Ff=i+760|0;Gf=i+756|0;Hf=i+752|0;If=i+748|0;Jf=i+744|0;Kf=i+740|0;Lf=i+736|0;Mf=i+732|0;Nf=i+728|0;Of=i+724|0;Pf=i+720|0;Qf=i+716|0;Rf=i+712|0;Sf=i+708|0;Tf=i+704|0;Uf=i+700|0;Vf=i+696|0;Wf=i+692|0;Xf=i+688|0;Yf=i+684|0;Zf=i+680|0;_f=i+676|0;$f=i+672|0;ag=i+668|0;bg=i+664|0;cg=i+660|0;dg=i+656|0;eg=i+652|0;fg=i+648|0;gg=i+644|0;hg=i+640|0;ig=i+636|0;jg=i+632|0;kg=i+628|0;lg=i+624|0;mg=i+620|0;ng=i+616|0;og=i+612|0;pg=i+608|0;qg=i+604|0;rg=i+600|0;sg=i+596|0;tg=i+592|0;ug=i+588|0;vg=i+584|0;wg=i+580|0;xg=i+576|0;yg=i+572|0;zg=i+568|0;Ag=i+564|0;Bg=i+560|0;Cg=i+556|0;Dg=i+552|0;Eg=i+548|0;Fg=i+544|0;Gg=i+540|0;Hg=i+536|0;Ig=i+532|0;Jg=i+528|0;Kg=i+524|0;Lg=i+520|0;Mg=i+516|0;Ng=i+512|0;Og=i+508|0;Pg=i+504|0;Qg=i+500|0;Rg=i+496|0;Sg=i+492|0;Tg=i+488|0;Ug=i+484|0;Vg=i+480|0;Wg=i+476|0;Xg=i+472|0;Yg=i+468|0;Zg=i+464|0;_g=i+460|0;$g=i+456|0;ah=i+452|0;bh=i+448|0;ch=i+444|0;dh=i+440|0;eh=i+436|0;fh=i+432|0;gh=i+428|0;hh=i+424|0;ih=i+420|0;jh=i+416|0;kh=i+412|0;lh=i+408|0;mh=i+404|0;nh=i+400|0;oh=i+396|0;ph=i+392|0;qh=i+388|0;rh=i+384|0;sh=i+380|0;th=i+376|0;uh=i+372|0;vh=i+368|0;wh=i+364|0;xh=i+360|0;yh=i+356|0;zh=i+352|0;Ah=i+348|0;Bh=i+344|0;Ch=i+340|0;Dh=i+336|0;Eh=i+332|0;Fh=i+328|0;Gh=i+324|0;Hh=i+320|0;Ih=i+316|0;Jh=i+312|0;Kh=i+308|0;Lh=i+304|0;Mh=i+300|0;Nh=i+296|0;Oh=i+292|0;Ph=i+288|0;Qh=i+284|0;Rh=i+280|0;Sh=i+276|0;Th=i+272|0;Uh=i+268|0;Vh=i+264|0;Wh=i+260|0;Xh=i+256|0;Yh=i+252|0;Zh=i+248|0;_h=i+244|0;$h=i+240|0;ai=i+236|0;bi=i+232|0;ci=i+228|0;di=i+216|0;ei=i+212|0;fi=i+208|0;gi=i+204|0;hi=i+200|0;ii=i+196|0;ji=i+192|0;ki=i+188|0;li=i+184|0;mi=i+180|0;ni=i+176|0;oi=i+172|0;pi=i+168|0;qi=i+164|0;ri=i+160|0;si=i+148|0;ti=i+144|0;ui=i+140|0;vi=i+136|0;wi=i+132|0;xi=i+128|0;yi=i+124|0;zi=i+120|0;Ai=i+116|0;Bi=i+112|0;Ci=i+108|0;Di=i+104|0;Ei=i+100|0;Fi=i+88|0;Gi=i+84|0;Hi=i+80|0;Ii=i+76|0;Ji=i+72|0;Ki=i+68|0;Li=i+64|0;Mi=i+60|0;Ni=i+56|0;Oi=i+52|0;Pi=i+48|0;Qi=i+44|0;Ri=i+40|0;Si=i+36|0;Ti=i+32|0;Ui=i+28|0;Vi=i+24|0;Wi=i+20|0;Xi=i+16|0;Yi=i+12|0;Zi=i+8|0;_i=i+4|0;$i=i;c[Wi>>2]=a;c[Xi>>2]=b;c[Yi>>2]=e;c[Zi>>2]=f;c[_i>>2]=g;c[$i>>2]=h;h=c[Xi>>2]|0;Xi=c[Yi>>2]|0;Yi=c[Zi>>2]|0;Zi=c[_i>>2]|0;_i=c[$i>>2]|0;c[Lh>>2]=c[Wi>>2];c[Mh>>2]=h;c[Nh>>2]=Xi;c[Oh>>2]=Yi;c[Ph>>2]=Zi;c[Qh>>2]=_i;c[Rh>>2]=0;c[Sh>>2]=1;c[Th>>2]=(c[Lh>>2]|0)+48;c[Uh>>2]=c[Ph>>2];c[Vh>>2]=c[Uh>>2];c[Wh>>2]=c[Uh>>2];c[Xh>>2]=(c[Uh>>2]|0)+(c[Qh>>2]|0);c[Yh>>2]=(c[Xh>>2]|0)+-8;c[Zh>>2]=c[(c[Lh>>2]|0)+4>>2];c[_h>>2]=(c[Zh>>2]|0)+(c[(c[Lh>>2]|0)+12>>2]|0);if((c[(c[Oh>>2]|0)+20>>2]|0)>>>0<4095)aj=c[(c[Oh>>2]|0)+20>>2]|0;else aj=4095;c[$h>>2]=aj;c[ai>>2]=(c[(c[Oh>>2]|0)+16>>2]|0)==3?3:4;c[bi>>2]=c[(c[Th>>2]|0)+20>>2];c[ci>>2]=c[(c[Th>>2]|0)+16>>2];c[(c[Lh>>2]|0)+28>>2]=c[(c[Lh>>2]|0)+24>>2];lm(c[Th>>2]|0,c[Ph>>2]|0,c[Qh>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+((c[Vh>>2]|0)==(c[_h>>2]|0)&1);c[di>>2]=0;c[di+4>>2]=0;c[di+8>>2]=0;while(1){if((c[Vh>>2]|0)>>>0>=(c[Yh>>2]|0)>>>0)break;c[fi>>2]=0;c[ii>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[ji>>2]=((c[ii>>2]|0)!=0^1)&1;_h=c[Oh>>2]|0;Qh=c[Vh>>2]|0;Ph=c[Xh>>2]|0;aj=c[Sh>>2]|0;Zh=c[Nh>>2]|0;Uh=c[ji>>2]|0;_i=c[ci>>2]|0;Zi=c[ai>>2]|0;c[Bh>>2]=c[Lh>>2];c[Ch>>2]=_h;c[Dh>>2]=Qh;c[Eh>>2]=Ph;c[Fh>>2]=aj;c[Gh>>2]=Zh;c[Hh>>2]=Uh;c[Ih>>2]=_i;c[Jh>>2]=Zi;c[Kh>>2]=c[(c[Ch>>2]|0)+16>>2];a:do{if((c[Dh>>2]|0)>>>0<((c[(c[Bh>>2]|0)+4>>2]|0)+(c[(c[Bh>>2]|0)+24>>2]|0)|0)>>>0)c[Ah>>2]=0;else{Zi=c[Ch>>2]|0;_i=c[Dh>>2]|0;Uh=c[Eh>>2]|0;Zh=c[Kh>>2]|0;aj=c[Fh>>2]|0;c[rh>>2]=c[Bh>>2];c[sh>>2]=Zi;c[th>>2]=_i;c[uh>>2]=Uh;c[vh>>2]=Zh;c[wh>>2]=aj;c[xh>>2]=c[(c[rh>>2]|0)+4>>2];c[yh>>2]=(c[th>>2]|0)-(c[xh>>2]|0);c[zh>>2]=c[(c[rh>>2]|0)+24>>2];while(1){if((c[zh>>2]|0)>>>0>=(c[yh>>2]|0)>>>0)break;aj=Rj(c[rh>>2]|0,c[sh>>2]|0,(c[xh>>2]|0)+(c[zh>>2]|0)|0,c[uh>>2]|0,c[vh>>2]|0,c[wh>>2]|0)|0;c[zh>>2]=(c[zh>>2]|0)+aj;}c[(c[rh>>2]|0)+24>>2]=c[yh>>2];switch(c[Kh>>2]|0){case 3:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[wg>>2]=c[Bh>>2];c[xg>>2]=aj;c[yg>>2]=Zh;c[zg>>2]=Uh;c[Ag>>2]=_i;c[Bg>>2]=Zi;c[Cg>>2]=Ph;c[Dg>>2]=Qh;c[Eg>>2]=_h;c[Fg>>2]=3;if((c[(c[xg>>2]|0)+20>>2]|0)>>>0<4095)bj=c[(c[xg>>2]|0)+20>>2]|0;else bj=4095;c[Gg>>2]=bj;c[Hg>>2]=c[(c[wg>>2]|0)+4>>2];c[Ig>>2]=(c[yg>>2]|0)-(c[Hg>>2]|0);c[Jg>>2]=c[(c[xg>>2]|0)+8>>2];c[Kg>>2]=(c[Fg>>2]|0)==3?3:4;c[Lg>>2]=c[(c[wg>>2]|0)+36>>2];c[Mg>>2]=Sj(c[yg>>2]|0,c[Jg>>2]|0,c[Fg>>2]|0)|0;c[Ng>>2]=c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2];c[Og>>2]=c[(c[wg>>2]|0)+44>>2];c[Pg>>2]=(c[(c[xg>>2]|0)+4>>2]|0)-1;c[Qg>>2]=(1<<c[Pg>>2])-1;c[Rg>>2]=0;c[Sg>>2]=0;c[Tg>>2]=c[(c[wg>>2]|0)+8>>2];c[Ug>>2]=c[(c[wg>>2]|0)+12>>2];c[Vg>>2]=(c[Tg>>2]|0)+(c[Ug>>2]|0);c[Wg>>2]=(c[Hg>>2]|0)+(c[Ug>>2]|0);if((c[Qg>>2]|0)>>>0>=(c[Ig>>2]|0)>>>0)cj=0;else cj=(c[Ig>>2]|0)-(c[Qg>>2]|0)|0;c[Xg>>2]=cj;c[Yg>>2]=c[(c[wg>>2]|0)+16>>2];c[Zg>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2);c[_g>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2)+4;c[$g>>2]=(c[Ig>>2]|0)+8+1;c[bh>>2]=0;c[ch>>2]=1<<c[(c[xg>>2]|0)+12>>2];c[dh>>2]=(c[Eg>>2]|0)-1;c[eh>>2]=3+(c[Cg>>2]|0);c[fh>>2]=c[Cg>>2];while(1){if((c[fh>>2]|0)>>>0>=(c[eh>>2]|0)>>>0){dj=31;break;}_h=c[Bg>>2]|0;if((c[fh>>2]|0)==3)ej=(c[_h>>2]|0)-1|0;else ej=c[_h+(c[fh>>2]<<2)>>2]|0;c[gh>>2]=ej;c[hh>>2]=(c[Ig>>2]|0)-(c[gh>>2]|0);c[ih>>2]=0;if(((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Ug>>2]|0)|0)>>>0){_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0;if((_h|0)==(mm((c[yg>>2]|0)+(0-(c[gh>>2]|0))|0,c[Kg>>2]|0)|0)){_h=Tj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[yg>>2]|0)+(c[Kg>>2]|0)+(0-(c[gh>>2]|0))|0,c[zg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}else{c[jh>>2]=(c[Tg>>2]|0)+(c[hh>>2]|0);if((c[Ag>>2]|0?(((c[Ug>>2]|0)-1-(c[hh>>2]|0)|0)>>>0>=3?((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Yg>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0,(_h|0)==(mm(c[jh>>2]|0,c[Kg>>2]|0)|0)):0){_h=Uj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[jh>>2]|0)+(c[Kg>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}if((c[ih>>2]|0)>>>0>(c[dh>>2]|0)>>>0?(c[dh>>2]=c[ih>>2],c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[fh>>2]|0)-(c[Cg>>2]|0),c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ih>>2],c[bh>>2]=(c[bh>>2]|0)+1,((c[ih>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[ih>>2]|0)|0)==(c[zg>>2]|0))|0):0){dj=29;break;}c[fh>>2]=(c[fh>>2]|0)+1;}do{if((dj|0)==29){dj=0;c[vg>>2]=c[bh>>2];}else if((dj|0)==31){dj=0;if(((c[Fg>>2]|0)==3?(c[dh>>2]|0)>>>0<(c[Fg>>2]|0)>>>0:0)?(c[kh>>2]=nm(c[wg>>2]|0,c[yg>>2]|0)|0,((c[kh>>2]|0)>>>0>(c[Yg>>2]|0)>>>0?((c[Ig>>2]|0)-(c[kh>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ag>>2]|0?(c[kh>>2]|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[nh>>2]=(c[Tg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Uj(c[yg>>2]|0,c[nh>>2]|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;}else{c[mh>>2]=(c[Hg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Tj(c[yg>>2]|0,c[mh>>2]|0,c[zg>>2]|0)|0;}if((c[lh>>2]|0)>>>0>=(c[Fg>>2]|0)>>>0?(c[dh>>2]=c[lh>>2],c[c[Dg>>2]>>2]=(c[Ig>>2]|0)-(c[kh>>2]|0)+2,c[(c[Dg>>2]|0)+4>>2]=c[lh>>2],c[bh>>2]=1,((c[lh>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[lh>>2]|0)|0)==(c[zg>>2]|0))|0):0){c[(c[wg>>2]|0)+24>>2]=(c[Ig>>2]|0)+1;c[vg>>2]=1;break;}}c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2]=c[Ig>>2];while(1){_h=c[ch>>2]|0;c[ch>>2]=_h+-1;if(!_h)break;if((c[Ng>>2]|0)>>>0<=(c[Yg>>2]|0)>>>0)break;c[oh>>2]=(c[Og>>2]|0)+((c[Ng>>2]&c[Qg>>2])<<1<<2);c[ph>>2]=(c[Rg>>2]|0)>>>0<(c[Sg>>2]|0)>>>0?c[Rg>>2]|0:c[Sg>>2]|0;if(c[Ag>>2]|0?((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[qh>>2]=(c[Tg>>2]|0)+(c[Ng>>2]|0);_h=Uj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;if(((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0>=(c[Ug>>2]|0)>>>0)c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);}else{c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);_h=Tj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;}if((c[ph>>2]|0)>>>0>(c[dh>>2]|0)>>>0){if((c[ph>>2]|0)>>>0>((c[$g>>2]|0)-(c[Ng>>2]|0)|0)>>>0)c[$g>>2]=(c[Ng>>2]|0)+(c[ph>>2]|0);c[dh>>2]=c[ph>>2];c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[Ig>>2]|0)-(c[Ng>>2]|0)+2;c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ph>>2];c[bh>>2]=(c[bh>>2]|0)+1;if((c[ph>>2]|0)>>>0>4096)break;if(((c[yg>>2]|0)+(c[ph>>2]|0)|0)==(c[zg>>2]|0))break;}_h=c[Ng>>2]|0;if((d[(c[qh>>2]|0)+(c[ph>>2]|0)>>0]|0|0)<(d[(c[yg>>2]|0)+(c[ph>>2]|0)>>0]|0|0)){c[c[Zg>>2]>>2]=_h;c[Rg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=56;break;}c[Zg>>2]=(c[oh>>2]|0)+4;c[Ng>>2]=c[(c[oh>>2]|0)+4>>2];}else{c[c[_g>>2]>>2]=_h;c[Sg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=59;break;}c[_g>>2]=c[oh>>2];c[Ng>>2]=c[c[oh>>2]>>2];}}if((dj|0)==56){dj=0;c[Zg>>2]=ah;}else if((dj|0)==59){dj=0;c[_g>>2]=ah;}c[c[_g>>2]>>2]=0;c[c[Zg>>2]>>2]=0;c[(c[wg>>2]|0)+24>>2]=(c[$g>>2]|0)-8;c[vg>>2]=c[bh>>2];}}while(0);c[Ah>>2]=c[vg>>2];break a;break;}case 7:case 6:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Hd>>2]=c[Bh>>2];c[Id>>2]=_h;c[Jd>>2]=Qh;c[Kd>>2]=Ph;c[Ld>>2]=Zi;c[Md>>2]=_i;c[Nd>>2]=Uh;c[Od>>2]=Zh;c[Pd>>2]=aj;c[Qd>>2]=6;if((c[(c[Id>>2]|0)+20>>2]|0)>>>0<4095)fj=c[(c[Id>>2]|0)+20>>2]|0;else fj=4095;c[Rd>>2]=fj;c[Sd>>2]=c[(c[Hd>>2]|0)+4>>2];c[Td>>2]=(c[Jd>>2]|0)-(c[Sd>>2]|0);c[Ud>>2]=c[(c[Id>>2]|0)+8>>2];c[Vd>>2]=(c[Qd>>2]|0)==3?3:4;c[Wd>>2]=c[(c[Hd>>2]|0)+36>>2];c[Xd>>2]=Sj(c[Jd>>2]|0,c[Ud>>2]|0,c[Qd>>2]|0)|0;c[Yd>>2]=c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2];c[Zd>>2]=c[(c[Hd>>2]|0)+44>>2];c[_d>>2]=(c[(c[Id>>2]|0)+4>>2]|0)-1;c[$d>>2]=(1<<c[_d>>2])-1;c[ae>>2]=0;c[be>>2]=0;c[ce>>2]=c[(c[Hd>>2]|0)+8>>2];c[de>>2]=c[(c[Hd>>2]|0)+12>>2];c[ee>>2]=(c[ce>>2]|0)+(c[de>>2]|0);c[fe>>2]=(c[Sd>>2]|0)+(c[de>>2]|0);if((c[$d>>2]|0)>>>0>=(c[Td>>2]|0)>>>0)gj=0;else gj=(c[Td>>2]|0)-(c[$d>>2]|0)|0;c[ge>>2]=gj;c[he>>2]=c[(c[Hd>>2]|0)+16>>2];c[ie>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2);c[je>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2)+4;c[ke>>2]=(c[Td>>2]|0)+8+1;c[me>>2]=0;c[ne>>2]=1<<c[(c[Id>>2]|0)+12>>2];c[oe>>2]=(c[Pd>>2]|0)-1;c[pe>>2]=3+(c[Nd>>2]|0);c[qe>>2]=c[Nd>>2];while(1){if((c[qe>>2]|0)>>>0>=(c[pe>>2]|0)>>>0){dj=190;break;}aj=c[Md>>2]|0;if((c[qe>>2]|0)==3)hj=(c[aj>>2]|0)-1|0;else hj=c[aj+(c[qe>>2]<<2)>>2]|0;c[re>>2]=hj;c[se>>2]=(c[Td>>2]|0)-(c[re>>2]|0);c[te>>2]=0;if(((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[de>>2]|0)|0)>>>0){aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0;if((aj|0)==(mm((c[Jd>>2]|0)+(0-(c[re>>2]|0))|0,c[Vd>>2]|0)|0)){aj=Tj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[Jd>>2]|0)+(c[Vd>>2]|0)+(0-(c[re>>2]|0))|0,c[Kd>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}else{c[ue>>2]=(c[ce>>2]|0)+(c[se>>2]|0);if((c[Ld>>2]|0?(((c[de>>2]|0)-1-(c[se>>2]|0)|0)>>>0>=3?((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[he>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0,(aj|0)==(mm(c[ue>>2]|0,c[Vd>>2]|0)|0)):0){aj=Uj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[ue>>2]|0)+(c[Vd>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}if((c[te>>2]|0)>>>0>(c[oe>>2]|0)>>>0?(c[oe>>2]=c[te>>2],c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[qe>>2]|0)-(c[Nd>>2]|0),c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[te>>2],c[me>>2]=(c[me>>2]|0)+1,((c[te>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[te>>2]|0)|0)==(c[Kd>>2]|0))|0):0){dj=188;break;}c[qe>>2]=(c[qe>>2]|0)+1;}do{if((dj|0)==188){dj=0;c[Gd>>2]=c[me>>2];}else if((dj|0)==190){dj=0;if(((c[Qd>>2]|0)==3?(c[oe>>2]|0)>>>0<(c[Qd>>2]|0)>>>0:0)?(c[ve>>2]=nm(c[Hd>>2]|0,c[Jd>>2]|0)|0,((c[ve>>2]|0)>>>0>(c[he>>2]|0)>>>0?((c[Td>>2]|0)-(c[ve>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ld>>2]|0?(c[ve>>2]|0)>>>0<(c[de>>2]|0)>>>0:0){c[ye>>2]=(c[ce>>2]|0)+(c[ve>>2]|0);c[we>>2]=Uj(c[Jd>>2]|0,c[ye>>2]|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;}else{c[xe>>2]=(c[Sd>>2]|0)+(c[ve>>2]|0);c[we>>2]=Tj(c[Jd>>2]|0,c[xe>>2]|0,c[Kd>>2]|0)|0;}if((c[we>>2]|0)>>>0>=(c[Qd>>2]|0)>>>0?(c[oe>>2]=c[we>>2],c[c[Od>>2]>>2]=(c[Td>>2]|0)-(c[ve>>2]|0)+2,c[(c[Od>>2]|0)+4>>2]=c[we>>2],c[me>>2]=1,((c[we>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[we>>2]|0)|0)==(c[Kd>>2]|0))|0):0){c[(c[Hd>>2]|0)+24>>2]=(c[Td>>2]|0)+1;c[Gd>>2]=1;break;}}c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2]=c[Td>>2];while(1){aj=c[ne>>2]|0;c[ne>>2]=aj+-1;if(!aj)break;if((c[Yd>>2]|0)>>>0<=(c[he>>2]|0)>>>0)break;c[ze>>2]=(c[Zd>>2]|0)+((c[Yd>>2]&c[$d>>2])<<1<<2);c[Ae>>2]=(c[ae>>2]|0)>>>0<(c[be>>2]|0)>>>0?c[ae>>2]|0:c[be>>2]|0;if(c[Ld>>2]|0?((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0<(c[de>>2]|0)>>>0:0){c[Be>>2]=(c[ce>>2]|0)+(c[Yd>>2]|0);aj=Uj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;if(((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0>=(c[de>>2]|0)>>>0)c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);}else{c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);aj=Tj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;}if((c[Ae>>2]|0)>>>0>(c[oe>>2]|0)>>>0){if((c[Ae>>2]|0)>>>0>((c[ke>>2]|0)-(c[Yd>>2]|0)|0)>>>0)c[ke>>2]=(c[Yd>>2]|0)+(c[Ae>>2]|0);c[oe>>2]=c[Ae>>2];c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[Td>>2]|0)-(c[Yd>>2]|0)+2;c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[Ae>>2];c[me>>2]=(c[me>>2]|0)+1;if((c[Ae>>2]|0)>>>0>4096)break;if(((c[Jd>>2]|0)+(c[Ae>>2]|0)|0)==(c[Kd>>2]|0))break;}aj=c[Yd>>2]|0;if((d[(c[Be>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)<(d[(c[Jd>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)){c[c[ie>>2]>>2]=aj;c[ae>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=215;break;}c[ie>>2]=(c[ze>>2]|0)+4;c[Yd>>2]=c[(c[ze>>2]|0)+4>>2];}else{c[c[je>>2]>>2]=aj;c[be>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=218;break;}c[je>>2]=c[ze>>2];c[Yd>>2]=c[c[ze>>2]>>2];}}if((dj|0)==215){dj=0;c[ie>>2]=le;}else if((dj|0)==218){dj=0;c[je>>2]=le;}c[c[je>>2]>>2]=0;c[c[ie>>2]>>2]=0;c[(c[Hd>>2]|0)+24>>2]=(c[ke>>2]|0)-8;c[Gd>>2]=c[me>>2];}}while(0);c[Ah>>2]=c[Gd>>2];break a;break;}case 5:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[De>>2]=c[Bh>>2];c[Ee>>2]=aj;c[Fe>>2]=Zh;c[Ge>>2]=Uh;c[He>>2]=_i;c[Ie>>2]=Zi;c[Je>>2]=Ph;c[Ke>>2]=Qh;c[Le>>2]=_h;c[Me>>2]=5;if((c[(c[Ee>>2]|0)+20>>2]|0)>>>0<4095)ij=c[(c[Ee>>2]|0)+20>>2]|0;else ij=4095;c[Ne>>2]=ij;c[Oe>>2]=c[(c[De>>2]|0)+4>>2];c[Pe>>2]=(c[Fe>>2]|0)-(c[Oe>>2]|0);c[Qe>>2]=c[(c[Ee>>2]|0)+8>>2];c[Re>>2]=(c[Me>>2]|0)==3?3:4;c[Se>>2]=c[(c[De>>2]|0)+36>>2];c[Te>>2]=Sj(c[Fe>>2]|0,c[Qe>>2]|0,c[Me>>2]|0)|0;c[Ue>>2]=c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2];c[Ve>>2]=c[(c[De>>2]|0)+44>>2];c[We>>2]=(c[(c[Ee>>2]|0)+4>>2]|0)-1;c[Xe>>2]=(1<<c[We>>2])-1;c[Ye>>2]=0;c[Ze>>2]=0;c[_e>>2]=c[(c[De>>2]|0)+8>>2];c[$e>>2]=c[(c[De>>2]|0)+12>>2];c[af>>2]=(c[_e>>2]|0)+(c[$e>>2]|0);c[bf>>2]=(c[Oe>>2]|0)+(c[$e>>2]|0);if((c[Xe>>2]|0)>>>0>=(c[Pe>>2]|0)>>>0)jj=0;else jj=(c[Pe>>2]|0)-(c[Xe>>2]|0)|0;c[cf>>2]=jj;c[df>>2]=c[(c[De>>2]|0)+16>>2];c[ef>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2);c[ff>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2)+4;c[gf>>2]=(c[Pe>>2]|0)+8+1;c[jf>>2]=0;c[kf>>2]=1<<c[(c[Ee>>2]|0)+12>>2];c[lf>>2]=(c[Le>>2]|0)-1;c[mf>>2]=3+(c[Je>>2]|0);c[nf>>2]=c[Je>>2];while(1){if((c[nf>>2]|0)>>>0>=(c[mf>>2]|0)>>>0){dj=137;break;}_h=c[Ie>>2]|0;if((c[nf>>2]|0)==3)kj=(c[_h>>2]|0)-1|0;else kj=c[_h+(c[nf>>2]<<2)>>2]|0;c[of>>2]=kj;c[pf>>2]=(c[Pe>>2]|0)-(c[of>>2]|0);c[qf>>2]=0;if(((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[$e>>2]|0)|0)>>>0){_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0;if((_h|0)==(mm((c[Fe>>2]|0)+(0-(c[of>>2]|0))|0,c[Re>>2]|0)|0)){_h=Tj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[Fe>>2]|0)+(c[Re>>2]|0)+(0-(c[of>>2]|0))|0,c[Ge>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}else{c[rf>>2]=(c[_e>>2]|0)+(c[pf>>2]|0);if((c[He>>2]|0?(((c[$e>>2]|0)-1-(c[pf>>2]|0)|0)>>>0>=3?((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[df>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0,(_h|0)==(mm(c[rf>>2]|0,c[Re>>2]|0)|0)):0){_h=Uj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[rf>>2]|0)+(c[Re>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}if((c[qf>>2]|0)>>>0>(c[lf>>2]|0)>>>0?(c[lf>>2]=c[qf>>2],c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[nf>>2]|0)-(c[Je>>2]|0),c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[qf>>2],c[jf>>2]=(c[jf>>2]|0)+1,((c[qf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[qf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){dj=135;break;}c[nf>>2]=(c[nf>>2]|0)+1;}do{if((dj|0)==135){dj=0;c[Ce>>2]=c[jf>>2];}else if((dj|0)==137){dj=0;if(((c[Me>>2]|0)==3?(c[lf>>2]|0)>>>0<(c[Me>>2]|0)>>>0:0)?(c[sf>>2]=nm(c[De>>2]|0,c[Fe>>2]|0)|0,((c[sf>>2]|0)>>>0>(c[df>>2]|0)>>>0?((c[Pe>>2]|0)-(c[sf>>2]|0)|0)>>>0<262144:0)|0):0){if(c[He>>2]|0?(c[sf>>2]|0)>>>0<(c[$e>>2]|0)>>>0:0){c[vf>>2]=(c[_e>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Uj(c[Fe>>2]|0,c[vf>>2]|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;}else{c[uf>>2]=(c[Oe>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Tj(c[Fe>>2]|0,c[uf>>2]|0,c[Ge>>2]|0)|0;}if((c[tf>>2]|0)>>>0>=(c[Me>>2]|0)>>>0?(c[lf>>2]=c[tf>>2],c[c[Ke>>2]>>2]=(c[Pe>>2]|0)-(c[sf>>2]|0)+2,c[(c[Ke>>2]|0)+4>>2]=c[tf>>2],c[jf>>2]=1,((c[tf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[tf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){c[(c[De>>2]|0)+24>>2]=(c[Pe>>2]|0)+1;c[Ce>>2]=1;break;}}c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2]=c[Pe>>2];while(1){_h=c[kf>>2]|0;c[kf>>2]=_h+-1;if(!_h)break;if((c[Ue>>2]|0)>>>0<=(c[df>>2]|0)>>>0)break;c[wf>>2]=(c[Ve>>2]|0)+((c[Ue>>2]&c[Xe>>2])<<1<<2);c[xf>>2]=(c[Ye>>2]|0)>>>0<(c[Ze>>2]|0)>>>0?c[Ye>>2]|0:c[Ze>>2]|0;if(c[He>>2]|0?((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0<(c[$e>>2]|0)>>>0:0){c[yf>>2]=(c[_e>>2]|0)+(c[Ue>>2]|0);_h=Uj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;if(((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0>=(c[$e>>2]|0)>>>0)c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);}else{c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);_h=Tj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;}if((c[xf>>2]|0)>>>0>(c[lf>>2]|0)>>>0){if((c[xf>>2]|0)>>>0>((c[gf>>2]|0)-(c[Ue>>2]|0)|0)>>>0)c[gf>>2]=(c[Ue>>2]|0)+(c[xf>>2]|0);c[lf>>2]=c[xf>>2];c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[Pe>>2]|0)-(c[Ue>>2]|0)+2;c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[xf>>2];c[jf>>2]=(c[jf>>2]|0)+1;if((c[xf>>2]|0)>>>0>4096)break;if(((c[Fe>>2]|0)+(c[xf>>2]|0)|0)==(c[Ge>>2]|0))break;}_h=c[Ue>>2]|0;if((d[(c[yf>>2]|0)+(c[xf>>2]|0)>>0]|0|0)<(d[(c[Fe>>2]|0)+(c[xf>>2]|0)>>0]|0|0)){c[c[ef>>2]>>2]=_h;c[Ye>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=162;break;}c[ef>>2]=(c[wf>>2]|0)+4;c[Ue>>2]=c[(c[wf>>2]|0)+4>>2];}else{c[c[ff>>2]>>2]=_h;c[Ze>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=165;break;}c[ff>>2]=c[wf>>2];c[Ue>>2]=c[c[wf>>2]>>2];}}if((dj|0)==162){dj=0;c[ef>>2]=hf;}else if((dj|0)==165){dj=0;c[ff>>2]=hf;}c[c[ff>>2]>>2]=0;c[c[ef>>2]>>2]=0;c[(c[De>>2]|0)+24>>2]=(c[gf>>2]|0)-8;c[Ce>>2]=c[jf>>2];}}while(0);c[Ah>>2]=c[Ce>>2];break a;break;}default:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Af>>2]=c[Bh>>2];c[Bf>>2]=_h;c[Cf>>2]=Qh;c[Df>>2]=Ph;c[Ef>>2]=Zi;c[Ff>>2]=_i;c[Gf>>2]=Uh;c[Hf>>2]=Zh;c[If>>2]=aj;c[Jf>>2]=4;if((c[(c[Bf>>2]|0)+20>>2]|0)>>>0<4095)lj=c[(c[Bf>>2]|0)+20>>2]|0;else lj=4095;c[Kf>>2]=lj;c[Lf>>2]=c[(c[Af>>2]|0)+4>>2];c[Mf>>2]=(c[Cf>>2]|0)-(c[Lf>>2]|0);c[Nf>>2]=c[(c[Bf>>2]|0)+8>>2];c[Of>>2]=(c[Jf>>2]|0)==3?3:4;c[Pf>>2]=c[(c[Af>>2]|0)+36>>2];c[Qf>>2]=Sj(c[Cf>>2]|0,c[Nf>>2]|0,c[Jf>>2]|0)|0;c[Rf>>2]=c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2];c[Sf>>2]=c[(c[Af>>2]|0)+44>>2];c[Tf>>2]=(c[(c[Bf>>2]|0)+4>>2]|0)-1;c[Uf>>2]=(1<<c[Tf>>2])-1;c[Vf>>2]=0;c[Wf>>2]=0;c[Xf>>2]=c[(c[Af>>2]|0)+8>>2];c[Yf>>2]=c[(c[Af>>2]|0)+12>>2];c[Zf>>2]=(c[Xf>>2]|0)+(c[Yf>>2]|0);c[_f>>2]=(c[Lf>>2]|0)+(c[Yf>>2]|0);if((c[Uf>>2]|0)>>>0>=(c[Mf>>2]|0)>>>0)mj=0;else mj=(c[Mf>>2]|0)-(c[Uf>>2]|0)|0;c[$f>>2]=mj;c[ag>>2]=c[(c[Af>>2]|0)+16>>2];c[bg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2);c[cg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2)+4;c[dg>>2]=(c[Mf>>2]|0)+8+1;c[fg>>2]=0;c[gg>>2]=1<<c[(c[Bf>>2]|0)+12>>2];c[hg>>2]=(c[If>>2]|0)-1;c[ig>>2]=3+(c[Gf>>2]|0);c[jg>>2]=c[Gf>>2];while(1){if((c[jg>>2]|0)>>>0>=(c[ig>>2]|0)>>>0){dj=84;break;}aj=c[Ff>>2]|0;if((c[jg>>2]|0)==3)nj=(c[aj>>2]|0)-1|0;else nj=c[aj+(c[jg>>2]<<2)>>2]|0;c[kg>>2]=nj;c[lg>>2]=(c[Mf>>2]|0)-(c[kg>>2]|0);c[mg>>2]=0;if(((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[Yf>>2]|0)|0)>>>0){aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0;if((aj|0)==(mm((c[Cf>>2]|0)+(0-(c[kg>>2]|0))|0,c[Of>>2]|0)|0)){aj=Tj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[Cf>>2]|0)+(c[Of>>2]|0)+(0-(c[kg>>2]|0))|0,c[Df>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}else{c[ng>>2]=(c[Xf>>2]|0)+(c[lg>>2]|0);if((c[Ef>>2]|0?(((c[Yf>>2]|0)-1-(c[lg>>2]|0)|0)>>>0>=3?((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[ag>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0,(aj|0)==(mm(c[ng>>2]|0,c[Of>>2]|0)|0)):0){aj=Uj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[ng>>2]|0)+(c[Of>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}if((c[mg>>2]|0)>>>0>(c[hg>>2]|0)>>>0?(c[hg>>2]=c[mg>>2],c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[jg>>2]|0)-(c[Gf>>2]|0),c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[mg>>2],c[fg>>2]=(c[fg>>2]|0)+1,((c[mg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[mg>>2]|0)|0)==(c[Df>>2]|0))|0):0){dj=82;break;}c[jg>>2]=(c[jg>>2]|0)+1;}do{if((dj|0)==82){dj=0;c[zf>>2]=c[fg>>2];}else if((dj|0)==84){dj=0;if(((c[Jf>>2]|0)==3?(c[hg>>2]|0)>>>0<(c[Jf>>2]|0)>>>0:0)?(c[og>>2]=nm(c[Af>>2]|0,c[Cf>>2]|0)|0,((c[og>>2]|0)>>>0>(c[ag>>2]|0)>>>0?((c[Mf>>2]|0)-(c[og>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ef>>2]|0?(c[og>>2]|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[rg>>2]=(c[Xf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Uj(c[Cf>>2]|0,c[rg>>2]|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;}else{c[qg>>2]=(c[Lf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Tj(c[Cf>>2]|0,c[qg>>2]|0,c[Df>>2]|0)|0;}if((c[pg>>2]|0)>>>0>=(c[Jf>>2]|0)>>>0?(c[hg>>2]=c[pg>>2],c[c[Hf>>2]>>2]=(c[Mf>>2]|0)-(c[og>>2]|0)+2,c[(c[Hf>>2]|0)+4>>2]=c[pg>>2],c[fg>>2]=1,((c[pg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[pg>>2]|0)|0)==(c[Df>>2]|0))|0):0){c[(c[Af>>2]|0)+24>>2]=(c[Mf>>2]|0)+1;c[zf>>2]=1;break;}}c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2]=c[Mf>>2];while(1){aj=c[gg>>2]|0;c[gg>>2]=aj+-1;if(!aj)break;if((c[Rf>>2]|0)>>>0<=(c[ag>>2]|0)>>>0)break;c[sg>>2]=(c[Sf>>2]|0)+((c[Rf>>2]&c[Uf>>2])<<1<<2);c[tg>>2]=(c[Vf>>2]|0)>>>0<(c[Wf>>2]|0)>>>0?c[Vf>>2]|0:c[Wf>>2]|0;if(c[Ef>>2]|0?((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[ug>>2]=(c[Xf>>2]|0)+(c[Rf>>2]|0);aj=Uj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;if(((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0>=(c[Yf>>2]|0)>>>0)c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);}else{c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);aj=Tj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;}if((c[tg>>2]|0)>>>0>(c[hg>>2]|0)>>>0){if((c[tg>>2]|0)>>>0>((c[dg>>2]|0)-(c[Rf>>2]|0)|0)>>>0)c[dg>>2]=(c[Rf>>2]|0)+(c[tg>>2]|0);c[hg>>2]=c[tg>>2];c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[Mf>>2]|0)-(c[Rf>>2]|0)+2;c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[tg>>2];c[fg>>2]=(c[fg>>2]|0)+1;if((c[tg>>2]|0)>>>0>4096)break;if(((c[Cf>>2]|0)+(c[tg>>2]|0)|0)==(c[Df>>2]|0))break;}aj=c[Rf>>2]|0;if((d[(c[ug>>2]|0)+(c[tg>>2]|0)>>0]|0|0)<(d[(c[Cf>>2]|0)+(c[tg>>2]|0)>>0]|0|0)){c[c[bg>>2]>>2]=aj;c[Vf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=109;break;}c[bg>>2]=(c[sg>>2]|0)+4;c[Rf>>2]=c[(c[sg>>2]|0)+4>>2];}else{c[c[cg>>2]>>2]=aj;c[Wf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=112;break;}c[cg>>2]=c[sg>>2];c[Rf>>2]=c[c[sg>>2]>>2];}}if((dj|0)==109){dj=0;c[bg>>2]=eg;}else if((dj|0)==112){dj=0;c[cg>>2]=eg;}c[c[cg>>2]>>2]=0;c[c[bg>>2]>>2]=0;c[(c[Af>>2]|0)+24>>2]=(c[dg>>2]|0)-8;c[zf>>2]=c[fg>>2];}}while(0);c[Ah>>2]=c[zf>>2];break a;}}}}while(0);c[ki>>2]=c[Ah>>2];if(!(c[ki>>2]|0)){c[Vh>>2]=(c[Vh>>2]|0)+1;continue;}c[li>>2]=0;while(1){if((c[li>>2]|0)>>>0>=3)break;c[(c[bi>>2]|0)+16+(c[li>>2]<<2)>>2]=c[(c[Nh>>2]|0)+(c[li>>2]<<2)>>2];c[li>>2]=(c[li>>2]|0)+1;}c[(c[bi>>2]|0)+8>>2]=1;c[(c[bi>>2]|0)+12>>2]=c[ii>>2];c[mi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)+4>>2];do{if((c[mi>>2]|0)>>>0<=(c[$h>>2]|0)>>>0){c[ni>>2]=om(di,c[Wh>>2]|0,c[ii>>2]|0,c[Th>>2]|0)|0;c[oi>>2]=0;while(1){if((c[oi>>2]|0)>>>0>=(c[ai>>2]|0)>>>0)break;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=1073741824;c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=0;while(1){if((c[pi>>2]|0)>>>0>=(c[ki>>2]|0)>>>0)break;c[qi>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)>>2];c[ri>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)+4>>2];pm(si,c[Nh>>2]|0,c[qi>>2]|0,c[ji>>2]|0);while(1){if((c[oi>>2]|0)>>>0>(c[ri>>2]|0)>>>0)break;aj=c[ni>>2]|0;Zh=c[oi>>2]|0;Uh=c[Th>>2]|0;_i=c[Rh>>2]|0;c[yd>>2]=c[qi>>2];c[zd>>2]=Zh;c[Ad>>2]=Uh;c[Bd>>2]=_i;c[Dd>>2]=qm((c[yd>>2]|0)+1|0)|0;c[Ed>>2]=(c[zd>>2]|0)-3;if(c[(c[Ad>>2]|0)+56>>2]|0){_i=(qm((c[Ed>>2]|0)+1|0)|0)+16|0;c[xd>>2]=_i+(c[Dd>>2]|0);}else{_i=(c[Dd>>2]|0)+(c[(c[Ad>>2]|0)+52>>2]|0)|0;c[Cd>>2]=_i-(qm((c[(c[(c[Ad>>2]|0)+12>>2]|0)+(c[Dd>>2]<<2)>>2]|0)+1|0)|0);if((c[Bd>>2]|0)<2&(c[Dd>>2]|0)>>>0>=20)c[Cd>>2]=(c[Cd>>2]|0)+((c[Dd>>2]|0)-19<<1);c[Fd>>2]=rm(c[Ed>>2]|0)|0;_i=(c[5840+(c[Fd>>2]<<2)>>2]|0)+(c[(c[Ad>>2]|0)+48>>2]|0)|0;Uh=_i-(qm((c[(c[(c[Ad>>2]|0)+8>>2]|0)+(c[Fd>>2]<<2)>>2]|0)+1|0)|0)|0;c[Cd>>2]=(c[Cd>>2]|0)+Uh;c[xd>>2]=c[Cd>>2];}c[ti>>2]=aj+(c[xd>>2]|0);c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=c[oi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+4>>2]=c[qi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+12>>2]=c[ii>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=c[ti>>2];aj=(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+16|0;c[aj>>2]=c[si>>2];c[aj+4>>2]=c[si+4>>2];c[aj+8>>2]=c[si+8>>2];c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=(c[pi>>2]|0)+1;}c[fi>>2]=(c[oi>>2]|0)-1;c[ei>>2]=1;b:while(1){if((c[ei>>2]|0)>>>0>(c[fi>>2]|0)>>>0){dj=504;break;}c[ui>>2]=(c[Vh>>2]|0)+(c[ei>>2]|0);if((c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+8>>2]|0)==1)oj=(c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+12>>2]|0)+1|0;else oj=1;c[vi>>2]=oj;if((c[ei>>2]|0)>>>0>(c[vi>>2]|0)>>>0){aj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[vi>>2]|0)|0)*28|0)>>2]|0;c[wi>>2]=aj+(sm((c[ui>>2]|0)+(0-(c[vi>>2]|0))|0,c[vi>>2]|0,c[Th>>2]|0)|0);}else c[wi>>2]=tm(di,c[Wh>>2]|0,c[vi>>2]|0,c[Th>>2]|0)|0;if((c[wi>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0)){c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+4>>2]=0;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]=c[vi>>2];c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]=c[wi>>2];aj=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Uh=(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+16|0;c[aj>>2]=c[Uh>>2];c[aj+4>>2]=c[Uh+4>>2];c[aj+8>>2]=c[Uh+8>>2];}c:do{if((c[ui>>2]|0)>>>0<=(c[Yh>>2]|0)>>>0){if((c[ei>>2]|0)==(c[fi>>2]|0)){dj=504;break b;}if((c[Rh>>2]|0)==0?(c[(c[bi>>2]|0)+(((c[ei>>2]|0)+1|0)*28|0)>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0):0)break;c[xi>>2]=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)!=1&1;if((c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)==1)pj=c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]|0;else pj=0;c[yi>>2]=pj;if((c[ei>>2]|0)>>>0>(c[yi>>2]|0)>>>0)qj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[yi>>2]|0)|0)*28|0)>>2]|0;else qj=0;c[zi>>2]=qj;Uh=c[zi>>2]|0;c[Ai>>2]=Uh+(um((c[ui>>2]|0)+(0-(c[yi>>2]|0))|0,c[yi>>2]|0,c[Th>>2]|0)|0);Uh=c[Oh>>2]|0;aj=c[ui>>2]|0;_i=c[Xh>>2]|0;Zh=c[Sh>>2]|0;Zi=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Ph=c[xi>>2]|0;Qh=c[ci>>2]|0;_h=c[ai>>2]|0;c[nd>>2]=c[Lh>>2];c[od>>2]=Uh;c[pd>>2]=aj;c[qd>>2]=_i;c[rd>>2]=Zh;c[sd>>2]=Zi;c[td>>2]=Ph;c[ud>>2]=Qh;c[vd>>2]=_h;c[wd>>2]=c[(c[od>>2]|0)+16>>2];d:do{if((c[pd>>2]|0)>>>0<((c[(c[nd>>2]|0)+4>>2]|0)+(c[(c[nd>>2]|0)+24>>2]|0)|0)>>>0)c[md>>2]=0;else{_h=c[od>>2]|0;Qh=c[pd>>2]|0;Ph=c[qd>>2]|0;Zi=c[wd>>2]|0;Zh=c[rd>>2]|0;c[dd>>2]=c[nd>>2];c[ed>>2]=_h;c[fd>>2]=Qh;c[gd>>2]=Ph;c[hd>>2]=Zi;c[id>>2]=Zh;c[jd>>2]=c[(c[dd>>2]|0)+4>>2];c[kd>>2]=(c[fd>>2]|0)-(c[jd>>2]|0);c[ld>>2]=c[(c[dd>>2]|0)+24>>2];while(1){if((c[ld>>2]|0)>>>0>=(c[kd>>2]|0)>>>0)break;Zh=Rj(c[dd>>2]|0,c[ed>>2]|0,(c[jd>>2]|0)+(c[ld>>2]|0)|0,c[gd>>2]|0,c[hd>>2]|0,c[id>>2]|0)|0;c[ld>>2]=(c[ld>>2]|0)+Zh;}c[(c[dd>>2]|0)+24>>2]=c[kd>>2];switch(c[wd>>2]|0){case 3:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[ic>>2]=c[nd>>2];c[jc>>2]=Zh;c[kc>>2]=Zi;c[lc>>2]=Ph;c[mc>>2]=Qh;c[nc>>2]=_h;c[oc>>2]=_i;c[pc>>2]=aj;c[qc>>2]=Uh;c[rc>>2]=3;if((c[(c[jc>>2]|0)+20>>2]|0)>>>0<4095)rj=c[(c[jc>>2]|0)+20>>2]|0;else rj=4095;c[sc>>2]=rj;c[tc>>2]=c[(c[ic>>2]|0)+4>>2];c[uc>>2]=(c[kc>>2]|0)-(c[tc>>2]|0);c[vc>>2]=c[(c[jc>>2]|0)+8>>2];c[wc>>2]=(c[rc>>2]|0)==3?3:4;c[xc>>2]=c[(c[ic>>2]|0)+36>>2];c[yc>>2]=Sj(c[kc>>2]|0,c[vc>>2]|0,c[rc>>2]|0)|0;c[zc>>2]=c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2];c[Ac>>2]=c[(c[ic>>2]|0)+44>>2];c[Bc>>2]=(c[(c[jc>>2]|0)+4>>2]|0)-1;c[Cc>>2]=(1<<c[Bc>>2])-1;c[Dc>>2]=0;c[Ec>>2]=0;c[Fc>>2]=c[(c[ic>>2]|0)+8>>2];c[Gc>>2]=c[(c[ic>>2]|0)+12>>2];c[Hc>>2]=(c[Fc>>2]|0)+(c[Gc>>2]|0);c[Ic>>2]=(c[tc>>2]|0)+(c[Gc>>2]|0);if((c[Cc>>2]|0)>>>0>=(c[uc>>2]|0)>>>0)sj=0;else sj=(c[uc>>2]|0)-(c[Cc>>2]|0)|0;c[Jc>>2]=sj;c[Kc>>2]=c[(c[ic>>2]|0)+16>>2];c[Lc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2);c[Mc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2)+4;c[Nc>>2]=(c[uc>>2]|0)+8+1;c[Pc>>2]=0;c[Qc>>2]=1<<c[(c[jc>>2]|0)+12>>2];c[Rc>>2]=(c[qc>>2]|0)-1;c[Sc>>2]=3+(c[oc>>2]|0);c[Tc>>2]=c[oc>>2];while(1){if((c[Tc>>2]|0)>>>0>=(c[Sc>>2]|0)>>>0){dj=287;break;}Uh=c[nc>>2]|0;if((c[Tc>>2]|0)==3)tj=(c[Uh>>2]|0)-1|0;else tj=c[Uh+(c[Tc>>2]<<2)>>2]|0;c[Uc>>2]=tj;c[Vc>>2]=(c[uc>>2]|0)-(c[Uc>>2]|0);c[Wc>>2]=0;do{if(((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Gc>>2]|0)|0)>>>0){Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm((c[kc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[wc>>2]|0)|0))break;Uh=Tj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[kc>>2]|0)+(c[wc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[lc>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}else{c[Xc>>2]=(c[Fc>>2]|0)+(c[Vc>>2]|0);if(!(c[mc>>2]|0))break;if(!((((c[Gc>>2]|0)-1-(c[Vc>>2]|0)|0)>>>0>=3?((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Kc>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm(c[Xc>>2]|0,c[wc>>2]|0)|0))break;Uh=Uj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[Xc>>2]|0)+(c[wc>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}}while(0);if((c[Wc>>2]|0)>>>0>(c[Rc>>2]|0)>>>0?(c[Rc>>2]=c[Wc>>2],c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[Tc>>2]|0)-(c[oc>>2]|0),c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[Wc>>2],c[Pc>>2]=(c[Pc>>2]|0)+1,((c[Wc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Wc>>2]|0)|0)==(c[lc>>2]|0))|0):0){dj=285;break;}c[Tc>>2]=(c[Tc>>2]|0)+1;}e:do{if((dj|0)==285){dj=0;c[hc>>2]=c[Pc>>2];}else if((dj|0)==287){dj=0;do{if((c[rc>>2]|0)==3){if((c[Rc>>2]|0)>>>0>=(c[rc>>2]|0)>>>0)break;c[Yc>>2]=nm(c[ic>>2]|0,c[kc>>2]|0)|0;if(!(((c[Yc>>2]|0)>>>0>(c[Kc>>2]|0)>>>0?((c[uc>>2]|0)-(c[Yc>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[mc>>2]|0){if((c[Yc>>2]|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=292;break;}c[$c>>2]=(c[Fc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Uj(c[kc>>2]|0,c[$c>>2]|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;}else dj=292;}while(0);if((dj|0)==292){dj=0;c[_c>>2]=(c[tc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Tj(c[kc>>2]|0,c[_c>>2]|0,c[lc>>2]|0)|0;}if((c[Zc>>2]|0)>>>0<(c[rc>>2]|0)>>>0)break;c[Rc>>2]=c[Zc>>2];c[c[pc>>2]>>2]=(c[uc>>2]|0)-(c[Yc>>2]|0)+2;c[(c[pc>>2]|0)+4>>2]=c[Zc>>2];c[Pc>>2]=1;if(!(((c[Zc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Zc>>2]|0)|0)==(c[lc>>2]|0))|0))break;c[(c[ic>>2]|0)+24>>2]=(c[uc>>2]|0)+1;c[hc>>2]=1;break e;}}while(0);c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2]=c[uc>>2];while(1){Uh=c[Qc>>2]|0;c[Qc>>2]=Uh+-1;if(!Uh)break;if((c[zc>>2]|0)>>>0<=(c[Kc>>2]|0)>>>0)break;c[ad>>2]=(c[Ac>>2]|0)+((c[zc>>2]&c[Cc>>2])<<1<<2);c[bd>>2]=(c[Dc>>2]|0)>>>0<(c[Ec>>2]|0)>>>0?c[Dc>>2]|0:c[Ec>>2]|0;do{if(c[mc>>2]|0){if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=302;break;}c[cd>>2]=(c[Fc>>2]|0)+(c[zc>>2]|0);Uh=Uj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0<(c[Gc>>2]|0)>>>0)break;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);}else dj=302;}while(0);if((dj|0)==302){dj=0;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);Uh=Tj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;}if((c[bd>>2]|0)>>>0>(c[Rc>>2]|0)>>>0){if((c[bd>>2]|0)>>>0>((c[Nc>>2]|0)-(c[zc>>2]|0)|0)>>>0)c[Nc>>2]=(c[zc>>2]|0)+(c[bd>>2]|0);c[Rc>>2]=c[bd>>2];c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[uc>>2]|0)-(c[zc>>2]|0)+2;c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[bd>>2];c[Pc>>2]=(c[Pc>>2]|0)+1;if((c[bd>>2]|0)>>>0>4096)break;if(((c[kc>>2]|0)+(c[bd>>2]|0)|0)==(c[lc>>2]|0))break;}Uh=c[zc>>2]|0;if((d[(c[cd>>2]|0)+(c[bd>>2]|0)>>0]|0|0)<(d[(c[kc>>2]|0)+(c[bd>>2]|0)>>0]|0|0)){c[c[Lc>>2]>>2]=Uh;c[Dc>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=312;break;}c[Lc>>2]=(c[ad>>2]|0)+4;c[zc>>2]=c[(c[ad>>2]|0)+4>>2];}else{c[c[Mc>>2]>>2]=Uh;c[Ec>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=315;break;}c[Mc>>2]=c[ad>>2];c[zc>>2]=c[c[ad>>2]>>2];}}if((dj|0)==312){dj=0;c[Lc>>2]=Oc;}else if((dj|0)==315){dj=0;c[Mc>>2]=Oc;}c[c[Mc>>2]>>2]=0;c[c[Lc>>2]>>2]=0;c[(c[ic>>2]|0)+24>>2]=(c[Nc>>2]|0)-8;c[hc>>2]=c[Pc>>2];}}while(0);c[md>>2]=c[hc>>2];break d;break;}case 7:case 6:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[u>>2]=c[nd>>2];c[v>>2]=Uh;c[w>>2]=aj;c[x>>2]=_i;c[y>>2]=_h;c[z>>2]=Qh;c[A>>2]=Ph;c[B>>2]=Zi;c[C>>2]=Zh;c[D>>2]=6;if((c[(c[v>>2]|0)+20>>2]|0)>>>0<4095)uj=c[(c[v>>2]|0)+20>>2]|0;else uj=4095;c[E>>2]=uj;c[F>>2]=c[(c[u>>2]|0)+4>>2];c[G>>2]=(c[w>>2]|0)-(c[F>>2]|0);c[H>>2]=c[(c[v>>2]|0)+8>>2];c[I>>2]=(c[D>>2]|0)==3?3:4;c[J>>2]=c[(c[u>>2]|0)+36>>2];c[K>>2]=Sj(c[w>>2]|0,c[H>>2]|0,c[D>>2]|0)|0;c[L>>2]=c[(c[J>>2]|0)+(c[K>>2]<<2)>>2];c[M>>2]=c[(c[u>>2]|0)+44>>2];c[N>>2]=(c[(c[v>>2]|0)+4>>2]|0)-1;c[O>>2]=(1<<c[N>>2])-1;c[P>>2]=0;c[Q>>2]=0;c[R>>2]=c[(c[u>>2]|0)+8>>2];c[S>>2]=c[(c[u>>2]|0)+12>>2];c[T>>2]=(c[R>>2]|0)+(c[S>>2]|0);c[U>>2]=(c[F>>2]|0)+(c[S>>2]|0);if((c[O>>2]|0)>>>0>=(c[G>>2]|0)>>>0)vj=0;else vj=(c[G>>2]|0)-(c[O>>2]|0)|0;c[V>>2]=vj;c[W>>2]=c[(c[u>>2]|0)+16>>2];c[X>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2);c[Y>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2)+4;c[Z>>2]=(c[G>>2]|0)+8+1;c[$>>2]=0;c[aa>>2]=1<<c[(c[v>>2]|0)+12>>2];c[ba>>2]=(c[C>>2]|0)-1;c[ca>>2]=3+(c[A>>2]|0);c[da>>2]=c[A>>2];while(1){if((c[da>>2]|0)>>>0>=(c[ca>>2]|0)>>>0){dj=446;break;}Zh=c[z>>2]|0;if((c[da>>2]|0)==3)wj=(c[Zh>>2]|0)-1|0;else wj=c[Zh+(c[da>>2]<<2)>>2]|0;c[ea>>2]=wj;c[fa>>2]=(c[G>>2]|0)-(c[ea>>2]|0);c[ga>>2]=0;do{if(((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[S>>2]|0)|0)>>>0){Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm((c[w>>2]|0)+(0-(c[ea>>2]|0))|0,c[I>>2]|0)|0))break;Zh=Tj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[w>>2]|0)+(c[I>>2]|0)+(0-(c[ea>>2]|0))|0,c[x>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}else{c[ha>>2]=(c[R>>2]|0)+(c[fa>>2]|0);if(!(c[y>>2]|0))break;if(!((((c[S>>2]|0)-1-(c[fa>>2]|0)|0)>>>0>=3?((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[W>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm(c[ha>>2]|0,c[I>>2]|0)|0))break;Zh=Uj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[ha>>2]|0)+(c[I>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}}while(0);if((c[ga>>2]|0)>>>0>(c[ba>>2]|0)>>>0?(c[ba>>2]=c[ga>>2],c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[da>>2]|0)-(c[A>>2]|0),c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[ga>>2],c[$>>2]=(c[$>>2]|0)+1,((c[ga>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ga>>2]|0)|0)==(c[x>>2]|0))|0):0){dj=444;break;}c[da>>2]=(c[da>>2]|0)+1;}f:do{if((dj|0)==444){dj=0;c[t>>2]=c[$>>2];}else if((dj|0)==446){dj=0;do{if((c[D>>2]|0)==3){if((c[ba>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break;c[ia>>2]=nm(c[u>>2]|0,c[w>>2]|0)|0;if(!(((c[ia>>2]|0)>>>0>(c[W>>2]|0)>>>0?((c[G>>2]|0)-(c[ia>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[y>>2]|0){if((c[ia>>2]|0)>>>0>=(c[S>>2]|0)>>>0){dj=451;break;}c[la>>2]=(c[R>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Uj(c[w>>2]|0,c[la>>2]|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;}else dj=451;}while(0);if((dj|0)==451){dj=0;c[ka>>2]=(c[F>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Tj(c[w>>2]|0,c[ka>>2]|0,c[x>>2]|0)|0;}if((c[ja>>2]|0)>>>0<(c[D>>2]|0)>>>0)break;c[ba>>2]=c[ja>>2];c[c[B>>2]>>2]=(c[G>>2]|0)-(c[ia>>2]|0)+2;c[(c[B>>2]|0)+4>>2]=c[ja>>2];c[$>>2]=1;if(!(((c[ja>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ja>>2]|0)|0)==(c[x>>2]|0))|0))break;c[(c[u>>2]|0)+24>>2]=(c[G>>2]|0)+1;c[t>>2]=1;break f;}}while(0);c[(c[J>>2]|0)+(c[K>>2]<<2)>>2]=c[G>>2];while(1){Zh=c[aa>>2]|0;c[aa>>2]=Zh+-1;if(!Zh)break;if((c[L>>2]|0)>>>0<=(c[W>>2]|0)>>>0)break;c[ma>>2]=(c[M>>2]|0)+((c[L>>2]&c[O>>2])<<1<<2);c[na>>2]=(c[P>>2]|0)>>>0<(c[Q>>2]|0)>>>0?c[P>>2]|0:c[Q>>2]|0;do{if(c[y>>2]|0){if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0>=(c[S>>2]|0)>>>0){dj=461;break;}c[oa>>2]=(c[R>>2]|0)+(c[L>>2]|0);Zh=Uj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0<(c[S>>2]|0)>>>0)break;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);}else dj=461;}while(0);if((dj|0)==461){dj=0;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);Zh=Tj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;}if((c[na>>2]|0)>>>0>(c[ba>>2]|0)>>>0){if((c[na>>2]|0)>>>0>((c[Z>>2]|0)-(c[L>>2]|0)|0)>>>0)c[Z>>2]=(c[L>>2]|0)+(c[na>>2]|0);c[ba>>2]=c[na>>2];c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[G>>2]|0)-(c[L>>2]|0)+2;c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[na>>2];c[$>>2]=(c[$>>2]|0)+1;if((c[na>>2]|0)>>>0>4096)break;if(((c[w>>2]|0)+(c[na>>2]|0)|0)==(c[x>>2]|0))break;}Zh=c[L>>2]|0;if((d[(c[oa>>2]|0)+(c[na>>2]|0)>>0]|0|0)<(d[(c[w>>2]|0)+(c[na>>2]|0)>>0]|0|0)){c[c[X>>2]>>2]=Zh;c[P>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=471;break;}c[X>>2]=(c[ma>>2]|0)+4;c[L>>2]=c[(c[ma>>2]|0)+4>>2];}else{c[c[Y>>2]>>2]=Zh;c[Q>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=474;break;}c[Y>>2]=c[ma>>2];c[L>>2]=c[c[ma>>2]>>2];}}if((dj|0)==471){dj=0;c[X>>2]=_;}else if((dj|0)==474){dj=0;c[Y>>2]=_;}c[c[Y>>2]>>2]=0;c[c[X>>2]>>2]=0;c[(c[u>>2]|0)+24>>2]=(c[Z>>2]|0)-8;c[t>>2]=c[$>>2];}}while(0);c[md>>2]=c[t>>2];break d;break;}case 5:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[qa>>2]=c[nd>>2];c[ra>>2]=Zh;c[sa>>2]=Zi;c[ta>>2]=Ph;c[ua>>2]=Qh;c[va>>2]=_h;c[wa>>2]=_i;c[xa>>2]=aj;c[ya>>2]=Uh;c[za>>2]=5;if((c[(c[ra>>2]|0)+20>>2]|0)>>>0<4095)xj=c[(c[ra>>2]|0)+20>>2]|0;else xj=4095;c[Aa>>2]=xj;c[Ba>>2]=c[(c[qa>>2]|0)+4>>2];c[Ca>>2]=(c[sa>>2]|0)-(c[Ba>>2]|0);c[Da>>2]=c[(c[ra>>2]|0)+8>>2];c[Ea>>2]=(c[za>>2]|0)==3?3:4;c[Fa>>2]=c[(c[qa>>2]|0)+36>>2];c[Ga>>2]=Sj(c[sa>>2]|0,c[Da>>2]|0,c[za>>2]|0)|0;c[Ha>>2]=c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2];c[Ia>>2]=c[(c[qa>>2]|0)+44>>2];c[Ja>>2]=(c[(c[ra>>2]|0)+4>>2]|0)-1;c[Ka>>2]=(1<<c[Ja>>2])-1;c[La>>2]=0;c[Ma>>2]=0;c[Na>>2]=c[(c[qa>>2]|0)+8>>2];c[Oa>>2]=c[(c[qa>>2]|0)+12>>2];c[Pa>>2]=(c[Na>>2]|0)+(c[Oa>>2]|0);c[Qa>>2]=(c[Ba>>2]|0)+(c[Oa>>2]|0);if((c[Ka>>2]|0)>>>0>=(c[Ca>>2]|0)>>>0)yj=0;else yj=(c[Ca>>2]|0)-(c[Ka>>2]|0)|0;c[Ra>>2]=yj;c[Sa>>2]=c[(c[qa>>2]|0)+16>>2];c[Ta>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2);c[Ua>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2)+4;c[Va>>2]=(c[Ca>>2]|0)+8+1;c[Xa>>2]=0;c[Ya>>2]=1<<c[(c[ra>>2]|0)+12>>2];c[Za>>2]=(c[ya>>2]|0)-1;c[_a>>2]=3+(c[wa>>2]|0);c[$a>>2]=c[wa>>2];while(1){if((c[$a>>2]|0)>>>0>=(c[_a>>2]|0)>>>0){dj=393;break;}Uh=c[va>>2]|0;if((c[$a>>2]|0)==3)zj=(c[Uh>>2]|0)-1|0;else zj=c[Uh+(c[$a>>2]<<2)>>2]|0;c[ab>>2]=zj;c[bb>>2]=(c[Ca>>2]|0)-(c[ab>>2]|0);c[cb>>2]=0;do{if(((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Oa>>2]|0)|0)>>>0){Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm((c[sa>>2]|0)+(0-(c[ab>>2]|0))|0,c[Ea>>2]|0)|0))break;Uh=Tj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[sa>>2]|0)+(c[Ea>>2]|0)+(0-(c[ab>>2]|0))|0,c[ta>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}else{c[db>>2]=(c[Na>>2]|0)+(c[bb>>2]|0);if(!(c[ua>>2]|0))break;if(!((((c[Oa>>2]|0)-1-(c[bb>>2]|0)|0)>>>0>=3?((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Sa>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm(c[db>>2]|0,c[Ea>>2]|0)|0))break;Uh=Uj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[db>>2]|0)+(c[Ea>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}}while(0);if((c[cb>>2]|0)>>>0>(c[Za>>2]|0)>>>0?(c[Za>>2]=c[cb>>2],c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[$a>>2]|0)-(c[wa>>2]|0),c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[cb>>2],c[Xa>>2]=(c[Xa>>2]|0)+1,((c[cb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[cb>>2]|0)|0)==(c[ta>>2]|0))|0):0){dj=391;break;}c[$a>>2]=(c[$a>>2]|0)+1;}g:do{if((dj|0)==391){dj=0;c[pa>>2]=c[Xa>>2];}else if((dj|0)==393){dj=0;do{if((c[za>>2]|0)==3){if((c[Za>>2]|0)>>>0>=(c[za>>2]|0)>>>0)break;c[eb>>2]=nm(c[qa>>2]|0,c[sa>>2]|0)|0;if(!(((c[eb>>2]|0)>>>0>(c[Sa>>2]|0)>>>0?((c[Ca>>2]|0)-(c[eb>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[ua>>2]|0){if((c[eb>>2]|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=398;break;}c[hb>>2]=(c[Na>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Uj(c[sa>>2]|0,c[hb>>2]|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;}else dj=398;}while(0);if((dj|0)==398){dj=0;c[gb>>2]=(c[Ba>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Tj(c[sa>>2]|0,c[gb>>2]|0,c[ta>>2]|0)|0;}if((c[fb>>2]|0)>>>0<(c[za>>2]|0)>>>0)break;c[Za>>2]=c[fb>>2];c[c[xa>>2]>>2]=(c[Ca>>2]|0)-(c[eb>>2]|0)+2;c[(c[xa>>2]|0)+4>>2]=c[fb>>2];c[Xa>>2]=1;if(!(((c[fb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[fb>>2]|0)|0)==(c[ta>>2]|0))|0))break;c[(c[qa>>2]|0)+24>>2]=(c[Ca>>2]|0)+1;c[pa>>2]=1;break g;}}while(0);c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2]=c[Ca>>2];while(1){Uh=c[Ya>>2]|0;c[Ya>>2]=Uh+-1;if(!Uh)break;if((c[Ha>>2]|0)>>>0<=(c[Sa>>2]|0)>>>0)break;c[ib>>2]=(c[Ia>>2]|0)+((c[Ha>>2]&c[Ka>>2])<<1<<2);c[jb>>2]=(c[La>>2]|0)>>>0<(c[Ma>>2]|0)>>>0?c[La>>2]|0:c[Ma>>2]|0;do{if(c[ua>>2]|0){if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=408;break;}c[kb>>2]=(c[Na>>2]|0)+(c[Ha>>2]|0);Uh=Uj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0<(c[Oa>>2]|0)>>>0)break;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);}else dj=408;}while(0);if((dj|0)==408){dj=0;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);Uh=Tj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;}if((c[jb>>2]|0)>>>0>(c[Za>>2]|0)>>>0){if((c[jb>>2]|0)>>>0>((c[Va>>2]|0)-(c[Ha>>2]|0)|0)>>>0)c[Va>>2]=(c[Ha>>2]|0)+(c[jb>>2]|0);c[Za>>2]=c[jb>>2];c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[Ca>>2]|0)-(c[Ha>>2]|0)+2;c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[jb>>2];c[Xa>>2]=(c[Xa>>2]|0)+1;if((c[jb>>2]|0)>>>0>4096)break;if(((c[sa>>2]|0)+(c[jb>>2]|0)|0)==(c[ta>>2]|0))break;}Uh=c[Ha>>2]|0;if((d[(c[kb>>2]|0)+(c[jb>>2]|0)>>0]|0|0)<(d[(c[sa>>2]|0)+(c[jb>>2]|0)>>0]|0|0)){c[c[Ta>>2]>>2]=Uh;c[La>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=418;break;}c[Ta>>2]=(c[ib>>2]|0)+4;c[Ha>>2]=c[(c[ib>>2]|0)+4>>2];}else{c[c[Ua>>2]>>2]=Uh;c[Ma>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=421;break;}c[Ua>>2]=c[ib>>2];c[Ha>>2]=c[c[ib>>2]>>2];}}if((dj|0)==418){dj=0;c[Ta>>2]=Wa;}else if((dj|0)==421){dj=0;c[Ua>>2]=Wa;}c[c[Ua>>2]>>2]=0;c[c[Ta>>2]>>2]=0;c[(c[qa>>2]|0)+24>>2]=(c[Va>>2]|0)-8;c[pa>>2]=c[Xa>>2];}}while(0);c[md>>2]=c[pa>>2];break d;break;}default:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[mb>>2]=c[nd>>2];c[nb>>2]=Uh;c[ob>>2]=aj;c[pb>>2]=_i;c[qb>>2]=_h;c[rb>>2]=Qh;c[sb>>2]=Ph;c[tb>>2]=Zi;c[ub>>2]=Zh;c[vb>>2]=4;if((c[(c[nb>>2]|0)+20>>2]|0)>>>0<4095)Aj=c[(c[nb>>2]|0)+20>>2]|0;else Aj=4095;c[wb>>2]=Aj;c[xb>>2]=c[(c[mb>>2]|0)+4>>2];c[yb>>2]=(c[ob>>2]|0)-(c[xb>>2]|0);c[zb>>2]=c[(c[nb>>2]|0)+8>>2];c[Ab>>2]=(c[vb>>2]|0)==3?3:4;c[Bb>>2]=c[(c[mb>>2]|0)+36>>2];c[Cb>>2]=Sj(c[ob>>2]|0,c[zb>>2]|0,c[vb>>2]|0)|0;c[Db>>2]=c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2];c[Eb>>2]=c[(c[mb>>2]|0)+44>>2];c[Fb>>2]=(c[(c[nb>>2]|0)+4>>2]|0)-1;c[Gb>>2]=(1<<c[Fb>>2])-1;c[Hb>>2]=0;c[Ib>>2]=0;c[Jb>>2]=c[(c[mb>>2]|0)+8>>2];c[Kb>>2]=c[(c[mb>>2]|0)+12>>2];c[Lb>>2]=(c[Jb>>2]|0)+(c[Kb>>2]|0);c[Mb>>2]=(c[xb>>2]|0)+(c[Kb>>2]|0);if((c[Gb>>2]|0)>>>0>=(c[yb>>2]|0)>>>0)Bj=0;else Bj=(c[yb>>2]|0)-(c[Gb>>2]|0)|0;c[Nb>>2]=Bj;c[Ob>>2]=c[(c[mb>>2]|0)+16>>2];c[Pb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2);c[Qb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2)+4;c[Rb>>2]=(c[yb>>2]|0)+8+1;c[Tb>>2]=0;c[Ub>>2]=1<<c[(c[nb>>2]|0)+12>>2];c[Vb>>2]=(c[ub>>2]|0)-1;c[Wb>>2]=3+(c[sb>>2]|0);c[Xb>>2]=c[sb>>2];while(1){if((c[Xb>>2]|0)>>>0>=(c[Wb>>2]|0)>>>0){dj=340;break;}Zh=c[rb>>2]|0;if((c[Xb>>2]|0)==3)Cj=(c[Zh>>2]|0)-1|0;else Cj=c[Zh+(c[Xb>>2]<<2)>>2]|0;c[Yb>>2]=Cj;c[Zb>>2]=(c[yb>>2]|0)-(c[Yb>>2]|0);c[_b>>2]=0;do{if(((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Kb>>2]|0)|0)>>>0){Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm((c[ob>>2]|0)+(0-(c[Yb>>2]|0))|0,c[Ab>>2]|0)|0))break;Zh=Tj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[ob>>2]|0)+(c[Ab>>2]|0)+(0-(c[Yb>>2]|0))|0,c[pb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}else{c[$b>>2]=(c[Jb>>2]|0)+(c[Zb>>2]|0);if(!(c[qb>>2]|0))break;if(!((((c[Kb>>2]|0)-1-(c[Zb>>2]|0)|0)>>>0>=3?((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Ob>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm(c[$b>>2]|0,c[Ab>>2]|0)|0))break;Zh=Uj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[$b>>2]|0)+(c[Ab>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}}while(0);if((c[_b>>2]|0)>>>0>(c[Vb>>2]|0)>>>0?(c[Vb>>2]=c[_b>>2],c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[Xb>>2]|0)-(c[sb>>2]|0),c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[_b>>2],c[Tb>>2]=(c[Tb>>2]|0)+1,((c[_b>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[_b>>2]|0)|0)==(c[pb>>2]|0))|0):0){dj=338;break;}c[Xb>>2]=(c[Xb>>2]|0)+1;}h:do{if((dj|0)==338){dj=0;c[lb>>2]=c[Tb>>2];}else if((dj|0)==340){dj=0;do{if((c[vb>>2]|0)==3){if((c[Vb>>2]|0)>>>0>=(c[vb>>2]|0)>>>0)break;c[ac>>2]=nm(c[mb>>2]|0,c[ob>>2]|0)|0;if(!(((c[ac>>2]|0)>>>0>(c[Ob>>2]|0)>>>0?((c[yb>>2]|0)-(c[ac>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[qb>>2]|0){if((c[ac>>2]|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=345;break;}c[dc>>2]=(c[Jb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Uj(c[ob>>2]|0,c[dc>>2]|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;}else dj=345;}while(0);if((dj|0)==345){dj=0;c[cc>>2]=(c[xb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Tj(c[ob>>2]|0,c[cc>>2]|0,c[pb>>2]|0)|0;}if((c[bc>>2]|0)>>>0<(c[vb>>2]|0)>>>0)break;c[Vb>>2]=c[bc>>2];c[c[tb>>2]>>2]=(c[yb>>2]|0)-(c[ac>>2]|0)+2;c[(c[tb>>2]|0)+4>>2]=c[bc>>2];c[Tb>>2]=1;if(!(((c[bc>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[bc>>2]|0)|0)==(c[pb>>2]|0))|0))break;c[(c[mb>>2]|0)+24>>2]=(c[yb>>2]|0)+1;c[lb>>2]=1;break h;}}while(0);c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2]=c[yb>>2];while(1){Zh=c[Ub>>2]|0;c[Ub>>2]=Zh+-1;if(!Zh)break;if((c[Db>>2]|0)>>>0<=(c[Ob>>2]|0)>>>0)break;c[ec>>2]=(c[Eb>>2]|0)+((c[Db>>2]&c[Gb>>2])<<1<<2);c[fc>>2]=(c[Hb>>2]|0)>>>0<(c[Ib>>2]|0)>>>0?c[Hb>>2]|0:c[Ib>>2]|0;do{if(c[qb>>2]|0){if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=355;break;}c[gc>>2]=(c[Jb>>2]|0)+(c[Db>>2]|0);Zh=Uj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0<(c[Kb>>2]|0)>>>0)break;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);}else dj=355;}while(0);if((dj|0)==355){dj=0;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);Zh=Tj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;}if((c[fc>>2]|0)>>>0>(c[Vb>>2]|0)>>>0){if((c[fc>>2]|0)>>>0>((c[Rb>>2]|0)-(c[Db>>2]|0)|0)>>>0)c[Rb>>2]=(c[Db>>2]|0)+(c[fc>>2]|0);c[Vb>>2]=c[fc>>2];c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[yb>>2]|0)-(c[Db>>2]|0)+2;c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[fc>>2];c[Tb>>2]=(c[Tb>>2]|0)+1;if((c[fc>>2]|0)>>>0>4096)break;if(((c[ob>>2]|0)+(c[fc>>2]|0)|0)==(c[pb>>2]|0))break;}Zh=c[Db>>2]|0;if((d[(c[gc>>2]|0)+(c[fc>>2]|0)>>0]|0|0)<(d[(c[ob>>2]|0)+(c[fc>>2]|0)>>0]|0|0)){c[c[Pb>>2]>>2]=Zh;c[Hb>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=365;break;}c[Pb>>2]=(c[ec>>2]|0)+4;c[Db>>2]=c[(c[ec>>2]|0)+4>>2];}else{c[c[Qb>>2]>>2]=Zh;c[Ib>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=368;break;}c[Qb>>2]=c[ec>>2];c[Db>>2]=c[c[ec>>2]>>2];}}if((dj|0)==365){dj=0;c[Pb>>2]=Sb;}else if((dj|0)==368){dj=0;c[Qb>>2]=Sb;}c[c[Qb>>2]>>2]=0;c[c[Pb>>2]>>2]=0;c[(c[mb>>2]|0)+24>>2]=(c[Rb>>2]|0)-8;c[lb>>2]=c[Tb>>2];}}while(0);c[md>>2]=c[lb>>2];break d;}}}}while(0);c[Bi>>2]=c[md>>2];if(c[Bi>>2]|0){c[Di>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)+4>>2];if(((c[Di>>2]|0)>>>0>(c[$h>>2]|0)>>>0?1:((c[ei>>2]|0)+(c[Di>>2]|0)|0)>>>0>=4096)|0){dj=481;break b;}c[Ci>>2]=0;while(1){if((c[Ci>>2]|0)>>>0>=(c[Bi>>2]|0)>>>0)break c;c[Ei>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)>>2];pm(Fi,(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0,c[Ei>>2]|0,c[xi>>2]|0);c[Gi>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)+4>>2];if((c[Ci>>2]|0)>>>0>0)Dj=(c[(c[ci>>2]|0)+((c[Ci>>2]|0)-1<<3)+4>>2]|0)+1|0;else Dj=c[ai>>2]|0;c[Hi>>2]=Dj;c[Ii>>2]=c[Gi>>2];i:while(1){if((c[Ii>>2]|0)>>>0<(c[Hi>>2]|0)>>>0)break;c[Ji>>2]=(c[ei>>2]|0)+(c[Ii>>2]|0);Zh=c[Ai>>2]|0;Zi=c[Ii>>2]|0;Ph=c[Th>>2]|0;Qh=c[Rh>>2]|0;c[k>>2]=c[Ei>>2];c[m>>2]=Zi;c[n>>2]=Ph;c[o>>2]=Qh;c[q>>2]=qm((c[k>>2]|0)+1|0)|0;c[r>>2]=(c[m>>2]|0)-3;if(c[(c[n>>2]|0)+56>>2]|0){Qh=(qm((c[r>>2]|0)+1|0)|0)+16|0;c[j>>2]=Qh+(c[q>>2]|0);}else{Qh=(c[q>>2]|0)+(c[(c[n>>2]|0)+52>>2]|0)|0;c[p>>2]=Qh-(qm((c[(c[(c[n>>2]|0)+12>>2]|0)+(c[q>>2]<<2)>>2]|0)+1|0)|0);if((c[o>>2]|0)<2&(c[q>>2]|0)>>>0>=20)c[p>>2]=(c[p>>2]|0)+((c[q>>2]|0)-19<<1);c[s>>2]=rm(c[r>>2]|0)|0;Qh=(c[5840+(c[s>>2]<<2)>>2]|0)+(c[(c[n>>2]|0)+48>>2]|0)|0;Ph=Qh-(qm((c[(c[(c[n>>2]|0)+8>>2]|0)+(c[s>>2]<<2)>>2]|0)+1|0)|0)|0;c[p>>2]=(c[p>>2]|0)+Ph;c[j>>2]=c[p>>2];}c[Ki>>2]=Zh+(c[j>>2]|0);do{if((c[Ji>>2]|0)>>>0<=(c[fi>>2]|0)>>>0){if((c[Ki>>2]|0)<(c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]|0)){dj=496;break;}if(!(c[Rh>>2]|0))break i;}else dj=496;}while(0);if((dj|0)==496){dj=0;while(1){if((c[fi>>2]|0)>>>0>=(c[Ji>>2]|0)>>>0)break;c[(c[bi>>2]|0)+(((c[fi>>2]|0)+1|0)*28|0)>>2]=1073741824;c[fi>>2]=(c[fi>>2]|0)+1;}c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+8>>2]=c[Ii>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+4>>2]=c[Ei>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+12>>2]=c[yi>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]=c[Ki>>2];Zh=(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+16|0;c[Zh>>2]=c[Fi>>2];c[Zh+4>>2]=c[Fi+4>>2];c[Zh+8>>2]=c[Fi+8>>2];}c[Ii>>2]=(c[Ii>>2]|0)+-1;}c[Ci>>2]=(c[Ci>>2]|0)+1;}}}}while(0);c[ei>>2]=(c[ei>>2]|0)+1;}if((dj|0)==481){dj=0;c[gi>>2]=c[Di>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)>>2];c[fi>>2]=(c[ei>>2]|0)+1;break;}else if((dj|0)==504){dj=0;c[gi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+8>>2];c[hi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+4>>2];c[ei>>2]=(c[fi>>2]|0)-(c[gi>>2]|0);break;}}else{c[gi>>2]=c[mi>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)>>2];c[ei>>2]=0;c[fi>>2]=1;}}while(0);c[Li>>2]=c[gi>>2];c[Mi>>2]=c[hi>>2];c[Ni>>2]=c[ei>>2];while(1){c[Oi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2];c[Pi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2]=c[Li>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2]=c[Mi>>2];c[Li>>2]=c[Oi>>2];c[Mi>>2]=c[Pi>>2];if((c[Oi>>2]|0)>>>0>(c[Ni>>2]|0)>>>0)break;c[Ni>>2]=(c[Ni>>2]|0)-(c[Oi>>2]|0);}c[Qi>>2]=0;while(1){if((c[Qi>>2]|0)>>>0>=(c[fi>>2]|0)>>>0)break;c[Ri>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[Si>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+8>>2];c[Ti>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+4>>2];if((c[Si>>2]|0)==1){c[Vh>>2]=(c[Vh>>2]|0)+1;c[Qi>>2]=(c[Qi>>2]|0)+1;continue;}c[Qi>>2]=(c[Qi>>2]|0)+(c[Si>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+(c[Si>>2]|0);if((c[Ti>>2]|0)>>>0<3){c[Ui>>2]=(c[Ti>>2]|0)+((c[Ri>>2]|0)==0&1);if(c[Ui>>2]|0){Zh=c[Nh>>2]|0;if((c[Ui>>2]|0)==3)Ej=(c[Zh>>2]|0)-1|0;else Ej=c[Zh+(c[Ui>>2]<<2)>>2]|0;c[Vi>>2]=Ej;if((c[Ui>>2]|0)>>>0>=2)c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=c[Vi>>2];}}else{c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=(c[Ti>>2]|0)-2;}vm(c[Th>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,c[Si>>2]|0);wm(c[Mh>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,(c[Si>>2]|0)-3|0);c[Wh>>2]=c[Vh>>2];}xm(c[Th>>2]|0);}l=i;return(c[Xh>>2]|0)-(c[Wh>>2]|0)|0;}function km(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,gg=0,hg=0,ig=0,jg=0,kg=0,lg=0,mg=0,ng=0,og=0,pg=0,qg=0,rg=0,sg=0,tg=0,ug=0,vg=0,wg=0,xg=0,yg=0,zg=0,Ag=0,Bg=0,Cg=0,Dg=0,Eg=0,Fg=0,Gg=0,Hg=0,Ig=0,Jg=0,Kg=0,Lg=0,Mg=0,Ng=0,Og=0,Pg=0,Qg=0,Rg=0,Sg=0,Tg=0,Ug=0,Vg=0,Wg=0,Xg=0,Yg=0,Zg=0,_g=0,$g=0,ah=0,bh=0,ch=0,dh=0,eh=0,fh=0,gh=0,hh=0,ih=0,jh=0,kh=0,lh=0,mh=0,nh=0,oh=0,ph=0,qh=0,rh=0,sh=0,th=0,uh=0,vh=0,wh=0,xh=0,yh=0,zh=0,Ah=0,Bh=0,Ch=0,Dh=0,Eh=0,Fh=0,Gh=0,Hh=0,Ih=0,Jh=0,Kh=0,Lh=0,Mh=0,Nh=0,Oh=0,Ph=0,Qh=0,Rh=0,Sh=0,Th=0,Uh=0,Vh=0,Wh=0,Xh=0,Yh=0,Zh=0,_h=0,$h=0,ai=0,bi=0,ci=0,di=0,ei=0,fi=0,gi=0,hi=0,ii=0,ji=0,ki=0,li=0,mi=0,ni=0,oi=0,pi=0,qi=0,ri=0,si=0,ti=0,ui=0,vi=0,wi=0,xi=0,yi=0,zi=0,Ai=0,Bi=0,Ci=0,Di=0,Ei=0,Fi=0,Gi=0,Hi=0,Ii=0,Ji=0,Ki=0,Li=0,Mi=0,Ni=0,Oi=0,Pi=0,Qi=0,Ri=0,Si=0,Ti=0,Ui=0,Vi=0,Wi=0,Xi=0,Yi=0,Zi=0,_i=0,$i=0,aj=0,bj=0,cj=0,dj=0,ej=0,fj=0,gj=0,hj=0,ij=0,jj=0,kj=0,lj=0,mj=0,nj=0,oj=0,pj=0,qj=0,rj=0,sj=0,tj=0,uj=0,vj=0,wj=0,xj=0,yj=0,zj=0,Aj=0,Bj=0,Cj=0,Dj=0,Ej=0;i=l;l=l+2144|0;j=i+2136|0;k=i+2132|0;m=i+2128|0;n=i+2124|0;o=i+2120|0;p=i+2116|0;q=i+2112|0;r=i+2108|0;s=i+2104|0;t=i+2100|0;u=i+2096|0;v=i+2092|0;w=i+2088|0;x=i+2084|0;y=i+2080|0;z=i+2076|0;A=i+2072|0;B=i+2068|0;C=i+2064|0;D=i+2060|0;E=i+2056|0;F=i+2052|0;G=i+2048|0;H=i+2044|0;I=i+2040|0;J=i+2036|0;K=i+2032|0;L=i+2028|0;M=i+2024|0;N=i+2020|0;O=i+2016|0;P=i+2012|0;Q=i+2008|0;R=i+2004|0;S=i+2e3|0;T=i+1996|0;U=i+1992|0;V=i+1988|0;W=i+1984|0;X=i+1980|0;Y=i+1976|0;Z=i+1972|0;_=i+1968|0;$=i+1964|0;aa=i+1960|0;ba=i+1956|0;ca=i+1952|0;da=i+1948|0;ea=i+1944|0;fa=i+1940|0;ga=i+1936|0;ha=i+1932|0;ia=i+1928|0;ja=i+1924|0;ka=i+1920|0;la=i+1916|0;ma=i+1912|0;na=i+1908|0;oa=i+1904|0;pa=i+1900|0;qa=i+1896|0;ra=i+1892|0;sa=i+1888|0;ta=i+1884|0;ua=i+1880|0;va=i+1876|0;wa=i+1872|0;xa=i+1868|0;ya=i+1864|0;za=i+1860|0;Aa=i+1856|0;Ba=i+1852|0;Ca=i+1848|0;Da=i+1844|0;Ea=i+1840|0;Fa=i+1836|0;Ga=i+1832|0;Ha=i+1828|0;Ia=i+1824|0;Ja=i+1820|0;Ka=i+1816|0;La=i+1812|0;Ma=i+1808|0;Na=i+1804|0;Oa=i+1800|0;Pa=i+1796|0;Qa=i+1792|0;Ra=i+1788|0;Sa=i+1784|0;Ta=i+1780|0;Ua=i+1776|0;Va=i+1772|0;Wa=i+1768|0;Xa=i+1764|0;Ya=i+1760|0;Za=i+1756|0;_a=i+1752|0;$a=i+1748|0;ab=i+1744|0;bb=i+1740|0;cb=i+1736|0;db=i+1732|0;eb=i+1728|0;fb=i+1724|0;gb=i+1720|0;hb=i+1716|0;ib=i+1712|0;jb=i+1708|0;kb=i+1704|0;lb=i+1700|0;mb=i+1696|0;nb=i+1692|0;ob=i+1688|0;pb=i+1684|0;qb=i+1680|0;rb=i+1676|0;sb=i+1672|0;tb=i+1668|0;ub=i+1664|0;vb=i+1660|0;wb=i+1656|0;xb=i+1652|0;yb=i+1648|0;zb=i+1644|0;Ab=i+1640|0;Bb=i+1636|0;Cb=i+1632|0;Db=i+1628|0;Eb=i+1624|0;Fb=i+1620|0;Gb=i+1616|0;Hb=i+1612|0;Ib=i+1608|0;Jb=i+1604|0;Kb=i+1600|0;Lb=i+1596|0;Mb=i+1592|0;Nb=i+1588|0;Ob=i+1584|0;Pb=i+1580|0;Qb=i+1576|0;Rb=i+1572|0;Sb=i+1568|0;Tb=i+1564|0;Ub=i+1560|0;Vb=i+1556|0;Wb=i+1552|0;Xb=i+1548|0;Yb=i+1544|0;Zb=i+1540|0;_b=i+1536|0;$b=i+1532|0;ac=i+1528|0;bc=i+1524|0;cc=i+1520|0;dc=i+1516|0;ec=i+1512|0;fc=i+1508|0;gc=i+1504|0;hc=i+1500|0;ic=i+1496|0;jc=i+1492|0;kc=i+1488|0;lc=i+1484|0;mc=i+1480|0;nc=i+1476|0;oc=i+1472|0;pc=i+1468|0;qc=i+1464|0;rc=i+1460|0;sc=i+1456|0;tc=i+1452|0;uc=i+1448|0;vc=i+1444|0;wc=i+1440|0;xc=i+1436|0;yc=i+1432|0;zc=i+1428|0;Ac=i+1424|0;Bc=i+1420|0;Cc=i+1416|0;Dc=i+1412|0;Ec=i+1408|0;Fc=i+1404|0;Gc=i+1400|0;Hc=i+1396|0;Ic=i+1392|0;Jc=i+1388|0;Kc=i+1384|0;Lc=i+1380|0;Mc=i+1376|0;Nc=i+1372|0;Oc=i+1368|0;Pc=i+1364|0;Qc=i+1360|0;Rc=i+1356|0;Sc=i+1352|0;Tc=i+1348|0;Uc=i+1344|0;Vc=i+1340|0;Wc=i+1336|0;Xc=i+1332|0;Yc=i+1328|0;Zc=i+1324|0;_c=i+1320|0;$c=i+1316|0;ad=i+1312|0;bd=i+1308|0;cd=i+1304|0;dd=i+1300|0;ed=i+1296|0;fd=i+1292|0;gd=i+1288|0;hd=i+1284|0;id=i+1280|0;jd=i+1276|0;kd=i+1272|0;ld=i+1268|0;md=i+1264|0;nd=i+1260|0;od=i+1256|0;pd=i+1252|0;qd=i+1248|0;rd=i+1244|0;sd=i+1240|0;td=i+1236|0;ud=i+1232|0;vd=i+1228|0;wd=i+1224|0;xd=i+1220|0;yd=i+1216|0;zd=i+1212|0;Ad=i+1208|0;Bd=i+1204|0;Cd=i+1200|0;Dd=i+1196|0;Ed=i+1192|0;Fd=i+1188|0;Gd=i+1184|0;Hd=i+1180|0;Id=i+1176|0;Jd=i+1172|0;Kd=i+1168|0;Ld=i+1164|0;Md=i+1160|0;Nd=i+1156|0;Od=i+1152|0;Pd=i+1148|0;Qd=i+1144|0;Rd=i+1140|0;Sd=i+1136|0;Td=i+1132|0;Ud=i+1128|0;Vd=i+1124|0;Wd=i+1120|0;Xd=i+1116|0;Yd=i+1112|0;Zd=i+1108|0;_d=i+1104|0;$d=i+1100|0;ae=i+1096|0;be=i+1092|0;ce=i+1088|0;de=i+1084|0;ee=i+1080|0;fe=i+1076|0;ge=i+1072|0;he=i+1068|0;ie=i+1064|0;je=i+1060|0;ke=i+1056|0;le=i+1052|0;me=i+1048|0;ne=i+1044|0;oe=i+1040|0;pe=i+1036|0;qe=i+1032|0;re=i+1028|0;se=i+1024|0;te=i+1020|0;ue=i+1016|0;ve=i+1012|0;we=i+1008|0;xe=i+1004|0;ye=i+1e3|0;ze=i+996|0;Ae=i+992|0;Be=i+988|0;Ce=i+984|0;De=i+980|0;Ee=i+976|0;Fe=i+972|0;Ge=i+968|0;He=i+964|0;Ie=i+960|0;Je=i+956|0;Ke=i+952|0;Le=i+948|0;Me=i+944|0;Ne=i+940|0;Oe=i+936|0;Pe=i+932|0;Qe=i+928|0;Re=i+924|0;Se=i+920|0;Te=i+916|0;Ue=i+912|0;Ve=i+908|0;We=i+904|0;Xe=i+900|0;Ye=i+896|0;Ze=i+892|0;_e=i+888|0;$e=i+884|0;af=i+880|0;bf=i+876|0;cf=i+872|0;df=i+868|0;ef=i+864|0;ff=i+860|0;gf=i+856|0;hf=i+852|0;jf=i+848|0;kf=i+844|0;lf=i+840|0;mf=i+836|0;nf=i+832|0;of=i+828|0;pf=i+824|0;qf=i+820|0;rf=i+816|0;sf=i+812|0;tf=i+808|0;uf=i+804|0;vf=i+800|0;wf=i+796|0;xf=i+792|0;yf=i+788|0;zf=i+784|0;Af=i+780|0;Bf=i+776|0;Cf=i+772|0;Df=i+768|0;Ef=i+764|0;Ff=i+760|0;Gf=i+756|0;Hf=i+752|0;If=i+748|0;Jf=i+744|0;Kf=i+740|0;Lf=i+736|0;Mf=i+732|0;Nf=i+728|0;Of=i+724|0;Pf=i+720|0;Qf=i+716|0;Rf=i+712|0;Sf=i+708|0;Tf=i+704|0;Uf=i+700|0;Vf=i+696|0;Wf=i+692|0;Xf=i+688|0;Yf=i+684|0;Zf=i+680|0;_f=i+676|0;$f=i+672|0;ag=i+668|0;bg=i+664|0;cg=i+660|0;dg=i+656|0;eg=i+652|0;fg=i+648|0;gg=i+644|0;hg=i+640|0;ig=i+636|0;jg=i+632|0;kg=i+628|0;lg=i+624|0;mg=i+620|0;ng=i+616|0;og=i+612|0;pg=i+608|0;qg=i+604|0;rg=i+600|0;sg=i+596|0;tg=i+592|0;ug=i+588|0;vg=i+584|0;wg=i+580|0;xg=i+576|0;yg=i+572|0;zg=i+568|0;Ag=i+564|0;Bg=i+560|0;Cg=i+556|0;Dg=i+552|0;Eg=i+548|0;Fg=i+544|0;Gg=i+540|0;Hg=i+536|0;Ig=i+532|0;Jg=i+528|0;Kg=i+524|0;Lg=i+520|0;Mg=i+516|0;Ng=i+512|0;Og=i+508|0;Pg=i+504|0;Qg=i+500|0;Rg=i+496|0;Sg=i+492|0;Tg=i+488|0;Ug=i+484|0;Vg=i+480|0;Wg=i+476|0;Xg=i+472|0;Yg=i+468|0;Zg=i+464|0;_g=i+460|0;$g=i+456|0;ah=i+452|0;bh=i+448|0;ch=i+444|0;dh=i+440|0;eh=i+436|0;fh=i+432|0;gh=i+428|0;hh=i+424|0;ih=i+420|0;jh=i+416|0;kh=i+412|0;lh=i+408|0;mh=i+404|0;nh=i+400|0;oh=i+396|0;ph=i+392|0;qh=i+388|0;rh=i+384|0;sh=i+380|0;th=i+376|0;uh=i+372|0;vh=i+368|0;wh=i+364|0;xh=i+360|0;yh=i+356|0;zh=i+352|0;Ah=i+348|0;Bh=i+344|0;Ch=i+340|0;Dh=i+336|0;Eh=i+332|0;Fh=i+328|0;Gh=i+324|0;Hh=i+320|0;Ih=i+316|0;Jh=i+312|0;Kh=i+308|0;Lh=i+304|0;Mh=i+300|0;Nh=i+296|0;Oh=i+292|0;Ph=i+288|0;Qh=i+284|0;Rh=i+280|0;Sh=i+276|0;Th=i+272|0;Uh=i+268|0;Vh=i+264|0;Wh=i+260|0;Xh=i+256|0;Yh=i+252|0;Zh=i+248|0;_h=i+244|0;$h=i+240|0;ai=i+236|0;bi=i+232|0;ci=i+228|0;di=i+216|0;ei=i+212|0;fi=i+208|0;gi=i+204|0;hi=i+200|0;ii=i+196|0;ji=i+192|0;ki=i+188|0;li=i+184|0;mi=i+180|0;ni=i+176|0;oi=i+172|0;pi=i+168|0;qi=i+164|0;ri=i+160|0;si=i+148|0;ti=i+144|0;ui=i+140|0;vi=i+136|0;wi=i+132|0;xi=i+128|0;yi=i+124|0;zi=i+120|0;Ai=i+116|0;Bi=i+112|0;Ci=i+108|0;Di=i+104|0;Ei=i+100|0;Fi=i+88|0;Gi=i+84|0;Hi=i+80|0;Ii=i+76|0;Ji=i+72|0;Ki=i+68|0;Li=i+64|0;Mi=i+60|0;Ni=i+56|0;Oi=i+52|0;Pi=i+48|0;Qi=i+44|0;Ri=i+40|0;Si=i+36|0;Ti=i+32|0;Ui=i+28|0;Vi=i+24|0;Wi=i+20|0;Xi=i+16|0;Yi=i+12|0;Zi=i+8|0;_i=i+4|0;$i=i;c[Wi>>2]=a;c[Xi>>2]=b;c[Yi>>2]=e;c[Zi>>2]=f;c[_i>>2]=g;c[$i>>2]=h;h=c[Xi>>2]|0;Xi=c[Yi>>2]|0;Yi=c[Zi>>2]|0;Zi=c[_i>>2]|0;_i=c[$i>>2]|0;c[Lh>>2]=c[Wi>>2];c[Mh>>2]=h;c[Nh>>2]=Xi;c[Oh>>2]=Yi;c[Ph>>2]=Zi;c[Qh>>2]=_i;c[Rh>>2]=2;c[Sh>>2]=1;c[Th>>2]=(c[Lh>>2]|0)+48;c[Uh>>2]=c[Ph>>2];c[Vh>>2]=c[Uh>>2];c[Wh>>2]=c[Uh>>2];c[Xh>>2]=(c[Uh>>2]|0)+(c[Qh>>2]|0);c[Yh>>2]=(c[Xh>>2]|0)+-8;c[Zh>>2]=c[(c[Lh>>2]|0)+4>>2];c[_h>>2]=(c[Zh>>2]|0)+(c[(c[Lh>>2]|0)+12>>2]|0);if((c[(c[Oh>>2]|0)+20>>2]|0)>>>0<4095)aj=c[(c[Oh>>2]|0)+20>>2]|0;else aj=4095;c[$h>>2]=aj;c[ai>>2]=(c[(c[Oh>>2]|0)+16>>2]|0)==3?3:4;c[bi>>2]=c[(c[Th>>2]|0)+20>>2];c[ci>>2]=c[(c[Th>>2]|0)+16>>2];c[(c[Lh>>2]|0)+28>>2]=c[(c[Lh>>2]|0)+24>>2];lm(c[Th>>2]|0,c[Ph>>2]|0,c[Qh>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+((c[Vh>>2]|0)==(c[_h>>2]|0)&1);c[di>>2]=0;c[di+4>>2]=0;c[di+8>>2]=0;while(1){if((c[Vh>>2]|0)>>>0>=(c[Yh>>2]|0)>>>0)break;c[fi>>2]=0;c[ii>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[ji>>2]=((c[ii>>2]|0)!=0^1)&1;_h=c[Oh>>2]|0;Qh=c[Vh>>2]|0;Ph=c[Xh>>2]|0;aj=c[Sh>>2]|0;Zh=c[Nh>>2]|0;Uh=c[ji>>2]|0;_i=c[ci>>2]|0;Zi=c[ai>>2]|0;c[Bh>>2]=c[Lh>>2];c[Ch>>2]=_h;c[Dh>>2]=Qh;c[Eh>>2]=Ph;c[Fh>>2]=aj;c[Gh>>2]=Zh;c[Hh>>2]=Uh;c[Ih>>2]=_i;c[Jh>>2]=Zi;c[Kh>>2]=c[(c[Ch>>2]|0)+16>>2];a:do{if((c[Dh>>2]|0)>>>0<((c[(c[Bh>>2]|0)+4>>2]|0)+(c[(c[Bh>>2]|0)+24>>2]|0)|0)>>>0)c[Ah>>2]=0;else{Zi=c[Ch>>2]|0;_i=c[Dh>>2]|0;Uh=c[Eh>>2]|0;Zh=c[Kh>>2]|0;aj=c[Fh>>2]|0;c[rh>>2]=c[Bh>>2];c[sh>>2]=Zi;c[th>>2]=_i;c[uh>>2]=Uh;c[vh>>2]=Zh;c[wh>>2]=aj;c[xh>>2]=c[(c[rh>>2]|0)+4>>2];c[yh>>2]=(c[th>>2]|0)-(c[xh>>2]|0);c[zh>>2]=c[(c[rh>>2]|0)+24>>2];while(1){if((c[zh>>2]|0)>>>0>=(c[yh>>2]|0)>>>0)break;aj=Rj(c[rh>>2]|0,c[sh>>2]|0,(c[xh>>2]|0)+(c[zh>>2]|0)|0,c[uh>>2]|0,c[vh>>2]|0,c[wh>>2]|0)|0;c[zh>>2]=(c[zh>>2]|0)+aj;}c[(c[rh>>2]|0)+24>>2]=c[yh>>2];switch(c[Kh>>2]|0){case 3:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[wg>>2]=c[Bh>>2];c[xg>>2]=aj;c[yg>>2]=Zh;c[zg>>2]=Uh;c[Ag>>2]=_i;c[Bg>>2]=Zi;c[Cg>>2]=Ph;c[Dg>>2]=Qh;c[Eg>>2]=_h;c[Fg>>2]=3;if((c[(c[xg>>2]|0)+20>>2]|0)>>>0<4095)bj=c[(c[xg>>2]|0)+20>>2]|0;else bj=4095;c[Gg>>2]=bj;c[Hg>>2]=c[(c[wg>>2]|0)+4>>2];c[Ig>>2]=(c[yg>>2]|0)-(c[Hg>>2]|0);c[Jg>>2]=c[(c[xg>>2]|0)+8>>2];c[Kg>>2]=(c[Fg>>2]|0)==3?3:4;c[Lg>>2]=c[(c[wg>>2]|0)+36>>2];c[Mg>>2]=Sj(c[yg>>2]|0,c[Jg>>2]|0,c[Fg>>2]|0)|0;c[Ng>>2]=c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2];c[Og>>2]=c[(c[wg>>2]|0)+44>>2];c[Pg>>2]=(c[(c[xg>>2]|0)+4>>2]|0)-1;c[Qg>>2]=(1<<c[Pg>>2])-1;c[Rg>>2]=0;c[Sg>>2]=0;c[Tg>>2]=c[(c[wg>>2]|0)+8>>2];c[Ug>>2]=c[(c[wg>>2]|0)+12>>2];c[Vg>>2]=(c[Tg>>2]|0)+(c[Ug>>2]|0);c[Wg>>2]=(c[Hg>>2]|0)+(c[Ug>>2]|0);if((c[Qg>>2]|0)>>>0>=(c[Ig>>2]|0)>>>0)cj=0;else cj=(c[Ig>>2]|0)-(c[Qg>>2]|0)|0;c[Xg>>2]=cj;c[Yg>>2]=c[(c[wg>>2]|0)+16>>2];c[Zg>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2);c[_g>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2)+4;c[$g>>2]=(c[Ig>>2]|0)+8+1;c[bh>>2]=0;c[ch>>2]=1<<c[(c[xg>>2]|0)+12>>2];c[dh>>2]=(c[Eg>>2]|0)-1;c[eh>>2]=3+(c[Cg>>2]|0);c[fh>>2]=c[Cg>>2];while(1){if((c[fh>>2]|0)>>>0>=(c[eh>>2]|0)>>>0){dj=31;break;}_h=c[Bg>>2]|0;if((c[fh>>2]|0)==3)ej=(c[_h>>2]|0)-1|0;else ej=c[_h+(c[fh>>2]<<2)>>2]|0;c[gh>>2]=ej;c[hh>>2]=(c[Ig>>2]|0)-(c[gh>>2]|0);c[ih>>2]=0;if(((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Ug>>2]|0)|0)>>>0){_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0;if((_h|0)==(mm((c[yg>>2]|0)+(0-(c[gh>>2]|0))|0,c[Kg>>2]|0)|0)){_h=Tj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[yg>>2]|0)+(c[Kg>>2]|0)+(0-(c[gh>>2]|0))|0,c[zg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}else{c[jh>>2]=(c[Tg>>2]|0)+(c[hh>>2]|0);if((c[Ag>>2]|0?(((c[Ug>>2]|0)-1-(c[hh>>2]|0)|0)>>>0>=3?((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Yg>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0,(_h|0)==(mm(c[jh>>2]|0,c[Kg>>2]|0)|0)):0){_h=Uj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[jh>>2]|0)+(c[Kg>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}if((c[ih>>2]|0)>>>0>(c[dh>>2]|0)>>>0?(c[dh>>2]=c[ih>>2],c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[fh>>2]|0)-(c[Cg>>2]|0),c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ih>>2],c[bh>>2]=(c[bh>>2]|0)+1,((c[ih>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[ih>>2]|0)|0)==(c[zg>>2]|0))|0):0){dj=29;break;}c[fh>>2]=(c[fh>>2]|0)+1;}do{if((dj|0)==29){dj=0;c[vg>>2]=c[bh>>2];}else if((dj|0)==31){dj=0;if(((c[Fg>>2]|0)==3?(c[dh>>2]|0)>>>0<(c[Fg>>2]|0)>>>0:0)?(c[kh>>2]=nm(c[wg>>2]|0,c[yg>>2]|0)|0,((c[kh>>2]|0)>>>0>(c[Yg>>2]|0)>>>0?((c[Ig>>2]|0)-(c[kh>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ag>>2]|0?(c[kh>>2]|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[nh>>2]=(c[Tg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Uj(c[yg>>2]|0,c[nh>>2]|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;}else{c[mh>>2]=(c[Hg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Tj(c[yg>>2]|0,c[mh>>2]|0,c[zg>>2]|0)|0;}if((c[lh>>2]|0)>>>0>=(c[Fg>>2]|0)>>>0?(c[dh>>2]=c[lh>>2],c[c[Dg>>2]>>2]=(c[Ig>>2]|0)-(c[kh>>2]|0)+2,c[(c[Dg>>2]|0)+4>>2]=c[lh>>2],c[bh>>2]=1,((c[lh>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[lh>>2]|0)|0)==(c[zg>>2]|0))|0):0){c[(c[wg>>2]|0)+24>>2]=(c[Ig>>2]|0)+1;c[vg>>2]=1;break;}}c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2]=c[Ig>>2];while(1){_h=c[ch>>2]|0;c[ch>>2]=_h+-1;if(!_h)break;if((c[Ng>>2]|0)>>>0<=(c[Yg>>2]|0)>>>0)break;c[oh>>2]=(c[Og>>2]|0)+((c[Ng>>2]&c[Qg>>2])<<1<<2);c[ph>>2]=(c[Rg>>2]|0)>>>0<(c[Sg>>2]|0)>>>0?c[Rg>>2]|0:c[Sg>>2]|0;if(c[Ag>>2]|0?((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[qh>>2]=(c[Tg>>2]|0)+(c[Ng>>2]|0);_h=Uj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;if(((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0>=(c[Ug>>2]|0)>>>0)c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);}else{c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);_h=Tj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;}if((c[ph>>2]|0)>>>0>(c[dh>>2]|0)>>>0){if((c[ph>>2]|0)>>>0>((c[$g>>2]|0)-(c[Ng>>2]|0)|0)>>>0)c[$g>>2]=(c[Ng>>2]|0)+(c[ph>>2]|0);c[dh>>2]=c[ph>>2];c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[Ig>>2]|0)-(c[Ng>>2]|0)+2;c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ph>>2];c[bh>>2]=(c[bh>>2]|0)+1;if((c[ph>>2]|0)>>>0>4096)break;if(((c[yg>>2]|0)+(c[ph>>2]|0)|0)==(c[zg>>2]|0))break;}_h=c[Ng>>2]|0;if((d[(c[qh>>2]|0)+(c[ph>>2]|0)>>0]|0|0)<(d[(c[yg>>2]|0)+(c[ph>>2]|0)>>0]|0|0)){c[c[Zg>>2]>>2]=_h;c[Rg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=56;break;}c[Zg>>2]=(c[oh>>2]|0)+4;c[Ng>>2]=c[(c[oh>>2]|0)+4>>2];}else{c[c[_g>>2]>>2]=_h;c[Sg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=59;break;}c[_g>>2]=c[oh>>2];c[Ng>>2]=c[c[oh>>2]>>2];}}if((dj|0)==56){dj=0;c[Zg>>2]=ah;}else if((dj|0)==59){dj=0;c[_g>>2]=ah;}c[c[_g>>2]>>2]=0;c[c[Zg>>2]>>2]=0;c[(c[wg>>2]|0)+24>>2]=(c[$g>>2]|0)-8;c[vg>>2]=c[bh>>2];}}while(0);c[Ah>>2]=c[vg>>2];break a;break;}case 7:case 6:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Hd>>2]=c[Bh>>2];c[Id>>2]=_h;c[Jd>>2]=Qh;c[Kd>>2]=Ph;c[Ld>>2]=Zi;c[Md>>2]=_i;c[Nd>>2]=Uh;c[Od>>2]=Zh;c[Pd>>2]=aj;c[Qd>>2]=6;if((c[(c[Id>>2]|0)+20>>2]|0)>>>0<4095)fj=c[(c[Id>>2]|0)+20>>2]|0;else fj=4095;c[Rd>>2]=fj;c[Sd>>2]=c[(c[Hd>>2]|0)+4>>2];c[Td>>2]=(c[Jd>>2]|0)-(c[Sd>>2]|0);c[Ud>>2]=c[(c[Id>>2]|0)+8>>2];c[Vd>>2]=(c[Qd>>2]|0)==3?3:4;c[Wd>>2]=c[(c[Hd>>2]|0)+36>>2];c[Xd>>2]=Sj(c[Jd>>2]|0,c[Ud>>2]|0,c[Qd>>2]|0)|0;c[Yd>>2]=c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2];c[Zd>>2]=c[(c[Hd>>2]|0)+44>>2];c[_d>>2]=(c[(c[Id>>2]|0)+4>>2]|0)-1;c[$d>>2]=(1<<c[_d>>2])-1;c[ae>>2]=0;c[be>>2]=0;c[ce>>2]=c[(c[Hd>>2]|0)+8>>2];c[de>>2]=c[(c[Hd>>2]|0)+12>>2];c[ee>>2]=(c[ce>>2]|0)+(c[de>>2]|0);c[fe>>2]=(c[Sd>>2]|0)+(c[de>>2]|0);if((c[$d>>2]|0)>>>0>=(c[Td>>2]|0)>>>0)gj=0;else gj=(c[Td>>2]|0)-(c[$d>>2]|0)|0;c[ge>>2]=gj;c[he>>2]=c[(c[Hd>>2]|0)+16>>2];c[ie>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2);c[je>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2)+4;c[ke>>2]=(c[Td>>2]|0)+8+1;c[me>>2]=0;c[ne>>2]=1<<c[(c[Id>>2]|0)+12>>2];c[oe>>2]=(c[Pd>>2]|0)-1;c[pe>>2]=3+(c[Nd>>2]|0);c[qe>>2]=c[Nd>>2];while(1){if((c[qe>>2]|0)>>>0>=(c[pe>>2]|0)>>>0){dj=190;break;}aj=c[Md>>2]|0;if((c[qe>>2]|0)==3)hj=(c[aj>>2]|0)-1|0;else hj=c[aj+(c[qe>>2]<<2)>>2]|0;c[re>>2]=hj;c[se>>2]=(c[Td>>2]|0)-(c[re>>2]|0);c[te>>2]=0;if(((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[de>>2]|0)|0)>>>0){aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0;if((aj|0)==(mm((c[Jd>>2]|0)+(0-(c[re>>2]|0))|0,c[Vd>>2]|0)|0)){aj=Tj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[Jd>>2]|0)+(c[Vd>>2]|0)+(0-(c[re>>2]|0))|0,c[Kd>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}else{c[ue>>2]=(c[ce>>2]|0)+(c[se>>2]|0);if((c[Ld>>2]|0?(((c[de>>2]|0)-1-(c[se>>2]|0)|0)>>>0>=3?((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[he>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0,(aj|0)==(mm(c[ue>>2]|0,c[Vd>>2]|0)|0)):0){aj=Uj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[ue>>2]|0)+(c[Vd>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}if((c[te>>2]|0)>>>0>(c[oe>>2]|0)>>>0?(c[oe>>2]=c[te>>2],c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[qe>>2]|0)-(c[Nd>>2]|0),c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[te>>2],c[me>>2]=(c[me>>2]|0)+1,((c[te>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[te>>2]|0)|0)==(c[Kd>>2]|0))|0):0){dj=188;break;}c[qe>>2]=(c[qe>>2]|0)+1;}do{if((dj|0)==188){dj=0;c[Gd>>2]=c[me>>2];}else if((dj|0)==190){dj=0;if(((c[Qd>>2]|0)==3?(c[oe>>2]|0)>>>0<(c[Qd>>2]|0)>>>0:0)?(c[ve>>2]=nm(c[Hd>>2]|0,c[Jd>>2]|0)|0,((c[ve>>2]|0)>>>0>(c[he>>2]|0)>>>0?((c[Td>>2]|0)-(c[ve>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ld>>2]|0?(c[ve>>2]|0)>>>0<(c[de>>2]|0)>>>0:0){c[ye>>2]=(c[ce>>2]|0)+(c[ve>>2]|0);c[we>>2]=Uj(c[Jd>>2]|0,c[ye>>2]|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;}else{c[xe>>2]=(c[Sd>>2]|0)+(c[ve>>2]|0);c[we>>2]=Tj(c[Jd>>2]|0,c[xe>>2]|0,c[Kd>>2]|0)|0;}if((c[we>>2]|0)>>>0>=(c[Qd>>2]|0)>>>0?(c[oe>>2]=c[we>>2],c[c[Od>>2]>>2]=(c[Td>>2]|0)-(c[ve>>2]|0)+2,c[(c[Od>>2]|0)+4>>2]=c[we>>2],c[me>>2]=1,((c[we>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[we>>2]|0)|0)==(c[Kd>>2]|0))|0):0){c[(c[Hd>>2]|0)+24>>2]=(c[Td>>2]|0)+1;c[Gd>>2]=1;break;}}c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2]=c[Td>>2];while(1){aj=c[ne>>2]|0;c[ne>>2]=aj+-1;if(!aj)break;if((c[Yd>>2]|0)>>>0<=(c[he>>2]|0)>>>0)break;c[ze>>2]=(c[Zd>>2]|0)+((c[Yd>>2]&c[$d>>2])<<1<<2);c[Ae>>2]=(c[ae>>2]|0)>>>0<(c[be>>2]|0)>>>0?c[ae>>2]|0:c[be>>2]|0;if(c[Ld>>2]|0?((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0<(c[de>>2]|0)>>>0:0){c[Be>>2]=(c[ce>>2]|0)+(c[Yd>>2]|0);aj=Uj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;if(((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0>=(c[de>>2]|0)>>>0)c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);}else{c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);aj=Tj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;}if((c[Ae>>2]|0)>>>0>(c[oe>>2]|0)>>>0){if((c[Ae>>2]|0)>>>0>((c[ke>>2]|0)-(c[Yd>>2]|0)|0)>>>0)c[ke>>2]=(c[Yd>>2]|0)+(c[Ae>>2]|0);c[oe>>2]=c[Ae>>2];c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[Td>>2]|0)-(c[Yd>>2]|0)+2;c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[Ae>>2];c[me>>2]=(c[me>>2]|0)+1;if((c[Ae>>2]|0)>>>0>4096)break;if(((c[Jd>>2]|0)+(c[Ae>>2]|0)|0)==(c[Kd>>2]|0))break;}aj=c[Yd>>2]|0;if((d[(c[Be>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)<(d[(c[Jd>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)){c[c[ie>>2]>>2]=aj;c[ae>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=215;break;}c[ie>>2]=(c[ze>>2]|0)+4;c[Yd>>2]=c[(c[ze>>2]|0)+4>>2];}else{c[c[je>>2]>>2]=aj;c[be>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=218;break;}c[je>>2]=c[ze>>2];c[Yd>>2]=c[c[ze>>2]>>2];}}if((dj|0)==215){dj=0;c[ie>>2]=le;}else if((dj|0)==218){dj=0;c[je>>2]=le;}c[c[je>>2]>>2]=0;c[c[ie>>2]>>2]=0;c[(c[Hd>>2]|0)+24>>2]=(c[ke>>2]|0)-8;c[Gd>>2]=c[me>>2];}}while(0);c[Ah>>2]=c[Gd>>2];break a;break;}case 5:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[De>>2]=c[Bh>>2];c[Ee>>2]=aj;c[Fe>>2]=Zh;c[Ge>>2]=Uh;c[He>>2]=_i;c[Ie>>2]=Zi;c[Je>>2]=Ph;c[Ke>>2]=Qh;c[Le>>2]=_h;c[Me>>2]=5;if((c[(c[Ee>>2]|0)+20>>2]|0)>>>0<4095)ij=c[(c[Ee>>2]|0)+20>>2]|0;else ij=4095;c[Ne>>2]=ij;c[Oe>>2]=c[(c[De>>2]|0)+4>>2];c[Pe>>2]=(c[Fe>>2]|0)-(c[Oe>>2]|0);c[Qe>>2]=c[(c[Ee>>2]|0)+8>>2];c[Re>>2]=(c[Me>>2]|0)==3?3:4;c[Se>>2]=c[(c[De>>2]|0)+36>>2];c[Te>>2]=Sj(c[Fe>>2]|0,c[Qe>>2]|0,c[Me>>2]|0)|0;c[Ue>>2]=c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2];c[Ve>>2]=c[(c[De>>2]|0)+44>>2];c[We>>2]=(c[(c[Ee>>2]|0)+4>>2]|0)-1;c[Xe>>2]=(1<<c[We>>2])-1;c[Ye>>2]=0;c[Ze>>2]=0;c[_e>>2]=c[(c[De>>2]|0)+8>>2];c[$e>>2]=c[(c[De>>2]|0)+12>>2];c[af>>2]=(c[_e>>2]|0)+(c[$e>>2]|0);c[bf>>2]=(c[Oe>>2]|0)+(c[$e>>2]|0);if((c[Xe>>2]|0)>>>0>=(c[Pe>>2]|0)>>>0)jj=0;else jj=(c[Pe>>2]|0)-(c[Xe>>2]|0)|0;c[cf>>2]=jj;c[df>>2]=c[(c[De>>2]|0)+16>>2];c[ef>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2);c[ff>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2)+4;c[gf>>2]=(c[Pe>>2]|0)+8+1;c[jf>>2]=0;c[kf>>2]=1<<c[(c[Ee>>2]|0)+12>>2];c[lf>>2]=(c[Le>>2]|0)-1;c[mf>>2]=3+(c[Je>>2]|0);c[nf>>2]=c[Je>>2];while(1){if((c[nf>>2]|0)>>>0>=(c[mf>>2]|0)>>>0){dj=137;break;}_h=c[Ie>>2]|0;if((c[nf>>2]|0)==3)kj=(c[_h>>2]|0)-1|0;else kj=c[_h+(c[nf>>2]<<2)>>2]|0;c[of>>2]=kj;c[pf>>2]=(c[Pe>>2]|0)-(c[of>>2]|0);c[qf>>2]=0;if(((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[$e>>2]|0)|0)>>>0){_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0;if((_h|0)==(mm((c[Fe>>2]|0)+(0-(c[of>>2]|0))|0,c[Re>>2]|0)|0)){_h=Tj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[Fe>>2]|0)+(c[Re>>2]|0)+(0-(c[of>>2]|0))|0,c[Ge>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}else{c[rf>>2]=(c[_e>>2]|0)+(c[pf>>2]|0);if((c[He>>2]|0?(((c[$e>>2]|0)-1-(c[pf>>2]|0)|0)>>>0>=3?((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[df>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0,(_h|0)==(mm(c[rf>>2]|0,c[Re>>2]|0)|0)):0){_h=Uj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[rf>>2]|0)+(c[Re>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}if((c[qf>>2]|0)>>>0>(c[lf>>2]|0)>>>0?(c[lf>>2]=c[qf>>2],c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[nf>>2]|0)-(c[Je>>2]|0),c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[qf>>2],c[jf>>2]=(c[jf>>2]|0)+1,((c[qf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[qf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){dj=135;break;}c[nf>>2]=(c[nf>>2]|0)+1;}do{if((dj|0)==135){dj=0;c[Ce>>2]=c[jf>>2];}else if((dj|0)==137){dj=0;if(((c[Me>>2]|0)==3?(c[lf>>2]|0)>>>0<(c[Me>>2]|0)>>>0:0)?(c[sf>>2]=nm(c[De>>2]|0,c[Fe>>2]|0)|0,((c[sf>>2]|0)>>>0>(c[df>>2]|0)>>>0?((c[Pe>>2]|0)-(c[sf>>2]|0)|0)>>>0<262144:0)|0):0){if(c[He>>2]|0?(c[sf>>2]|0)>>>0<(c[$e>>2]|0)>>>0:0){c[vf>>2]=(c[_e>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Uj(c[Fe>>2]|0,c[vf>>2]|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;}else{c[uf>>2]=(c[Oe>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Tj(c[Fe>>2]|0,c[uf>>2]|0,c[Ge>>2]|0)|0;}if((c[tf>>2]|0)>>>0>=(c[Me>>2]|0)>>>0?(c[lf>>2]=c[tf>>2],c[c[Ke>>2]>>2]=(c[Pe>>2]|0)-(c[sf>>2]|0)+2,c[(c[Ke>>2]|0)+4>>2]=c[tf>>2],c[jf>>2]=1,((c[tf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[tf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){c[(c[De>>2]|0)+24>>2]=(c[Pe>>2]|0)+1;c[Ce>>2]=1;break;}}c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2]=c[Pe>>2];while(1){_h=c[kf>>2]|0;c[kf>>2]=_h+-1;if(!_h)break;if((c[Ue>>2]|0)>>>0<=(c[df>>2]|0)>>>0)break;c[wf>>2]=(c[Ve>>2]|0)+((c[Ue>>2]&c[Xe>>2])<<1<<2);c[xf>>2]=(c[Ye>>2]|0)>>>0<(c[Ze>>2]|0)>>>0?c[Ye>>2]|0:c[Ze>>2]|0;if(c[He>>2]|0?((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0<(c[$e>>2]|0)>>>0:0){c[yf>>2]=(c[_e>>2]|0)+(c[Ue>>2]|0);_h=Uj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;if(((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0>=(c[$e>>2]|0)>>>0)c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);}else{c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);_h=Tj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;}if((c[xf>>2]|0)>>>0>(c[lf>>2]|0)>>>0){if((c[xf>>2]|0)>>>0>((c[gf>>2]|0)-(c[Ue>>2]|0)|0)>>>0)c[gf>>2]=(c[Ue>>2]|0)+(c[xf>>2]|0);c[lf>>2]=c[xf>>2];c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[Pe>>2]|0)-(c[Ue>>2]|0)+2;c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[xf>>2];c[jf>>2]=(c[jf>>2]|0)+1;if((c[xf>>2]|0)>>>0>4096)break;if(((c[Fe>>2]|0)+(c[xf>>2]|0)|0)==(c[Ge>>2]|0))break;}_h=c[Ue>>2]|0;if((d[(c[yf>>2]|0)+(c[xf>>2]|0)>>0]|0|0)<(d[(c[Fe>>2]|0)+(c[xf>>2]|0)>>0]|0|0)){c[c[ef>>2]>>2]=_h;c[Ye>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=162;break;}c[ef>>2]=(c[wf>>2]|0)+4;c[Ue>>2]=c[(c[wf>>2]|0)+4>>2];}else{c[c[ff>>2]>>2]=_h;c[Ze>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=165;break;}c[ff>>2]=c[wf>>2];c[Ue>>2]=c[c[wf>>2]>>2];}}if((dj|0)==162){dj=0;c[ef>>2]=hf;}else if((dj|0)==165){dj=0;c[ff>>2]=hf;}c[c[ff>>2]>>2]=0;c[c[ef>>2]>>2]=0;c[(c[De>>2]|0)+24>>2]=(c[gf>>2]|0)-8;c[Ce>>2]=c[jf>>2];}}while(0);c[Ah>>2]=c[Ce>>2];break a;break;}default:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Af>>2]=c[Bh>>2];c[Bf>>2]=_h;c[Cf>>2]=Qh;c[Df>>2]=Ph;c[Ef>>2]=Zi;c[Ff>>2]=_i;c[Gf>>2]=Uh;c[Hf>>2]=Zh;c[If>>2]=aj;c[Jf>>2]=4;if((c[(c[Bf>>2]|0)+20>>2]|0)>>>0<4095)lj=c[(c[Bf>>2]|0)+20>>2]|0;else lj=4095;c[Kf>>2]=lj;c[Lf>>2]=c[(c[Af>>2]|0)+4>>2];c[Mf>>2]=(c[Cf>>2]|0)-(c[Lf>>2]|0);c[Nf>>2]=c[(c[Bf>>2]|0)+8>>2];c[Of>>2]=(c[Jf>>2]|0)==3?3:4;c[Pf>>2]=c[(c[Af>>2]|0)+36>>2];c[Qf>>2]=Sj(c[Cf>>2]|0,c[Nf>>2]|0,c[Jf>>2]|0)|0;c[Rf>>2]=c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2];c[Sf>>2]=c[(c[Af>>2]|0)+44>>2];c[Tf>>2]=(c[(c[Bf>>2]|0)+4>>2]|0)-1;c[Uf>>2]=(1<<c[Tf>>2])-1;c[Vf>>2]=0;c[Wf>>2]=0;c[Xf>>2]=c[(c[Af>>2]|0)+8>>2];c[Yf>>2]=c[(c[Af>>2]|0)+12>>2];c[Zf>>2]=(c[Xf>>2]|0)+(c[Yf>>2]|0);c[_f>>2]=(c[Lf>>2]|0)+(c[Yf>>2]|0);if((c[Uf>>2]|0)>>>0>=(c[Mf>>2]|0)>>>0)mj=0;else mj=(c[Mf>>2]|0)-(c[Uf>>2]|0)|0;c[$f>>2]=mj;c[ag>>2]=c[(c[Af>>2]|0)+16>>2];c[bg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2);c[cg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2)+4;c[dg>>2]=(c[Mf>>2]|0)+8+1;c[fg>>2]=0;c[gg>>2]=1<<c[(c[Bf>>2]|0)+12>>2];c[hg>>2]=(c[If>>2]|0)-1;c[ig>>2]=3+(c[Gf>>2]|0);c[jg>>2]=c[Gf>>2];while(1){if((c[jg>>2]|0)>>>0>=(c[ig>>2]|0)>>>0){dj=84;break;}aj=c[Ff>>2]|0;if((c[jg>>2]|0)==3)nj=(c[aj>>2]|0)-1|0;else nj=c[aj+(c[jg>>2]<<2)>>2]|0;c[kg>>2]=nj;c[lg>>2]=(c[Mf>>2]|0)-(c[kg>>2]|0);c[mg>>2]=0;if(((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[Yf>>2]|0)|0)>>>0){aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0;if((aj|0)==(mm((c[Cf>>2]|0)+(0-(c[kg>>2]|0))|0,c[Of>>2]|0)|0)){aj=Tj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[Cf>>2]|0)+(c[Of>>2]|0)+(0-(c[kg>>2]|0))|0,c[Df>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}else{c[ng>>2]=(c[Xf>>2]|0)+(c[lg>>2]|0);if((c[Ef>>2]|0?(((c[Yf>>2]|0)-1-(c[lg>>2]|0)|0)>>>0>=3?((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[ag>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0,(aj|0)==(mm(c[ng>>2]|0,c[Of>>2]|0)|0)):0){aj=Uj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[ng>>2]|0)+(c[Of>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}if((c[mg>>2]|0)>>>0>(c[hg>>2]|0)>>>0?(c[hg>>2]=c[mg>>2],c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[jg>>2]|0)-(c[Gf>>2]|0),c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[mg>>2],c[fg>>2]=(c[fg>>2]|0)+1,((c[mg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[mg>>2]|0)|0)==(c[Df>>2]|0))|0):0){dj=82;break;}c[jg>>2]=(c[jg>>2]|0)+1;}do{if((dj|0)==82){dj=0;c[zf>>2]=c[fg>>2];}else if((dj|0)==84){dj=0;if(((c[Jf>>2]|0)==3?(c[hg>>2]|0)>>>0<(c[Jf>>2]|0)>>>0:0)?(c[og>>2]=nm(c[Af>>2]|0,c[Cf>>2]|0)|0,((c[og>>2]|0)>>>0>(c[ag>>2]|0)>>>0?((c[Mf>>2]|0)-(c[og>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ef>>2]|0?(c[og>>2]|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[rg>>2]=(c[Xf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Uj(c[Cf>>2]|0,c[rg>>2]|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;}else{c[qg>>2]=(c[Lf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Tj(c[Cf>>2]|0,c[qg>>2]|0,c[Df>>2]|0)|0;}if((c[pg>>2]|0)>>>0>=(c[Jf>>2]|0)>>>0?(c[hg>>2]=c[pg>>2],c[c[Hf>>2]>>2]=(c[Mf>>2]|0)-(c[og>>2]|0)+2,c[(c[Hf>>2]|0)+4>>2]=c[pg>>2],c[fg>>2]=1,((c[pg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[pg>>2]|0)|0)==(c[Df>>2]|0))|0):0){c[(c[Af>>2]|0)+24>>2]=(c[Mf>>2]|0)+1;c[zf>>2]=1;break;}}c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2]=c[Mf>>2];while(1){aj=c[gg>>2]|0;c[gg>>2]=aj+-1;if(!aj)break;if((c[Rf>>2]|0)>>>0<=(c[ag>>2]|0)>>>0)break;c[sg>>2]=(c[Sf>>2]|0)+((c[Rf>>2]&c[Uf>>2])<<1<<2);c[tg>>2]=(c[Vf>>2]|0)>>>0<(c[Wf>>2]|0)>>>0?c[Vf>>2]|0:c[Wf>>2]|0;if(c[Ef>>2]|0?((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[ug>>2]=(c[Xf>>2]|0)+(c[Rf>>2]|0);aj=Uj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;if(((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0>=(c[Yf>>2]|0)>>>0)c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);}else{c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);aj=Tj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;}if((c[tg>>2]|0)>>>0>(c[hg>>2]|0)>>>0){if((c[tg>>2]|0)>>>0>((c[dg>>2]|0)-(c[Rf>>2]|0)|0)>>>0)c[dg>>2]=(c[Rf>>2]|0)+(c[tg>>2]|0);c[hg>>2]=c[tg>>2];c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[Mf>>2]|0)-(c[Rf>>2]|0)+2;c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[tg>>2];c[fg>>2]=(c[fg>>2]|0)+1;if((c[tg>>2]|0)>>>0>4096)break;if(((c[Cf>>2]|0)+(c[tg>>2]|0)|0)==(c[Df>>2]|0))break;}aj=c[Rf>>2]|0;if((d[(c[ug>>2]|0)+(c[tg>>2]|0)>>0]|0|0)<(d[(c[Cf>>2]|0)+(c[tg>>2]|0)>>0]|0|0)){c[c[bg>>2]>>2]=aj;c[Vf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=109;break;}c[bg>>2]=(c[sg>>2]|0)+4;c[Rf>>2]=c[(c[sg>>2]|0)+4>>2];}else{c[c[cg>>2]>>2]=aj;c[Wf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=112;break;}c[cg>>2]=c[sg>>2];c[Rf>>2]=c[c[sg>>2]>>2];}}if((dj|0)==109){dj=0;c[bg>>2]=eg;}else if((dj|0)==112){dj=0;c[cg>>2]=eg;}c[c[cg>>2]>>2]=0;c[c[bg>>2]>>2]=0;c[(c[Af>>2]|0)+24>>2]=(c[dg>>2]|0)-8;c[zf>>2]=c[fg>>2];}}while(0);c[Ah>>2]=c[zf>>2];break a;}}}}while(0);c[ki>>2]=c[Ah>>2];if(!(c[ki>>2]|0)){c[Vh>>2]=(c[Vh>>2]|0)+1;continue;}c[li>>2]=0;while(1){if((c[li>>2]|0)>>>0>=3)break;c[(c[bi>>2]|0)+16+(c[li>>2]<<2)>>2]=c[(c[Nh>>2]|0)+(c[li>>2]<<2)>>2];c[li>>2]=(c[li>>2]|0)+1;}c[(c[bi>>2]|0)+8>>2]=1;c[(c[bi>>2]|0)+12>>2]=c[ii>>2];c[mi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)+4>>2];do{if((c[mi>>2]|0)>>>0<=(c[$h>>2]|0)>>>0){c[ni>>2]=om(di,c[Wh>>2]|0,c[ii>>2]|0,c[Th>>2]|0)|0;c[oi>>2]=0;while(1){if((c[oi>>2]|0)>>>0>=(c[ai>>2]|0)>>>0)break;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=1073741824;c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=0;while(1){if((c[pi>>2]|0)>>>0>=(c[ki>>2]|0)>>>0)break;c[qi>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)>>2];c[ri>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)+4>>2];pm(si,c[Nh>>2]|0,c[qi>>2]|0,c[ji>>2]|0);while(1){if((c[oi>>2]|0)>>>0>(c[ri>>2]|0)>>>0)break;aj=c[ni>>2]|0;Zh=c[oi>>2]|0;Uh=c[Th>>2]|0;_i=c[Rh>>2]|0;c[yd>>2]=c[qi>>2];c[zd>>2]=Zh;c[Ad>>2]=Uh;c[Bd>>2]=_i;c[Dd>>2]=qm((c[yd>>2]|0)+1|0)|0;c[Ed>>2]=(c[zd>>2]|0)-3;if(c[(c[Ad>>2]|0)+56>>2]|0){_i=(qm((c[Ed>>2]|0)+1|0)|0)+16|0;c[xd>>2]=_i+(c[Dd>>2]|0);}else{_i=(c[Dd>>2]|0)+(c[(c[Ad>>2]|0)+52>>2]|0)|0;c[Cd>>2]=_i-(qm((c[(c[(c[Ad>>2]|0)+12>>2]|0)+(c[Dd>>2]<<2)>>2]|0)+1|0)|0);if((c[Bd>>2]|0)<2&(c[Dd>>2]|0)>>>0>=20)c[Cd>>2]=(c[Cd>>2]|0)+((c[Dd>>2]|0)-19<<1);c[Fd>>2]=rm(c[Ed>>2]|0)|0;_i=(c[5840+(c[Fd>>2]<<2)>>2]|0)+(c[(c[Ad>>2]|0)+48>>2]|0)|0;Uh=_i-(qm((c[(c[(c[Ad>>2]|0)+8>>2]|0)+(c[Fd>>2]<<2)>>2]|0)+1|0)|0)|0;c[Cd>>2]=(c[Cd>>2]|0)+Uh;c[xd>>2]=c[Cd>>2];}c[ti>>2]=aj+(c[xd>>2]|0);c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=c[oi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+4>>2]=c[qi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+12>>2]=c[ii>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=c[ti>>2];aj=(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+16|0;c[aj>>2]=c[si>>2];c[aj+4>>2]=c[si+4>>2];c[aj+8>>2]=c[si+8>>2];c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=(c[pi>>2]|0)+1;}c[fi>>2]=(c[oi>>2]|0)-1;c[ei>>2]=1;b:while(1){if((c[ei>>2]|0)>>>0>(c[fi>>2]|0)>>>0){dj=504;break;}c[ui>>2]=(c[Vh>>2]|0)+(c[ei>>2]|0);if((c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+8>>2]|0)==1)oj=(c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+12>>2]|0)+1|0;else oj=1;c[vi>>2]=oj;if((c[ei>>2]|0)>>>0>(c[vi>>2]|0)>>>0){aj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[vi>>2]|0)|0)*28|0)>>2]|0;c[wi>>2]=aj+(sm((c[ui>>2]|0)+(0-(c[vi>>2]|0))|0,c[vi>>2]|0,c[Th>>2]|0)|0);}else c[wi>>2]=tm(di,c[Wh>>2]|0,c[vi>>2]|0,c[Th>>2]|0)|0;if((c[wi>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0)){c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+4>>2]=0;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]=c[vi>>2];c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]=c[wi>>2];aj=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Uh=(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+16|0;c[aj>>2]=c[Uh>>2];c[aj+4>>2]=c[Uh+4>>2];c[aj+8>>2]=c[Uh+8>>2];}c:do{if((c[ui>>2]|0)>>>0<=(c[Yh>>2]|0)>>>0){if((c[ei>>2]|0)==(c[fi>>2]|0)){dj=504;break b;}if((c[Rh>>2]|0)==0?(c[(c[bi>>2]|0)+(((c[ei>>2]|0)+1|0)*28|0)>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0):0)break;c[xi>>2]=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)!=1&1;if((c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)==1)pj=c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]|0;else pj=0;c[yi>>2]=pj;if((c[ei>>2]|0)>>>0>(c[yi>>2]|0)>>>0)qj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[yi>>2]|0)|0)*28|0)>>2]|0;else qj=0;c[zi>>2]=qj;Uh=c[zi>>2]|0;c[Ai>>2]=Uh+(um((c[ui>>2]|0)+(0-(c[yi>>2]|0))|0,c[yi>>2]|0,c[Th>>2]|0)|0);Uh=c[Oh>>2]|0;aj=c[ui>>2]|0;_i=c[Xh>>2]|0;Zh=c[Sh>>2]|0;Zi=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Ph=c[xi>>2]|0;Qh=c[ci>>2]|0;_h=c[ai>>2]|0;c[nd>>2]=c[Lh>>2];c[od>>2]=Uh;c[pd>>2]=aj;c[qd>>2]=_i;c[rd>>2]=Zh;c[sd>>2]=Zi;c[td>>2]=Ph;c[ud>>2]=Qh;c[vd>>2]=_h;c[wd>>2]=c[(c[od>>2]|0)+16>>2];d:do{if((c[pd>>2]|0)>>>0<((c[(c[nd>>2]|0)+4>>2]|0)+(c[(c[nd>>2]|0)+24>>2]|0)|0)>>>0)c[md>>2]=0;else{_h=c[od>>2]|0;Qh=c[pd>>2]|0;Ph=c[qd>>2]|0;Zi=c[wd>>2]|0;Zh=c[rd>>2]|0;c[dd>>2]=c[nd>>2];c[ed>>2]=_h;c[fd>>2]=Qh;c[gd>>2]=Ph;c[hd>>2]=Zi;c[id>>2]=Zh;c[jd>>2]=c[(c[dd>>2]|0)+4>>2];c[kd>>2]=(c[fd>>2]|0)-(c[jd>>2]|0);c[ld>>2]=c[(c[dd>>2]|0)+24>>2];while(1){if((c[ld>>2]|0)>>>0>=(c[kd>>2]|0)>>>0)break;Zh=Rj(c[dd>>2]|0,c[ed>>2]|0,(c[jd>>2]|0)+(c[ld>>2]|0)|0,c[gd>>2]|0,c[hd>>2]|0,c[id>>2]|0)|0;c[ld>>2]=(c[ld>>2]|0)+Zh;}c[(c[dd>>2]|0)+24>>2]=c[kd>>2];switch(c[wd>>2]|0){case 3:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[ic>>2]=c[nd>>2];c[jc>>2]=Zh;c[kc>>2]=Zi;c[lc>>2]=Ph;c[mc>>2]=Qh;c[nc>>2]=_h;c[oc>>2]=_i;c[pc>>2]=aj;c[qc>>2]=Uh;c[rc>>2]=3;if((c[(c[jc>>2]|0)+20>>2]|0)>>>0<4095)rj=c[(c[jc>>2]|0)+20>>2]|0;else rj=4095;c[sc>>2]=rj;c[tc>>2]=c[(c[ic>>2]|0)+4>>2];c[uc>>2]=(c[kc>>2]|0)-(c[tc>>2]|0);c[vc>>2]=c[(c[jc>>2]|0)+8>>2];c[wc>>2]=(c[rc>>2]|0)==3?3:4;c[xc>>2]=c[(c[ic>>2]|0)+36>>2];c[yc>>2]=Sj(c[kc>>2]|0,c[vc>>2]|0,c[rc>>2]|0)|0;c[zc>>2]=c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2];c[Ac>>2]=c[(c[ic>>2]|0)+44>>2];c[Bc>>2]=(c[(c[jc>>2]|0)+4>>2]|0)-1;c[Cc>>2]=(1<<c[Bc>>2])-1;c[Dc>>2]=0;c[Ec>>2]=0;c[Fc>>2]=c[(c[ic>>2]|0)+8>>2];c[Gc>>2]=c[(c[ic>>2]|0)+12>>2];c[Hc>>2]=(c[Fc>>2]|0)+(c[Gc>>2]|0);c[Ic>>2]=(c[tc>>2]|0)+(c[Gc>>2]|0);if((c[Cc>>2]|0)>>>0>=(c[uc>>2]|0)>>>0)sj=0;else sj=(c[uc>>2]|0)-(c[Cc>>2]|0)|0;c[Jc>>2]=sj;c[Kc>>2]=c[(c[ic>>2]|0)+16>>2];c[Lc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2);c[Mc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2)+4;c[Nc>>2]=(c[uc>>2]|0)+8+1;c[Pc>>2]=0;c[Qc>>2]=1<<c[(c[jc>>2]|0)+12>>2];c[Rc>>2]=(c[qc>>2]|0)-1;c[Sc>>2]=3+(c[oc>>2]|0);c[Tc>>2]=c[oc>>2];while(1){if((c[Tc>>2]|0)>>>0>=(c[Sc>>2]|0)>>>0){dj=287;break;}Uh=c[nc>>2]|0;if((c[Tc>>2]|0)==3)tj=(c[Uh>>2]|0)-1|0;else tj=c[Uh+(c[Tc>>2]<<2)>>2]|0;c[Uc>>2]=tj;c[Vc>>2]=(c[uc>>2]|0)-(c[Uc>>2]|0);c[Wc>>2]=0;do{if(((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Gc>>2]|0)|0)>>>0){Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm((c[kc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[wc>>2]|0)|0))break;Uh=Tj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[kc>>2]|0)+(c[wc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[lc>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}else{c[Xc>>2]=(c[Fc>>2]|0)+(c[Vc>>2]|0);if(!(c[mc>>2]|0))break;if(!((((c[Gc>>2]|0)-1-(c[Vc>>2]|0)|0)>>>0>=3?((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Kc>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm(c[Xc>>2]|0,c[wc>>2]|0)|0))break;Uh=Uj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[Xc>>2]|0)+(c[wc>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}}while(0);if((c[Wc>>2]|0)>>>0>(c[Rc>>2]|0)>>>0?(c[Rc>>2]=c[Wc>>2],c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[Tc>>2]|0)-(c[oc>>2]|0),c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[Wc>>2],c[Pc>>2]=(c[Pc>>2]|0)+1,((c[Wc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Wc>>2]|0)|0)==(c[lc>>2]|0))|0):0){dj=285;break;}c[Tc>>2]=(c[Tc>>2]|0)+1;}e:do{if((dj|0)==285){dj=0;c[hc>>2]=c[Pc>>2];}else if((dj|0)==287){dj=0;do{if((c[rc>>2]|0)==3){if((c[Rc>>2]|0)>>>0>=(c[rc>>2]|0)>>>0)break;c[Yc>>2]=nm(c[ic>>2]|0,c[kc>>2]|0)|0;if(!(((c[Yc>>2]|0)>>>0>(c[Kc>>2]|0)>>>0?((c[uc>>2]|0)-(c[Yc>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[mc>>2]|0){if((c[Yc>>2]|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=292;break;}c[$c>>2]=(c[Fc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Uj(c[kc>>2]|0,c[$c>>2]|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;}else dj=292;}while(0);if((dj|0)==292){dj=0;c[_c>>2]=(c[tc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Tj(c[kc>>2]|0,c[_c>>2]|0,c[lc>>2]|0)|0;}if((c[Zc>>2]|0)>>>0<(c[rc>>2]|0)>>>0)break;c[Rc>>2]=c[Zc>>2];c[c[pc>>2]>>2]=(c[uc>>2]|0)-(c[Yc>>2]|0)+2;c[(c[pc>>2]|0)+4>>2]=c[Zc>>2];c[Pc>>2]=1;if(!(((c[Zc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Zc>>2]|0)|0)==(c[lc>>2]|0))|0))break;c[(c[ic>>2]|0)+24>>2]=(c[uc>>2]|0)+1;c[hc>>2]=1;break e;}}while(0);c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2]=c[uc>>2];while(1){Uh=c[Qc>>2]|0;c[Qc>>2]=Uh+-1;if(!Uh)break;if((c[zc>>2]|0)>>>0<=(c[Kc>>2]|0)>>>0)break;c[ad>>2]=(c[Ac>>2]|0)+((c[zc>>2]&c[Cc>>2])<<1<<2);c[bd>>2]=(c[Dc>>2]|0)>>>0<(c[Ec>>2]|0)>>>0?c[Dc>>2]|0:c[Ec>>2]|0;do{if(c[mc>>2]|0){if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=302;break;}c[cd>>2]=(c[Fc>>2]|0)+(c[zc>>2]|0);Uh=Uj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0<(c[Gc>>2]|0)>>>0)break;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);}else dj=302;}while(0);if((dj|0)==302){dj=0;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);Uh=Tj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;}if((c[bd>>2]|0)>>>0>(c[Rc>>2]|0)>>>0){if((c[bd>>2]|0)>>>0>((c[Nc>>2]|0)-(c[zc>>2]|0)|0)>>>0)c[Nc>>2]=(c[zc>>2]|0)+(c[bd>>2]|0);c[Rc>>2]=c[bd>>2];c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[uc>>2]|0)-(c[zc>>2]|0)+2;c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[bd>>2];c[Pc>>2]=(c[Pc>>2]|0)+1;if((c[bd>>2]|0)>>>0>4096)break;if(((c[kc>>2]|0)+(c[bd>>2]|0)|0)==(c[lc>>2]|0))break;}Uh=c[zc>>2]|0;if((d[(c[cd>>2]|0)+(c[bd>>2]|0)>>0]|0|0)<(d[(c[kc>>2]|0)+(c[bd>>2]|0)>>0]|0|0)){c[c[Lc>>2]>>2]=Uh;c[Dc>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=312;break;}c[Lc>>2]=(c[ad>>2]|0)+4;c[zc>>2]=c[(c[ad>>2]|0)+4>>2];}else{c[c[Mc>>2]>>2]=Uh;c[Ec>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=315;break;}c[Mc>>2]=c[ad>>2];c[zc>>2]=c[c[ad>>2]>>2];}}if((dj|0)==312){dj=0;c[Lc>>2]=Oc;}else if((dj|0)==315){dj=0;c[Mc>>2]=Oc;}c[c[Mc>>2]>>2]=0;c[c[Lc>>2]>>2]=0;c[(c[ic>>2]|0)+24>>2]=(c[Nc>>2]|0)-8;c[hc>>2]=c[Pc>>2];}}while(0);c[md>>2]=c[hc>>2];break d;break;}case 7:case 6:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[u>>2]=c[nd>>2];c[v>>2]=Uh;c[w>>2]=aj;c[x>>2]=_i;c[y>>2]=_h;c[z>>2]=Qh;c[A>>2]=Ph;c[B>>2]=Zi;c[C>>2]=Zh;c[D>>2]=6;if((c[(c[v>>2]|0)+20>>2]|0)>>>0<4095)uj=c[(c[v>>2]|0)+20>>2]|0;else uj=4095;c[E>>2]=uj;c[F>>2]=c[(c[u>>2]|0)+4>>2];c[G>>2]=(c[w>>2]|0)-(c[F>>2]|0);c[H>>2]=c[(c[v>>2]|0)+8>>2];c[I>>2]=(c[D>>2]|0)==3?3:4;c[J>>2]=c[(c[u>>2]|0)+36>>2];c[K>>2]=Sj(c[w>>2]|0,c[H>>2]|0,c[D>>2]|0)|0;c[L>>2]=c[(c[J>>2]|0)+(c[K>>2]<<2)>>2];c[M>>2]=c[(c[u>>2]|0)+44>>2];c[N>>2]=(c[(c[v>>2]|0)+4>>2]|0)-1;c[O>>2]=(1<<c[N>>2])-1;c[P>>2]=0;c[Q>>2]=0;c[R>>2]=c[(c[u>>2]|0)+8>>2];c[S>>2]=c[(c[u>>2]|0)+12>>2];c[T>>2]=(c[R>>2]|0)+(c[S>>2]|0);c[U>>2]=(c[F>>2]|0)+(c[S>>2]|0);if((c[O>>2]|0)>>>0>=(c[G>>2]|0)>>>0)vj=0;else vj=(c[G>>2]|0)-(c[O>>2]|0)|0;c[V>>2]=vj;c[W>>2]=c[(c[u>>2]|0)+16>>2];c[X>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2);c[Y>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2)+4;c[Z>>2]=(c[G>>2]|0)+8+1;c[$>>2]=0;c[aa>>2]=1<<c[(c[v>>2]|0)+12>>2];c[ba>>2]=(c[C>>2]|0)-1;c[ca>>2]=3+(c[A>>2]|0);c[da>>2]=c[A>>2];while(1){if((c[da>>2]|0)>>>0>=(c[ca>>2]|0)>>>0){dj=446;break;}Zh=c[z>>2]|0;if((c[da>>2]|0)==3)wj=(c[Zh>>2]|0)-1|0;else wj=c[Zh+(c[da>>2]<<2)>>2]|0;c[ea>>2]=wj;c[fa>>2]=(c[G>>2]|0)-(c[ea>>2]|0);c[ga>>2]=0;do{if(((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[S>>2]|0)|0)>>>0){Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm((c[w>>2]|0)+(0-(c[ea>>2]|0))|0,c[I>>2]|0)|0))break;Zh=Tj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[w>>2]|0)+(c[I>>2]|0)+(0-(c[ea>>2]|0))|0,c[x>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}else{c[ha>>2]=(c[R>>2]|0)+(c[fa>>2]|0);if(!(c[y>>2]|0))break;if(!((((c[S>>2]|0)-1-(c[fa>>2]|0)|0)>>>0>=3?((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[W>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm(c[ha>>2]|0,c[I>>2]|0)|0))break;Zh=Uj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[ha>>2]|0)+(c[I>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}}while(0);if((c[ga>>2]|0)>>>0>(c[ba>>2]|0)>>>0?(c[ba>>2]=c[ga>>2],c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[da>>2]|0)-(c[A>>2]|0),c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[ga>>2],c[$>>2]=(c[$>>2]|0)+1,((c[ga>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ga>>2]|0)|0)==(c[x>>2]|0))|0):0){dj=444;break;}c[da>>2]=(c[da>>2]|0)+1;}f:do{if((dj|0)==444){dj=0;c[t>>2]=c[$>>2];}else if((dj|0)==446){dj=0;do{if((c[D>>2]|0)==3){if((c[ba>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break;c[ia>>2]=nm(c[u>>2]|0,c[w>>2]|0)|0;if(!(((c[ia>>2]|0)>>>0>(c[W>>2]|0)>>>0?((c[G>>2]|0)-(c[ia>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[y>>2]|0){if((c[ia>>2]|0)>>>0>=(c[S>>2]|0)>>>0){dj=451;break;}c[la>>2]=(c[R>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Uj(c[w>>2]|0,c[la>>2]|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;}else dj=451;}while(0);if((dj|0)==451){dj=0;c[ka>>2]=(c[F>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Tj(c[w>>2]|0,c[ka>>2]|0,c[x>>2]|0)|0;}if((c[ja>>2]|0)>>>0<(c[D>>2]|0)>>>0)break;c[ba>>2]=c[ja>>2];c[c[B>>2]>>2]=(c[G>>2]|0)-(c[ia>>2]|0)+2;c[(c[B>>2]|0)+4>>2]=c[ja>>2];c[$>>2]=1;if(!(((c[ja>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ja>>2]|0)|0)==(c[x>>2]|0))|0))break;c[(c[u>>2]|0)+24>>2]=(c[G>>2]|0)+1;c[t>>2]=1;break f;}}while(0);c[(c[J>>2]|0)+(c[K>>2]<<2)>>2]=c[G>>2];while(1){Zh=c[aa>>2]|0;c[aa>>2]=Zh+-1;if(!Zh)break;if((c[L>>2]|0)>>>0<=(c[W>>2]|0)>>>0)break;c[ma>>2]=(c[M>>2]|0)+((c[L>>2]&c[O>>2])<<1<<2);c[na>>2]=(c[P>>2]|0)>>>0<(c[Q>>2]|0)>>>0?c[P>>2]|0:c[Q>>2]|0;do{if(c[y>>2]|0){if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0>=(c[S>>2]|0)>>>0){dj=461;break;}c[oa>>2]=(c[R>>2]|0)+(c[L>>2]|0);Zh=Uj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0<(c[S>>2]|0)>>>0)break;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);}else dj=461;}while(0);if((dj|0)==461){dj=0;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);Zh=Tj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;}if((c[na>>2]|0)>>>0>(c[ba>>2]|0)>>>0){if((c[na>>2]|0)>>>0>((c[Z>>2]|0)-(c[L>>2]|0)|0)>>>0)c[Z>>2]=(c[L>>2]|0)+(c[na>>2]|0);c[ba>>2]=c[na>>2];c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[G>>2]|0)-(c[L>>2]|0)+2;c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[na>>2];c[$>>2]=(c[$>>2]|0)+1;if((c[na>>2]|0)>>>0>4096)break;if(((c[w>>2]|0)+(c[na>>2]|0)|0)==(c[x>>2]|0))break;}Zh=c[L>>2]|0;if((d[(c[oa>>2]|0)+(c[na>>2]|0)>>0]|0|0)<(d[(c[w>>2]|0)+(c[na>>2]|0)>>0]|0|0)){c[c[X>>2]>>2]=Zh;c[P>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=471;break;}c[X>>2]=(c[ma>>2]|0)+4;c[L>>2]=c[(c[ma>>2]|0)+4>>2];}else{c[c[Y>>2]>>2]=Zh;c[Q>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=474;break;}c[Y>>2]=c[ma>>2];c[L>>2]=c[c[ma>>2]>>2];}}if((dj|0)==471){dj=0;c[X>>2]=_;}else if((dj|0)==474){dj=0;c[Y>>2]=_;}c[c[Y>>2]>>2]=0;c[c[X>>2]>>2]=0;c[(c[u>>2]|0)+24>>2]=(c[Z>>2]|0)-8;c[t>>2]=c[$>>2];}}while(0);c[md>>2]=c[t>>2];break d;break;}case 5:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[qa>>2]=c[nd>>2];c[ra>>2]=Zh;c[sa>>2]=Zi;c[ta>>2]=Ph;c[ua>>2]=Qh;c[va>>2]=_h;c[wa>>2]=_i;c[xa>>2]=aj;c[ya>>2]=Uh;c[za>>2]=5;if((c[(c[ra>>2]|0)+20>>2]|0)>>>0<4095)xj=c[(c[ra>>2]|0)+20>>2]|0;else xj=4095;c[Aa>>2]=xj;c[Ba>>2]=c[(c[qa>>2]|0)+4>>2];c[Ca>>2]=(c[sa>>2]|0)-(c[Ba>>2]|0);c[Da>>2]=c[(c[ra>>2]|0)+8>>2];c[Ea>>2]=(c[za>>2]|0)==3?3:4;c[Fa>>2]=c[(c[qa>>2]|0)+36>>2];c[Ga>>2]=Sj(c[sa>>2]|0,c[Da>>2]|0,c[za>>2]|0)|0;c[Ha>>2]=c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2];c[Ia>>2]=c[(c[qa>>2]|0)+44>>2];c[Ja>>2]=(c[(c[ra>>2]|0)+4>>2]|0)-1;c[Ka>>2]=(1<<c[Ja>>2])-1;c[La>>2]=0;c[Ma>>2]=0;c[Na>>2]=c[(c[qa>>2]|0)+8>>2];c[Oa>>2]=c[(c[qa>>2]|0)+12>>2];c[Pa>>2]=(c[Na>>2]|0)+(c[Oa>>2]|0);c[Qa>>2]=(c[Ba>>2]|0)+(c[Oa>>2]|0);if((c[Ka>>2]|0)>>>0>=(c[Ca>>2]|0)>>>0)yj=0;else yj=(c[Ca>>2]|0)-(c[Ka>>2]|0)|0;c[Ra>>2]=yj;c[Sa>>2]=c[(c[qa>>2]|0)+16>>2];c[Ta>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2);c[Ua>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2)+4;c[Va>>2]=(c[Ca>>2]|0)+8+1;c[Xa>>2]=0;c[Ya>>2]=1<<c[(c[ra>>2]|0)+12>>2];c[Za>>2]=(c[ya>>2]|0)-1;c[_a>>2]=3+(c[wa>>2]|0);c[$a>>2]=c[wa>>2];while(1){if((c[$a>>2]|0)>>>0>=(c[_a>>2]|0)>>>0){dj=393;break;}Uh=c[va>>2]|0;if((c[$a>>2]|0)==3)zj=(c[Uh>>2]|0)-1|0;else zj=c[Uh+(c[$a>>2]<<2)>>2]|0;c[ab>>2]=zj;c[bb>>2]=(c[Ca>>2]|0)-(c[ab>>2]|0);c[cb>>2]=0;do{if(((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Oa>>2]|0)|0)>>>0){Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm((c[sa>>2]|0)+(0-(c[ab>>2]|0))|0,c[Ea>>2]|0)|0))break;Uh=Tj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[sa>>2]|0)+(c[Ea>>2]|0)+(0-(c[ab>>2]|0))|0,c[ta>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}else{c[db>>2]=(c[Na>>2]|0)+(c[bb>>2]|0);if(!(c[ua>>2]|0))break;if(!((((c[Oa>>2]|0)-1-(c[bb>>2]|0)|0)>>>0>=3?((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Sa>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm(c[db>>2]|0,c[Ea>>2]|0)|0))break;Uh=Uj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[db>>2]|0)+(c[Ea>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}}while(0);if((c[cb>>2]|0)>>>0>(c[Za>>2]|0)>>>0?(c[Za>>2]=c[cb>>2],c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[$a>>2]|0)-(c[wa>>2]|0),c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[cb>>2],c[Xa>>2]=(c[Xa>>2]|0)+1,((c[cb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[cb>>2]|0)|0)==(c[ta>>2]|0))|0):0){dj=391;break;}c[$a>>2]=(c[$a>>2]|0)+1;}g:do{if((dj|0)==391){dj=0;c[pa>>2]=c[Xa>>2];}else if((dj|0)==393){dj=0;do{if((c[za>>2]|0)==3){if((c[Za>>2]|0)>>>0>=(c[za>>2]|0)>>>0)break;c[eb>>2]=nm(c[qa>>2]|0,c[sa>>2]|0)|0;if(!(((c[eb>>2]|0)>>>0>(c[Sa>>2]|0)>>>0?((c[Ca>>2]|0)-(c[eb>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[ua>>2]|0){if((c[eb>>2]|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=398;break;}c[hb>>2]=(c[Na>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Uj(c[sa>>2]|0,c[hb>>2]|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;}else dj=398;}while(0);if((dj|0)==398){dj=0;c[gb>>2]=(c[Ba>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Tj(c[sa>>2]|0,c[gb>>2]|0,c[ta>>2]|0)|0;}if((c[fb>>2]|0)>>>0<(c[za>>2]|0)>>>0)break;c[Za>>2]=c[fb>>2];c[c[xa>>2]>>2]=(c[Ca>>2]|0)-(c[eb>>2]|0)+2;c[(c[xa>>2]|0)+4>>2]=c[fb>>2];c[Xa>>2]=1;if(!(((c[fb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[fb>>2]|0)|0)==(c[ta>>2]|0))|0))break;c[(c[qa>>2]|0)+24>>2]=(c[Ca>>2]|0)+1;c[pa>>2]=1;break g;}}while(0);c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2]=c[Ca>>2];while(1){Uh=c[Ya>>2]|0;c[Ya>>2]=Uh+-1;if(!Uh)break;if((c[Ha>>2]|0)>>>0<=(c[Sa>>2]|0)>>>0)break;c[ib>>2]=(c[Ia>>2]|0)+((c[Ha>>2]&c[Ka>>2])<<1<<2);c[jb>>2]=(c[La>>2]|0)>>>0<(c[Ma>>2]|0)>>>0?c[La>>2]|0:c[Ma>>2]|0;do{if(c[ua>>2]|0){if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=408;break;}c[kb>>2]=(c[Na>>2]|0)+(c[Ha>>2]|0);Uh=Uj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0<(c[Oa>>2]|0)>>>0)break;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);}else dj=408;}while(0);if((dj|0)==408){dj=0;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);Uh=Tj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;}if((c[jb>>2]|0)>>>0>(c[Za>>2]|0)>>>0){if((c[jb>>2]|0)>>>0>((c[Va>>2]|0)-(c[Ha>>2]|0)|0)>>>0)c[Va>>2]=(c[Ha>>2]|0)+(c[jb>>2]|0);c[Za>>2]=c[jb>>2];c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[Ca>>2]|0)-(c[Ha>>2]|0)+2;c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[jb>>2];c[Xa>>2]=(c[Xa>>2]|0)+1;if((c[jb>>2]|0)>>>0>4096)break;if(((c[sa>>2]|0)+(c[jb>>2]|0)|0)==(c[ta>>2]|0))break;}Uh=c[Ha>>2]|0;if((d[(c[kb>>2]|0)+(c[jb>>2]|0)>>0]|0|0)<(d[(c[sa>>2]|0)+(c[jb>>2]|0)>>0]|0|0)){c[c[Ta>>2]>>2]=Uh;c[La>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=418;break;}c[Ta>>2]=(c[ib>>2]|0)+4;c[Ha>>2]=c[(c[ib>>2]|0)+4>>2];}else{c[c[Ua>>2]>>2]=Uh;c[Ma>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=421;break;}c[Ua>>2]=c[ib>>2];c[Ha>>2]=c[c[ib>>2]>>2];}}if((dj|0)==418){dj=0;c[Ta>>2]=Wa;}else if((dj|0)==421){dj=0;c[Ua>>2]=Wa;}c[c[Ua>>2]>>2]=0;c[c[Ta>>2]>>2]=0;c[(c[qa>>2]|0)+24>>2]=(c[Va>>2]|0)-8;c[pa>>2]=c[Xa>>2];}}while(0);c[md>>2]=c[pa>>2];break d;break;}default:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[mb>>2]=c[nd>>2];c[nb>>2]=Uh;c[ob>>2]=aj;c[pb>>2]=_i;c[qb>>2]=_h;c[rb>>2]=Qh;c[sb>>2]=Ph;c[tb>>2]=Zi;c[ub>>2]=Zh;c[vb>>2]=4;if((c[(c[nb>>2]|0)+20>>2]|0)>>>0<4095)Aj=c[(c[nb>>2]|0)+20>>2]|0;else Aj=4095;c[wb>>2]=Aj;c[xb>>2]=c[(c[mb>>2]|0)+4>>2];c[yb>>2]=(c[ob>>2]|0)-(c[xb>>2]|0);c[zb>>2]=c[(c[nb>>2]|0)+8>>2];c[Ab>>2]=(c[vb>>2]|0)==3?3:4;c[Bb>>2]=c[(c[mb>>2]|0)+36>>2];c[Cb>>2]=Sj(c[ob>>2]|0,c[zb>>2]|0,c[vb>>2]|0)|0;c[Db>>2]=c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2];c[Eb>>2]=c[(c[mb>>2]|0)+44>>2];c[Fb>>2]=(c[(c[nb>>2]|0)+4>>2]|0)-1;c[Gb>>2]=(1<<c[Fb>>2])-1;c[Hb>>2]=0;c[Ib>>2]=0;c[Jb>>2]=c[(c[mb>>2]|0)+8>>2];c[Kb>>2]=c[(c[mb>>2]|0)+12>>2];c[Lb>>2]=(c[Jb>>2]|0)+(c[Kb>>2]|0);c[Mb>>2]=(c[xb>>2]|0)+(c[Kb>>2]|0);if((c[Gb>>2]|0)>>>0>=(c[yb>>2]|0)>>>0)Bj=0;else Bj=(c[yb>>2]|0)-(c[Gb>>2]|0)|0;c[Nb>>2]=Bj;c[Ob>>2]=c[(c[mb>>2]|0)+16>>2];c[Pb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2);c[Qb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2)+4;c[Rb>>2]=(c[yb>>2]|0)+8+1;c[Tb>>2]=0;c[Ub>>2]=1<<c[(c[nb>>2]|0)+12>>2];c[Vb>>2]=(c[ub>>2]|0)-1;c[Wb>>2]=3+(c[sb>>2]|0);c[Xb>>2]=c[sb>>2];while(1){if((c[Xb>>2]|0)>>>0>=(c[Wb>>2]|0)>>>0){dj=340;break;}Zh=c[rb>>2]|0;if((c[Xb>>2]|0)==3)Cj=(c[Zh>>2]|0)-1|0;else Cj=c[Zh+(c[Xb>>2]<<2)>>2]|0;c[Yb>>2]=Cj;c[Zb>>2]=(c[yb>>2]|0)-(c[Yb>>2]|0);c[_b>>2]=0;do{if(((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Kb>>2]|0)|0)>>>0){Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm((c[ob>>2]|0)+(0-(c[Yb>>2]|0))|0,c[Ab>>2]|0)|0))break;Zh=Tj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[ob>>2]|0)+(c[Ab>>2]|0)+(0-(c[Yb>>2]|0))|0,c[pb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}else{c[$b>>2]=(c[Jb>>2]|0)+(c[Zb>>2]|0);if(!(c[qb>>2]|0))break;if(!((((c[Kb>>2]|0)-1-(c[Zb>>2]|0)|0)>>>0>=3?((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Ob>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm(c[$b>>2]|0,c[Ab>>2]|0)|0))break;Zh=Uj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[$b>>2]|0)+(c[Ab>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}}while(0);if((c[_b>>2]|0)>>>0>(c[Vb>>2]|0)>>>0?(c[Vb>>2]=c[_b>>2],c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[Xb>>2]|0)-(c[sb>>2]|0),c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[_b>>2],c[Tb>>2]=(c[Tb>>2]|0)+1,((c[_b>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[_b>>2]|0)|0)==(c[pb>>2]|0))|0):0){dj=338;break;}c[Xb>>2]=(c[Xb>>2]|0)+1;}h:do{if((dj|0)==338){dj=0;c[lb>>2]=c[Tb>>2];}else if((dj|0)==340){dj=0;do{if((c[vb>>2]|0)==3){if((c[Vb>>2]|0)>>>0>=(c[vb>>2]|0)>>>0)break;c[ac>>2]=nm(c[mb>>2]|0,c[ob>>2]|0)|0;if(!(((c[ac>>2]|0)>>>0>(c[Ob>>2]|0)>>>0?((c[yb>>2]|0)-(c[ac>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[qb>>2]|0){if((c[ac>>2]|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=345;break;}c[dc>>2]=(c[Jb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Uj(c[ob>>2]|0,c[dc>>2]|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;}else dj=345;}while(0);if((dj|0)==345){dj=0;c[cc>>2]=(c[xb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Tj(c[ob>>2]|0,c[cc>>2]|0,c[pb>>2]|0)|0;}if((c[bc>>2]|0)>>>0<(c[vb>>2]|0)>>>0)break;c[Vb>>2]=c[bc>>2];c[c[tb>>2]>>2]=(c[yb>>2]|0)-(c[ac>>2]|0)+2;c[(c[tb>>2]|0)+4>>2]=c[bc>>2];c[Tb>>2]=1;if(!(((c[bc>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[bc>>2]|0)|0)==(c[pb>>2]|0))|0))break;c[(c[mb>>2]|0)+24>>2]=(c[yb>>2]|0)+1;c[lb>>2]=1;break h;}}while(0);c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2]=c[yb>>2];while(1){Zh=c[Ub>>2]|0;c[Ub>>2]=Zh+-1;if(!Zh)break;if((c[Db>>2]|0)>>>0<=(c[Ob>>2]|0)>>>0)break;c[ec>>2]=(c[Eb>>2]|0)+((c[Db>>2]&c[Gb>>2])<<1<<2);c[fc>>2]=(c[Hb>>2]|0)>>>0<(c[Ib>>2]|0)>>>0?c[Hb>>2]|0:c[Ib>>2]|0;do{if(c[qb>>2]|0){if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=355;break;}c[gc>>2]=(c[Jb>>2]|0)+(c[Db>>2]|0);Zh=Uj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0<(c[Kb>>2]|0)>>>0)break;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);}else dj=355;}while(0);if((dj|0)==355){dj=0;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);Zh=Tj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;}if((c[fc>>2]|0)>>>0>(c[Vb>>2]|0)>>>0){if((c[fc>>2]|0)>>>0>((c[Rb>>2]|0)-(c[Db>>2]|0)|0)>>>0)c[Rb>>2]=(c[Db>>2]|0)+(c[fc>>2]|0);c[Vb>>2]=c[fc>>2];c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[yb>>2]|0)-(c[Db>>2]|0)+2;c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[fc>>2];c[Tb>>2]=(c[Tb>>2]|0)+1;if((c[fc>>2]|0)>>>0>4096)break;if(((c[ob>>2]|0)+(c[fc>>2]|0)|0)==(c[pb>>2]|0))break;}Zh=c[Db>>2]|0;if((d[(c[gc>>2]|0)+(c[fc>>2]|0)>>0]|0|0)<(d[(c[ob>>2]|0)+(c[fc>>2]|0)>>0]|0|0)){c[c[Pb>>2]>>2]=Zh;c[Hb>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=365;break;}c[Pb>>2]=(c[ec>>2]|0)+4;c[Db>>2]=c[(c[ec>>2]|0)+4>>2];}else{c[c[Qb>>2]>>2]=Zh;c[Ib>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=368;break;}c[Qb>>2]=c[ec>>2];c[Db>>2]=c[c[ec>>2]>>2];}}if((dj|0)==365){dj=0;c[Pb>>2]=Sb;}else if((dj|0)==368){dj=0;c[Qb>>2]=Sb;}c[c[Qb>>2]>>2]=0;c[c[Pb>>2]>>2]=0;c[(c[mb>>2]|0)+24>>2]=(c[Rb>>2]|0)-8;c[lb>>2]=c[Tb>>2];}}while(0);c[md>>2]=c[lb>>2];break d;}}}}while(0);c[Bi>>2]=c[md>>2];if(c[Bi>>2]|0){c[Di>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)+4>>2];if(((c[Di>>2]|0)>>>0>(c[$h>>2]|0)>>>0?1:((c[ei>>2]|0)+(c[Di>>2]|0)|0)>>>0>=4096)|0){dj=481;break b;}c[Ci>>2]=0;while(1){if((c[Ci>>2]|0)>>>0>=(c[Bi>>2]|0)>>>0)break c;c[Ei>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)>>2];pm(Fi,(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0,c[Ei>>2]|0,c[xi>>2]|0);c[Gi>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)+4>>2];if((c[Ci>>2]|0)>>>0>0)Dj=(c[(c[ci>>2]|0)+((c[Ci>>2]|0)-1<<3)+4>>2]|0)+1|0;else Dj=c[ai>>2]|0;c[Hi>>2]=Dj;c[Ii>>2]=c[Gi>>2];i:while(1){if((c[Ii>>2]|0)>>>0<(c[Hi>>2]|0)>>>0)break;c[Ji>>2]=(c[ei>>2]|0)+(c[Ii>>2]|0);Zh=c[Ai>>2]|0;Zi=c[Ii>>2]|0;Ph=c[Th>>2]|0;Qh=c[Rh>>2]|0;c[k>>2]=c[Ei>>2];c[m>>2]=Zi;c[n>>2]=Ph;c[o>>2]=Qh;c[q>>2]=qm((c[k>>2]|0)+1|0)|0;c[r>>2]=(c[m>>2]|0)-3;if(c[(c[n>>2]|0)+56>>2]|0){Qh=(qm((c[r>>2]|0)+1|0)|0)+16|0;c[j>>2]=Qh+(c[q>>2]|0);}else{Qh=(c[q>>2]|0)+(c[(c[n>>2]|0)+52>>2]|0)|0;c[p>>2]=Qh-(qm((c[(c[(c[n>>2]|0)+12>>2]|0)+(c[q>>2]<<2)>>2]|0)+1|0)|0);if((c[o>>2]|0)<2&(c[q>>2]|0)>>>0>=20)c[p>>2]=(c[p>>2]|0)+((c[q>>2]|0)-19<<1);c[s>>2]=rm(c[r>>2]|0)|0;Qh=(c[5840+(c[s>>2]<<2)>>2]|0)+(c[(c[n>>2]|0)+48>>2]|0)|0;Ph=Qh-(qm((c[(c[(c[n>>2]|0)+8>>2]|0)+(c[s>>2]<<2)>>2]|0)+1|0)|0)|0;c[p>>2]=(c[p>>2]|0)+Ph;c[j>>2]=c[p>>2];}c[Ki>>2]=Zh+(c[j>>2]|0);do{if((c[Ji>>2]|0)>>>0<=(c[fi>>2]|0)>>>0){if((c[Ki>>2]|0)<(c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]|0)){dj=496;break;}if(!(c[Rh>>2]|0))break i;}else dj=496;}while(0);if((dj|0)==496){dj=0;while(1){if((c[fi>>2]|0)>>>0>=(c[Ji>>2]|0)>>>0)break;c[(c[bi>>2]|0)+(((c[fi>>2]|0)+1|0)*28|0)>>2]=1073741824;c[fi>>2]=(c[fi>>2]|0)+1;}c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+8>>2]=c[Ii>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+4>>2]=c[Ei>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+12>>2]=c[yi>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]=c[Ki>>2];Zh=(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+16|0;c[Zh>>2]=c[Fi>>2];c[Zh+4>>2]=c[Fi+4>>2];c[Zh+8>>2]=c[Fi+8>>2];}c[Ii>>2]=(c[Ii>>2]|0)+-1;}c[Ci>>2]=(c[Ci>>2]|0)+1;}}}}while(0);c[ei>>2]=(c[ei>>2]|0)+1;}if((dj|0)==481){dj=0;c[gi>>2]=c[Di>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)>>2];c[fi>>2]=(c[ei>>2]|0)+1;break;}else if((dj|0)==504){dj=0;c[gi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+8>>2];c[hi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+4>>2];c[ei>>2]=(c[fi>>2]|0)-(c[gi>>2]|0);break;}}else{c[gi>>2]=c[mi>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)>>2];c[ei>>2]=0;c[fi>>2]=1;}}while(0);c[Li>>2]=c[gi>>2];c[Mi>>2]=c[hi>>2];c[Ni>>2]=c[ei>>2];while(1){c[Oi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2];c[Pi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2]=c[Li>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2]=c[Mi>>2];c[Li>>2]=c[Oi>>2];c[Mi>>2]=c[Pi>>2];if((c[Oi>>2]|0)>>>0>(c[Ni>>2]|0)>>>0)break;c[Ni>>2]=(c[Ni>>2]|0)-(c[Oi>>2]|0);}c[Qi>>2]=0;while(1){if((c[Qi>>2]|0)>>>0>=(c[fi>>2]|0)>>>0)break;c[Ri>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[Si>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+8>>2];c[Ti>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+4>>2];if((c[Si>>2]|0)==1){c[Vh>>2]=(c[Vh>>2]|0)+1;c[Qi>>2]=(c[Qi>>2]|0)+1;continue;}c[Qi>>2]=(c[Qi>>2]|0)+(c[Si>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+(c[Si>>2]|0);if((c[Ti>>2]|0)>>>0<3){c[Ui>>2]=(c[Ti>>2]|0)+((c[Ri>>2]|0)==0&1);if(c[Ui>>2]|0){Zh=c[Nh>>2]|0;if((c[Ui>>2]|0)==3)Ej=(c[Zh>>2]|0)-1|0;else Ej=c[Zh+(c[Ui>>2]<<2)>>2]|0;c[Vi>>2]=Ej;if((c[Ui>>2]|0)>>>0>=2)c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=c[Vi>>2];}}else{c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=(c[Ti>>2]|0)-2;}vm(c[Th>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,c[Si>>2]|0);wm(c[Mh>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,(c[Si>>2]|0)-3|0);c[Wh>>2]=c[Vh>>2];}xm(c[Th>>2]|0);}l=i;return(c[Xh>>2]|0)-(c[Wh>>2]|0)|0;}function lm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=e;c[(c[g>>2]|0)+56>>2]=0;if(c[(c[g>>2]|0)+28>>2]|0){c[(c[g>>2]|0)+24>>2]=0;c[k>>2]=0;while(1){m=c[g>>2]|0;if((c[k>>2]|0)>>>0>255)break;c[(c[c[g>>2]>>2]|0)+(c[k>>2]<<2)>>2]=1+((c[(c[m>>2]|0)+(c[k>>2]<<2)>>2]|0)>>>5);e=(c[g>>2]|0)+24|0;c[e>>2]=(c[e>>2]|0)+(c[(c[c[g>>2]>>2]|0)+(c[k>>2]<<2)>>2]|0);c[k>>2]=(c[k>>2]|0)+1;}c[m+28>>2]=0;c[k>>2]=0;while(1){n=c[g>>2]|0;if((c[k>>2]|0)>>>0>35)break;c[(c[(c[g>>2]|0)+4>>2]|0)+(c[k>>2]<<2)>>2]=1+((c[(c[n+4>>2]|0)+(c[k>>2]<<2)>>2]|0)>>>5);m=(c[g>>2]|0)+28|0;c[m>>2]=(c[m>>2]|0)+(c[(c[(c[g>>2]|0)+4>>2]|0)+(c[k>>2]<<2)>>2]|0);c[k>>2]=(c[k>>2]|0)+1;}c[n+32>>2]=0;c[k>>2]=0;while(1){o=c[g>>2]|0;if((c[k>>2]|0)>>>0>52)break;c[(c[(c[g>>2]|0)+8>>2]|0)+(c[k>>2]<<2)>>2]=1+((c[(c[o+8>>2]|0)+(c[k>>2]<<2)>>2]|0)>>>4);n=(c[g>>2]|0)+32|0;c[n>>2]=(c[n>>2]|0)+(c[(c[(c[g>>2]|0)+8>>2]|0)+(c[k>>2]<<2)>>2]|0);c[k>>2]=(c[k>>2]|0)+1;}c[o+36>>2]=0;c[k>>2]=0;while(1){if((c[k>>2]|0)>>>0>31)break;c[(c[(c[g>>2]|0)+12>>2]|0)+(c[k>>2]<<2)>>2]=1+((c[(c[(c[g>>2]|0)+12>>2]|0)+(c[k>>2]<<2)>>2]|0)>>>4);o=(c[g>>2]|0)+36|0;c[o>>2]=(c[o>>2]|0)+(c[(c[(c[g>>2]|0)+12>>2]|0)+(c[k>>2]<<2)>>2]|0);c[k>>2]=(c[k>>2]|0)+1;}p=c[g>>2]|0;xm(p);l=f;return;}if((c[i>>2]|0)>>>0<=1024)c[(c[g>>2]|0)+56>>2]=1;c[j>>2]=0;while(1){if((c[j>>2]|0)>>>0>255)break;c[(c[c[g>>2]>>2]|0)+(c[j>>2]<<2)>>2]=0;c[j>>2]=(c[j>>2]|0)+1;}c[j>>2]=0;while(1){q=c[g>>2]|0;if((c[j>>2]|0)>>>0>=(c[i>>2]|0)>>>0)break;k=(c[q>>2]|0)+((d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)<<2)|0;c[k>>2]=(c[k>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+1;}c[q+24>>2]=0;c[j>>2]=0;while(1){if((c[j>>2]|0)>>>0>255)break;c[(c[c[g>>2]>>2]|0)+(c[j>>2]<<2)>>2]=1+((c[(c[c[g>>2]>>2]|0)+(c[j>>2]<<2)>>2]|0)>>>4);q=(c[g>>2]|0)+24|0;c[q>>2]=(c[q>>2]|0)+(c[(c[c[g>>2]>>2]|0)+(c[j>>2]<<2)>>2]|0);c[j>>2]=(c[j>>2]|0)+1;}c[j>>2]=0;while(1){r=c[g>>2]|0;if((c[j>>2]|0)>>>0>35)break;c[(c[r+4>>2]|0)+(c[j>>2]<<2)>>2]=1;c[j>>2]=(c[j>>2]|0)+1;}c[r+28>>2]=36;c[j>>2]=0;while(1){s=c[g>>2]|0;if((c[j>>2]|0)>>>0>52)break;c[(c[s+8>>2]|0)+(c[j>>2]<<2)>>2]=1;c[j>>2]=(c[j>>2]|0)+1;}c[s+32>>2]=53;c[j>>2]=0;while(1){t=c[g>>2]|0;if((c[j>>2]|0)>>>0>31)break;c[(c[t+12>>2]|0)+(c[j>>2]<<2)>>2]=1;c[j>>2]=(c[j>>2]|0)+1;}c[t+36>>2]=32;p=c[g>>2]|0;xm(p);l=f;return;}function mm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=a;c[g>>2]=b;do{if((c[g>>2]|0)==3){b=(_j()|0)!=0;a=Yj(c[f>>2]|0)|0;if(b){c[e>>2]=a<<8;break;}else{c[e>>2]=a>>>8;break;}}else c[e>>2]=Yj(c[f>>2]|0)|0;}while(0);l=d;return c[e>>2]|0;}function nm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;d=l;l=l+32|0;e=d+28|0;f=d+24|0;g=d+20|0;h=d+16|0;i=d+12|0;j=d+8|0;k=d+4|0;m=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=c[(c[e>>2]|0)+40>>2];c[h>>2]=c[(c[e>>2]|0)+32>>2];c[i>>2]=c[(c[e>>2]|0)+4>>2];c[j>>2]=c[(c[e>>2]|0)+28>>2];b=(c[f>>2]|0)-(c[i>>2]|0)|0;c[(c[e>>2]|0)+28>>2]=b;c[k>>2]=b;c[m>>2]=Fm(c[f>>2]|0,c[h>>2]|0)|0;while(1){if((c[j>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;f=c[j>>2]|0;b=c[g>>2]|0;c[b+((Fm((c[i>>2]|0)+(c[j>>2]|0)|0,c[h>>2]|0)|0)<<2)>>2]=f;c[j>>2]=(c[j>>2]|0)+1;}l=d;return c[(c[g>>2]|0)+(c[m>>2]<<2)>>2]|0;}function om(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+16|0;g=f+12|0;h=f+8|0;i=f+4|0;j=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;e=Dm(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0,c[j>>2]|0)|0;h=e+(Cm(c[i>>2]|0,c[j>>2]|0)|0)|0;l=f;return h|0;}function pm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=b;c[h>>2]=d;c[i>>2]=e;if((c[h>>2]|0)>>>0>=3){c[j+8>>2]=c[(c[g>>2]|0)+4>>2];c[j+4>>2]=c[c[g>>2]>>2];c[j>>2]=(c[h>>2]|0)-2;c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];l=f;return;}c[k>>2]=(c[h>>2]|0)+(c[i>>2]|0);if((c[k>>2]|0)>>>0<=0){i=c[g>>2]|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];l=f;return;}i=c[g>>2]|0;if((c[k>>2]|0)==3)n=(c[i>>2]|0)-1|0;else n=c[i+(c[k>>2]<<2)>>2]|0;c[m>>2]=n;n=c[g>>2]|0;if((c[k>>2]|0)>>>0>=2)o=c[n+4>>2]|0;else o=c[n+8>>2]|0;c[j+8>>2]=o;c[j+4>>2]=c[c[g>>2]>>2];c[j>>2]=c[m>>2];c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];l=f;return;}function qm(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function rm(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;if((c[e>>2]|0)>>>0>127){f=(qm(a)|0)+36|0;l=b;return f|0;}else{f=d[3072+a>>0]|0;l=b;return f|0;}return 0;}function sm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=Bm(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;c[i>>2]=d+(Em(c[g>>2]|0,c[h>>2]|0)|0);l=e;return c[i>>2]|0;}function tm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;e=Dm(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0,c[j>>2]|0)|0;c[k>>2]=e+(Em(c[i>>2]|0,c[j>>2]|0)|0);l=f;return c[k>>2]|0;}function um(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=Bm(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;f=d+(Cm(c[g>>2]|0,c[h>>2]|0)|0)|0;l=e;return f|0;}function vm(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=l;l=l+48|0;i=h+36|0;j=h+32|0;k=h+28|0;m=h+24|0;n=h+20|0;o=h+16|0;p=h+12|0;q=h+8|0;r=h+4|0;s=h;c[i>>2]=a;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=0;while(1){if((c[o>>2]|0)>>>0>=(c[j>>2]|0)>>>0)break;g=(c[c[i>>2]>>2]|0)+((d[(c[k>>2]|0)+(c[o>>2]|0)>>0]|0)<<2)|0;c[g>>2]=(c[g>>2]|0)+2;c[o>>2]=(c[o>>2]|0)+1;}o=(c[i>>2]|0)+24|0;c[o>>2]=(c[o>>2]|0)+(c[j>>2]<<1);c[p>>2]=Am(c[j>>2]|0)|0;j=(c[(c[i>>2]|0)+4>>2]|0)+(c[p>>2]<<2)|0;c[j>>2]=(c[j>>2]|0)+1;j=(c[i>>2]|0)+28|0;c[j>>2]=(c[j>>2]|0)+1;c[q>>2]=qm((c[m>>2]|0)+1|0)|0;m=(c[(c[i>>2]|0)+12>>2]|0)+(c[q>>2]<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=(c[i>>2]|0)+36|0;c[m>>2]=(c[m>>2]|0)+1;c[r>>2]=(c[n>>2]|0)-3;c[s>>2]=rm(c[r>>2]|0)|0;r=(c[(c[i>>2]|0)+8>>2]|0)+(c[s>>2]<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=(c[i>>2]|0)+32|0;c[r>>2]=(c[r>>2]|0)+1;l=h;return;}function wm(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;ym(c[(c[i>>2]|0)+12>>2]|0,c[k>>2]|0,c[j>>2]|0);k=(c[i>>2]|0)+12|0;c[k>>2]=(c[k>>2]|0)+(c[j>>2]|0);if((c[j>>2]|0)>>>0>65535){c[(c[i>>2]|0)+28>>2]=1;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;}b[(c[(c[i>>2]|0)+4>>2]|0)+4>>1]=c[j>>2];c[c[(c[i>>2]|0)+4>>2]>>2]=(c[m>>2]|0)+1;if((c[n>>2]|0)>>>0<=65535){o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}c[(c[i>>2]|0)+28>>2]=2;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}function xm(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=qm((c[(c[d>>2]|0)+24>>2]|0)+1|0)|0;c[(c[d>>2]|0)+40>>2]=a;a=qm((c[(c[d>>2]|0)+28>>2]|0)+1|0)|0;c[(c[d>>2]|0)+44>>2]=a;a=qm((c[(c[d>>2]|0)+32>>2]|0)+1|0)|0;c[(c[d>>2]|0)+48>>2]=a;a=qm((c[(c[d>>2]|0)+36>>2]|0)+1|0)|0;c[(c[d>>2]|0)+52>>2]=a;l=b;return;}function ym(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{zm(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function zm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function Am(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;if((c[e>>2]|0)>>>0>63){f=(qm(a)|0)+19|0;l=b;return f|0;}else{f=d[3008+a>>0]|0;l=b;return f|0;}return 0;}function Bm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;e=c[i>>2]|0;if(c[(c[j>>2]|0)+56>>2]|0){c[g>>2]=e*6;n=c[g>>2]|0;l=f;return n|0;}if(!e){c[g>>2]=0;n=c[g>>2]|0;l=f;return n|0;}c[m>>2]=N(c[i>>2]|0,c[(c[j>>2]|0)+40>>2]|0)|0;c[k>>2]=0;while(1){if((c[k>>2]|0)>>>0>=(c[i>>2]|0)>>>0)break;e=qm((c[(c[c[j>>2]>>2]|0)+((d[(c[h>>2]|0)+(c[k>>2]|0)>>0]|0)<<2)>>2]|0)+1|0)|0;c[m>>2]=(c[m>>2]|0)-e;c[k>>2]=(c[k>>2]|0)+1;}c[g>>2]=c[m>>2];n=c[g>>2]|0;l=f;return n|0;}function Cm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;i=d;c[f>>2]=a;c[g>>2]=b;b=c[f>>2]|0;if(c[(c[g>>2]|0)+56>>2]|0){c[e>>2]=qm(b+1|0)|0;j=c[e>>2]|0;l=d;return j|0;}else{c[h>>2]=Am(b)|0;b=(c[5696+(c[h>>2]<<2)>>2]|0)+(c[(c[g>>2]|0)+44>>2]|0)|0;c[i>>2]=b-(qm((c[(c[(c[g>>2]|0)+4>>2]|0)+(c[h>>2]<<2)>>2]|0)+1|0)|0);c[e>>2]=c[i>>2];j=c[e>>2]|0;l=d;return j|0;}return 0;}function Dm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;if((c[h>>2]|0)==(c[c[g>>2]>>2]|0)){c[k>>2]=c[(c[g>>2]|0)+8>>2];c[n>>2]=(c[h>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0);c[m>>2]=(c[i>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0);}else{c[k>>2]=0;c[n>>2]=c[h>>2];c[m>>2]=c[i>>2];}e=c[k>>2]|0;c[o>>2]=e+(Bm(c[n>>2]|0,c[m>>2]|0,c[j>>2]|0)|0);c[c[g>>2]>>2]=c[h>>2];c[(c[g>>2]|0)+4>>2]=c[i>>2];c[(c[g>>2]|0)+8>>2]=c[o>>2];l=f;return c[o>>2]|0;}function Em(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;i=d;c[f>>2]=a;c[g>>2]=b;b=c[f>>2]|0;if(c[(c[g>>2]|0)+56>>2]|0){c[e>>2]=qm(b+1|0)|0;j=c[e>>2]|0;l=d;return j|0;}else{c[h>>2]=Am(b)|0;b=c[5696+(c[h>>2]<<2)>>2]|0;f=b+(qm((c[c[(c[g>>2]|0)+4>>2]>>2]|0)+1|0)|0)|0;c[i>>2]=f-(qm((c[(c[(c[g>>2]|0)+4>>2]|0)+(c[h>>2]<<2)>>2]|0)+1|0)|0);c[e>>2]=c[i>>2];j=c[e>>2]|0;l=d;return j|0;}return 0;}function Fm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Gm(c[e>>2]|0)|0;e=Hm(b,c[f>>2]|0)|0;l=d;return e|0;}function Gm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(_j()|0)!=0;f=Yj(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=Im(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Hm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=N(c[e>>2]<<8,506832829)|0;l=d;return b>>>(32-(c[f>>2]|0)|0)|0;}function Im(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Jm(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;switch(c[(c[j>>2]|0)+16>>2]|0){case 7:case 6:{c[h>>2]=Vm(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,6)|0;o=c[h>>2]|0;l=g;return o|0;}case 5:{c[h>>2]=Vm(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,5)|0;o=c[h>>2]|0;l=g;return o|0;}default:{c[h>>2]=Vm(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,4)|0;o=c[h>>2]|0;l=g;return o|0;}}return 0;}function Km(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0;h=l;l=l+320|0;i=h+308|0;j=h+304|0;k=h+300|0;m=h+296|0;n=h+292|0;o=h+288|0;p=h+284|0;q=h+280|0;r=h+276|0;s=h+272|0;t=h+268|0;u=h+264|0;v=h+260|0;w=h+256|0;x=h+252|0;y=h+248|0;z=h+244|0;A=h+240|0;B=h+236|0;C=h+232|0;D=h+228|0;E=h+224|0;F=h+220|0;G=h+216|0;H=h+212|0;I=h+208|0;J=h+204|0;K=h+200|0;L=h+196|0;M=h+192|0;N=h+188|0;O=h+184|0;P=h+180|0;Q=h+176|0;R=h+172|0;S=h+168|0;T=h+164|0;U=h+160|0;V=h+156|0;W=h+152|0;X=h+148|0;Y=h+144|0;Z=h+140|0;_=h+136|0;$=h+132|0;aa=h+128|0;ba=h+124|0;ca=h+120|0;da=h+116|0;ea=h+112|0;fa=h+108|0;ga=h+104|0;ha=h+100|0;ia=h+96|0;ja=h+92|0;ka=h+88|0;la=h+84|0;ma=h+80|0;na=h+76|0;oa=h+72|0;pa=h+68|0;qa=h+64|0;ra=h+60|0;sa=h+56|0;ta=h+52|0;ua=h+48|0;va=h+44|0;wa=h+40|0;xa=h+36|0;ya=h+32|0;za=h+28|0;Aa=h+24|0;Ba=h+20|0;Ca=h+16|0;Da=h+12|0;Ea=h+8|0;Fa=h+4|0;Ga=h;c[Ca>>2]=a;c[Da>>2]=b;c[Ea>>2]=e;c[Fa>>2]=f;c[Ga>>2]=g;switch(c[(c[Da>>2]|0)+16>>2]|0){case 7:case 6:{g=c[Da>>2]|0;f=c[Ea>>2]|0;e=c[Fa>>2]|0;b=c[Ga>>2]|0;c[i>>2]=c[Ca>>2];c[j>>2]=g;c[k>>2]=f;c[m>>2]=e;c[n>>2]=b;c[o>>2]=6;c[p>>2]=1;c[q>>2]=c[(c[i>>2]|0)+44>>2];c[r>>2]=1<<c[(c[j>>2]|0)+4>>2];c[s>>2]=(c[r>>2]|0)-1;c[t>>2]=c[(c[i>>2]|0)+4>>2];c[u>>2]=c[(c[i>>2]|0)+8>>2];c[v>>2]=c[(c[i>>2]|0)+12>>2];c[w>>2]=(c[t>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[u>>2]|0)+(c[v>>2]|0);c[y>>2]=c[(c[i>>2]|0)+16>>2];c[z>>2]=(c[k>>2]|0)-(c[t>>2]|0);if((c[z>>2]|0)>>>0>(c[r>>2]|0)>>>0)Ha=(c[z>>2]|0)-(c[r>>2]|0)|0;else Ha=0;c[A>>2]=Ha;c[B>>2]=1<<c[(c[j>>2]|0)+12>>2];c[C>>2]=3;c[D>>2]=mk(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[o>>2]|0)|0;while(1){if(!(((c[B>>2]|0)>>>0>0?(c[D>>2]|0)>>>0>(c[y>>2]|0)>>>0:0)|0))break;c[E>>2]=0;if(c[p>>2]|0?(c[D>>2]|0)>>>0<(c[v>>2]|0)>>>0:0){c[G>>2]=(c[u>>2]|0)+(c[D>>2]|0);o=Bk(c[G>>2]|0)|0;if((o|0)==(Bk(c[k>>2]|0)|0))c[E>>2]=(Lm((c[k>>2]|0)+4|0,(c[G>>2]|0)+4|0,c[m>>2]|0,c[x>>2]|0,c[w>>2]|0)|0)+4;}else Ia=38;if((Ia|0)==38?(Ia=0,c[F>>2]=(c[t>>2]|0)+(c[D>>2]|0),(d[(c[F>>2]|0)+(c[C>>2]|0)>>0]|0|0)==(d[(c[k>>2]|0)+(c[C>>2]|0)>>0]|0|0)):0)c[E>>2]=Qm(c[k>>2]|0,c[F>>2]|0,c[m>>2]|0)|0;if((c[E>>2]|0)>>>0>(c[C>>2]|0)>>>0?(c[C>>2]=c[E>>2],c[c[n>>2]>>2]=(c[z>>2]|0)-(c[D>>2]|0)+2,((c[k>>2]|0)+(c[E>>2]|0)|0)==(c[m>>2]|0)):0)break;if((c[D>>2]|0)>>>0<=(c[A>>2]|0)>>>0)break;c[D>>2]=c[(c[q>>2]|0)+((c[D>>2]&c[s>>2])<<2)>>2];c[B>>2]=(c[B>>2]|0)+-1;}c[Ba>>2]=c[C>>2];Ja=c[Ba>>2]|0;l=h;return Ja|0;}case 5:{C=c[Da>>2]|0;B=c[Ea>>2]|0;s=c[Fa>>2]|0;D=c[Ga>>2]|0;c[H>>2]=c[Ca>>2];c[I>>2]=C;c[J>>2]=B;c[K>>2]=s;c[L>>2]=D;c[M>>2]=5;c[N>>2]=1;c[O>>2]=c[(c[H>>2]|0)+44>>2];c[P>>2]=1<<c[(c[I>>2]|0)+4>>2];c[Q>>2]=(c[P>>2]|0)-1;c[R>>2]=c[(c[H>>2]|0)+4>>2];c[S>>2]=c[(c[H>>2]|0)+8>>2];c[T>>2]=c[(c[H>>2]|0)+12>>2];c[U>>2]=(c[R>>2]|0)+(c[T>>2]|0);c[V>>2]=(c[S>>2]|0)+(c[T>>2]|0);c[W>>2]=c[(c[H>>2]|0)+16>>2];c[X>>2]=(c[J>>2]|0)-(c[R>>2]|0);if((c[X>>2]|0)>>>0>(c[P>>2]|0)>>>0)Ka=(c[X>>2]|0)-(c[P>>2]|0)|0;else Ka=0;c[Y>>2]=Ka;c[Z>>2]=1<<c[(c[I>>2]|0)+12>>2];c[_>>2]=3;c[$>>2]=mk(c[H>>2]|0,c[I>>2]|0,c[J>>2]|0,c[M>>2]|0)|0;while(1){if(!(((c[Z>>2]|0)>>>0>0?(c[$>>2]|0)>>>0>(c[W>>2]|0)>>>0:0)|0))break;c[aa>>2]=0;if(c[N>>2]|0?(c[$>>2]|0)>>>0<(c[T>>2]|0)>>>0:0){c[ca>>2]=(c[S>>2]|0)+(c[$>>2]|0);M=Bk(c[ca>>2]|0)|0;if((M|0)==(Bk(c[J>>2]|0)|0))c[aa>>2]=(Lm((c[J>>2]|0)+4|0,(c[ca>>2]|0)+4|0,c[K>>2]|0,c[V>>2]|0,c[U>>2]|0)|0)+4;}else Ia=23;if((Ia|0)==23?(Ia=0,c[ba>>2]=(c[R>>2]|0)+(c[$>>2]|0),(d[(c[ba>>2]|0)+(c[_>>2]|0)>>0]|0|0)==(d[(c[J>>2]|0)+(c[_>>2]|0)>>0]|0|0)):0)c[aa>>2]=Qm(c[J>>2]|0,c[ba>>2]|0,c[K>>2]|0)|0;if((c[aa>>2]|0)>>>0>(c[_>>2]|0)>>>0?(c[_>>2]=c[aa>>2],c[c[L>>2]>>2]=(c[X>>2]|0)-(c[$>>2]|0)+2,((c[J>>2]|0)+(c[aa>>2]|0)|0)==(c[K>>2]|0)):0)break;if((c[$>>2]|0)>>>0<=(c[Y>>2]|0)>>>0)break;c[$>>2]=c[(c[O>>2]|0)+((c[$>>2]&c[Q>>2])<<2)>>2];c[Z>>2]=(c[Z>>2]|0)+-1;}c[Ba>>2]=c[_>>2];Ja=c[Ba>>2]|0;l=h;return Ja|0;}default:{_=c[Da>>2]|0;Da=c[Ea>>2]|0;Ea=c[Fa>>2]|0;Fa=c[Ga>>2]|0;c[da>>2]=c[Ca>>2];c[ea>>2]=_;c[fa>>2]=Da;c[ga>>2]=Ea;c[ha>>2]=Fa;c[ia>>2]=4;c[ja>>2]=1;c[ka>>2]=c[(c[da>>2]|0)+44>>2];c[la>>2]=1<<c[(c[ea>>2]|0)+4>>2];c[ma>>2]=(c[la>>2]|0)-1;c[na>>2]=c[(c[da>>2]|0)+4>>2];c[oa>>2]=c[(c[da>>2]|0)+8>>2];c[pa>>2]=c[(c[da>>2]|0)+12>>2];c[qa>>2]=(c[na>>2]|0)+(c[pa>>2]|0);c[ra>>2]=(c[oa>>2]|0)+(c[pa>>2]|0);c[sa>>2]=c[(c[da>>2]|0)+16>>2];c[ta>>2]=(c[fa>>2]|0)-(c[na>>2]|0);if((c[ta>>2]|0)>>>0>(c[la>>2]|0)>>>0)La=(c[ta>>2]|0)-(c[la>>2]|0)|0;else La=0;c[ua>>2]=La;c[va>>2]=1<<c[(c[ea>>2]|0)+12>>2];c[wa>>2]=3;c[xa>>2]=mk(c[da>>2]|0,c[ea>>2]|0,c[fa>>2]|0,c[ia>>2]|0)|0;while(1){if(!(((c[va>>2]|0)>>>0>0?(c[xa>>2]|0)>>>0>(c[sa>>2]|0)>>>0:0)|0))break;c[ya>>2]=0;if(c[ja>>2]|0?(c[xa>>2]|0)>>>0<(c[pa>>2]|0)>>>0:0){c[Aa>>2]=(c[oa>>2]|0)+(c[xa>>2]|0);ia=Bk(c[Aa>>2]|0)|0;if((ia|0)==(Bk(c[fa>>2]|0)|0))c[ya>>2]=(Lm((c[fa>>2]|0)+4|0,(c[Aa>>2]|0)+4|0,c[ga>>2]|0,c[ra>>2]|0,c[qa>>2]|0)|0)+4;}else Ia=8;if((Ia|0)==8?(Ia=0,c[za>>2]=(c[na>>2]|0)+(c[xa>>2]|0),(d[(c[za>>2]|0)+(c[wa>>2]|0)>>0]|0|0)==(d[(c[fa>>2]|0)+(c[wa>>2]|0)>>0]|0|0)):0)c[ya>>2]=Qm(c[fa>>2]|0,c[za>>2]|0,c[ga>>2]|0)|0;if((c[ya>>2]|0)>>>0>(c[wa>>2]|0)>>>0?(c[wa>>2]=c[ya>>2],c[c[ha>>2]>>2]=(c[ta>>2]|0)-(c[xa>>2]|0)+2,((c[fa>>2]|0)+(c[ya>>2]|0)|0)==(c[ga>>2]|0)):0)break;if((c[xa>>2]|0)>>>0<=(c[ua>>2]|0)>>>0)break;c[xa>>2]=c[(c[ka>>2]|0)+((c[xa>>2]&c[ma>>2])<<2)>>2];c[va>>2]=(c[va>>2]|0)+-1;}c[Ba>>2]=c[wa>>2];Ja=c[Ba>>2]|0;l=h;return Ja|0;}}return 0;}function Lm(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if(((c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0)>>>0<(c[k>>2]|0)>>>0)q=(c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0;else q=c[k>>2]|0;c[o>>2]=q;c[p>>2]=Qm(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0)|0;o=c[p>>2]|0;if(((c[j>>2]|0)+(c[p>>2]|0)|0)!=(c[m>>2]|0)){c[h>>2]=o;r=c[h>>2]|0;l=g;return r|0;}else{c[h>>2]=o+(Qm((c[i>>2]|0)+(c[p>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0);r=c[h>>2]|0;l=g;return r|0;}return 0;}function Mm(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Nm(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;Om(c[(c[i>>2]|0)+12>>2]|0,c[k>>2]|0,c[j>>2]|0);k=(c[i>>2]|0)+12|0;c[k>>2]=(c[k>>2]|0)+(c[j>>2]|0);if((c[j>>2]|0)>>>0>65535){c[(c[i>>2]|0)+28>>2]=1;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;}b[(c[(c[i>>2]|0)+4>>2]|0)+4>>1]=c[j>>2];c[c[(c[i>>2]|0)+4>>2]>>2]=(c[m>>2]|0)+1;if((c[n>>2]|0)>>>0<=65535){o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}c[(c[i>>2]|0)+28>>2]=2;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}function Om(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{Pm(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function Pm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function Qm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];c[m>>2]=(c[j>>2]|0)+-3;a:do{if((c[h>>2]|0)>>>0<(c[m>>2]|0)>>>0){e=Rm(c[i>>2]|0)|0;c[n>>2]=e^(Rm(c[h>>2]|0)|0);if(c[n>>2]|0){c[g>>2]=Sm(c[n>>2]|0)|0;p=c[g>>2]|0;l=f;return p|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;while(1){if((c[h>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break a;e=Rm(c[i>>2]|0)|0;c[o>>2]=e^(Rm(c[h>>2]|0)|0);if(c[o>>2]|0)break;c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}e=Sm(c[o>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+e;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}}while(0);if((Tm()|0?(c[h>>2]|0)>>>0<((c[j>>2]|0)+-3|0)>>>0:0)?(o=Bk(c[i>>2]|0)|0,(o|0)==(Bk(c[h>>2]|0)|0)):0){c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}if((c[h>>2]|0)>>>0<((c[j>>2]|0)+-1|0)>>>0?(o=(Um(c[i>>2]|0)|0)&65535,(o|0)==((Um(c[h>>2]|0)|0)&65535|0)):0){c[h>>2]=(c[h>>2]|0)+2;c[i>>2]=(c[i>>2]|0)+2;}if((c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?(d[c[i>>2]>>0]|0|0)==(d[c[h>>2]>>0]|0|0):0)c[h>>2]=(c[h>>2]|0)+1;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}function Rm(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Sm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(vk()|0)!=0;f=(Tm()|0)!=0;g=c[e>>2]|0;do{if(a){if(f){e=ob(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(fE(g|0)|0)>>3;break;}}else if(f){e=lE(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(Q(g|0)|0)>>3;break;}}while(0);l=b;return c[d>>2]|0;}function Tm(){return 0;}function Um(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function Vm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;if((c[m>>2]|0)>>>0<((c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+24>>2]|0)|0)>>>0){c[i>>2]=0;q=c[i>>2]|0;l=h;return q|0;}else{Wm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[p>>2]|0);c[i>>2]=Xm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,1)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function Wm(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;g=l;l=l+80|0;h=g+64|0;i=g+60|0;j=g+56|0;k=g+48|0;m=g+44|0;n=g+40|0;o=g+36|0;p=g+32|0;q=g+28|0;r=g+24|0;s=g+20|0;t=g+16|0;u=g+12|0;v=g+8|0;w=g+4|0;x=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[g+52>>2]=e;c[k>>2]=f;c[m>>2]=c[(c[h>>2]|0)+36>>2];c[n>>2]=c[(c[i>>2]|0)+8>>2];c[o>>2]=c[(c[h>>2]|0)+44>>2];c[p>>2]=(c[(c[i>>2]|0)+4>>2]|0)-1;c[q>>2]=(1<<c[p>>2])-1;c[r>>2]=c[(c[h>>2]|0)+4>>2];c[s>>2]=(c[j>>2]|0)-(c[r>>2]|0);c[t>>2]=c[(c[h>>2]|0)+24>>2];while(1){if((c[t>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;c[u>>2]=nk((c[r>>2]|0)+(c[t>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0;c[v>>2]=c[(c[m>>2]|0)+(c[u>>2]<<2)>>2];c[w>>2]=(c[o>>2]|0)+((c[t>>2]&c[q>>2])<<1<<2);c[x>>2]=(c[w>>2]|0)+4;c[(c[m>>2]|0)+(c[u>>2]<<2)>>2]=c[t>>2];c[c[w>>2]>>2]=c[v>>2];c[c[x>>2]>>2]=1;c[t>>2]=(c[t>>2]|0)+1;}c[(c[h>>2]|0)+24>>2]=c[s>>2];l=g;return;}function Xm(a,b,e,f,g,h,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;j=l;l=l+176|0;k=j+160|0;m=j+156|0;n=j+152|0;o=j+148|0;p=j+144|0;q=j+140|0;r=j+136|0;s=j+132|0;t=j+128|0;u=j+124|0;v=j+120|0;w=j+116|0;x=j+112|0;y=j+108|0;z=j+104|0;A=j+100|0;B=j+96|0;C=j+92|0;D=j+88|0;E=j+84|0;F=j+80|0;G=j+76|0;H=j+72|0;I=j+68|0;J=j+64|0;K=j+60|0;L=j+56|0;M=j+52|0;N=j+48|0;O=j+44|0;P=j+40|0;Q=j+36|0;R=j+32|0;S=j+28|0;T=j+24|0;U=j+20|0;V=j+16|0;W=j+12|0;X=j+8|0;Y=j+4|0;Z=j;c[k>>2]=a;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=i;c[s>>2]=c[(c[k>>2]|0)+36>>2];c[t>>2]=c[(c[m>>2]|0)+8>>2];c[u>>2]=nk(c[n>>2]|0,c[t>>2]|0,c[q>>2]|0)|0;c[v>>2]=c[(c[s>>2]|0)+(c[u>>2]<<2)>>2];c[w>>2]=c[(c[k>>2]|0)+4>>2];c[x>>2]=(c[n>>2]|0)-(c[w>>2]|0);c[y>>2]=c[(c[k>>2]|0)+16>>2];c[z>>2]=c[(c[k>>2]|0)+44>>2];c[A>>2]=(c[(c[m>>2]|0)+4>>2]|0)-1;c[B>>2]=(1<<c[A>>2])-1;if((c[B>>2]|0)>>>0>=(c[x>>2]|0)>>>0)_=0;else _=(c[x>>2]|0)-(c[B>>2]|0)|0;c[C>>2]=_;c[D>>2]=(c[C>>2]|0)>>>0>(c[y>>2]|0)>>>0?c[C>>2]|0:c[y>>2]|0;c[E>>2]=(c[z>>2]|0)+((c[v>>2]&c[B>>2])<<1<<2);c[F>>2]=(c[z>>2]|0)+((c[v>>2]&c[B>>2])<<1<<2)+4;c[G>>2]=1<<c[(c[m>>2]|0)+12>>2];c[H>>2]=c[G>>2];c[I>>2]=0;while(1){if((c[v>>2]|0)>>>0<=(c[D>>2]|0)>>>0)break;if(!((c[H>>2]|0)>>>0>1?(c[c[F>>2]>>2]|0)==1:0))break;c[c[F>>2]>>2]=c[I>>2];c[I>>2]=c[v>>2];c[v>>2]=c[c[E>>2]>>2];c[E>>2]=(c[z>>2]|0)+((c[v>>2]&c[B>>2])<<1<<2);c[F>>2]=(c[z>>2]|0)+((c[v>>2]&c[B>>2])<<1<<2)+4;c[H>>2]=(c[H>>2]|0)+-1;}if((c[v>>2]|0)>>>0>(c[D>>2]|0)>>>0?(c[c[F>>2]>>2]|0)==1:0){c[c[F>>2]>>2]=0;c[c[E>>2]>>2]=0;}c[v>>2]=c[I>>2];while(1){if(!(c[v>>2]|0))break;c[J>>2]=(c[z>>2]|0)+((c[v>>2]&c[B>>2])<<1<<2)+4;c[K>>2]=c[c[J>>2]>>2];Ym(c[k>>2]|0,c[m>>2]|0,c[v>>2]|0,c[o>>2]|0,c[H>>2]|0,c[D>>2]|0,c[r>>2]|0);c[v>>2]=c[K>>2];c[H>>2]=(c[H>>2]|0)+1;}c[L>>2]=0;c[M>>2]=0;c[N>>2]=c[(c[k>>2]|0)+8>>2];c[O>>2]=c[(c[k>>2]|0)+12>>2];c[P>>2]=(c[N>>2]|0)+(c[O>>2]|0);c[Q>>2]=(c[w>>2]|0)+(c[O>>2]|0);c[R>>2]=(c[z>>2]|0)+((c[x>>2]&c[B>>2])<<1<<2);c[S>>2]=(c[z>>2]|0)+((c[x>>2]&c[B>>2])<<1<<2)+4;c[T>>2]=(c[x>>2]|0)+8+1;c[V>>2]=0;c[v>>2]=c[(c[s>>2]|0)+(c[u>>2]<<2)>>2];c[(c[s>>2]|0)+(c[u>>2]<<2)>>2]=c[x>>2];while(1){u=c[G>>2]|0;c[G>>2]=u+-1;if(!u)break;if((c[v>>2]|0)>>>0<=(c[y>>2]|0)>>>0)break;c[W>>2]=(c[z>>2]|0)+((c[v>>2]&c[B>>2])<<1<<2);c[X>>2]=(c[L>>2]|0)>>>0<(c[M>>2]|0)>>>0?c[L>>2]|0:c[M>>2]|0;if(c[r>>2]|0?((c[v>>2]|0)+(c[X>>2]|0)|0)>>>0<(c[O>>2]|0)>>>0:0){c[Y>>2]=(c[N>>2]|0)+(c[v>>2]|0);u=Lm((c[n>>2]|0)+(c[X>>2]|0)|0,(c[Y>>2]|0)+(c[X>>2]|0)|0,c[o>>2]|0,c[P>>2]|0,c[Q>>2]|0)|0;c[X>>2]=(c[X>>2]|0)+u;if(((c[v>>2]|0)+(c[X>>2]|0)|0)>>>0>=(c[O>>2]|0)>>>0)c[Y>>2]=(c[w>>2]|0)+(c[v>>2]|0);}else{c[Y>>2]=(c[w>>2]|0)+(c[v>>2]|0);u=Qm((c[n>>2]|0)+(c[X>>2]|0)|0,(c[Y>>2]|0)+(c[X>>2]|0)|0,c[o>>2]|0)|0;c[X>>2]=(c[X>>2]|0)+u;}if((c[X>>2]|0)>>>0>(c[V>>2]|0)>>>0){if((c[X>>2]|0)>>>0>((c[T>>2]|0)-(c[v>>2]|0)|0)>>>0)c[T>>2]=(c[v>>2]|0)+(c[X>>2]|0);u=(c[X>>2]|0)-(c[V>>2]|0)<<2;s=Mm((c[x>>2]|0)-(c[v>>2]|0)+1|0)|0;if((u|0)>(s-(Mm((c[c[p>>2]>>2]|0)+1|0)|0)|0)){c[V>>2]=c[X>>2];c[c[p>>2]>>2]=2+(c[x>>2]|0)-(c[v>>2]|0);}if(((c[n>>2]|0)+(c[X>>2]|0)|0)==(c[o>>2]|0))break;}s=c[v>>2]|0;if((d[(c[Y>>2]|0)+(c[X>>2]|0)>>0]|0|0)<(d[(c[n>>2]|0)+(c[X>>2]|0)>>0]|0|0)){c[c[R>>2]>>2]=s;c[L>>2]=c[X>>2];if((c[v>>2]|0)>>>0<=(c[C>>2]|0)>>>0){$=29;break;}c[R>>2]=(c[W>>2]|0)+4;c[v>>2]=c[(c[W>>2]|0)+4>>2];}else{c[c[S>>2]>>2]=s;c[M>>2]=c[X>>2];if((c[v>>2]|0)>>>0<=(c[C>>2]|0)>>>0){$=32;break;}c[S>>2]=c[W>>2];c[v>>2]=c[c[W>>2]>>2];}}if(($|0)==29)c[R>>2]=U;else if(($|0)==32)c[S>>2]=U;c[c[S>>2]>>2]=0;c[c[R>>2]>>2]=0;c[(c[k>>2]|0)+24>>2]=(c[T>>2]|0)-8;if((c[V>>2]|0)>>>0<3){aa=c[V>>2]|0;l=j;return aa|0;}c[Z>>2]=(c[x>>2]|0)-((c[c[p>>2]>>2]|0)-2);aa=c[V>>2]|0;l=j;return aa|0;}function Ym(a,b,e,f,g,h,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;j=l;l=l+112|0;k=j+108|0;m=j+104|0;n=j+100|0;o=j+96|0;p=j+92|0;q=j+88|0;r=j+84|0;s=j+80|0;t=j+76|0;u=j+72|0;v=j+68|0;w=j+64|0;x=j+60|0;y=j+56|0;z=j+52|0;A=j+48|0;B=j+44|0;C=j+40|0;D=j+36|0;E=j+32|0;F=j+28|0;G=j+24|0;H=j+20|0;I=j+16|0;J=j+12|0;K=j+8|0;L=j+4|0;M=j;c[k>>2]=a;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=i;c[s>>2]=c[(c[k>>2]|0)+44>>2];c[t>>2]=(c[(c[m>>2]|0)+4>>2]|0)-1;c[u>>2]=(1<<c[t>>2])-1;c[v>>2]=0;c[w>>2]=0;c[x>>2]=c[(c[k>>2]|0)+4>>2];c[y>>2]=c[(c[k>>2]|0)+8>>2];c[z>>2]=c[(c[k>>2]|0)+12>>2];c[A>>2]=(c[n>>2]|0)>>>0>=(c[z>>2]|0)>>>0?(c[x>>2]|0)+(c[n>>2]|0)|0:(c[y>>2]|0)+(c[n>>2]|0)|0;c[B>>2]=(c[n>>2]|0)>>>0>=(c[z>>2]|0)>>>0?c[o>>2]|0:(c[y>>2]|0)+(c[z>>2]|0)|0;c[C>>2]=(c[y>>2]|0)+(c[z>>2]|0);c[D>>2]=(c[x>>2]|0)+(c[z>>2]|0);c[F>>2]=(c[s>>2]|0)+((c[n>>2]&c[u>>2])<<1<<2);c[G>>2]=(c[F>>2]|0)+4;c[H>>2]=c[c[F>>2]>>2];c[J>>2]=c[(c[k>>2]|0)+16>>2];while(1){k=c[p>>2]|0;c[p>>2]=k+-1;if(!k){N=23;break;}if((c[H>>2]|0)>>>0<=(c[J>>2]|0)>>>0){N=23;break;}c[K>>2]=(c[s>>2]|0)+((c[H>>2]&c[u>>2])<<1<<2);c[L>>2]=(c[v>>2]|0)>>>0<(c[w>>2]|0)>>>0?c[v>>2]|0:c[w>>2]|0;if((c[r>>2]|0?((c[H>>2]|0)+(c[L>>2]|0)|0)>>>0<(c[z>>2]|0)>>>0:0)?(c[n>>2]|0)>>>0>=(c[z>>2]|0)>>>0:0){c[E>>2]=(c[y>>2]|0)+(c[H>>2]|0);k=Lm((c[A>>2]|0)+(c[L>>2]|0)|0,(c[E>>2]|0)+(c[L>>2]|0)|0,c[B>>2]|0,c[C>>2]|0,c[D>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+k;if(((c[H>>2]|0)+(c[L>>2]|0)|0)>>>0>=(c[z>>2]|0)>>>0)c[E>>2]=(c[x>>2]|0)+(c[H>>2]|0);}else{if(c[r>>2]|0?((c[H>>2]|0)+(c[L>>2]|0)|0)>>>0<(c[z>>2]|0)>>>0:0)O=c[y>>2]|0;else O=c[x>>2]|0;c[M>>2]=O;c[E>>2]=(c[M>>2]|0)+(c[H>>2]|0);k=Qm((c[A>>2]|0)+(c[L>>2]|0)|0,(c[E>>2]|0)+(c[L>>2]|0)|0,c[B>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+k;}if(((c[A>>2]|0)+(c[L>>2]|0)|0)==(c[B>>2]|0)){N=23;break;}k=c[H>>2]|0;if((d[(c[E>>2]|0)+(c[L>>2]|0)>>0]|0|0)<(d[(c[A>>2]|0)+(c[L>>2]|0)>>0]|0|0)){c[c[F>>2]>>2]=k;c[v>>2]=c[L>>2];if((c[H>>2]|0)>>>0<=(c[q>>2]|0)>>>0){N=17;break;}c[F>>2]=(c[K>>2]|0)+4;c[H>>2]=c[(c[K>>2]|0)+4>>2];}else{c[c[G>>2]>>2]=k;c[w>>2]=c[L>>2];if((c[H>>2]|0)>>>0<=(c[q>>2]|0)>>>0){N=20;break;}c[G>>2]=c[K>>2];c[H>>2]=c[c[K>>2]>>2];}}if((N|0)==17){c[F>>2]=I;P=c[G>>2]|0;c[P>>2]=0;Q=c[F>>2]|0;c[Q>>2]=0;l=j;return;}else if((N|0)==20){c[G>>2]=I;P=c[G>>2]|0;c[P>>2]=0;Q=c[F>>2]|0;c[Q>>2]=0;l=j;return;}else if((N|0)==23){P=c[G>>2]|0;c[P>>2]=0;Q=c[F>>2]|0;c[Q>>2]=0;l=j;return;}}function Zm(a,b,e,f,g,h,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;j=l;l=l+240|0;k=j+224|0;m=j+220|0;n=j+216|0;o=j+212|0;p=j+208|0;q=j+204|0;r=j+200|0;s=j+196|0;t=j+192|0;u=j+188|0;v=j+184|0;w=j+180|0;x=j+176|0;z=j+172|0;A=j+168|0;B=j+164|0;C=j+160|0;D=j+156|0;E=j+152|0;F=j+148|0;G=j+144|0;H=j+140|0;I=j+136|0;J=j+132|0;K=j+128|0;L=j+124|0;M=j+120|0;N=j+116|0;O=j+112|0;P=j+108|0;Q=j+104|0;R=j+100|0;S=j+96|0;T=j+92|0;U=j+88|0;V=j+84|0;W=j+80|0;X=j+76|0;Y=j+72|0;Z=j+68|0;_=j+64|0;$=j+60|0;aa=j+56|0;ba=j+52|0;ca=j+48|0;da=j+44|0;ea=j+40|0;fa=j+36|0;ga=j+32|0;ha=j+28|0;ia=j+24|0;ja=j+20|0;ka=j+16|0;la=j+12|0;ma=j+8|0;na=j+4|0;oa=j;c[k>>2]=a;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=i;c[s>>2]=c[(c[k>>2]|0)+36>>2];c[t>>2]=c[(c[o>>2]|0)+8>>2];c[u>>2]=c[(c[k>>2]|0)+44>>2];c[v>>2]=c[(c[o>>2]|0)+4>>2];c[w>>2]=c[(c[k>>2]|0)+4>>2];c[x>>2]=c[(c[k>>2]|0)+8>>2];c[z>>2]=c[p>>2];c[A>>2]=c[z>>2];c[B>>2]=c[z>>2];c[C>>2]=c[(c[k>>2]|0)+16>>2];c[D>>2]=(c[x>>2]|0)+(c[C>>2]|0);c[E>>2]=c[(c[k>>2]|0)+12>>2];c[F>>2]=(c[w>>2]|0)+(c[E>>2]|0);c[G>>2]=(c[x>>2]|0)+(c[E>>2]|0);c[H>>2]=(c[z>>2]|0)+(c[q>>2]|0);c[I>>2]=(c[H>>2]|0)+-8;c[J>>2]=c[c[n>>2]>>2];c[K>>2]=c[(c[n>>2]|0)+4>>2];a:while(1){if((c[A>>2]|0)>>>0>=(c[I>>2]|0)>>>0)break;c[L>>2]=Dk(c[A>>2]|0,c[v>>2]|0,c[r>>2]|0)|0;c[M>>2]=c[(c[u>>2]|0)+(c[L>>2]<<2)>>2];c[N>>2]=(c[M>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[x>>2]|0:c[w>>2]|0;c[O>>2]=(c[N>>2]|0)+(c[M>>2]|0);c[P>>2]=Dk(c[A>>2]|0,c[t>>2]|0,8)|0;c[Q>>2]=c[(c[s>>2]|0)+(c[P>>2]<<2)>>2];c[R>>2]=(c[Q>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[x>>2]|0:c[w>>2]|0;c[S>>2]=(c[R>>2]|0)+(c[Q>>2]|0);c[T>>2]=(c[A>>2]|0)-(c[w>>2]|0);c[U>>2]=(c[T>>2]|0)+1-(c[J>>2]|0);c[V>>2]=(c[U>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[x>>2]|0:c[w>>2]|0;c[W>>2]=(c[V>>2]|0)+(c[U>>2]|0);q=c[T>>2]|0;c[(c[s>>2]|0)+(c[P>>2]<<2)>>2]=q;c[(c[u>>2]|0)+(c[L>>2]<<2)>>2]=q;if(((c[U>>2]|0)>>>0>(c[C>>2]|0)>>>0?((c[E>>2]|0)-1-(c[U>>2]|0)|0)>>>0>=3:0)|0?(q=Rk(c[W>>2]|0)|0,(q|0)==(Rk((c[A>>2]|0)+1|0)|0)):0){c[Y>>2]=(c[U>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[G>>2]|0:c[H>>2]|0;c[X>>2]=(_m((c[A>>2]|0)+1+4|0,(c[W>>2]|0)+4|0,c[H>>2]|0,c[Y>>2]|0,c[F>>2]|0)|0)+4;c[A>>2]=(c[A>>2]|0)+1;$m(c[m>>2]|0,(c[A>>2]|0)-(c[B>>2]|0)|0,c[B>>2]|0,0,(c[X>>2]|0)-3|0);}else pa=6;do{if((pa|0)==6){pa=0;if((c[Q>>2]|0)>>>0>(c[C>>2]|0)>>>0?(q=Mk(c[S>>2]|0)|0,z=y,k=Mk(c[A>>2]|0)|0,(q|0)==(k|0)&(z|0)==(y|0)):0){c[Z>>2]=(c[Q>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[G>>2]|0:c[H>>2]|0;c[_>>2]=(c[Q>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[D>>2]|0:c[F>>2]|0;c[X>>2]=(_m((c[A>>2]|0)+8|0,(c[S>>2]|0)+8|0,c[H>>2]|0,c[Z>>2]|0,c[F>>2]|0)|0)+8;c[$>>2]=(c[T>>2]|0)-(c[Q>>2]|0);while(1){if(!(((c[A>>2]|0)>>>0>(c[B>>2]|0)>>>0?(c[S>>2]|0)>>>0>(c[_>>2]|0)>>>0:0)|0))break;if((d[(c[A>>2]|0)+-1>>0]|0|0)!=(d[(c[S>>2]|0)+-1>>0]|0|0))break;c[A>>2]=(c[A>>2]|0)+-1;c[S>>2]=(c[S>>2]|0)+-1;c[X>>2]=(c[X>>2]|0)+1;}c[K>>2]=c[J>>2];c[J>>2]=c[$>>2];$m(c[m>>2]|0,(c[A>>2]|0)-(c[B>>2]|0)|0,c[B>>2]|0,(c[$>>2]|0)+2|0,(c[X>>2]|0)-3|0);break;}if((c[M>>2]|0)>>>0>(c[C>>2]|0)>>>0?(z=Rk(c[O>>2]|0)|0,(z|0)==(Rk(c[A>>2]|0)|0)):0){c[aa>>2]=Dk((c[A>>2]|0)+1|0,c[t>>2]|0,8)|0;c[ba>>2]=c[(c[s>>2]|0)+(c[aa>>2]<<2)>>2];c[ca>>2]=(c[ba>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[x>>2]|0:c[w>>2]|0;c[da>>2]=(c[ca>>2]|0)+(c[ba>>2]|0);c[(c[s>>2]|0)+(c[aa>>2]<<2)>>2]=(c[T>>2]|0)+1;b:do{if((c[ba>>2]|0)>>>0>(c[C>>2]|0)>>>0?(z=Mk(c[da>>2]|0)|0,k=y,q=Mk((c[A>>2]|0)+1|0)|0,(z|0)==(q|0)&(k|0)==(y|0)):0){c[fa>>2]=(c[ba>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[G>>2]|0:c[H>>2]|0;c[ga>>2]=(c[ba>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[D>>2]|0:c[F>>2]|0;c[X>>2]=(_m((c[A>>2]|0)+9|0,(c[da>>2]|0)+8|0,c[H>>2]|0,c[fa>>2]|0,c[F>>2]|0)|0)+8;c[A>>2]=(c[A>>2]|0)+1;c[ea>>2]=(c[T>>2]|0)+1-(c[ba>>2]|0);while(1){if(!(((c[A>>2]|0)>>>0>(c[B>>2]|0)>>>0?(c[da>>2]|0)>>>0>(c[ga>>2]|0)>>>0:0)|0))break b;if((d[(c[A>>2]|0)+-1>>0]|0|0)!=(d[(c[da>>2]|0)+-1>>0]|0|0))break b;c[A>>2]=(c[A>>2]|0)+-1;c[da>>2]=(c[da>>2]|0)+-1;c[X>>2]=(c[X>>2]|0)+1;}}else pa=21;}while(0);c:do{if((pa|0)==21){pa=0;c[ha>>2]=(c[M>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[G>>2]|0:c[H>>2]|0;c[ia>>2]=(c[M>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[D>>2]|0:c[F>>2]|0;c[X>>2]=(_m((c[A>>2]|0)+4|0,(c[O>>2]|0)+4|0,c[H>>2]|0,c[ha>>2]|0,c[F>>2]|0)|0)+4;c[ea>>2]=(c[T>>2]|0)-(c[M>>2]|0);while(1){if(!(((c[A>>2]|0)>>>0>(c[B>>2]|0)>>>0?(c[O>>2]|0)>>>0>(c[ia>>2]|0)>>>0:0)|0))break c;if((d[(c[A>>2]|0)+-1>>0]|0|0)!=(d[(c[O>>2]|0)+-1>>0]|0|0))break c;c[A>>2]=(c[A>>2]|0)+-1;c[O>>2]=(c[O>>2]|0)+-1;c[X>>2]=(c[X>>2]|0)+1;}}}while(0);c[K>>2]=c[J>>2];c[J>>2]=c[ea>>2];$m(c[m>>2]|0,(c[A>>2]|0)-(c[B>>2]|0)|0,c[B>>2]|0,(c[ea>>2]|0)+2|0,(c[X>>2]|0)-3|0);break;}c[A>>2]=(c[A>>2]|0)+(((c[A>>2]|0)-(c[B>>2]|0)>>8)+1);continue a;}}while(0);c[A>>2]=(c[A>>2]|0)+(c[X>>2]|0);c[B>>2]=c[A>>2];d:do{if((c[A>>2]|0)>>>0<=(c[I>>2]|0)>>>0){k=(c[T>>2]|0)+2|0;q=c[u>>2]|0;c[q+((Dk((c[w>>2]|0)+(c[T>>2]|0)+2|0,c[v>>2]|0,c[r>>2]|0)|0)<<2)>>2]=k;k=(c[T>>2]|0)+2|0;q=c[s>>2]|0;c[q+((Dk((c[w>>2]|0)+(c[T>>2]|0)+2|0,c[t>>2]|0,8)|0)<<2)>>2]=k;k=(c[A>>2]|0)+-2-(c[w>>2]|0)|0;q=c[u>>2]|0;c[q+((Dk((c[A>>2]|0)+-2|0,c[v>>2]|0,c[r>>2]|0)|0)<<2)>>2]=k;k=(c[A>>2]|0)+-2-(c[w>>2]|0)|0;q=c[s>>2]|0;c[q+((Dk((c[A>>2]|0)+-2|0,c[t>>2]|0,8)|0)<<2)>>2]=k;while(1){if((c[A>>2]|0)>>>0>(c[I>>2]|0)>>>0)break d;c[ja>>2]=(c[A>>2]|0)-(c[w>>2]|0);c[ka>>2]=(c[ja>>2]|0)-(c[K>>2]|0);c[la>>2]=(c[ka>>2]|0)>>>0<(c[E>>2]|0)>>>0?(c[x>>2]|0)+(c[ka>>2]|0)|0:(c[w>>2]|0)+(c[ka>>2]|0)|0;if(!(((c[ka>>2]|0)>>>0>(c[C>>2]|0)>>>0?((c[E>>2]|0)-1-(c[ka>>2]|0)|0)>>>0>=3:0)|0))break d;k=Rk(c[la>>2]|0)|0;if((k|0)!=(Rk(c[A>>2]|0)|0))break d;c[ma>>2]=(c[ka>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[G>>2]|0:c[H>>2]|0;c[na>>2]=(_m((c[A>>2]|0)+4|0,(c[la>>2]|0)+4|0,c[H>>2]|0,c[ma>>2]|0,c[F>>2]|0)|0)+4;c[oa>>2]=c[K>>2];c[K>>2]=c[J>>2];c[J>>2]=c[oa>>2];$m(c[m>>2]|0,0,c[B>>2]|0,0,(c[na>>2]|0)-3|0);k=c[ja>>2]|0;q=c[u>>2]|0;c[q+((Dk(c[A>>2]|0,c[v>>2]|0,c[r>>2]|0)|0)<<2)>>2]=k;k=c[ja>>2]|0;q=c[s>>2]|0;c[q+((Dk(c[A>>2]|0,c[t>>2]|0,8)|0)<<2)>>2]=k;c[A>>2]=(c[A>>2]|0)+(c[na>>2]|0);c[B>>2]=c[A>>2];}}}while(0);}c[c[n>>2]>>2]=c[J>>2];c[(c[n>>2]|0)+4>>2]=c[K>>2];l=j;return(c[H>>2]|0)-(c[B>>2]|0)|0;}function _m(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if(((c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0)>>>0<(c[k>>2]|0)>>>0)q=(c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0;else q=c[k>>2]|0;c[o>>2]=q;c[p>>2]=cn(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0)|0;o=c[p>>2]|0;if(((c[j>>2]|0)+(c[p>>2]|0)|0)!=(c[m>>2]|0)){c[h>>2]=o;r=c[h>>2]|0;l=g;return r|0;}else{c[h>>2]=o+(cn((c[i>>2]|0)+(c[p>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0);r=c[h>>2]|0;l=g;return r|0;}return 0;}function $m(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;an(c[(c[i>>2]|0)+12>>2]|0,c[k>>2]|0,c[j>>2]|0);k=(c[i>>2]|0)+12|0;c[k>>2]=(c[k>>2]|0)+(c[j>>2]|0);if((c[j>>2]|0)>>>0>65535){c[(c[i>>2]|0)+28>>2]=1;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;}b[(c[(c[i>>2]|0)+4>>2]|0)+4>>1]=c[j>>2];c[c[(c[i>>2]|0)+4>>2]>>2]=(c[m>>2]|0)+1;if((c[n>>2]|0)>>>0<=65535){o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}c[(c[i>>2]|0)+28>>2]=2;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}function an(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{bn(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function bn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function cn(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];c[m>>2]=(c[j>>2]|0)+-3;a:do{if((c[h>>2]|0)>>>0<(c[m>>2]|0)>>>0){e=dn(c[i>>2]|0)|0;c[n>>2]=e^(dn(c[h>>2]|0)|0);if(c[n>>2]|0){c[g>>2]=en(c[n>>2]|0)|0;p=c[g>>2]|0;l=f;return p|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;while(1){if((c[h>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break a;e=dn(c[i>>2]|0)|0;c[o>>2]=e^(dn(c[h>>2]|0)|0);if(c[o>>2]|0)break;c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}e=en(c[o>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+e;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}}while(0);if((fn()|0?(c[h>>2]|0)>>>0<((c[j>>2]|0)+-3|0)>>>0:0)?(o=Rk(c[i>>2]|0)|0,(o|0)==(Rk(c[h>>2]|0)|0)):0){c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}if((c[h>>2]|0)>>>0<((c[j>>2]|0)+-1|0)>>>0?(o=(gn(c[i>>2]|0)|0)&65535,(o|0)==((gn(c[h>>2]|0)|0)&65535|0)):0){c[h>>2]=(c[h>>2]|0)+2;c[i>>2]=(c[i>>2]|0)+2;}if((c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?(d[c[i>>2]>>0]|0|0)==(d[c[h>>2]>>0]|0|0):0)c[h>>2]=(c[h>>2]|0)+1;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}function dn(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function en(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Lk()|0)!=0;f=(fn()|0)!=0;g=c[e>>2]|0;do{if(a){if(f){e=ob(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(fE(g|0)|0)>>3;break;}}else if(f){e=lE(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(Q(g|0)|0)>>3;break;}}while(0);l=b;return c[d>>2]|0;}function fn(){return 0;}function gn(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function hn(a,b,e,f,g,h,i,j){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;k=l;l=l+176|0;m=k+164|0;n=k+160|0;o=k+156|0;p=k+152|0;q=k+148|0;r=k+144|0;s=k+140|0;t=k+136|0;u=k+132|0;v=k+128|0;w=k+124|0;x=k+120|0;y=k+116|0;z=k+112|0;A=k+108|0;B=k+104|0;C=k+100|0;D=k+96|0;E=k+92|0;F=k+88|0;G=k+84|0;H=k+80|0;I=k+76|0;J=k+72|0;K=k+68|0;L=k+64|0;M=k+60|0;N=k+56|0;O=k+52|0;P=k+48|0;Q=k+44|0;R=k+40|0;S=k+36|0;T=k+32|0;U=k+28|0;V=k+24|0;W=k+20|0;X=k+16|0;Y=k+12|0;Z=k+8|0;_=k+4|0;$=k;c[m>>2]=a;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=c[(c[m>>2]|0)+36>>2];c[v>>2]=c[(c[m>>2]|0)+4>>2];c[w>>2]=c[(c[m>>2]|0)+8>>2];c[x>>2]=c[p>>2];c[y>>2]=c[x>>2];c[z>>2]=c[x>>2];c[A>>2]=c[(c[m>>2]|0)+16>>2];c[B>>2]=(c[w>>2]|0)+(c[A>>2]|0);c[C>>2]=c[(c[m>>2]|0)+12>>2];c[D>>2]=(c[v>>2]|0)+(c[C>>2]|0);c[E>>2]=(c[w>>2]|0)+(c[C>>2]|0);c[F>>2]=(c[x>>2]|0)+(c[q>>2]|0);c[G>>2]=(c[F>>2]|0)+-8;c[H>>2]=c[c[o>>2]>>2];c[I>>2]=c[(c[o>>2]|0)+4>>2];a:while(1){if((c[y>>2]|0)>>>0>=(c[G>>2]|0)>>>0)break;c[J>>2]=Tk(c[y>>2]|0,c[r>>2]|0,c[t>>2]|0)|0;c[K>>2]=c[(c[u>>2]|0)+(c[J>>2]<<2)>>2];c[L>>2]=(c[K>>2]|0)>>>0<(c[C>>2]|0)>>>0?c[w>>2]|0:c[v>>2]|0;c[M>>2]=(c[L>>2]|0)+(c[K>>2]|0);c[N>>2]=(c[y>>2]|0)-(c[v>>2]|0);c[O>>2]=(c[N>>2]|0)+1-(c[H>>2]|0);c[P>>2]=(c[O>>2]|0)>>>0<(c[C>>2]|0)>>>0?c[w>>2]|0:c[v>>2]|0;c[Q>>2]=(c[P>>2]|0)+(c[O>>2]|0);c[(c[u>>2]|0)+(c[J>>2]<<2)>>2]=c[N>>2];if(((c[O>>2]|0)>>>0>(c[A>>2]|0)>>>0?((c[C>>2]|0)-1-(c[O>>2]|0)|0)>>>0>=3:0)|0?(q=fl(c[Q>>2]|0)|0,(q|0)==(fl((c[y>>2]|0)+1|0)|0)):0){c[S>>2]=(c[O>>2]|0)>>>0<(c[C>>2]|0)>>>0?c[E>>2]|0:c[F>>2]|0;c[R>>2]=(jn((c[y>>2]|0)+1+4|0,(c[Q>>2]|0)+4|0,c[F>>2]|0,c[S>>2]|0,c[D>>2]|0)|0)+4;c[y>>2]=(c[y>>2]|0)+1;kn(c[n>>2]|0,(c[y>>2]|0)-(c[z>>2]|0)|0,c[z>>2]|0,0,(c[R>>2]|0)-3|0);}else aa=6;do{if((aa|0)==6){aa=0;if((c[K>>2]|0)>>>0>=(c[A>>2]|0)>>>0?(q=fl(c[M>>2]|0)|0,(q|0)==(fl(c[y>>2]|0)|0)):0){c[T>>2]=(c[K>>2]|0)>>>0<(c[C>>2]|0)>>>0?c[E>>2]|0:c[F>>2]|0;c[U>>2]=(c[K>>2]|0)>>>0<(c[C>>2]|0)>>>0?c[B>>2]|0:c[D>>2]|0;c[R>>2]=(jn((c[y>>2]|0)+4|0,(c[M>>2]|0)+4|0,c[F>>2]|0,c[T>>2]|0,c[D>>2]|0)|0)+4;while(1){if(!(((c[y>>2]|0)>>>0>(c[z>>2]|0)>>>0?(c[M>>2]|0)>>>0>(c[U>>2]|0)>>>0:0)|0))break;if((d[(c[y>>2]|0)+-1>>0]|0|0)!=(d[(c[M>>2]|0)+-1>>0]|0|0))break;c[y>>2]=(c[y>>2]|0)+-1;c[M>>2]=(c[M>>2]|0)+-1;c[R>>2]=(c[R>>2]|0)+1;}c[V>>2]=(c[N>>2]|0)-(c[K>>2]|0);c[I>>2]=c[H>>2];c[H>>2]=c[V>>2];kn(c[n>>2]|0,(c[y>>2]|0)-(c[z>>2]|0)|0,c[z>>2]|0,(c[V>>2]|0)+2|0,(c[R>>2]|0)-3|0);break;}c[y>>2]=(c[y>>2]|0)+(((c[y>>2]|0)-(c[z>>2]|0)>>8)+(c[s>>2]|0));continue a;}}while(0);c[y>>2]=(c[y>>2]|0)+(c[R>>2]|0);c[z>>2]=c[y>>2];b:do{if((c[y>>2]|0)>>>0<=(c[G>>2]|0)>>>0){q=(c[N>>2]|0)+2|0;x=c[u>>2]|0;c[x+((Tk((c[v>>2]|0)+(c[N>>2]|0)+2|0,c[r>>2]|0,c[t>>2]|0)|0)<<2)>>2]=q;q=(c[y>>2]|0)+-2-(c[v>>2]|0)|0;x=c[u>>2]|0;c[x+((Tk((c[y>>2]|0)+-2|0,c[r>>2]|0,c[t>>2]|0)|0)<<2)>>2]=q;while(1){if((c[y>>2]|0)>>>0>(c[G>>2]|0)>>>0)break b;c[W>>2]=(c[y>>2]|0)-(c[v>>2]|0);c[X>>2]=(c[W>>2]|0)-(c[I>>2]|0);c[Y>>2]=(c[X>>2]|0)>>>0<(c[C>>2]|0)>>>0?(c[w>>2]|0)+(c[X>>2]|0)|0:(c[v>>2]|0)+(c[X>>2]|0)|0;if(!(((c[X>>2]|0)>>>0>(c[A>>2]|0)>>>0?((c[C>>2]|0)-1-(c[X>>2]|0)|0)>>>0>=3:0)|0))break b;q=fl(c[Y>>2]|0)|0;if((q|0)!=(fl(c[y>>2]|0)|0))break b;c[Z>>2]=(c[X>>2]|0)>>>0<(c[C>>2]|0)>>>0?c[E>>2]|0:c[F>>2]|0;c[_>>2]=(jn((c[y>>2]|0)+4|0,(c[Y>>2]|0)+4|0,c[F>>2]|0,c[Z>>2]|0,c[D>>2]|0)|0)+4;c[$>>2]=c[I>>2];c[I>>2]=c[H>>2];c[H>>2]=c[$>>2];kn(c[n>>2]|0,0,c[z>>2]|0,0,(c[_>>2]|0)-3|0);q=c[W>>2]|0;x=c[u>>2]|0;c[x+((Tk(c[y>>2]|0,c[r>>2]|0,c[t>>2]|0)|0)<<2)>>2]=q;c[y>>2]=(c[y>>2]|0)+(c[_>>2]|0);c[z>>2]=c[y>>2];}}}while(0);}c[c[o>>2]>>2]=c[H>>2];c[(c[o>>2]|0)+4>>2]=c[I>>2];l=k;return(c[F>>2]|0)-(c[z>>2]|0)|0;}function jn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if(((c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0)>>>0<(c[k>>2]|0)>>>0)q=(c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0;else q=c[k>>2]|0;c[o>>2]=q;c[p>>2]=nn(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0)|0;o=c[p>>2]|0;if(((c[j>>2]|0)+(c[p>>2]|0)|0)!=(c[m>>2]|0)){c[h>>2]=o;r=c[h>>2]|0;l=g;return r|0;}else{c[h>>2]=o+(nn((c[i>>2]|0)+(c[p>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0);r=c[h>>2]|0;l=g;return r|0;}return 0;}function kn(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;ln(c[(c[i>>2]|0)+12>>2]|0,c[k>>2]|0,c[j>>2]|0);k=(c[i>>2]|0)+12|0;c[k>>2]=(c[k>>2]|0)+(c[j>>2]|0);if((c[j>>2]|0)>>>0>65535){c[(c[i>>2]|0)+28>>2]=1;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;}b[(c[(c[i>>2]|0)+4>>2]|0)+4>>1]=c[j>>2];c[c[(c[i>>2]|0)+4>>2]>>2]=(c[m>>2]|0)+1;if((c[n>>2]|0)>>>0<=65535){o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}c[(c[i>>2]|0)+28>>2]=2;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}function ln(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{mn(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function mn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function nn(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];c[m>>2]=(c[j>>2]|0)+-3;a:do{if((c[h>>2]|0)>>>0<(c[m>>2]|0)>>>0){e=on(c[i>>2]|0)|0;c[n>>2]=e^(on(c[h>>2]|0)|0);if(c[n>>2]|0){c[g>>2]=pn(c[n>>2]|0)|0;p=c[g>>2]|0;l=f;return p|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;while(1){if((c[h>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break a;e=on(c[i>>2]|0)|0;c[o>>2]=e^(on(c[h>>2]|0)|0);if(c[o>>2]|0)break;c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}e=pn(c[o>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+e;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}}while(0);if((qn()|0?(c[h>>2]|0)>>>0<((c[j>>2]|0)+-3|0)>>>0:0)?(o=fl(c[i>>2]|0)|0,(o|0)==(fl(c[h>>2]|0)|0)):0){c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}if((c[h>>2]|0)>>>0<((c[j>>2]|0)+-1|0)>>>0?(o=(rn(c[i>>2]|0)|0)&65535,(o|0)==((rn(c[h>>2]|0)|0)&65535|0)):0){c[h>>2]=(c[h>>2]|0)+2;c[i>>2]=(c[i>>2]|0)+2;}if((c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?(d[c[i>>2]>>0]|0|0)==(d[c[h>>2]>>0]|0|0):0)c[h>>2]=(c[h>>2]|0)+1;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}function on(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function pn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=($k()|0)!=0;f=(qn()|0)!=0;g=c[e>>2]|0;do{if(a){if(f){e=ob(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(fE(g|0)|0)>>3;break;}}else if(f){e=lE(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(Q(g|0)|0)>>3;break;}}while(0);l=b;return c[d>>2]|0;}function qn(){return 0;}function rn(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function sn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;switch(c[(c[j>>2]|0)+16>>2]|0){case 7:case 6:{c[h>>2]=un(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,6)|0;o=c[h>>2]|0;l=g;return o|0;}case 5:{c[h>>2]=un(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,5)|0;o=c[h>>2]|0;l=g;return o|0;}default:{c[h>>2]=un(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,4)|0;o=c[h>>2]|0;l=g;return o|0;}}return 0;}function tn(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0;h=l;l=l+320|0;i=h+308|0;j=h+304|0;k=h+300|0;m=h+296|0;n=h+292|0;o=h+288|0;p=h+284|0;q=h+280|0;r=h+276|0;s=h+272|0;t=h+268|0;u=h+264|0;v=h+260|0;w=h+256|0;x=h+252|0;y=h+248|0;z=h+244|0;A=h+240|0;B=h+236|0;C=h+232|0;D=h+228|0;E=h+224|0;F=h+220|0;G=h+216|0;H=h+212|0;I=h+208|0;J=h+204|0;K=h+200|0;L=h+196|0;M=h+192|0;N=h+188|0;O=h+184|0;P=h+180|0;Q=h+176|0;R=h+172|0;S=h+168|0;T=h+164|0;U=h+160|0;V=h+156|0;W=h+152|0;X=h+148|0;Y=h+144|0;Z=h+140|0;_=h+136|0;$=h+132|0;aa=h+128|0;ba=h+124|0;ca=h+120|0;da=h+116|0;ea=h+112|0;fa=h+108|0;ga=h+104|0;ha=h+100|0;ia=h+96|0;ja=h+92|0;ka=h+88|0;la=h+84|0;ma=h+80|0;na=h+76|0;oa=h+72|0;pa=h+68|0;qa=h+64|0;ra=h+60|0;sa=h+56|0;ta=h+52|0;ua=h+48|0;va=h+44|0;wa=h+40|0;xa=h+36|0;ya=h+32|0;za=h+28|0;Aa=h+24|0;Ba=h+20|0;Ca=h+16|0;Da=h+12|0;Ea=h+8|0;Fa=h+4|0;Ga=h;c[Ca>>2]=a;c[Da>>2]=b;c[Ea>>2]=e;c[Fa>>2]=f;c[Ga>>2]=g;switch(c[(c[Da>>2]|0)+16>>2]|0){case 7:case 6:{g=c[Da>>2]|0;f=c[Ea>>2]|0;e=c[Fa>>2]|0;b=c[Ga>>2]|0;c[i>>2]=c[Ca>>2];c[j>>2]=g;c[k>>2]=f;c[m>>2]=e;c[n>>2]=b;c[o>>2]=6;c[p>>2]=0;c[q>>2]=c[(c[i>>2]|0)+44>>2];c[r>>2]=1<<c[(c[j>>2]|0)+4>>2];c[s>>2]=(c[r>>2]|0)-1;c[t>>2]=c[(c[i>>2]|0)+4>>2];c[u>>2]=c[(c[i>>2]|0)+8>>2];c[v>>2]=c[(c[i>>2]|0)+12>>2];c[w>>2]=(c[t>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[u>>2]|0)+(c[v>>2]|0);c[y>>2]=c[(c[i>>2]|0)+16>>2];c[z>>2]=(c[k>>2]|0)-(c[t>>2]|0);if((c[z>>2]|0)>>>0>(c[r>>2]|0)>>>0)Ha=(c[z>>2]|0)-(c[r>>2]|0)|0;else Ha=0;c[A>>2]=Ha;c[B>>2]=1<<c[(c[j>>2]|0)+12>>2];c[C>>2]=3;c[D>>2]=mk(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[o>>2]|0)|0;while(1){if(!(((c[B>>2]|0)>>>0>0?(c[D>>2]|0)>>>0>(c[y>>2]|0)>>>0:0)|0))break;c[E>>2]=0;if(c[p>>2]|0?(c[D>>2]|0)>>>0<(c[v>>2]|0)>>>0:0){c[G>>2]=(c[u>>2]|0)+(c[D>>2]|0);o=Bk(c[G>>2]|0)|0;if((o|0)==(Bk(c[k>>2]|0)|0))c[E>>2]=(Lm((c[k>>2]|0)+4|0,(c[G>>2]|0)+4|0,c[m>>2]|0,c[x>>2]|0,c[w>>2]|0)|0)+4;}else Ia=38;if((Ia|0)==38?(Ia=0,c[F>>2]=(c[t>>2]|0)+(c[D>>2]|0),(d[(c[F>>2]|0)+(c[C>>2]|0)>>0]|0|0)==(d[(c[k>>2]|0)+(c[C>>2]|0)>>0]|0|0)):0)c[E>>2]=Qm(c[k>>2]|0,c[F>>2]|0,c[m>>2]|0)|0;if((c[E>>2]|0)>>>0>(c[C>>2]|0)>>>0?(c[C>>2]=c[E>>2],c[c[n>>2]>>2]=(c[z>>2]|0)-(c[D>>2]|0)+2,((c[k>>2]|0)+(c[E>>2]|0)|0)==(c[m>>2]|0)):0)break;if((c[D>>2]|0)>>>0<=(c[A>>2]|0)>>>0)break;c[D>>2]=c[(c[q>>2]|0)+((c[D>>2]&c[s>>2])<<2)>>2];c[B>>2]=(c[B>>2]|0)+-1;}c[Ba>>2]=c[C>>2];Ja=c[Ba>>2]|0;l=h;return Ja|0;}case 5:{C=c[Da>>2]|0;B=c[Ea>>2]|0;s=c[Fa>>2]|0;D=c[Ga>>2]|0;c[H>>2]=c[Ca>>2];c[I>>2]=C;c[J>>2]=B;c[K>>2]=s;c[L>>2]=D;c[M>>2]=5;c[N>>2]=0;c[O>>2]=c[(c[H>>2]|0)+44>>2];c[P>>2]=1<<c[(c[I>>2]|0)+4>>2];c[Q>>2]=(c[P>>2]|0)-1;c[R>>2]=c[(c[H>>2]|0)+4>>2];c[S>>2]=c[(c[H>>2]|0)+8>>2];c[T>>2]=c[(c[H>>2]|0)+12>>2];c[U>>2]=(c[R>>2]|0)+(c[T>>2]|0);c[V>>2]=(c[S>>2]|0)+(c[T>>2]|0);c[W>>2]=c[(c[H>>2]|0)+16>>2];c[X>>2]=(c[J>>2]|0)-(c[R>>2]|0);if((c[X>>2]|0)>>>0>(c[P>>2]|0)>>>0)Ka=(c[X>>2]|0)-(c[P>>2]|0)|0;else Ka=0;c[Y>>2]=Ka;c[Z>>2]=1<<c[(c[I>>2]|0)+12>>2];c[_>>2]=3;c[$>>2]=mk(c[H>>2]|0,c[I>>2]|0,c[J>>2]|0,c[M>>2]|0)|0;while(1){if(!(((c[Z>>2]|0)>>>0>0?(c[$>>2]|0)>>>0>(c[W>>2]|0)>>>0:0)|0))break;c[aa>>2]=0;if(c[N>>2]|0?(c[$>>2]|0)>>>0<(c[T>>2]|0)>>>0:0){c[ca>>2]=(c[S>>2]|0)+(c[$>>2]|0);M=Bk(c[ca>>2]|0)|0;if((M|0)==(Bk(c[J>>2]|0)|0))c[aa>>2]=(Lm((c[J>>2]|0)+4|0,(c[ca>>2]|0)+4|0,c[K>>2]|0,c[V>>2]|0,c[U>>2]|0)|0)+4;}else Ia=23;if((Ia|0)==23?(Ia=0,c[ba>>2]=(c[R>>2]|0)+(c[$>>2]|0),(d[(c[ba>>2]|0)+(c[_>>2]|0)>>0]|0|0)==(d[(c[J>>2]|0)+(c[_>>2]|0)>>0]|0|0)):0)c[aa>>2]=Qm(c[J>>2]|0,c[ba>>2]|0,c[K>>2]|0)|0;if((c[aa>>2]|0)>>>0>(c[_>>2]|0)>>>0?(c[_>>2]=c[aa>>2],c[c[L>>2]>>2]=(c[X>>2]|0)-(c[$>>2]|0)+2,((c[J>>2]|0)+(c[aa>>2]|0)|0)==(c[K>>2]|0)):0)break;if((c[$>>2]|0)>>>0<=(c[Y>>2]|0)>>>0)break;c[$>>2]=c[(c[O>>2]|0)+((c[$>>2]&c[Q>>2])<<2)>>2];c[Z>>2]=(c[Z>>2]|0)+-1;}c[Ba>>2]=c[_>>2];Ja=c[Ba>>2]|0;l=h;return Ja|0;}default:{_=c[Da>>2]|0;Da=c[Ea>>2]|0;Ea=c[Fa>>2]|0;Fa=c[Ga>>2]|0;c[da>>2]=c[Ca>>2];c[ea>>2]=_;c[fa>>2]=Da;c[ga>>2]=Ea;c[ha>>2]=Fa;c[ia>>2]=4;c[ja>>2]=0;c[ka>>2]=c[(c[da>>2]|0)+44>>2];c[la>>2]=1<<c[(c[ea>>2]|0)+4>>2];c[ma>>2]=(c[la>>2]|0)-1;c[na>>2]=c[(c[da>>2]|0)+4>>2];c[oa>>2]=c[(c[da>>2]|0)+8>>2];c[pa>>2]=c[(c[da>>2]|0)+12>>2];c[qa>>2]=(c[na>>2]|0)+(c[pa>>2]|0);c[ra>>2]=(c[oa>>2]|0)+(c[pa>>2]|0);c[sa>>2]=c[(c[da>>2]|0)+16>>2];c[ta>>2]=(c[fa>>2]|0)-(c[na>>2]|0);if((c[ta>>2]|0)>>>0>(c[la>>2]|0)>>>0)La=(c[ta>>2]|0)-(c[la>>2]|0)|0;else La=0;c[ua>>2]=La;c[va>>2]=1<<c[(c[ea>>2]|0)+12>>2];c[wa>>2]=3;c[xa>>2]=mk(c[da>>2]|0,c[ea>>2]|0,c[fa>>2]|0,c[ia>>2]|0)|0;while(1){if(!(((c[va>>2]|0)>>>0>0?(c[xa>>2]|0)>>>0>(c[sa>>2]|0)>>>0:0)|0))break;c[ya>>2]=0;if(c[ja>>2]|0?(c[xa>>2]|0)>>>0<(c[pa>>2]|0)>>>0:0){c[Aa>>2]=(c[oa>>2]|0)+(c[xa>>2]|0);ia=Bk(c[Aa>>2]|0)|0;if((ia|0)==(Bk(c[fa>>2]|0)|0))c[ya>>2]=(Lm((c[fa>>2]|0)+4|0,(c[Aa>>2]|0)+4|0,c[ga>>2]|0,c[ra>>2]|0,c[qa>>2]|0)|0)+4;}else Ia=8;if((Ia|0)==8?(Ia=0,c[za>>2]=(c[na>>2]|0)+(c[xa>>2]|0),(d[(c[za>>2]|0)+(c[wa>>2]|0)>>0]|0|0)==(d[(c[fa>>2]|0)+(c[wa>>2]|0)>>0]|0|0)):0)c[ya>>2]=Qm(c[fa>>2]|0,c[za>>2]|0,c[ga>>2]|0)|0;if((c[ya>>2]|0)>>>0>(c[wa>>2]|0)>>>0?(c[wa>>2]=c[ya>>2],c[c[ha>>2]>>2]=(c[ta>>2]|0)-(c[xa>>2]|0)+2,((c[fa>>2]|0)+(c[ya>>2]|0)|0)==(c[ga>>2]|0)):0)break;if((c[xa>>2]|0)>>>0<=(c[ua>>2]|0)>>>0)break;c[xa>>2]=c[(c[ka>>2]|0)+((c[xa>>2]&c[ma>>2])<<2)>>2];c[va>>2]=(c[va>>2]|0)+-1;}c[Ba>>2]=c[wa>>2];Ja=c[Ba>>2]|0;l=h;return Ja|0;}}return 0;}function un(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;if((c[m>>2]|0)>>>0<((c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+24>>2]|0)|0)>>>0){c[i>>2]=0;q=c[i>>2]|0;l=h;return q|0;}else{Wm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[p>>2]|0);c[i>>2]=Xm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,0)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function vn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+16|0;i=g+12|0;j=g+8|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;f=wn(c[h>>2]|0,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,1,0)|0;l=g;return f|0;}function wn(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0;i=l;l=l+160|0;j=i+48|0;k=i+40|0;m=i+36|0;n=i+32|0;o=i+28|0;p=i+24|0;q=i+20|0;r=i+16|0;s=i+12|0;t=i+8|0;u=i+4|0;v=i;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=(c[m>>2]|0)+472+8;c[u>>2]=0;if(!(c[c[m>>2]>>2]|0)){c[k>>2]=-60;w=c[k>>2]|0;l=i;return w|0;}do{if(c[r>>2]|0?(c[c[m>>2]>>2]|0)==1:0){h=c[n>>2]|0;g=c[o>>2]|0;f=(c[m>>2]|0)+116|0;e=(c[m>>2]|0)+240|0;d=eE(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;e=y;b=c[(c[m>>2]|0)+220>>2]|0;a=j;x=f;f=a+104|0;do{c[a>>2]=c[x>>2];a=a+4|0;x=x+4|0;}while((a|0)<(f|0));c[u>>2]=xn(h,g,j,d,e,b)|0;x=(Ph(c[u>>2]|0)|0)!=0;a=c[u>>2]|0;if(!x){c[o>>2]=(c[o>>2]|0)-a;c[n>>2]=(c[n>>2]|0)+(c[u>>2]|0);c[c[m>>2]>>2]=2;break;}c[k>>2]=a;w=c[k>>2]|0;l=i;return w|0;}}while(0);if(!(c[q>>2]|0)){c[k>>2]=c[u>>2];w=c[k>>2]|0;l=i;return w|0;}if(!(Mj(c[t>>2]|0,c[p>>2]|0,c[q>>2]|0)|0))c[(c[t>>2]|0)+24>>2]=c[(c[t>>2]|0)+12>>2];if(c[(c[m>>2]|0)+116+68>>2]|0)Mj((c[m>>2]|0)+408|0,c[p>>2]|0,c[q>>2]|0)|0;t=c[m>>2]|0;j=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;p=c[q>>2]|0;if(c[r>>2]|0)z=yn(t,j,n,o,p,c[s>>2]|0)|0;else z=zn(t,j,n,o,p)|0;c[v>>2]=z;if(Ph(c[v>>2]|0)|0){c[k>>2]=c[v>>2];w=c[k>>2]|0;l=i;return w|0;}z=(c[m>>2]|0)+248|0;p=z;o=dE(c[p>>2]|0,c[p+4>>2]|0,c[q>>2]|0,0)|0;q=z;c[q>>2]=o;c[q+4>>2]=y;q=(c[m>>2]|0)+256|0;o=q;z=dE(c[o>>2]|0,c[o+4>>2]|0,(c[v>>2]|0)+(c[u>>2]|0)|0,0)|0;o=q;c[o>>2]=z;c[o+4>>2]=y;if(c[(c[m>>2]|0)+116+32>>2]|0?(o=(c[m>>2]|0)+248|0,z=dE(c[o>>2]|0,c[o+4>>2]|0,1,0)|0,o=y,q=(c[m>>2]|0)+240|0,m=c[q+4>>2]|0,o>>>0>m>>>0|((o|0)==(m|0)?z>>>0>(c[q>>2]|0)>>>0:0)):0){c[k>>2]=-72;w=c[k>>2]|0;l=i;return w|0;}c[k>>2]=(c[v>>2]|0)+(c[u>>2]|0);w=c[k>>2]|0;l=i;return w|0;}function xn(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;i=l;l=l+64|0;j=i+52|0;k=i+48|0;m=i+44|0;n=i;o=i+40|0;p=i+36|0;q=i+32|0;r=i+28|0;s=i+24|0;t=i+20|0;u=i+16|0;v=i+57|0;w=i+12|0;x=i+56|0;y=i+8|0;c[k>>2]=b;c[m>>2]=d;d=n;c[d>>2]=f;c[d+4>>2]=g;c[o>>2]=h;c[p>>2]=c[k>>2];c[q>>2]=((c[o>>2]|0)>>>0>0&1)+((c[o>>2]|0)>>>0>=256&1)+((c[o>>2]|0)>>>0>=65536&1);c[r>>2]=c[e+32+8>>2]|0?0:c[q>>2]|0;c[s>>2]=(c[e+32+4>>2]|0)>>>0>0&1;c[t>>2]=1<<c[e+4>>2];if(c[e+32>>2]|0){q=n;h=c[q+4>>2]|0;z=0>h>>>0|(0==(h|0)?(c[t>>2]|0)>>>0>=(c[q>>2]|0)>>>0:0);}else z=0;c[u>>2]=z&1;a[v>>0]=(c[e+4>>2]|0)-10<<3;if(c[e+32>>2]|0){z=n;q=c[z+4>>2]|0;t=n;h=c[t+4>>2]|0;g=n;d=c[g+4>>2]|0;A=((q>>>0>0|(q|0)==0&(c[z>>2]|0)>>>0>=256)&1)+((h>>>0>0|(h|0)==0&(c[t>>2]|0)>>>0>=65792)&1)+((d>>>0>0|(d|0)==0&(c[g>>2]|0)>>>0>=4294967295)&1)|0;}else A=0;c[w>>2]=A;a[x>>0]=(c[r>>2]|0)+(c[s>>2]<<2)+(c[u>>2]<<5)+(c[w>>2]<<6);c[y>>2]=0;if((c[m>>2]|0)>>>0<18){c[j>>2]=-70;B=c[j>>2]|0;l=i;return B|0;}if(!(c[e>>2]|0)){Pl(c[k>>2]|0,-47205080);c[y>>2]=4;}k=a[x>>0]|0;x=c[p>>2]|0;e=c[y>>2]|0;c[y>>2]=e+1;a[x+e>>0]=k;if(!(c[u>>2]|0)){k=a[v>>0]|0;v=c[p>>2]|0;e=c[y>>2]|0;c[y>>2]=e+1;a[v+e>>0]=k;}switch(c[r>>2]|0){case 3:{Pl((c[p>>2]|0)+(c[y>>2]|0)|0,c[o>>2]|0);c[y>>2]=(c[y>>2]|0)+4;break;}case 1:{a[(c[p>>2]|0)+(c[y>>2]|0)>>0]=c[o>>2];c[y>>2]=(c[y>>2]|0)+1;break;}case 2:{xl((c[p>>2]|0)+(c[y>>2]|0)|0,c[o>>2]&65535);c[y>>2]=(c[y>>2]|0)+2;break;}default:{}}switch(c[w>>2]|0){case 3:{w=n;Ql((c[p>>2]|0)+(c[y>>2]|0)|0,c[w>>2]|0,c[w+4>>2]|0);c[y>>2]=(c[y>>2]|0)+8;break;}case 1:{w=(c[p>>2]|0)+(c[y>>2]|0)|0;o=n;xl(w,(eE(c[o>>2]|0,c[o+4>>2]|0,256,0)|0)&65535);c[y>>2]=(c[y>>2]|0)+2;break;}case 2:{Pl((c[p>>2]|0)+(c[y>>2]|0)|0,c[n>>2]|0);c[y>>2]=(c[y>>2]|0)+4;break;}default:if(c[u>>2]|0){u=c[n>>2]&255;n=c[p>>2]|0;p=c[y>>2]|0;c[y>>2]=p+1;a[n+p>>0]=u;}}c[j>>2]=c[y>>2];B=c[j>>2]|0;l=i;return B|0;}function yn(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;h=l;l=l+112|0;i=h+80|0;j=h+76|0;k=h+72|0;m=h+68|0;n=h+64|0;o=h+60|0;p=h+56|0;q=h+52|0;r=h+48|0;s=h+44|0;t=h+40|0;u=h+36|0;v=h+32|0;w=h+28|0;x=h+24|0;y=h+20|0;z=h+16|0;A=h+12|0;B=h+8|0;C=h+4|0;D=h;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=c[(c[k>>2]|0)+232>>2];c[s>>2]=c[p>>2];c[t>>2]=c[o>>2];c[u>>2]=c[m>>2];c[v>>2]=c[u>>2];c[w>>2]=1<<c[(c[k>>2]|0)+116+4>>2];if(c[p>>2]|0?(c[(c[k>>2]|0)+116+32+4>>2]|0)!=0:0)Nh((c[k>>2]|0)+264|0,c[o>>2]|0,c[p>>2]|0)|0;while(1){if(!(c[s>>2]|0)){E=24;break;}c[x>>2]=(c[k>>2]|0)+472+8;c[y>>2]=c[q>>2]&(c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0;if((c[n>>2]|0)>>>0<6){E=6;break;}if((c[s>>2]|0)>>>0<(c[r>>2]|0)>>>0)c[r>>2]=c[s>>2];p=c[x>>2]|0;o=(c[t>>2]|0)+(c[r>>2]|0)|0;c[i>>2]=c[p>>2];c[i+4>>2]=c[p+4>>2];c[i+8>>2]=c[p+8>>2];c[i+12>>2]=c[p+12>>2];c[i+16>>2]=c[p+16>>2];if(ro(i,o)|0){c[z>>2]=vj(c[(c[k>>2]|0)+116+4+4>>2]|0,c[(c[k>>2]|0)+116+4+24>>2]|0)|0;c[A>>2]=so(c[x>>2]|0,c[z>>2]|0,c[w>>2]|0,c[t>>2]|0)|0;to(c[k>>2]|0,c[A>>2]|0);if((c[(c[x>>2]|0)+24>>2]|0)>>>0<(c[A>>2]|0)>>>0)c[(c[x>>2]|0)+24>>2]=0;else{o=(c[x>>2]|0)+24|0;c[o>>2]=(c[o>>2]|0)-(c[A>>2]|0);}c[(c[x>>2]|0)+20>>2]=0;}uo(c[x>>2]|0,(c[t>>2]|0)+(c[r>>2]|0)|0,c[w>>2]|0,(c[x>>2]|0)+20|0);if((c[(c[x>>2]|0)+24>>2]|0)>>>0<(c[(c[x>>2]|0)+16>>2]|0)>>>0)c[(c[x>>2]|0)+24>>2]=c[(c[x>>2]|0)+16>>2];c[B>>2]=zn(c[k>>2]|0,(c[v>>2]|0)+3|0,(c[n>>2]|0)-3|0,c[t>>2]|0,c[r>>2]|0)|0;o=(Ph(c[B>>2]|0)|0)!=0;F=c[B>>2]|0;if(o){E=17;break;}o=c[y>>2]|0;if(!F){c[C>>2]=o+0+(c[r>>2]<<3);if(((c[r>>2]|0)+3|0)>>>0>(c[n>>2]|0)>>>0){E=20;break;}Pl(c[v>>2]|0,c[C>>2]|0);mE((c[v>>2]|0)+3|0,c[t>>2]|0,c[r>>2]|0)|0;c[B>>2]=3+(c[r>>2]|0);}else{c[D>>2]=o+4+(c[B>>2]<<3);wl(c[v>>2]|0,c[D>>2]|0);c[B>>2]=(c[B>>2]|0)+3;}c[t>>2]=(c[t>>2]|0)+(c[r>>2]|0);c[s>>2]=(c[s>>2]|0)-(c[r>>2]|0);c[v>>2]=(c[v>>2]|0)+(c[B>>2]|0);c[n>>2]=(c[n>>2]|0)-(c[B>>2]|0);}if((E|0)==6){c[j>>2]=-70;G=c[j>>2]|0;l=h;return G|0;}else if((E|0)==17){c[j>>2]=F;G=c[j>>2]|0;l=h;return G|0;}else if((E|0)==20){c[j>>2]=-70;G=c[j>>2]|0;l=h;return G|0;}else if((E|0)==24){if(c[q>>2]|0?(c[v>>2]|0)>>>0>(c[u>>2]|0)>>>0:0)c[c[k>>2]>>2]=3;c[j>>2]=(c[v>>2]|0)-(c[u>>2]|0);G=c[j>>2]|0;l=h;return G|0;}return 0;}function zn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=l;l=l+112|0;h=g+92|0;i=g+88|0;j=g+84|0;k=g+80|0;m=g+76|0;n=g+72|0;o=g+68|0;p=g+64|0;q=g+60|0;r=g+56|0;s=g+52|0;t=g+48|0;u=g+44|0;v=g+40|0;w=g+24|0;x=g+16|0;y=g+12|0;z=g+8|0;A=g+4|0;B=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=(c[j>>2]|0)+472+8;f=c[j>>2]|0;if((c[o>>2]|0)>>>0<7){An(f+456|0,c[o>>2]|0,c[(c[j>>2]|0)+116+4+16>>2]|0);c[i>>2]=0;C=c[i>>2]|0;l=g;return C|0;}Bn(f+368|0);c[q>>2]=c[(c[p>>2]|0)+4>>2];c[r>>2]=c[n>>2];c[s>>2]=(c[r>>2]|0)-(c[q>>2]|0);if((c[s>>2]|0)>>>0>((c[(c[p>>2]|0)+24>>2]|0)+384|0)>>>0){if(192<((c[s>>2]|0)-(c[(c[p>>2]|0)+24>>2]|0)-384|0)>>>0)D=192;else D=(c[s>>2]|0)-(c[(c[p>>2]|0)+24>>2]|0)-384|0;c[(c[p>>2]|0)+24>>2]=(c[s>>2]|0)-D;}D=c[p>>2]|0;c[h>>2]=c[D>>2];c[h+4>>2]=c[D+4>>2];c[h+8>>2]=c[D+8>>2];c[h+12>>2]=c[D+12>>2];c[h+16>>2]=c[D+16>>2];c[t>>2]=Cn(h)|0;c[v>>2]=0;while(1){E=c[j>>2]|0;if((c[v>>2]|0)>=3)break;c[(c[(c[j>>2]|0)+472+4>>2]|0)+4580+(c[v>>2]<<2)>>2]=c[(c[E+472>>2]|0)+4580+(c[v>>2]<<2)>>2];c[v>>2]=(c[v>>2]|0)+1;}v=c[j>>2]|0;do{if((c[E+456+4>>2]|0)>>>0<(c[(c[j>>2]|0)+456+8>>2]|0)>>>0)c[u>>2]=Dn(v+456|0,c[p>>2]|0,(c[j>>2]|0)+368|0,(c[(c[j>>2]|0)+472+4>>2]|0)+4580|0,(c[j>>2]|0)+116+4|0,c[n>>2]|0,c[o>>2]|0,c[t>>2]|0)|0;else{if(!(c[v+116+68>>2]|0)){c[y>>2]=Wl(c[(c[j>>2]|0)+116+4+24>>2]|0,c[t>>2]|0)|0;c[u>>2]=uc[c[y>>2]&31](c[p>>2]|0,(c[j>>2]|0)+368|0,(c[(c[j>>2]|0)+472+4>>2]|0)+4580|0,(c[j>>2]|0)+116+4|0,c[n>>2]|0,c[o>>2]|0)|0;break;};c[w>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;c[w+12>>2]=0;c[w>>2]=c[(c[j>>2]|0)+448>>2];c[w+12>>2]=c[(c[j>>2]|0)+452>>2];c[x>>2]=En((c[j>>2]|0)+408|0,w,(c[j>>2]|0)+116+68|0,c[n>>2]|0,c[o>>2]|0)|0;if(!(wj(c[x>>2]|0)|0)){c[u>>2]=Dn(w,c[p>>2]|0,(c[j>>2]|0)+368|0,(c[(c[j>>2]|0)+472+4>>2]|0)+4580|0,(c[j>>2]|0)+116+4|0,c[n>>2]|0,c[o>>2]|0,c[t>>2]|0)|0;break;}c[i>>2]=c[x>>2];C=c[i>>2]|0;l=g;return C|0;}}while(0);c[z>>2]=(c[n>>2]|0)+(c[o>>2]|0)+(0-(c[u>>2]|0));Fn((c[j>>2]|0)+368|0,c[z>>2]|0,c[u>>2]|0);c[A>>2]=Gn((c[j>>2]|0)+368|0,c[(c[j>>2]|0)+472>>2]|0,c[(c[j>>2]|0)+472+4>>2]|0,(c[j>>2]|0)+116|0,c[k>>2]|0,c[m>>2]|0,c[o>>2]|0,c[(c[j>>2]|0)+588>>2]|0,c[(c[j>>2]|0)+8>>2]|0)|0;o=(Ph(c[A>>2]|0)|0)!=0;if(o|(c[A>>2]|0)==0){c[i>>2]=c[A>>2];C=c[i>>2]|0;l=g;return C|0;}else{c[B>>2]=c[(c[j>>2]|0)+472>>2];c[(c[j>>2]|0)+472>>2]=c[(c[j>>2]|0)+472+4>>2];c[(c[j>>2]|0)+472+4>>2]=c[B>>2];c[i>>2]=c[A>>2];C=c[i>>2]|0;l=g;return C|0;}return 0;}function An(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;while(1){if((c[g>>2]|0)>>>0<=0){j=12;break;}if((c[(c[f>>2]|0)+4>>2]|0)>>>0>=(c[(c[f>>2]|0)+8>>2]|0)>>>0){j=12;break;}c[i>>2]=(c[c[f>>2]>>2]|0)+((c[(c[f>>2]|0)+4>>2]|0)*12|0);if((c[g>>2]|0)>>>0<=(c[(c[i>>2]|0)+4>>2]|0)>>>0){j=5;break;}c[g>>2]=(c[g>>2]|0)-(c[(c[i>>2]|0)+4>>2]|0);c[(c[i>>2]|0)+4>>2]=0;if((c[g>>2]|0)>>>0<(c[(c[i>>2]|0)+8>>2]|0)>>>0){j=7;break;}c[g>>2]=(c[g>>2]|0)-(c[(c[i>>2]|0)+8>>2]|0);c[(c[i>>2]|0)+8>>2]=0;d=(c[f>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)+1;}if((j|0)==5){d=(c[i>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)-(c[g>>2]|0);l=e;return;}else if((j|0)==7){d=(c[i>>2]|0)+8|0;c[d>>2]=(c[d>>2]|0)-(c[g>>2]|0);if((c[(c[i>>2]|0)+8>>2]|0)>>>0>=(c[h>>2]|0)>>>0){l=e;return;}if(((c[(c[f>>2]|0)+4>>2]|0)+1|0)>>>0<(c[(c[f>>2]|0)+8>>2]|0)>>>0){h=(c[i>>2]|0)+12+4|0;c[h>>2]=(c[h>>2]|0)+(c[(c[i>>2]|0)+8>>2]|0);}i=(c[f>>2]|0)+4|0;c[i>>2]=(c[i>>2]|0)+1;l=e;return;}else if((j|0)==12){l=e;return;}}function Bn(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+12>>2]=c[(c[d>>2]|0)+8>>2];c[(c[d>>2]|0)+4>>2]=c[c[d>>2]>>2];c[(c[d>>2]|0)+28>>2]=0;l=b;return;}function Cn(a){a=a|0;return(c[a+16>>2]|0)>>>0<(c[a+12>>2]|0)>>>0|0;}function Dn(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;j=l;l=l+80|0;k=j+76|0;m=j+72|0;n=j+68|0;o=j+64|0;p=j+60|0;q=j+56|0;r=j+52|0;s=j+48|0;t=j+44|0;u=j+40|0;v=j+36|0;w=j+32|0;x=j+28|0;y=j+24|0;z=j+12|0;A=j+8|0;B=j+4|0;C=j;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=c[(c[p>>2]|0)+16>>2];c[u>>2]=Wl(c[(c[p>>2]|0)+24>>2]|0,c[s>>2]|0)|0;c[v>>2]=c[(c[m>>2]|0)+4>>2];c[w>>2]=c[q>>2];c[x>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[y>>2]=c[w>>2];while(1){if((c[(c[k>>2]|0)+4>>2]|0)>>>0>=(c[(c[k>>2]|0)+8>>2]|0)>>>0)break;if((c[y>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break;lo(z,c[k>>2]|0,(c[x>>2]|0)-(c[y>>2]|0)|0,c[t>>2]|0);if(!(c[z>>2]|0))break;mo(c[m>>2]|0,c[y>>2]|0);no(c[m>>2]|0,c[p>>2]|0,c[y>>2]|0)|0;c[B>>2]=uc[c[u>>2]&31](c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[y>>2]|0,c[z+4>>2]|0)|0;c[y>>2]=(c[y>>2]|0)+(c[z+4>>2]|0);c[(c[m>>2]|0)+24>>2]=(c[y>>2]|0)-(c[v>>2]|0);c[A>>2]=2;while(1){if((c[A>>2]|0)<=0)break;c[(c[o>>2]|0)+(c[A>>2]<<2)>>2]=c[(c[o>>2]|0)+((c[A>>2]|0)-1<<2)>>2];c[A>>2]=(c[A>>2]|0)+-1;}c[c[o>>2]>>2]=c[z>>2];oo(c[n>>2]|0,c[B>>2]|0,(c[y>>2]|0)+(0-(c[B>>2]|0))|0,(c[z>>2]|0)+2|0,(c[z+8>>2]|0)-3|0);c[y>>2]=(c[y>>2]|0)+(c[z+8>>2]|0);}mo(c[m>>2]|0,c[y>>2]|0);no(c[m>>2]|0,c[p>>2]|0,c[y>>2]|0)|0;c[C>>2]=uc[c[u>>2]&31](c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[y>>2]|0,(c[x>>2]|0)-(c[y>>2]|0)|0)|0;c[(c[m>>2]|0)+24>>2]=(c[x>>2]|0)-(c[v>>2]|0);l=j;return c[C>>2]|0;}function En(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=l;l=l+112|0;h=g+84|0;i=g+80|0;j=g+76|0;k=g+72|0;m=g+68|0;n=g+64|0;o=g+60|0;p=g+56|0;q=g+52|0;r=g+48|0;s=g+40|0;t=g+36|0;u=g+32|0;v=g+28|0;w=g+24|0;x=g+20|0;y=g+16|0;z=g+12|0;A=g+8|0;B=g+4|0;C=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=1<<c[(c[m>>2]|0)+20>>2];c[q>>2]=c[n>>2];c[r>>2]=(c[q>>2]|0)+(c[o>>2]|0);c[g+44>>2]=1048576;c[s>>2]=(((c[o>>2]|0)>>>0)/1048576|0)+((((c[o>>2]|0)>>>0)%1048576|0|0)!=0&1);c[u>>2]=0;c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>=(c[s>>2]|0)>>>0){D=12;break;}if((c[(c[k>>2]|0)+8>>2]|0)>>>0>=(c[(c[k>>2]|0)+12>>2]|0)>>>0){D=12;break;}c[v>>2]=(c[q>>2]|0)+(c[t>>2]<<20);c[w>>2]=(c[r>>2]|0)-(c[v>>2]|0);c[x>>2]=(c[w>>2]|0)>>>0<1048576?c[r>>2]|0:(c[v>>2]|0)+1048576|0;c[y>>2]=(c[x>>2]|0)-(c[v>>2]|0);c[A>>2]=c[(c[k>>2]|0)+8>>2];o=c[j>>2]|0;f=c[x>>2]|0;c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];c[h+12>>2]=c[o+12>>2];c[h+16>>2]=c[o+16>>2];if(On(h,f)|0){c[B>>2]=1<<c[(c[m>>2]|0)+4>>2];c[C>>2]=Pn(c[j>>2]|0,0,c[p>>2]|0,c[n>>2]|0)|0;Qn(c[(c[j>>2]|0)+20>>2]|0,c[B>>2]|0,c[C>>2]|0);}Rn(c[j>>2]|0,c[x>>2]|0,c[p>>2]|0,0);c[z>>2]=Sn(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[v>>2]|0,c[y>>2]|0)|0;if(Ph(c[z>>2]|0)|0){D=7;break;}if((c[A>>2]|0)>>>0<(c[(c[k>>2]|0)+8>>2]|0)>>>0){f=(c[c[k>>2]>>2]|0)+((c[A>>2]|0)*12|0)+4|0;c[f>>2]=(c[f>>2]|0)+(c[u>>2]|0);c[u>>2]=c[z>>2];}else c[u>>2]=(c[u>>2]|0)+(c[y>>2]|0);c[t>>2]=(c[t>>2]|0)+1;}if((D|0)==7){c[i>>2]=c[z>>2];E=c[i>>2]|0;l=g;return E|0;}else if((D|0)==12){c[i>>2]=0;E=c[i>>2]|0;l=g;return E|0;}return 0;}function Fn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;mE(c[(c[f>>2]|0)+12>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;g=(c[f>>2]|0)+12|0;c[g>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function Gn(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;k=l;l=l+48|0;m=k+44|0;n=k+40|0;o=k+36|0;p=k+32|0;q=k+28|0;r=k+24|0;s=k+20|0;t=k+16|0;u=k+12|0;v=k+8|0;w=k+4|0;x=k;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=i;c[v>>2]=j;c[w>>2]=Hn(c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;if(((c[w>>2]|0)==-70?(c[t>>2]|0)>>>0<=(c[s>>2]|0)>>>0:0)|0){c[m>>2]=0;y=c[m>>2]|0;l=k;return y|0;}if(Ph(c[w>>2]|0)|0){c[m>>2]=c[w>>2];y=c[m>>2]|0;l=k;return y|0;}s=c[t>>2]|0;c[x>>2]=s-(In(c[t>>2]|0)|0);if((c[w>>2]|0)>>>0>=(c[x>>2]|0)>>>0){c[m>>2]=0;y=c[m>>2]|0;l=k;return y|0;}if((c[(c[p>>2]|0)+4568>>2]|0)==2)c[(c[p>>2]|0)+4568>>2]=1;c[m>>2]=c[w>>2];y=c[m>>2]|0;l=k;return y|0;}function Hn(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;k=l;l=l+368|0;m=k+364|0;n=k+360|0;o=k+356|0;p=k+352|0;q=k+348|0;r=k+344|0;s=k+340|0;t=k+336|0;u=k+332|0;v=k+328|0;w=k;x=k+324|0;y=k+320|0;z=k+316|0;A=k+312|0;B=k+308|0;C=k+304|0;D=k+300|0;E=k+296|0;F=k+292|0;G=k+288|0;H=k+284|0;I=k+280|0;J=k+276|0;K=k+272|0;L=k+268|0;M=k+264|0;N=k+260|0;O=k+256|0;P=k+252|0;Q=k+248|0;R=k+244|0;S=k+240|0;T=k+236|0;U=k+232|0;V=k+228|0;W=k+224|0;X=k+220|0;Y=k+216|0;Z=k+212|0;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;j=c[(c[q>>2]|0)+4>>2]|0;i=(Il()|0)!=0;c[v>>2]=j>>>0>(i?25:57)>>>0&1;c[x>>2]=(c[p>>2]|0)+3248;c[y>>2]=(c[p>>2]|0)+1024;c[z>>2]=(c[p>>2]|0)+1796;c[D>>2]=c[c[n>>2]>>2];c[E>>2]=c[(c[n>>2]|0)+24>>2];c[F>>2]=c[(c[n>>2]|0)+16>>2];c[G>>2]=c[(c[n>>2]|0)+20>>2];c[H>>2]=c[r>>2];c[I>>2]=(c[H>>2]|0)+(c[s>>2]|0);c[J>>2]=c[H>>2];c[K>>2]=((c[(c[n>>2]|0)+4>>2]|0)-(c[c[n>>2]>>2]|0)|0)/8|0;c[M>>2]=c[(c[n>>2]|0)+8>>2];c[N>>2]=(c[(c[n>>2]|0)+12>>2]|0)-(c[M>>2]|0);c[O>>2]=Jn(c[o>>2]|0,c[p>>2]|0,c[(c[q>>2]|0)+4+24>>2]|0,c[(c[q>>2]|0)+48>>2]|0,c[J>>2]|0,c[s>>2]|0,c[M>>2]|0,c[N>>2]|0,c[t>>2]|0,c[u>>2]|0)|0;N=(Ph(c[O>>2]|0)|0)!=0;M=c[O>>2]|0;if(N){c[m>>2]=M;_=c[m>>2]|0;l=k;return _|0;}c[J>>2]=(c[J>>2]|0)+M;if(((c[I>>2]|0)-(c[J>>2]|0)|0)<4){c[m>>2]=-70;_=c[m>>2]|0;l=k;return _|0;}M=c[K>>2]|0;do{if((c[K>>2]|0)>>>0>=127){if(M>>>0<32512){a[c[J>>2]>>0]=((c[K>>2]|0)>>>8)+128;a[(c[J>>2]|0)+1>>0]=c[K>>2];c[J>>2]=(c[J>>2]|0)+2;break;}else{a[c[J>>2]>>0]=-1;xl((c[J>>2]|0)+1|0,(c[K>>2]|0)-32512&65535);c[J>>2]=(c[J>>2]|0)+3;break;}}else{N=c[J>>2]|0;c[J>>2]=N+1;a[N>>0]=M;}}while(0);if(!(c[K>>2]|0)){mE((c[p>>2]|0)+3248|0,(c[o>>2]|0)+3248|0,1316)|0;c[(c[p>>2]|0)+4576>>2]=c[(c[o>>2]|0)+4576>>2];mE((c[p>>2]|0)+1024|0,(c[o>>2]|0)+1024|0,772)|0;c[(c[p>>2]|0)+4568>>2]=c[(c[o>>2]|0)+4568>>2];mE((c[p>>2]|0)+1796|0,(c[o>>2]|0)+1796|0,1452)|0;c[(c[p>>2]|0)+4572>>2]=c[(c[o>>2]|0)+4572>>2];c[m>>2]=(c[J>>2]|0)-(c[H>>2]|0);_=c[m>>2]|0;l=k;return _|0;}M=c[J>>2]|0;c[J>>2]=M+1;c[L>>2]=M;zl(c[n>>2]|0);c[P>>2]=35;c[Q>>2]=_h(w,P,c[F>>2]|0,c[K>>2]|0,c[t>>2]|0)|0;c[(c[p>>2]|0)+4576>>2]=c[(c[o>>2]|0)+4576>>2];c[A>>2]=Kn((c[p>>2]|0)+4576|0,c[Q>>2]|0,c[K>>2]|0,6,1)|0;c[R>>2]=Ln(c[J>>2]|0,(c[I>>2]|0)-(c[J>>2]|0)|0,c[x>>2]|0,9,c[A>>2]|0,w,c[P>>2]|0,c[F>>2]|0,c[K>>2]|0,3200,6,35,(c[o>>2]|0)+3248|0,1316,c[t>>2]|0,6144)|0;P=(Ph(c[R>>2]|0)|0)!=0;Q=c[R>>2]|0;if(P){c[m>>2]=Q;_=c[m>>2]|0;l=k;return _|0;}c[J>>2]=(c[J>>2]|0)+Q;c[S>>2]=31;c[T>>2]=_h(w,S,c[E>>2]|0,c[K>>2]|0,c[t>>2]|0)|0;c[U>>2]=(c[S>>2]|0)>>>0<=28?1:0;c[(c[p>>2]|0)+4568>>2]=c[(c[o>>2]|0)+4568>>2];c[B>>2]=Kn((c[p>>2]|0)+4568|0,c[T>>2]|0,c[K>>2]|0,5,c[U>>2]|0)|0;c[V>>2]=Ln(c[J>>2]|0,(c[I>>2]|0)-(c[J>>2]|0)|0,c[y>>2]|0,8,c[B>>2]|0,w,c[S>>2]|0,c[E>>2]|0,c[K>>2]|0,3280,5,28,(c[o>>2]|0)+1024|0,772,c[t>>2]|0,6144)|0;S=(Ph(c[V>>2]|0)|0)!=0;U=c[V>>2]|0;if(S){c[m>>2]=U;_=c[m>>2]|0;l=k;return _|0;}c[J>>2]=(c[J>>2]|0)+U;c[W>>2]=52;c[X>>2]=_h(w,W,c[G>>2]|0,c[K>>2]|0,c[t>>2]|0)|0;c[(c[p>>2]|0)+4572>>2]=c[(c[o>>2]|0)+4572>>2];c[C>>2]=Kn((c[p>>2]|0)+4572|0,c[X>>2]|0,c[K>>2]|0,6,1)|0;c[Y>>2]=Ln(c[J>>2]|0,(c[I>>2]|0)-(c[J>>2]|0)|0,c[z>>2]|0,9,c[C>>2]|0,w,c[W>>2]|0,c[G>>2]|0,c[K>>2]|0,3344,6,52,(c[o>>2]|0)+1796|0,1452,c[t>>2]|0,6144)|0;t=(Ph(c[Y>>2]|0)|0)!=0;o=c[Y>>2]|0;if(t){c[m>>2]=o;_=c[m>>2]|0;l=k;return _|0;}c[J>>2]=(c[J>>2]|0)+o;a[c[L>>2]>>0]=(c[A>>2]<<6)+(c[B>>2]<<4)+(c[C>>2]<<2);c[Z>>2]=Cl(c[J>>2]|0,(c[I>>2]|0)-(c[J>>2]|0)|0,c[z>>2]|0,c[G>>2]|0,c[y>>2]|0,c[E>>2]|0,c[x>>2]|0,c[F>>2]|0,c[D>>2]|0,c[K>>2]|0,c[v>>2]|0,c[u>>2]|0)|0;u=(Ph(c[Z>>2]|0)|0)!=0;v=c[Z>>2]|0;if(u){c[m>>2]=v;_=c[m>>2]|0;l=k;return _|0;}else{c[J>>2]=(c[J>>2]|0)+v;c[m>>2]=(c[J>>2]|0)-(c[H>>2]|0);_=c[m>>2]|0;l=k;return _|0;}return 0;}function In(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return((c[d>>2]|0)>>>6)+2|0;}function Jn(b,d,e,f,g,h,i,j,k,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;n=l;l=l+96|0;o=n+88|0;p=n+84|0;q=n+80|0;r=n+76|0;s=n+72|0;t=n+68|0;u=n+64|0;v=n+60|0;w=n+56|0;x=n+52|0;y=n+48|0;z=n+44|0;A=n+40|0;B=n+36|0;C=n+32|0;D=n+28|0;E=n+24|0;F=n+20|0;G=n+16|0;H=n+12|0;I=n+8|0;J=n+4|0;K=n;c[p>>2]=b;c[q>>2]=d;c[r>>2]=e;c[s>>2]=f;c[t>>2]=g;c[u>>2]=h;c[v>>2]=i;c[w>>2]=j;c[x>>2]=k;c[y>>2]=m;c[z>>2]=In(c[w>>2]|0)|0;c[A>>2]=3+((c[w>>2]|0)>>>0>=1024&1)+((c[w>>2]|0)>>>0>=16384&1);c[B>>2]=c[t>>2];c[C>>2]=(c[w>>2]|0)>>>0<256&1;c[D>>2]=2;c[(c[q>>2]|0)+4564>>2]=c[(c[p>>2]|0)+4564>>2];mE(c[q>>2]|0,c[p>>2]|0,1024)|0;if(c[s>>2]|0){c[o>>2]=Mn(c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;L=c[o>>2]|0;l=n;return L|0;}c[F>>2]=(c[(c[p>>2]|0)+4564>>2]|0)==2?6:63;if((c[w>>2]|0)>>>0<=(c[F>>2]|0)>>>0){c[o>>2]=Mn(c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;L=c[o>>2]|0;l=n;return L|0;}if((c[u>>2]|0)>>>0<((c[A>>2]|0)+1|0)>>>0){c[o>>2]=-70;L=c[o>>2]|0;l=n;return L|0;}c[G>>2]=c[(c[p>>2]|0)+4564>>2];c[H>>2]=(c[r>>2]|0)>>>0<4?(c[w>>2]|0)>>>0<=1024&1:0;if((c[G>>2]|0)==2&(c[A>>2]|0)==3)c[C>>2]=1;r=(c[B>>2]|0)+(c[A>>2]|0)|0;F=(c[u>>2]|0)-(c[A>>2]|0)|0;s=c[v>>2]|0;m=c[w>>2]|0;k=c[x>>2]|0;x=c[q>>2]|0;j=c[H>>2]|0;H=c[y>>2]|0;if(c[C>>2]|0)M=jj(r,F,s,m,255,11,k,6144,x,G,j,H)|0;else M=kj(r,F,s,m,255,11,k,6144,x,G,j,H)|0;c[E>>2]=M;if(c[G>>2]|0)c[D>>2]=3;G=(c[E>>2]|0)==0?1:(c[E>>2]|0)>>>0>=((c[w>>2]|0)-(c[z>>2]|0)|0)>>>0;if(G|(wj(c[E>>2]|0)|0)|0){mE(c[q>>2]|0,c[p>>2]|0,1024)|0;c[o>>2]=Mn(c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;L=c[o>>2]|0;l=n;return L|0;}if((c[E>>2]|0)==1){mE(c[q>>2]|0,c[p>>2]|0,1024)|0;c[o>>2]=Nn(c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;L=c[o>>2]|0;l=n;return L|0;}if((c[D>>2]|0)==2)c[(c[q>>2]|0)+4564>>2]=1;switch(c[A>>2]|0){case 3:{c[I>>2]=(c[D>>2]|0)+((((c[C>>2]|0)!=0^1)&1)<<2)+(c[w>>2]<<4)+(c[E>>2]<<14);wl(c[B>>2]|0,c[I>>2]|0);break;}case 4:{c[J>>2]=(c[D>>2]|0)+8+(c[w>>2]<<4)+(c[E>>2]<<18);Pl(c[B>>2]|0,c[J>>2]|0);break;}case 5:{c[K>>2]=(c[D>>2]|0)+12+(c[w>>2]<<4)+(c[E>>2]<<22);Pl(c[B>>2]|0,c[K>>2]|0);a[(c[B>>2]|0)+4>>0]=(c[E>>2]|0)>>>10;break;}default:{}}c[o>>2]=(c[A>>2]|0)+(c[E>>2]|0);L=c[o>>2]|0;l=n;return L|0;}function Kn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[j>>2]|0)==(c[k>>2]|0)?(c[n>>2]|0)==0|(c[k>>2]|0)>>>0>2:0){c[c[i>>2]>>2]=1;c[h>>2]=1;o=c[h>>2]|0;l=g;return o|0;}if(c[n>>2]|0?(c[k>>2]|0)>>>0<1e3?(c[c[i>>2]>>2]|0)==2:0:0){c[h>>2]=3;o=c[h>>2]|0;l=g;return o|0;}do{if(c[n>>2]|0){if((c[k>>2]|0)>>>0>=64?(c[j>>2]|0)>>>0>=(c[k>>2]|0)>>>((c[m>>2]|0)-1|0)>>>0:0)break;c[c[i>>2]>>2]=0;c[h>>2]=0;o=c[h>>2]|0;l=g;return o|0;}}while(0);c[c[i>>2]>>2]=1;c[h>>2]=2;o=c[h>>2]|0;l=g;return o|0;}function Ln(b,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;var u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;u=l;l=l+224|0;v=u+208|0;w=u+204|0;x=u+200|0;y=u+196|0;z=u+192|0;A=u+188|0;B=u+184|0;C=u+180|0;D=u+176|0;E=u+172|0;F=u+168|0;G=u+164|0;H=u+160|0;I=u+156|0;J=u+152|0;K=u+148|0;L=u+144|0;M=u+140|0;N=u+136|0;O=u+132|0;P=u+128|0;Q=u;R=u+124|0;S=u+120|0;T=u+116|0;U=u+112|0;V=u+108|0;c[w>>2]=b;c[x>>2]=e;c[y>>2]=f;c[z>>2]=g;c[A>>2]=h;c[B>>2]=i;c[C>>2]=j;c[D>>2]=k;c[E>>2]=m;c[F>>2]=n;c[G>>2]=o;c[H>>2]=p;c[I>>2]=q;c[J>>2]=r;c[K>>2]=s;c[L>>2]=t;c[M>>2]=c[w>>2];c[N>>2]=(c[M>>2]|0)+(c[x>>2]|0);switch(c[A>>2]|0){case 1:{a[c[M>>2]>>0]=a[c[D>>2]>>0]|0;c[O>>2]=ii(c[y>>2]|0,c[C>>2]&255)|0;if(wj(c[O>>2]|0)|0){c[v>>2]=c[O>>2];W=c[v>>2]|0;l=u;return W|0;}else{c[v>>2]=1;W=c[v>>2]|0;l=u;return W|0;}break;}case 3:{mE(c[y>>2]|0,c[I>>2]|0,c[J>>2]|0)|0;c[v>>2]=0;W=c[v>>2]|0;l=u;return W|0;}case 0:{c[P>>2]=Uh(c[y>>2]|0,c[F>>2]|0,c[H>>2]|0,c[G>>2]|0,c[K>>2]|0,c[L>>2]|0)|0;if(wj(c[P>>2]|0)|0){c[v>>2]=c[P>>2];W=c[v>>2]|0;l=u;return W|0;}else{c[v>>2]=0;W=c[v>>2]|0;l=u;return W|0;}break;}case 2:{c[R>>2]=c[E>>2];c[S>>2]=ei(c[z>>2]|0,c[E>>2]|0,c[C>>2]|0)|0;if((c[(c[B>>2]|0)+((d[(c[D>>2]|0)+((c[E>>2]|0)-1)>>0]|0)<<2)>>2]|0)>>>0>1){z=(c[B>>2]|0)+((d[(c[D>>2]|0)+((c[E>>2]|0)-1)>>0]|0)<<2)|0;c[z>>2]=(c[z>>2]|0)+-1;c[R>>2]=(c[R>>2]|0)+-1;}c[T>>2]=fi(Q,c[S>>2]|0,c[B>>2]|0,c[R>>2]|0,c[C>>2]|0)|0;if(wj(c[T>>2]|0)|0){c[v>>2]=c[T>>2];W=c[v>>2]|0;l=u;return W|0;}c[U>>2]=Xh(c[M>>2]|0,(c[N>>2]|0)-(c[M>>2]|0)|0,Q,c[C>>2]|0,c[S>>2]|0)|0;if(Zg(c[U>>2]|0)|0){c[v>>2]=c[U>>2];W=c[v>>2]|0;l=u;return W|0;}c[V>>2]=Uh(c[y>>2]|0,Q,c[C>>2]|0,c[S>>2]|0,c[K>>2]|0,c[L>>2]|0)|0;if(wj(c[V>>2]|0)|0){c[v>>2]=c[V>>2];W=c[v>>2]|0;l=u;return W|0;}else{c[v>>2]=c[U>>2];W=c[v>>2]|0;l=u;return W|0;}break;}default:{c[v>>2]=-1;W=c[v>>2]|0;l=u;return W|0;}}return 0;}function Mn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g+24|0;i=g+20|0;j=g+16|0;k=g+12|0;m=g+8|0;n=g+4|0;o=g;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[i>>2];c[o>>2]=1+((c[m>>2]|0)>>>0>31&1)+((c[m>>2]|0)>>>0>4095&1);if(((c[m>>2]|0)+(c[o>>2]|0)|0)>>>0>(c[j>>2]|0)>>>0){c[h>>2]=-70;p=c[h>>2]|0;l=g;return p|0;}switch(c[o>>2]|0){case 1:{a[c[n>>2]>>0]=0+(c[m>>2]<<3);break;}case 2:{xl(c[n>>2]|0,4+(c[m>>2]<<4)&65535);break;}case 3:{Pl(c[n>>2]|0,12+(c[m>>2]<<4)|0);break;}default:{}}mE((c[n>>2]|0)+(c[o>>2]|0)|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[m>>2]|0)+(c[o>>2]|0);p=c[h>>2]|0;l=g;return p|0;}function Nn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+20|0;i=g+12|0;j=g+8|0;k=g+4|0;m=g;c[h>>2]=b;c[g+16>>2]=d;c[i>>2]=e;c[j>>2]=f;c[k>>2]=c[h>>2];c[m>>2]=1+((c[j>>2]|0)>>>0>31&1)+((c[j>>2]|0)>>>0>4095&1);switch(c[m>>2]|0){case 1:{a[c[k>>2]>>0]=1+(c[j>>2]<<3);break;}case 2:{xl(c[k>>2]|0,5+(c[j>>2]<<4)&65535);break;}case 3:{Pl(c[k>>2]|0,13+(c[j>>2]<<4)|0);break;}default:{}}a[(c[k>>2]|0)+(c[m>>2]|0)>>0]=a[c[i>>2]>>0]|0;l=g;return(c[m>>2]|0)+1|0;}function On(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=b;c[f>>2]=(c[e>>2]|0)-(c[a+4>>2]|0);l=d;return(c[f>>2]|0)>>>0>2684354560|0;}function Pn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(1<<c[h>>2])-1;c[m>>2]=(c[j>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0);c[n>>2]=(c[m>>2]&c[k>>2])+(c[i>>2]|0);c[o>>2]=(c[m>>2]|0)-(c[n>>2]|0);n=(c[g>>2]|0)+4|0;c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);n=(c[g>>2]|0)+8|0;c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);n=(c[g>>2]|0)+16|0;c[n>>2]=(c[n>>2]|0)-(c[o>>2]|0);n=(c[g>>2]|0)+12|0;c[n>>2]=(c[n>>2]|0)-(c[o>>2]|0);l=f;return c[o>>2]|0;}function Qn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=0;while(1){if((c[i>>2]|0)>>>0>=(c[g>>2]|0)>>>0)break;if((c[(c[f>>2]|0)+(c[i>>2]<<3)>>2]|0)>>>0<(c[h>>2]|0)>>>0)c[(c[f>>2]|0)+(c[i>>2]<<3)>>2]=0;else{d=(c[f>>2]|0)+(c[i>>2]<<3)|0;c[d>>2]=(c[d>>2]|0)-(c[h>>2]|0);}c[i>>2]=(c[i>>2]|0)+1;}l=e;return;}function Rn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+12|0;k=f+8|0;m=f+4|0;n=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0);if(c[j>>2]|0)o=c[c[j>>2]>>2]|0;else o=0;c[m>>2]=o;if((c[k>>2]|0)>>>0<=((c[i>>2]|0)+(c[m>>2]|0)|0)>>>0){l=f;return;}c[n>>2]=(c[k>>2]|0)-(c[i>>2]|0);if((c[(c[g>>2]|0)+16>>2]|0)>>>0<(c[n>>2]|0)>>>0)c[(c[g>>2]|0)+16>>2]=c[n>>2];if((c[(c[g>>2]|0)+12>>2]|0)>>>0<(c[(c[g>>2]|0)+16>>2]|0)>>>0)c[(c[g>>2]|0)+12>>2]=c[(c[g>>2]|0)+16>>2];if(!(c[j>>2]|0)){l=f;return;}c[c[j>>2]>>2]=0;l=f;return;}function Sn(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;h=l;l=l+224|0;i=h+200|0;j=h+192|0;k=h+188|0;m=h+184|0;n=h+180|0;o=h+176|0;p=h+172|0;q=h+168|0;r=h+164|0;s=h+8|0;t=h+160|0;u=h+156|0;v=h+152|0;w=h+148|0;x=h+144|0;z=h+140|0;A=h+136|0;B=h+132|0;C=h+128|0;D=h+124|0;E=h+120|0;F=h+116|0;G=h+112|0;H=h+108|0;I=h+104|0;J=h+100|0;K=h+96|0;L=h;M=h+92|0;N=h+88|0;O=h+84|0;P=h+80|0;Q=h+76|0;R=h+72|0;S=h+68|0;T=h+64|0;U=h+60|0;V=h+56|0;W=h+52|0;X=h+48|0;Y=h+44|0;Z=h+40|0;_=h+36|0;$=h+32|0;aa=h+28|0;ba=h+24|0;ca=h+20|0;da=h+16|0;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[k>>2]|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];c[i+16>>2]=c[g+16>>2];c[q>>2]=Tn(i)|0;c[r>>2]=c[(c[n>>2]|0)+12>>2];g=(c[k>>2]|0)+32|0;f=c[g+4>>2]|0;e=s;c[e>>2]=c[g>>2];c[e+4>>2]=f;c[t>>2]=(c[(c[n>>2]|0)+4>>2]|0)-(c[(c[n>>2]|0)+8>>2]|0);c[u>>2]=1<<c[(c[n>>2]|0)+8>>2];c[v>>2]=c[(c[n>>2]|0)+16>>2];c[w>>2]=(1<<c[(c[n>>2]|0)+16>>2])-1;c[x>>2]=c[(c[k>>2]|0)+12>>2];if(c[q>>2]|0)ea=c[(c[k>>2]|0)+16>>2]|0;else ea=c[x>>2]|0;c[z>>2]=ea;c[A>>2]=c[(c[k>>2]|0)+4>>2];if(c[q>>2]|0)fa=c[(c[k>>2]|0)+8>>2]|0;else fa=0;c[B>>2]=fa;c[C>>2]=c[q>>2]|0?(c[B>>2]|0)+(c[z>>2]|0)|0:0;c[D>>2]=c[q>>2]|0?(c[B>>2]|0)+(c[x>>2]|0)|0:0;c[E>>2]=(c[A>>2]|0)+(c[x>>2]|0);c[F>>2]=c[o>>2];c[G>>2]=(c[F>>2]|0)+(c[p>>2]|0);c[H>>2]=(c[G>>2]|0)+(0-((c[r>>2]|0)>>>0>8?c[r>>2]|0:8));c[I>>2]=c[F>>2];c[J>>2]=c[F>>2];c[K>>2]=0;p=L;c[p>>2]=0;c[p+4>>2]=0;while(1){if((c[J>>2]|0)>>>0>(c[H>>2]|0)>>>0){ga=32;break;}c[N>>2]=(c[J>>2]|0)-(c[A>>2]|0);c[O>>2]=0;c[P>>2]=0;c[Q>>2]=0;if((c[J>>2]|0)!=(c[F>>2]|0)){p=L;o=s;fa=Un(c[p>>2]|0,c[p+4>>2]|0,a[c[K>>2]>>0]|0,a[(c[K>>2]|0)+(c[r>>2]|0)>>0]|0,c[o>>2]|0,c[o+4>>2]|0)|0;o=L;c[o>>2]=fa;c[o+4>>2]=y;}else{o=Vn(c[J>>2]|0,c[r>>2]|0)|0;fa=L;c[fa>>2]=o;c[fa+4>>2]=y;}c[K>>2]=c[J>>2];fa=L;o=Wn(c[fa>>2]|0,c[fa+4>>2]|0,c[t>>2]|0,c[v>>2]|0)|0;if((o|0)!=(c[w>>2]|0)){c[J>>2]=(c[J>>2]|0)+1;continue;}o=c[k>>2]|0;fa=L;p=Xn(c[fa>>2]|0,c[fa+4>>2]|0,c[t>>2]|0)|0;fa=c[n>>2]|0;c[i>>2]=c[fa>>2];c[i+4>>2]=c[fa+4>>2];c[i+8>>2]=c[fa+8>>2];c[i+12>>2]=c[fa+12>>2];c[i+16>>2]=c[fa+16>>2];c[i+20>>2]=c[fa+20>>2];c[R>>2]=Yn(o,p,i)|0;c[T>>2]=0;p=L;c[U>>2]=Zn(c[p>>2]|0,c[p+4>>2]|0,c[t>>2]|0)|0;c[S>>2]=c[R>>2];while(1){if((c[S>>2]|0)>>>0>=((c[R>>2]|0)+(c[u>>2]<<3)|0)>>>0)break;do{if((c[(c[S>>2]|0)+4>>2]|0)==(c[U>>2]|0)?(c[c[S>>2]>>2]|0)>>>0>(c[z>>2]|0)>>>0:0){if(c[q>>2]|0){c[Y>>2]=(c[c[S>>2]>>2]|0)>>>0<(c[x>>2]|0)>>>0?c[B>>2]|0:c[A>>2]|0;c[Z>>2]=(c[Y>>2]|0)+(c[c[S>>2]>>2]|0);c[_>>2]=(c[c[S>>2]>>2]|0)>>>0<(c[x>>2]|0)>>>0?c[D>>2]|0:c[G>>2]|0;c[$>>2]=(c[c[S>>2]>>2]|0)>>>0<(c[x>>2]|0)>>>0?c[C>>2]|0:c[E>>2]|0;c[V>>2]=_n(c[J>>2]|0,c[Z>>2]|0,c[G>>2]|0,c[_>>2]|0,c[E>>2]|0)|0;if((c[V>>2]|0)>>>0<(c[r>>2]|0)>>>0)break;c[W>>2]=$n(c[J>>2]|0,c[I>>2]|0,c[Z>>2]|0,c[$>>2]|0)|0;c[X>>2]=(c[V>>2]|0)+(c[W>>2]|0);}else{c[aa>>2]=(c[A>>2]|0)+(c[c[S>>2]>>2]|0);c[V>>2]=ao(c[J>>2]|0,c[aa>>2]|0,c[G>>2]|0)|0;if((c[V>>2]|0)>>>0<(c[r>>2]|0)>>>0)break;c[W>>2]=$n(c[J>>2]|0,c[I>>2]|0,c[aa>>2]|0,c[E>>2]|0)|0;c[X>>2]=(c[V>>2]|0)+(c[W>>2]|0);}if((c[X>>2]|0)>>>0>(c[T>>2]|0)>>>0){c[T>>2]=c[X>>2];c[O>>2]=c[V>>2];c[P>>2]=c[W>>2];c[Q>>2]=c[S>>2];}}}while(0);c[S>>2]=(c[S>>2]|0)+8;}if(!(c[Q>>2]|0)){p=c[k>>2]|0;o=L;fa=c[o>>2]|0;ea=c[o+4>>2]|0;o=c[t>>2]|0;f=c[N>>2]|0;e=c[n>>2]|0;c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];c[i+16>>2]=c[e+16>>2];c[i+20>>2]=c[e+20>>2];bo(p,fa,ea,o,f,i);c[J>>2]=(c[J>>2]|0)+1;continue;}c[M>>2]=(c[O>>2]|0)+(c[P>>2]|0);c[J>>2]=(c[J>>2]|0)+(0-(c[P>>2]|0));c[ba>>2]=c[c[Q>>2]>>2];c[ca>>2]=(c[N>>2]|0)-(c[ba>>2]|0);c[da>>2]=(c[c[m>>2]>>2]|0)+((c[(c[m>>2]|0)+8>>2]|0)*12|0);if((c[(c[m>>2]|0)+8>>2]|0)==(c[(c[m>>2]|0)+12>>2]|0)){ga=28;break;}c[(c[da>>2]|0)+4>>2]=(c[J>>2]|0)-(c[I>>2]|0);c[(c[da>>2]|0)+8>>2]=c[M>>2];c[c[da>>2]>>2]=c[ca>>2];f=(c[m>>2]|0)+8|0;c[f>>2]=(c[f>>2]|0)+1;f=c[k>>2]|0;o=L;ea=c[o>>2]|0;fa=c[o+4>>2]|0;o=c[t>>2]|0;p=(c[K>>2]|0)-(c[A>>2]|0)|0;e=c[n>>2]|0;c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];c[i+16>>2]=c[e+16>>2];c[i+20>>2]=c[e+20>>2];bo(f,ea,fa,o,p,i);if(((c[J>>2]|0)+(c[M>>2]|0)|0)>>>0<=(c[H>>2]|0)>>>0){p=c[k>>2]|0;o=L;fa=c[o>>2]|0;ea=c[o+4>>2]|0;o=c[K>>2]|0;f=(c[J>>2]|0)+(c[M>>2]|0)|0;e=c[A>>2]|0;g=c[t>>2]|0;d=c[n>>2]|0;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[i+16>>2]=c[d+16>>2];c[i+20>>2]=c[d+20>>2];d=co(p,fa,ea,o,f,e,g,i)|0;g=L;c[g>>2]=d;c[g+4>>2]=y;c[K>>2]=(c[J>>2]|0)+(c[M>>2]|0)+-1;}c[J>>2]=(c[J>>2]|0)+(c[M>>2]|0);c[I>>2]=c[J>>2];}if((ga|0)==28){c[j>>2]=-70;ha=c[j>>2]|0;l=h;return ha|0;}else if((ga|0)==32){c[j>>2]=(c[G>>2]|0)-(c[I>>2]|0);ha=c[j>>2]|0;l=h;return ha|0;}return 0;}function Tn(a){a=a|0;return(c[a+16>>2]|0)>>>0<(c[a+12>>2]|0)>>>0|0;}function Un(b,e,f,g,h,i){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0;j=l;l=l+32|0;k=j+8|0;m=j+17|0;n=j+16|0;o=j;p=k;c[p>>2]=b;c[p+4>>2]=e;a[m>>0]=f;a[n>>0]=g;g=o;c[g>>2]=h;c[g+4>>2]=i;i=(d[m>>0]|0)+10|0;m=o;o=cE(i|0,((i|0)<0)<<31>>31|0,c[m>>2]|0,c[m+4>>2]|0)|0;m=k;i=eE(c[m>>2]|0,c[m+4>>2]|0,o|0,y|0)|0;o=k;c[o>>2]=i;c[o+4>>2]=y;o=k;i=cE(c[o>>2]|0,c[o+4>>2]|0,-1213897629,-820265764)|0;o=k;c[o>>2]=i;c[o+4>>2]=y;o=(d[n>>0]|0)+10|0;n=k;i=dE(c[n>>2]|0,c[n+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;o=k;c[o>>2]=i;c[o+4>>2]=y;o=k;y=c[o+4>>2]|0;l=j;return c[o>>2]|0;}function Vn(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e;i=e+8|0;c[f>>2]=a;c[g>>2]=b;b=h;c[b>>2]=0;c[b+4>>2]=0;c[i>>2]=0;while(1){b=h;j=c[b>>2]|0;k=c[b+4>>2]|0;if((c[i>>2]|0)>>>0>=(c[g>>2]|0)>>>0)break;b=cE(j|0,k|0,-1213897629,-820265764)|0;a=h;c[a>>2]=b;c[a+4>>2]=y;a=(d[(c[f>>2]|0)+(c[i>>2]|0)>>0]|0)+10|0;b=h;m=dE(c[b>>2]|0,c[b+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=h;c[a>>2]=m;c[a+4>>2]=y;c[i>>2]=(c[i>>2]|0)+1;}y=k;l=e;return j|0;}function Wn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f;i=f+12|0;j=f+8|0;k=h;c[k>>2]=a;c[k+4>>2]=b;c[i>>2]=d;c[j>>2]=e;e=h;h=c[e>>2]|0;d=c[e+4>>2]|0;if((32-(c[i>>2]|0)|0)>>>0<(c[j>>2]|0)>>>0){c[g>>2]=h&(1<<c[j>>2])-1;m=c[g>>2]|0;l=f;return m|0;}else{e=iE(h|0,d|0,32-(c[i>>2]|0)-(c[j>>2]|0)|0)|0;c[g>>2]=e&(1<<c[j>>2])-1;m=c[g>>2]|0;l=f;return m|0;}return 0;}function Xn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;if(!(c[g>>2]|0)){i=0;l=e;return i|0;}d=f;f=iE(c[d>>2]|0,c[d+4>>2]|0,64-(c[g>>2]|0)|0)|0;i=f;l=e;return i|0;}function Yn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=a;c[g>>2]=b;l=e;return(c[(c[f>>2]|0)+20>>2]|0)+(c[g>>2]<<c[d+8>>2]<<3)|0;}function Zn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=iE(c[d>>2]|0,c[d+4>>2]|0,32-(c[g>>2]|0)|0)|0;l=e;return f|0;}function _n(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if(((c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0)>>>0<(c[k>>2]|0)>>>0)q=(c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0;else q=c[k>>2]|0;c[o>>2]=q;c[p>>2]=ao(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0)|0;o=c[p>>2]|0;if(((c[j>>2]|0)+(c[p>>2]|0)|0)!=(c[m>>2]|0)){c[h>>2]=o;r=c[h>>2]|0;l=g;return r|0;}else{c[h>>2]=o+(ao((c[i>>2]|0)+(c[p>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0);r=c[h>>2]|0;l=g;return r|0;}return 0;}function $n(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;g=l;l=l+32|0;h=g+16|0;i=g+12|0;j=g+8|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=0;while(1){if((c[h>>2]|0)>>>0<=(c[i>>2]|0)>>>0){n=6;break;}if((c[j>>2]|0)>>>0<=(c[k>>2]|0)>>>0){n=6;break;}if((d[(c[h>>2]|0)+-1>>0]|0|0)!=(d[(c[j>>2]|0)+-1>>0]|0|0)){n=6;break;}c[h>>2]=(c[h>>2]|0)+-1;c[j>>2]=(c[j>>2]|0)+-1;c[m>>2]=(c[m>>2]|0)+1;}if((n|0)==6){l=g;return c[m>>2]|0;}return 0;}function ao(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];c[m>>2]=(c[j>>2]|0)+-3;a:do{if((c[h>>2]|0)>>>0<(c[m>>2]|0)>>>0){e=fo(c[i>>2]|0)|0;c[n>>2]=e^(fo(c[h>>2]|0)|0);if(c[n>>2]|0){c[g>>2]=go(c[n>>2]|0)|0;p=c[g>>2]|0;l=f;return p|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;while(1){if((c[h>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break a;e=fo(c[i>>2]|0)|0;c[o>>2]=e^(fo(c[h>>2]|0)|0);if(c[o>>2]|0)break;c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}e=go(c[o>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+e;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}}while(0);if((ho()|0?(c[h>>2]|0)>>>0<((c[j>>2]|0)+-3|0)>>>0:0)?(o=io(c[i>>2]|0)|0,(o|0)==(io(c[h>>2]|0)|0)):0){c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}if((c[h>>2]|0)>>>0<((c[j>>2]|0)+-1|0)>>>0?(o=(jo(c[i>>2]|0)|0)&65535,(o|0)==((jo(c[h>>2]|0)|0)&65535|0)):0){c[h>>2]=(c[h>>2]|0)+2;c[i>>2]=(c[i>>2]|0)+2;}if((c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?(d[c[i>>2]>>0]|0|0)==(d[c[h>>2]>>0]|0|0):0)c[h>>2]=(c[h>>2]|0)+1;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}function bo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=l;l=l+80|0;i=h+56|0;j=h+48|0;k=h+40|0;m=h;n=h+36|0;o=h+32|0;p=h+28|0;q=h+24|0;r=h+20|0;s=h+16|0;t=h+8|0;c[k>>2]=a;a=m;c[a>>2]=b;c[a+4>>2]=d;c[n>>2]=e;c[o>>2]=f;f=m;c[p>>2]=Wn(c[f>>2]|0,c[f+4>>2]|0,c[n>>2]|0,c[g+16>>2]|0)|0;c[q>>2]=(1<<c[g+16>>2])-1;if((c[p>>2]|0)!=(c[q>>2]|0)){l=h;return;}q=m;c[r>>2]=Xn(c[q>>2]|0,c[q+4>>2]|0,c[n>>2]|0)|0;q=m;c[s>>2]=Zn(c[q>>2]|0,c[q+4>>2]|0,c[n>>2]|0)|0;c[t>>2]=c[o>>2];c[t+4>>2]=c[s>>2];s=c[k>>2]|0;k=c[r>>2]|0;c[j>>2]=c[t>>2];c[j+4>>2]=c[t+4>>2];c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];c[i+16>>2]=c[g+16>>2];c[i+20>>2]=c[g+20>>2];eo(s,k,j,i);l=h;return;}function co(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;k=l;l=l+64|0;m=k+40|0;n=k+36|0;o=k+8|0;p=k+32|0;q=k+28|0;r=k+24|0;s=k+20|0;t=k;u=k+16|0;c[n>>2]=b;b=o;c[b>>2]=d;c[b+4>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;i=o;o=c[i+4>>2]|0;h=t;c[h>>2]=c[i>>2];c[h+4>>2]=o;c[u>>2]=(c[p>>2]|0)+1;while(1){p=t;v=c[p>>2]|0;w=c[p+4>>2]|0;if((c[u>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break;p=(c[n>>2]|0)+32|0;o=Un(v,w,a[(c[u>>2]|0)+-1>>0]|0,a[(c[u>>2]|0)+((c[j+12>>2]|0)-1)>>0]|0,c[p>>2]|0,c[p+4>>2]|0)|0;p=t;c[p>>2]=o;c[p+4>>2]=y;p=c[n>>2]|0;o=t;h=c[o>>2]|0;i=c[o+4>>2]|0;o=c[s>>2]|0;g=(c[u>>2]|0)-(c[r>>2]|0)|0;c[m>>2]=c[j>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];c[m+12>>2]=c[j+12>>2];c[m+16>>2]=c[j+16>>2];c[m+20>>2]=c[j+20>>2];bo(p,h,i,o,g,m);c[u>>2]=(c[u>>2]|0)+1;}y=w;l=k;return v|0;}function eo(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0;h=l;l=l+48|0;i=h+16|0;j=h+8|0;k=h+4|0;m=h;c[j>>2]=b;c[k>>2]=e;c[m>>2]=c[(c[j>>2]|0)+24>>2];e=c[j>>2]|0;j=c[k>>2]|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];c[i+16>>2]=c[g+16>>2];c[i+20>>2]=c[g+20>>2];b=Yn(e,j,i)|0;i=b+((d[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0)<<3)|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];f=(c[m>>2]|0)+(c[k>>2]|0)|0;a[f>>0]=(a[f>>0]|0)+1<<24>>24;f=(c[m>>2]|0)+(c[k>>2]|0)|0;a[f>>0]=(d[f>>0]|0)&(1<<c[g+8>>2])-1;l=h;return;}function fo(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function go(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(ko()|0)!=0;f=(ho()|0)!=0;g=c[e>>2]|0;do{if(a){if(f){e=ob(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(fE(g|0)|0)>>3;break;}}else if(f){e=lE(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(Q(g|0)|0)>>3;break;}}while(0);l=b;return c[d>>2]|0;}function ho(){return 0;}function io(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function jo(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function ko(){return d[11936]|0|0;}function lo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f;c[g>>2]=b;c[h>>2]=d;c[i>>2]=e;e=(c[c[g>>2]>>2]|0)+((c[(c[g>>2]|0)+4>>2]|0)*12|0)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];if((c[h>>2]|0)>>>0>=((c[j+4>>2]|0)+(c[j+8>>2]|0)|0)>>>0){e=(c[g>>2]|0)+4|0;c[e>>2]=(c[e>>2]|0)+1;c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];l=f;return;}if((c[h>>2]|0)>>>0>(c[j+4>>2]|0)>>>0){if((c[h>>2]|0)>>>0<((c[j+4>>2]|0)+(c[j+8>>2]|0)|0)>>>0?(c[j+8>>2]=(c[h>>2]|0)-(c[j+4>>2]|0),(c[j+8>>2]|0)>>>0<(c[i>>2]|0)>>>0):0)c[j>>2]=0;}else c[j>>2]=0;An(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0);c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];l=f;return;}function mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=(c[f>>2]|0)-(c[(c[e>>2]|0)+4>>2]|0);if((c[g>>2]|0)>>>0<=((c[(c[e>>2]|0)+24>>2]|0)+1024|0)>>>0){l=d;return;}if(512<((c[g>>2]|0)-(c[(c[e>>2]|0)+24>>2]|0)-1024|0)>>>0)h=512;else h=(c[g>>2]|0)-(c[(c[e>>2]|0)+24>>2]|0)-1024|0;c[(c[e>>2]|0)+24>>2]=(c[g>>2]|0)-h;l=d;return;}function no(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[h>>2];switch(c[(c[g>>2]|0)+24>>2]|0){case 1:{Nj(c[f>>2]|0,c[g>>2]|0,c[i>>2]|0);c[(c[f>>2]|0)+24>>2]=(c[i>>2]|0)-(c[(c[f>>2]|0)+4>>2]|0);l=e;return 0;}case 2:{Oj(c[f>>2]|0,c[g>>2]|0,c[i>>2]|0);c[(c[f>>2]|0)+24>>2]=(c[i>>2]|0)-(c[(c[f>>2]|0)+4>>2]|0);l=e;return 0;}default:{l=e;return 0;}}return 0;}function oo(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;po(c[(c[i>>2]|0)+12>>2]|0,c[k>>2]|0,c[j>>2]|0);k=(c[i>>2]|0)+12|0;c[k>>2]=(c[k>>2]|0)+(c[j>>2]|0);if((c[j>>2]|0)>>>0>65535){c[(c[i>>2]|0)+28>>2]=1;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;}b[(c[(c[i>>2]|0)+4>>2]|0)+4>>1]=c[j>>2];c[c[(c[i>>2]|0)+4>>2]>>2]=(c[m>>2]|0)+1;if((c[n>>2]|0)>>>0<=65535){o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}c[(c[i>>2]|0)+28>>2]=2;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}function po(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{qo(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function qo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=b;c[f>>2]=(c[e>>2]|0)-(c[a+4>>2]|0);l=d;return(c[f>>2]|0)>>>0>2684354560|0;}function so(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(1<<c[h>>2])-1;c[m>>2]=(c[j>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0);c[n>>2]=(c[m>>2]&c[k>>2])+(c[i>>2]|0);c[o>>2]=(c[m>>2]|0)-(c[n>>2]|0);n=(c[g>>2]|0)+4|0;c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);n=(c[g>>2]|0)+8|0;c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);n=(c[g>>2]|0)+16|0;c[n>>2]=(c[n>>2]|0)-(c[o>>2]|0);n=(c[g>>2]|0)+12|0;c[n>>2]=(c[n>>2]|0)-(c[o>>2]|0);l=f;return c[o>>2]|0;}function to(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d+20|0;f=d+16|0;g=d+12|0;h=d+8|0;i=d+4|0;j=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=(c[e>>2]|0)+472+8;c[h>>2]=1<<c[(c[e>>2]|0)+116+4+8>>2];vo(c[(c[g>>2]|0)+36>>2]|0,c[h>>2]|0,c[f>>2]|0);do{if((c[(c[e>>2]|0)+116+4+24>>2]|0)!=1){c[i>>2]=1<<c[(c[e>>2]|0)+116+4+4>>2];h=c[(c[g>>2]|0)+44>>2]|0;b=c[i>>2]|0;a=c[f>>2]|0;if((c[(c[e>>2]|0)+116+4+24>>2]|0)==6){wo(h,b,a);break;}else{vo(h,b,a);break;}}}while(0);if(!(c[(c[g>>2]|0)+32>>2]|0)){l=d;return;}c[j>>2]=1<<c[(c[g>>2]|0)+32>>2];vo(c[(c[g>>2]|0)+40>>2]|0,c[j>>2]|0,c[f>>2]|0);l=d;return;}function uo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+12|0;k=f+8|0;m=f+4|0;n=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0);if(c[j>>2]|0)o=c[c[j>>2]>>2]|0;else o=0;c[m>>2]=o;if((c[k>>2]|0)>>>0<=((c[i>>2]|0)+(c[m>>2]|0)|0)>>>0){l=f;return;}c[n>>2]=(c[k>>2]|0)-(c[i>>2]|0);if((c[(c[g>>2]|0)+16>>2]|0)>>>0<(c[n>>2]|0)>>>0)c[(c[g>>2]|0)+16>>2]=c[n>>2];if((c[(c[g>>2]|0)+12>>2]|0)>>>0<(c[(c[g>>2]|0)+16>>2]|0)>>>0)c[(c[g>>2]|0)+12>>2]=c[(c[g>>2]|0)+16>>2];if(!(c[j>>2]|0)){l=f;return;}c[c[j>>2]>>2]=0;l=f;return;}function vo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;e=l;l=l+48|0;f=e+44|0;g=e+40|0;h=e+36|0;i=e+32|0;j=e+28|0;k=e+24|0;m=e+20|0;n=e+16|0;o=e+12|0;p=e+8|0;q=e+4|0;r=e;c[p>>2]=a;c[q>>2]=b;c[r>>2]=d;d=c[q>>2]|0;q=c[r>>2]|0;c[f>>2]=c[p>>2];c[g>>2]=d;c[h>>2]=q;c[i>>2]=0;c[j>>2]=(c[g>>2]|0)/16|0;c[k>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[j>>2]|0))break;c[n>>2]=0;while(1){if((c[n>>2]|0)>=16)break;if(c[i>>2]|0){c[o>>2]=(c[(c[f>>2]|0)+(c[k>>2]<<2)>>2]|0)==1?c[h>>2]|0:0;g=(c[f>>2]|0)+(c[k>>2]<<2)|0;c[g>>2]=(c[g>>2]|0)+(c[o>>2]|0);}if((c[(c[f>>2]|0)+(c[k>>2]<<2)>>2]|0)>>>0<(c[h>>2]|0)>>>0)c[(c[f>>2]|0)+(c[k>>2]<<2)>>2]=0;else{g=(c[f>>2]|0)+(c[k>>2]<<2)|0;c[g>>2]=(c[g>>2]|0)-(c[h>>2]|0);}c[k>>2]=(c[k>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+1;}c[m>>2]=(c[m>>2]|0)+1;}l=e;return;}function wo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;e=l;l=l+48|0;f=e+44|0;g=e+40|0;h=e+36|0;i=e+32|0;j=e+28|0;k=e+24|0;m=e+20|0;n=e+16|0;o=e+12|0;p=e+8|0;q=e+4|0;r=e;c[p>>2]=a;c[q>>2]=b;c[r>>2]=d;d=c[q>>2]|0;q=c[r>>2]|0;c[f>>2]=c[p>>2];c[g>>2]=d;c[h>>2]=q;c[i>>2]=1;c[j>>2]=(c[g>>2]|0)/16|0;c[k>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[j>>2]|0))break;c[n>>2]=0;while(1){if((c[n>>2]|0)>=16)break;if(c[i>>2]|0){c[o>>2]=(c[(c[f>>2]|0)+(c[k>>2]<<2)>>2]|0)==1?c[h>>2]|0:0;g=(c[f>>2]|0)+(c[k>>2]<<2)|0;c[g>>2]=(c[g>>2]|0)+(c[o>>2]|0);}if((c[(c[f>>2]|0)+(c[k>>2]<<2)>>2]|0)>>>0<(c[h>>2]|0)>>>0)c[(c[f>>2]|0)+(c[k>>2]<<2)>>2]=0;else{g=(c[f>>2]|0)+(c[k>>2]<<2)|0;c[g>>2]=(c[g>>2]|0)-(c[h>>2]|0);}c[k>>2]=(c[k>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+1;}c[m>>2]=(c[m>>2]|0)+1;}l=e;return;}function xo(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;k=l;l=l+160|0;m=k+48|0;n=k+40|0;o=k+36|0;p=k+32|0;q=k+28|0;r=k+24|0;s=k+20|0;t=k;u=k+16|0;v=k+12|0;w=k+8|0;c[o>>2]=a;c[p>>2]=b;c[q>>2]=d;c[r>>2]=e;c[s>>2]=f;f=t;c[f>>2]=h;c[f+4>>2]=i;c[u>>2]=j;if(c[s>>2]|0?(c[(c[s>>2]|0)+8>>2]|0)>>>0>0:0){x=(c[o>>2]|0)+12|0;y=g;z=x+104|0;do{c[x>>2]=c[y>>2];x=x+4|0;y=y+4|0;}while((x|0)<(z|0));j=c[o>>2]|0;i=c[s>>2]|0;s=c[g+4>>2]|0;f=g+32|0;h=t;e=c[h>>2]|0;d=c[h+4>>2]|0;h=c[u>>2]|0;c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[n>>2]=yo(j,i,s,m,e,d,h)|0;A=c[n>>2]|0;l=k;return A|0;}h=c[o>>2]|0;d=t;t=c[d>>2]|0;e=c[d+4>>2]|0;d=c[u>>2]|0;x=m;y=g;z=x+104|0;do{c[x>>2]=c[y>>2];x=x+4|0;y=y+4|0;}while((x|0)<(z|0));c[v>>2]=ml(h,m,t,e,0,d)|0;if(wj(c[v>>2]|0)|0){c[n>>2]=c[v>>2];A=c[n>>2]|0;l=k;return A|0;}c[w>>2]=Ej(c[(c[o>>2]|0)+472>>2]|0,(c[o>>2]|0)+472+8|0,g,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[(c[o>>2]|0)+588>>2]|0)|0;r=(Ph(c[w>>2]|0)|0)!=0;q=c[w>>2]|0;if(r){c[n>>2]=q;A=c[n>>2]|0;l=k;return A|0;}else{c[(c[o>>2]|0)+220>>2]=q;c[n>>2]=0;A=c[n>>2]|0;l=k;return A|0;}return 0;}function yo(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;i=l;l=l+256|0;j=i+152|0;k=i+148|0;m=i+144|0;n=i+140|0;o=i;p=i+136|0;q=i+32|0;r=i+28|0;s=i+24|0;t=i+20|0;u=i+16|0;v=i+12|0;w=i+8|0;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;d=o;c[d>>2]=f;c[d+4>>2]=g;c[p>>2]=h;h=q;g=(c[k>>2]|0)+12|0;d=h+104|0;do{c[h>>2]=c[g>>2];h=h+4|0;g=g+4|0;}while((h|0)<(d|0));f=q+4|0;b=(c[m>>2]|0)+4720|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];if(c[n>>2]|0)c[q+4>>2]=c[n>>2];n=q+32|0;c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];e=c[k>>2]|0;n=o;o=c[n>>2]|0;b=c[n+4>>2]|0;n=c[p>>2]|0;h=j;g=q;d=h+104|0;do{c[h>>2]=c[g>>2];h=h+4|0;g=g+4|0;}while((h|0)<(d|0));ml(e,j,o,b,1,n)|0;if((c[(c[m>>2]|0)+4720+24>>2]|0)==1)x=0;else x=1<<c[(c[m>>2]|0)+4720+4>>2];c[r>>2]=x;c[s>>2]=1<<c[(c[m>>2]|0)+4720+8>>2];c[t>>2]=(c[r>>2]|0)+(c[s>>2]|0)<<2;mE(c[(c[k>>2]|0)+472+8+36>>2]|0,c[(c[m>>2]|0)+20+36>>2]|0,c[t>>2]|0)|0;c[u>>2]=1<<c[(c[k>>2]|0)+472+8+32>>2];oE(c[(c[k>>2]|0)+472+8+40>>2]|0,0,c[u>>2]<<2|0)|0;c[v>>2]=(c[m>>2]|0)+20;c[w>>2]=(c[k>>2]|0)+472+8;u=c[w>>2]|0;t=c[v>>2]|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[(c[w>>2]|0)+24>>2]=c[(c[v>>2]|0)+24>>2];c[(c[w>>2]|0)+28>>2]=c[(c[v>>2]|0)+28>>2];c[(c[w>>2]|0)+20>>2]=c[(c[v>>2]|0)+20>>2];c[(c[k>>2]|0)+220>>2]=c[(c[m>>2]|0)+4760>>2];mE(c[(c[k>>2]|0)+472>>2]|0,(c[m>>2]|0)+128|0,4592)|0;l=i;return 0;}function zo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+112|0;f=e;g=f;h=b;b=g+104|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0;}while((g|0)<(b|0));i=f+4|0;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[i+16>>2]=c[d+16>>2];c[i+20>>2]=c[d+20>>2];c[i+24>>2]=c[d+24>>2];i=f+32|0;j=d+28|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[f+44>>2]=3;g=a;h=f;b=g+104|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0;}while((g|0)<(b|0));l=e;return;}function Ao(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+96|0;h=g+84|0;i=g;j=g+80|0;k=g+40|0;m=g+8|0;c[h>>2]=b;b=i;c[b>>2]=d;c[b+4>>2]=e;c[j>>2]=f;f=i;sj(m,c[h>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[j>>2]|0);j=k;f=j+40|0;do{c[j>>2]=0;j=j+4|0;}while((j|0)<(f|0));c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=1;j=a;a=k;f=j+40|0;do{c[j>>2]=c[a>>2];j=j+4|0;a=a+4|0;}while((j|0)<(f|0));l=g;return;}function Bo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[p>>2]=wn(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,1,1)|0;if(Ph(c[p>>2]|0)|0){c[h>>2]=c[p>>2];q=c[h>>2]|0;l=g;return q|0;}c[o>>2]=Co(c[i>>2]|0,(c[j>>2]|0)+(c[p>>2]|0)|0,(c[k>>2]|0)-(c[p>>2]|0)|0)|0;if(Ph(c[o>>2]|0)|0){c[h>>2]=c[o>>2];q=c[h>>2]|0;l=g;return q|0;}if(c[(c[i>>2]|0)+116+32>>2]|0?(k=(c[i>>2]|0)+240|0,j=c[k>>2]|0,n=c[k+4>>2]|0,k=(c[i>>2]|0)+248|0,i=dE(c[k>>2]|0,c[k+4>>2]|0,1,0)|0,(j|0)!=(i|0)|(n|0)!=(y|0)):0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}c[h>>2]=(c[p>>2]|0)+(c[o>>2]|0);q=c[h>>2]|0;l=g;return q|0;}function Co(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=l;l=l+144|0;f=e+40|0;g=e+32|0;h=e+28|0;i=e+24|0;j=e+20|0;k=e+16|0;m=e+12|0;n=e+8|0;o=e+4|0;p=e;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=c[i>>2];c[m>>2]=c[k>>2];c[n>>2]=0;if(!(c[c[h>>2]>>2]|0)){c[g>>2]=-60;q=c[g>>2]|0;l=e;return q|0;}do{if((c[c[h>>2]>>2]|0)==1){d=c[i>>2]|0;b=c[j>>2]|0;a=f;r=(c[h>>2]|0)+116|0;s=a+104|0;do{c[a>>2]=c[r>>2];a=a+4|0;r=r+4|0;}while((a|0)<(s|0));c[n>>2]=xn(d,b,f,0,0,0)|0;r=(Ph(c[n>>2]|0)|0)!=0;a=c[n>>2]|0;if(!r){c[j>>2]=(c[j>>2]|0)-a;c[m>>2]=(c[m>>2]|0)+(c[n>>2]|0);c[c[h>>2]>>2]=2;break;}c[g>>2]=a;q=c[g>>2]|0;l=e;return q|0;}}while(0);do{if((c[c[h>>2]>>2]|0)!=3){c[o>>2]=1;if((c[j>>2]|0)>>>0>=4){Pl(c[m>>2]|0,1);c[m>>2]=(c[m>>2]|0)+3;c[j>>2]=(c[j>>2]|0)-3;break;}c[g>>2]=-70;q=c[g>>2]|0;l=e;return q|0;}}while(0);do{if(c[(c[h>>2]|0)+116+32+4>>2]|0){o=Oh((c[h>>2]|0)+264|0)|0;c[p>>2]=o;if((c[j>>2]|0)>>>0>=4){Pl(c[m>>2]|0,c[p>>2]|0);c[m>>2]=(c[m>>2]|0)+4;break;}c[g>>2]=-70;q=c[g>>2]|0;l=e;return q|0;}}while(0);c[c[h>>2]>>2]=0;c[g>>2]=(c[m>>2]|0)-(c[k>>2]|0);q=c[g>>2]|0;l=e;return q|0;}function Do(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=l;l=l+144|0;k=j+40|0;m=j+32|0;n=j+28|0;o=j+24|0;p=j+20|0;q=j+16|0;r=j+12|0;s=j+8|0;t=j+4|0;u=j;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;h=c[n>>2]|0;g=c[s>>2]|0;s=c[t>>2]|0;t=c[r>>2]|0;f=k;e=i;i=f+104|0;do{c[f>>2]=c[e>>2];f=f+4|0;e=e+4|0;}while((f|0)<(i|0));c[u>>2]=xo(h,g,s,0,0,k,t,0,0)|0;if(wj(c[u>>2]|0)|0){c[m>>2]=c[u>>2];v=c[m>>2]|0;l=j;return v|0;}else{c[m>>2]=Bo(c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;v=c[m>>2]|0;l=j;return v|0;}return 0;}function Eo(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=l;l=l+400|0;k=j+288|0;m=j+176|0;n=j+280|0;o=j+168|0;p=j+164|0;q=j+160|0;r=j+156|0;s=j+152|0;t=j+148|0;u=j+144|0;v=j+104|0;w=j;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=i;Ao(v,c[u>>2]|0,c[r>>2]|0?c[r>>2]|0:1,0,c[s>>2]|0?c[t>>2]|0:0);i=m;h=(c[n>>2]|0)+12|0;g=i+104|0;do{c[i>>2]=c[h>>2];i=i+4|0;h=h+4|0;}while((i|0)<(g|0));i=k;h=v;g=i+40|0;do{c[i>>2]=c[h>>2];i=i+4|0;h=h+4|0;}while((i|0)<(g|0));zo(w,m,k);xj(w,1e3,(c[u>>2]|0)>=0&1)|0;u=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;p=c[q>>2]|0;q=c[r>>2]|0;r=c[s>>2]|0;s=c[t>>2]|0;i=k;h=w;g=i+104|0;do{c[i>>2]=c[h>>2];i=i+4|0;h=h+4|0;}while((i|0)<(g|0));h=Do(u,n,o,p,q,r,s,k)|0;l=j;return h|0;}function Fo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;g=Eo(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,0,0,c[o>>2]|0)|0;l=h;return g|0;}function Go(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+704|0;h=g+680|0;i=g+676|0;j=g+672|0;k=g+668|0;m=g+664|0;n=g+660|0;o=g+656|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;oE(p|0,0,656)|0;f=p+352|0;c[f>>2]=c[5406];c[f+4>>2]=c[5407];c[f+8>>2]=c[5408];c[o>>2]=Fo(p,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;n=c[p+224>>2]|0;c[h>>2]=c[5406];c[h+4>>2]=c[5407];c[h+8>>2]=c[5408];Th(n,h);l=g;return c[o>>2]|0;}function Ho(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+80|0;f=e+68|0;g=e+40|0;h=e+36|0;i=e+32|0;j=e+28|0;k=e;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;sj(k,c[j>>2]|0,0,0,c[i>>2]|0);j=c[h>>2]|0;h=c[i>>2]|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[g+16>>2]=c[k+16>>2];c[g+20>>2]=c[k+20>>2];c[g+24>>2]=c[k+24>>2];c[f>>2]=c[5406];c[f+4>>2]=c[5407];c[f+8>>2]=c[5408];k=zj(j,h,0,0,g,f)|0;l=e;return k|0;}function Io(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=(c[e>>2]|0)+4720|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];l=d;return;}function Jo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=l;l=l+272|0;h=g+168|0;i=g+160|0;j=g+156|0;k=g+152|0;m=g;n=g+48|0;o=g+16|0;p=g+12|0;q=g+8|0;c[j>>2]=a;c[k>>2]=b;b=m;c[b>>2]=e;c[b+4>>2]=f;if(!(c[k>>2]|0)){c[i>>2]=-32;r=c[i>>2]|0;l=g;return r|0;}f=n;b=(c[j>>2]|0)+12|0;e=f+104|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0;}while((f|0)<(e|0));a=n+4|0;Io(o,c[k>>2]|0);c[a>>2]=c[o>>2];c[a+4>>2]=c[o+4>>2];c[a+8>>2]=c[o+8>>2];c[a+12>>2]=c[o+12>>2];c[a+16>>2]=c[o+16>>2];c[a+20>>2]=c[o+20>>2];c[a+24>>2]=c[o+24>>2];o=m;if((c[o>>2]|0)!=-1?1:(c[o+4>>2]|0)!=-1){o=m;a=c[o+4>>2]|0;s=a>>>0<0|(a|0)==0&(c[o>>2]|0)>>>0<524288;o=m;a=c[o+4>>2]|0;a=s?c[o>>2]|0:524288;c[p>>2]=a;if((c[p>>2]|0)>>>0>1)t=(uj((c[p>>2]|0)-1|0)|0)+1|0;else t=1;c[q>>2]=t;c[n+4>>2]=(c[n+4>>2]|0)>>>0>(c[q>>2]|0)>>>0?c[n+4>>2]|0:c[q>>2]|0;}q=n+32|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];d=c[j>>2]|0;j=c[k>>2]|0;k=m;m=c[k>>2]|0;q=c[k+4>>2]|0;f=h;b=n;e=f+104|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0;}while((f|0)<(e|0));c[i>>2]=xo(d,0,0,0,j,h,m,q,0)|0;r=c[i>>2]|0;l=g;return r|0;}function hy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;g=l;l=l+112|0;h=g+100|0;i=g+96|0;j=g+92|0;k=g+88|0;m=g+84|0;n=g+80|0;o=g+76|0;p=g+72|0;q=g+68|0;r=g+64|0;s=g+60|0;t=g+56|0;u=g+52|0;v=g+48|0;w=g+44|0;x=g+40|0;y=g+36|0;z=g+32|0;A=g+28|0;B=g+24|0;C=g+20|0;D=g+16|0;E=g+12|0;F=g+8|0;G=g+4|0;H=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=c[o>>2];c[q>>2]=(c[o>>2]|0)+(c[c[n>>2]>>2]|0);c[r>>2]=c[j>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[r>>2]|0)+(c[c[k>>2]>>2]|0);c[u>>2]=1;a:while(1){if(!(c[u>>2]|0)){I=48;break;}switch(c[(c[i>>2]|0)+80>>2]|0){case 0:{I=4;break a;break;}case 1:{c[v>>2]=yq((c[i>>2]|0)+8|0,c[m>>2]|0,c[c[n>>2]>>2]|0)|0;j=(mr(c[v>>2]|0)|0)!=0;J=c[v>>2]|0;if(j){I=6;break a;}K=c[i>>2]|0;if(J|0){I=8;break a;}c[K+80>>2]=3;break;}case 2:{c[w>>2]=ry((c[i>>2]|0)+84+(c[(c[i>>2]|0)+76>>2]|0)|0,5-(c[(c[i>>2]|0)+76>>2]|0)|0,c[m>>2]|0,c[c[n>>2]>>2]|0)|0;j=(c[i>>2]|0)+76|0;c[j>>2]=(c[j>>2]|0)+(c[w>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[w>>2]|0);c[w>>2]=yq((c[i>>2]|0)+8|0,(c[i>>2]|0)+84|0,c[(c[i>>2]|0)+76>>2]|0)|0;j=(mr(c[w>>2]|0)|0)!=0;L=c[w>>2]|0;if(j){I=11;break a;}if(L|0){I=13;break a;}else I=14;break;}case 3:{I=14;break;}case 4:{I=23;break;}case 5:{I=33;break;}case 6:{I=42;break;}default:{I=46;break a;}}do{if((I|0)==14){I=0;c[x>>2]=1<<c[(c[i>>2]|0)+8+8>>2];c[y>>2]=131072;if((c[(c[i>>2]|0)+52>>2]|0)>>>0<(c[y>>2]|0)>>>0?(Dy(c[(c[i>>2]|0)+48>>2]|0),c[(c[i>>2]|0)+52>>2]=c[y>>2],j=Cy(c[y>>2]|0)|0,c[(c[i>>2]|0)+48>>2]=j,(c[(c[i>>2]|0)+48>>2]|0)==0):0){I=16;break a;}if((c[(c[i>>2]|0)+64>>2]|0)>>>0<(c[x>>2]|0)>>>0?(Dy(c[(c[i>>2]|0)+60>>2]|0),c[(c[i>>2]|0)+64>>2]=c[x>>2],j=Cy(c[x>>2]|0)|0,c[(c[i>>2]|0)+60>>2]=j,(c[(c[i>>2]|0)+60>>2]|0)==0):0){I=19;break a;}j=c[i>>2]|0;if(c[(c[i>>2]|0)+76>>2]|0){mE(c[j+48>>2]|0,(c[i>>2]|0)+84|0,c[(c[i>>2]|0)+76>>2]|0)|0;c[(c[i>>2]|0)+56>>2]=c[(c[i>>2]|0)+76>>2];c[(c[i>>2]|0)+76>>2]=0;c[(c[i>>2]|0)+80>>2]=5;break;}else{c[j+80>>2]=4;I=23;break;}}}while(0);do{if((I|0)==23){I=0;c[z>>2]=sy(c[c[i>>2]>>2]|0)|0;if(!(c[z>>2]|0)){c[(c[i>>2]|0)+80>>2]=0;c[u>>2]=0;break;}if(((c[q>>2]|0)-(c[p>>2]|0)|0)>>>0<(c[z>>2]|0)>>>0){if((c[p>>2]|0)==(c[q>>2]|0)){c[u>>2]=0;break;}else{c[(c[i>>2]|0)+80>>2]=5;I=33;break;}}else{c[A>>2]=ty(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+60>>2]|0)+(c[(c[i>>2]|0)+68>>2]|0)|0,(c[(c[i>>2]|0)+64>>2]|0)-(c[(c[i>>2]|0)+68>>2]|0)|0,c[p>>2]|0,c[z>>2]|0)|0;if(mr(c[A>>2]|0)|0){I=27;break a;}c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0);if(!(c[A>>2]|0))break;c[(c[i>>2]|0)+72>>2]=(c[(c[i>>2]|0)+68>>2]|0)+(c[A>>2]|0);c[(c[i>>2]|0)+80>>2]=6;break;}}}while(0);do{if((I|0)==33){I=0;c[B>>2]=sy(c[c[i>>2]>>2]|0)|0;c[C>>2]=(c[B>>2]|0)-(c[(c[i>>2]|0)+56>>2]|0);if((c[C>>2]|0)>>>0>((c[(c[i>>2]|0)+52>>2]|0)-(c[(c[i>>2]|0)+56>>2]|0)|0)>>>0){I=34;break a;}c[D>>2]=ry((c[(c[i>>2]|0)+48>>2]|0)+(c[(c[i>>2]|0)+56>>2]|0)|0,c[C>>2]|0,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;c[p>>2]=(c[p>>2]|0)+(c[D>>2]|0);j=(c[i>>2]|0)+56|0;c[j>>2]=(c[j>>2]|0)+(c[D>>2]|0);if((c[D>>2]|0)>>>0<(c[C>>2]|0)>>>0){c[u>>2]=0;break;}c[E>>2]=ty(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+60>>2]|0)+(c[(c[i>>2]|0)+68>>2]|0)|0,(c[(c[i>>2]|0)+64>>2]|0)-(c[(c[i>>2]|0)+68>>2]|0)|0,c[(c[i>>2]|0)+48>>2]|0,c[B>>2]|0)|0;if(mr(c[E>>2]|0)|0){I=38;break a;}c[(c[i>>2]|0)+56>>2]=0;j=c[i>>2]|0;if(c[E>>2]|0){c[(c[i>>2]|0)+72>>2]=(c[j+68>>2]|0)+(c[E>>2]|0);c[(c[i>>2]|0)+80>>2]=6;I=42;break;}else{c[j+80>>2]=4;break;}}}while(0);do{if((I|0)==42){I=0;c[F>>2]=(c[(c[i>>2]|0)+72>>2]|0)-(c[(c[i>>2]|0)+68>>2]|0);c[G>>2]=ry(c[s>>2]|0,(c[t>>2]|0)-(c[s>>2]|0)|0,(c[(c[i>>2]|0)+60>>2]|0)+(c[(c[i>>2]|0)+68>>2]|0)|0,c[F>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[G>>2]|0);j=(c[i>>2]|0)+68|0;c[j>>2]=(c[j>>2]|0)+(c[G>>2]|0);if((c[G>>2]|0)!=(c[F>>2]|0)){c[u>>2]=0;break;}c[(c[i>>2]|0)+80>>2]=4;if(((c[(c[i>>2]|0)+68>>2]|0)+131072|0)>>>0>(c[(c[i>>2]|0)+64>>2]|0)>>>0){c[(c[i>>2]|0)+72>>2]=0;c[(c[i>>2]|0)+68>>2]=0;}}}while(0);}switch(I|0){case 4:{c[h>>2]=-62;M=c[h>>2]|0;l=g;return M|0;}case 6:{c[h>>2]=J;M=c[h>>2]|0;l=g;return M|0;}case 8:{mE(K+84+(c[(c[i>>2]|0)+76>>2]|0)|0,c[m>>2]|0,c[c[n>>2]>>2]|0)|0;m=(c[i>>2]|0)+76|0;c[m>>2]=(c[m>>2]|0)+(c[c[n>>2]>>2]|0);c[c[k>>2]>>2]=0;c[(c[i>>2]|0)+80>>2]=2;c[h>>2]=(c[v>>2]|0)-(c[(c[i>>2]|0)+76>>2]|0);M=c[h>>2]|0;l=g;return M|0;}case 11:{c[h>>2]=L;M=c[h>>2]|0;l=g;return M|0;}case 13:{c[c[k>>2]>>2]=0;c[h>>2]=(c[w>>2]|0)-(c[(c[i>>2]|0)+76>>2]|0);M=c[h>>2]|0;l=g;return M|0;}case 16:{c[h>>2]=-64;M=c[h>>2]|0;l=g;return M|0;}case 19:{c[h>>2]=-64;M=c[h>>2]|0;l=g;return M|0;}case 27:{c[h>>2]=c[A>>2];M=c[h>>2]|0;l=g;return M|0;}case 34:{c[h>>2]=-20;M=c[h>>2]|0;l=g;return M|0;}case 38:{c[h>>2]=c[E>>2];M=c[h>>2]|0;l=g;return M|0;}case 46:{c[h>>2]=-1;M=c[h>>2]|0;l=g;return M|0;}case 48:{c[c[n>>2]>>2]=(c[p>>2]|0)-(c[o>>2]|0);c[c[k>>2]>>2]=(c[s>>2]|0)-(c[r>>2]|0);c[H>>2]=sy(c[c[i>>2]>>2]|0)|0;if((c[H>>2]|0)>>>0>3)c[H>>2]=(c[H>>2]|0)+3;c[H>>2]=(c[H>>2]|0)-(c[(c[i>>2]|0)+56>>2]|0);c[h>>2]=c[H>>2];M=c[h>>2]|0;l=g;return M|0;}}return 0;}function iy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+128|0;h=g+116|0;i=g+112|0;j=g+108|0;k=g+104|0;m=g+100|0;n=g+96|0;o=g+92|0;p=g+88|0;q=g+84|0;r=g+80|0;s=g+76|0;t=g+72|0;u=g+68|0;v=g+64|0;w=g+60|0;x=g+56|0;y=g+52|0;z=g+48|0;A=g+44|0;B=g+40|0;C=g+36|0;D=g+32|0;E=g+28|0;F=g+24|0;G=g+20|0;H=g+16|0;I=g+12|0;J=g+8|0;K=g+4|0;L=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=(c[o>>2]|0)+(c[c[n>>2]>>2]|0);c[q>>2]=c[o>>2];c[r>>2]=c[j>>2];c[s>>2]=(c[r>>2]|0)+(c[c[k>>2]>>2]|0);c[t>>2]=c[r>>2];c[u>>2]=1;a:while(1){if(!(c[u>>2]|0)){M=50;break;}b:do{switch(c[(c[i>>2]|0)+24>>2]|0){case 0:{M=4;break a;break;}case 1:{c[v>>2]=zq((c[i>>2]|0)+8|0,(c[i>>2]|0)+60|0,c[(c[i>>2]|0)+76>>2]|0)|0;if(c[v>>2]|0){c[w>>2]=(c[v>>2]|0)-(c[(c[i>>2]|0)+76>>2]|0);if(jr(c[v>>2]|0)|0){M=7;break a;}N=(c[i>>2]|0)+60+(c[(c[i>>2]|0)+76>>2]|0)|0;O=c[q>>2]|0;if((c[w>>2]|0)>>>0>((c[p>>2]|0)-(c[q>>2]|0)|0)>>>0){M=9;break a;}mE(N|0,O|0,c[w>>2]|0)|0;c[(c[i>>2]|0)+76>>2]=c[v>>2];c[q>>2]=(c[q>>2]|0)+(c[w>>2]|0);break b;}c[x>>2]=oy(c[c[i>>2]>>2]|0)|0;c[y>>2]=py(c[c[i>>2]>>2]|0,0,0,(c[i>>2]|0)+60|0,c[x>>2]|0)|0;if(jr(c[y>>2]|0)|0){M=12;break a;}if((c[x>>2]|0)>>>0<(c[(c[i>>2]|0)+76>>2]|0)>>>0?(c[z>>2]=oy(c[c[i>>2]>>2]|0)|0,c[A>>2]=py(c[c[i>>2]>>2]|0,0,0,(c[i>>2]|0)+60+(c[x>>2]|0)|0,c[z>>2]|0)|0,jr(c[A>>2]|0)|0):0){M=15;break a;}if((1<<c[(c[i>>2]|0)+8+8>>2]|0)<131072)P=1<<c[(c[i>>2]|0)+8+8>>2];else P=131072;c[B>>2]=P;c[(c[i>>2]|0)+56>>2]=c[B>>2];if((c[(c[i>>2]|0)+32>>2]|0)>>>0<(c[B>>2]|0)>>>0?(Dy(c[(c[i>>2]|0)+28>>2]|0),c[(c[i>>2]|0)+32>>2]=c[B>>2],j=Cy(c[B>>2]|0)|0,c[(c[i>>2]|0)+28>>2]=j,(c[(c[i>>2]|0)+28>>2]|0)==0):0){M=20;break a;}c[C>>2]=(1<<c[(c[i>>2]|0)+8+8>>2])+(c[B>>2]|0)+16;if((c[(c[i>>2]|0)+44>>2]|0)>>>0<(c[C>>2]|0)>>>0?(Dy(c[(c[i>>2]|0)+40>>2]|0),c[(c[i>>2]|0)+44>>2]=c[C>>2],j=Cy(c[C>>2]|0)|0,c[(c[i>>2]|0)+40>>2]=j,(c[(c[i>>2]|0)+40>>2]|0)==0):0){M=23;break a;}c[(c[i>>2]|0)+24>>2]=2;M=25;break;}case 2:{M=25;break;}case 3:{M=35;break;}case 4:{M=44;break;}default:{M=48;break a;}}}while(0);do{if((M|0)==25){M=0;c[D>>2]=oy(c[c[i>>2]>>2]|0)|0;if(!(c[D>>2]|0)){c[(c[i>>2]|0)+24>>2]=0;c[u>>2]=0;break;}if(((c[p>>2]|0)-(c[q>>2]|0)|0)>>>0<(c[D>>2]|0)>>>0){if((c[q>>2]|0)==(c[p>>2]|0)){c[u>>2]=0;break;}else{c[(c[i>>2]|0)+24>>2]=3;M=35;break;}}else{c[E>>2]=py(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+40>>2]|0)+(c[(c[i>>2]|0)+48>>2]|0)|0,(c[(c[i>>2]|0)+44>>2]|0)-(c[(c[i>>2]|0)+48>>2]|0)|0,c[q>>2]|0,c[D>>2]|0)|0;if(jr(c[E>>2]|0)|0){M=29;break a;}c[q>>2]=(c[q>>2]|0)+(c[D>>2]|0);if(!(c[E>>2]|0))break;c[(c[i>>2]|0)+52>>2]=(c[(c[i>>2]|0)+48>>2]|0)+(c[E>>2]|0);c[(c[i>>2]|0)+24>>2]=4;break;}}}while(0);do{if((M|0)==35){M=0;c[F>>2]=oy(c[c[i>>2]>>2]|0)|0;c[G>>2]=(c[F>>2]|0)-(c[(c[i>>2]|0)+36>>2]|0);if((c[G>>2]|0)>>>0>((c[(c[i>>2]|0)+32>>2]|0)-(c[(c[i>>2]|0)+36>>2]|0)|0)>>>0){M=36;break a;}c[H>>2]=qy((c[(c[i>>2]|0)+28>>2]|0)+(c[(c[i>>2]|0)+36>>2]|0)|0,c[G>>2]|0,c[q>>2]|0,(c[p>>2]|0)-(c[q>>2]|0)|0)|0;c[q>>2]=(c[q>>2]|0)+(c[H>>2]|0);j=(c[i>>2]|0)+36|0;c[j>>2]=(c[j>>2]|0)+(c[H>>2]|0);if((c[H>>2]|0)>>>0<(c[G>>2]|0)>>>0){c[u>>2]=0;break;}c[I>>2]=py(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+40>>2]|0)+(c[(c[i>>2]|0)+48>>2]|0)|0,(c[(c[i>>2]|0)+44>>2]|0)-(c[(c[i>>2]|0)+48>>2]|0)|0,c[(c[i>>2]|0)+28>>2]|0,c[F>>2]|0)|0;if(jr(c[I>>2]|0)|0){M=40;break a;}c[(c[i>>2]|0)+36>>2]=0;j=c[i>>2]|0;if(c[I>>2]|0){c[(c[i>>2]|0)+52>>2]=(c[j+48>>2]|0)+(c[I>>2]|0);c[(c[i>>2]|0)+24>>2]=4;M=44;break;}else{c[j+24>>2]=2;break;}}}while(0);do{if((M|0)==44){M=0;c[J>>2]=(c[(c[i>>2]|0)+52>>2]|0)-(c[(c[i>>2]|0)+48>>2]|0);c[K>>2]=qy(c[t>>2]|0,(c[s>>2]|0)-(c[t>>2]|0)|0,(c[(c[i>>2]|0)+40>>2]|0)+(c[(c[i>>2]|0)+48>>2]|0)|0,c[J>>2]|0)|0;c[t>>2]=(c[t>>2]|0)+(c[K>>2]|0);j=(c[i>>2]|0)+48|0;c[j>>2]=(c[j>>2]|0)+(c[K>>2]|0);if((c[K>>2]|0)!=(c[J>>2]|0)){c[u>>2]=0;break;}c[(c[i>>2]|0)+24>>2]=2;if(((c[(c[i>>2]|0)+48>>2]|0)+(c[(c[i>>2]|0)+56>>2]|0)|0)>>>0>(c[(c[i>>2]|0)+44>>2]|0)>>>0){c[(c[i>>2]|0)+52>>2]=0;c[(c[i>>2]|0)+48>>2]=0;}}}while(0);}switch(M|0){case 4:{c[h>>2]=-62;Q=c[h>>2]|0;l=g;return Q|0;}case 7:{c[h>>2]=c[v>>2];Q=c[h>>2]|0;l=g;return Q|0;}case 9:{mE(N|0,O|0,(c[p>>2]|0)-(c[q>>2]|0)|0)|0;O=(c[i>>2]|0)+76|0;c[O>>2]=(c[O>>2]|0)+((c[p>>2]|0)-(c[q>>2]|0));c[q>>2]=c[p>>2];c[u>>2]=0;c[c[k>>2]>>2]=0;c[h>>2]=(c[v>>2]|0)-(c[(c[i>>2]|0)+76>>2]|0)+3;Q=c[h>>2]|0;l=g;return Q|0;}case 12:{c[h>>2]=c[y>>2];Q=c[h>>2]|0;l=g;return Q|0;}case 15:{c[h>>2]=c[A>>2];Q=c[h>>2]|0;l=g;return Q|0;}case 20:{c[h>>2]=-64;Q=c[h>>2]|0;l=g;return Q|0;}case 23:{c[h>>2]=-64;Q=c[h>>2]|0;l=g;return Q|0;}case 29:{c[h>>2]=c[E>>2];Q=c[h>>2]|0;l=g;return Q|0;}case 36:{c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}case 40:{c[h>>2]=c[I>>2];Q=c[h>>2]|0;l=g;return Q|0;}case 48:{c[h>>2]=-1;Q=c[h>>2]|0;l=g;return Q|0;}case 50:{c[c[n>>2]>>2]=(c[q>>2]|0)-(c[o>>2]|0);c[c[k>>2]>>2]=(c[t>>2]|0)-(c[r>>2]|0);c[L>>2]=oy(c[c[i>>2]>>2]|0)|0;if((c[L>>2]|0)>>>0>3)c[L>>2]=(c[L>>2]|0)+3;c[L>>2]=(c[L>>2]|0)-(c[(c[i>>2]|0)+36>>2]|0);c[h>>2]=c[L>>2];Q=c[h>>2]|0;l=g;return Q|0;}}return 0;}function jy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;g=l;l=l+128|0;h=g+124|0;i=g+120|0;j=g+116|0;k=g+112|0;m=g+108|0;n=g+104|0;o=g+100|0;p=g+96|0;q=g+92|0;r=g+88|0;s=g+84|0;t=g+80|0;u=g+76|0;v=g+72|0;w=g+68|0;x=g+64|0;y=g+60|0;z=g+56|0;A=g+52|0;B=g+48|0;C=g+44|0;D=g+40|0;E=g+36|0;F=g+32|0;G=g+28|0;H=g+24|0;I=g+20|0;J=g+16|0;K=g+12|0;L=g+8|0;M=g+4|0;N=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=(c[o>>2]|0)+(c[c[n>>2]>>2]|0);c[q>>2]=c[o>>2];c[r>>2]=c[j>>2];c[s>>2]=(c[r>>2]|0)+(c[c[k>>2]>>2]|0);c[t>>2]=c[r>>2];c[u>>2]=1;a:while(1){if(!(c[u>>2]|0)){O=54;break;}b:do{switch(c[(c[i>>2]|0)+32>>2]|0){case 0:{O=4;break a;break;}case 1:{c[v>>2]=Aq((c[i>>2]|0)+8|0,(c[i>>2]|0)+68|0,c[(c[i>>2]|0)+88>>2]|0)|0;j=(hr(c[v>>2]|0)|0)!=0;P=c[v>>2]|0;if(j){O=6;break a;}if(P|0){c[w>>2]=(c[v>>2]|0)-(c[(c[i>>2]|0)+88>>2]|0);Q=(c[i>>2]|0)+68+(c[(c[i>>2]|0)+88>>2]|0)|0;R=c[q>>2]|0;if((c[w>>2]|0)>>>0>((c[p>>2]|0)-(c[q>>2]|0)|0)>>>0){O=9;break a;}mE(Q|0,R|0,c[w>>2]|0)|0;c[(c[i>>2]|0)+88>>2]=c[v>>2];c[q>>2]=(c[q>>2]|0)+(c[w>>2]|0);break b;}c[x>>2]=ky(c[c[i>>2]>>2]|0)|0;c[y>>2]=ly(c[c[i>>2]>>2]|0,0,0,(c[i>>2]|0)+68|0,c[x>>2]|0)|0;if(hr(c[y>>2]|0)|0){O=12;break a;}if((c[x>>2]|0)>>>0<(c[(c[i>>2]|0)+88>>2]|0)>>>0?(c[z>>2]=ky(c[c[i>>2]>>2]|0)|0,c[A>>2]=ly(c[c[i>>2]>>2]|0,0,0,(c[i>>2]|0)+68+(c[x>>2]|0)|0,c[z>>2]|0)|0,hr(c[A>>2]|0)|0):0){O=15;break a;}if((c[(c[i>>2]|0)+8+8>>2]|0)>>>0>1024)S=c[(c[i>>2]|0)+8+8>>2]|0;else S=1024;c[(c[i>>2]|0)+8+8>>2]=S;if((c[(c[i>>2]|0)+8+8>>2]|0)>>>0<131072)T=c[(c[i>>2]|0)+8+8>>2]|0;else T=131072;c[B>>2]=T;c[(c[i>>2]|0)+64>>2]=c[B>>2];if((c[(c[i>>2]|0)+40>>2]|0)>>>0<(c[B>>2]|0)>>>0?(xc[c[(c[i>>2]|0)+92+4>>2]&31](c[(c[i>>2]|0)+92+8>>2]|0,c[(c[i>>2]|0)+36>>2]|0),c[(c[i>>2]|0)+40>>2]=c[B>>2],j=qc[c[(c[i>>2]|0)+92>>2]&63](c[(c[i>>2]|0)+92+8>>2]|0,c[B>>2]|0)|0,c[(c[i>>2]|0)+36>>2]=j,(c[(c[i>>2]|0)+36>>2]|0)==0):0){O=22;break a;}c[C>>2]=(c[(c[i>>2]|0)+8+8>>2]|0)+(c[B>>2]|0)+16;if((c[(c[i>>2]|0)+52>>2]|0)>>>0<(c[C>>2]|0)>>>0?(xc[c[(c[i>>2]|0)+92+4>>2]&31](c[(c[i>>2]|0)+92+8>>2]|0,c[(c[i>>2]|0)+48>>2]|0),c[(c[i>>2]|0)+52>>2]=c[C>>2],j=qc[c[(c[i>>2]|0)+92>>2]&63](c[(c[i>>2]|0)+92+8>>2]|0,c[C>>2]|0)|0,c[(c[i>>2]|0)+48>>2]=j,(c[(c[i>>2]|0)+48>>2]|0)==0):0){O=25;break a;}c[(c[i>>2]|0)+32>>2]=2;O=27;break;}case 2:{O=27;break;}case 3:{O=39;break;}case 4:{O=48;break;}default:{O=52;break a;}}}while(0);do{if((O|0)==27){O=0;c[D>>2]=ky(c[c[i>>2]>>2]|0)|0;if(!(c[D>>2]|0)){c[(c[i>>2]|0)+32>>2]=0;c[u>>2]=0;break;}if(((c[p>>2]|0)-(c[q>>2]|0)|0)>>>0<(c[D>>2]|0)>>>0)if((c[q>>2]|0)==(c[p>>2]|0)){c[u>>2]=0;break;}else{c[(c[i>>2]|0)+32>>2]=3;O=39;break;}c[E>>2]=my(c[c[i>>2]>>2]|0)|0;if(c[E>>2]|0)U=0;else U=(c[(c[i>>2]|0)+52>>2]|0)-(c[(c[i>>2]|0)+56>>2]|0)|0;c[F>>2]=ly(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+48>>2]|0)+(c[(c[i>>2]|0)+56>>2]|0)|0,U,c[q>>2]|0,c[D>>2]|0)|0;if(hr(c[F>>2]|0)|0){O=33;break a;}c[q>>2]=(c[q>>2]|0)+(c[D>>2]|0);if((c[F>>2]|0)!=0|(c[E>>2]|0)!=0){c[(c[i>>2]|0)+60>>2]=(c[(c[i>>2]|0)+56>>2]|0)+(c[F>>2]|0);c[(c[i>>2]|0)+32>>2]=4;}}}while(0);do{if((O|0)==39){O=0;c[G>>2]=ky(c[c[i>>2]>>2]|0)|0;c[H>>2]=(c[G>>2]|0)-(c[(c[i>>2]|0)+44>>2]|0);if((c[H>>2]|0)>>>0>((c[(c[i>>2]|0)+40>>2]|0)-(c[(c[i>>2]|0)+44>>2]|0)|0)>>>0){O=40;break a;}c[I>>2]=ny((c[(c[i>>2]|0)+36>>2]|0)+(c[(c[i>>2]|0)+44>>2]|0)|0,c[H>>2]|0,c[q>>2]|0,(c[p>>2]|0)-(c[q>>2]|0)|0)|0;c[q>>2]=(c[q>>2]|0)+(c[I>>2]|0);j=(c[i>>2]|0)+44|0;c[j>>2]=(c[j>>2]|0)+(c[I>>2]|0);if((c[I>>2]|0)>>>0<(c[H>>2]|0)>>>0){c[u>>2]=0;break;}c[J>>2]=my(c[c[i>>2]>>2]|0)|0;c[K>>2]=ly(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+48>>2]|0)+(c[(c[i>>2]|0)+56>>2]|0)|0,(c[(c[i>>2]|0)+52>>2]|0)-(c[(c[i>>2]|0)+56>>2]|0)|0,c[(c[i>>2]|0)+36>>2]|0,c[G>>2]|0)|0;if(hr(c[K>>2]|0)|0){O=44;break a;}c[(c[i>>2]|0)+44>>2]=0;j=c[i>>2]|0;if((c[K>>2]|0)!=0|(c[J>>2]|0)!=0){c[(c[i>>2]|0)+60>>2]=(c[j+56>>2]|0)+(c[K>>2]|0);c[(c[i>>2]|0)+32>>2]=4;O=48;break;}else{c[j+32>>2]=2;break;}}}while(0);do{if((O|0)==48){O=0;c[L>>2]=(c[(c[i>>2]|0)+60>>2]|0)-(c[(c[i>>2]|0)+56>>2]|0);c[M>>2]=ny(c[t>>2]|0,(c[s>>2]|0)-(c[t>>2]|0)|0,(c[(c[i>>2]|0)+48>>2]|0)+(c[(c[i>>2]|0)+56>>2]|0)|0,c[L>>2]|0)|0;c[t>>2]=(c[t>>2]|0)+(c[M>>2]|0);j=(c[i>>2]|0)+56|0;c[j>>2]=(c[j>>2]|0)+(c[M>>2]|0);if((c[M>>2]|0)!=(c[L>>2]|0)){c[u>>2]=0;break;}c[(c[i>>2]|0)+32>>2]=2;if(((c[(c[i>>2]|0)+56>>2]|0)+(c[(c[i>>2]|0)+64>>2]|0)|0)>>>0>(c[(c[i>>2]|0)+52>>2]|0)>>>0){c[(c[i>>2]|0)+60>>2]=0;c[(c[i>>2]|0)+56>>2]=0;}}}while(0);}switch(O|0){case 4:{c[h>>2]=-62;V=c[h>>2]|0;l=g;return V|0;}case 6:{c[h>>2]=P;V=c[h>>2]|0;l=g;return V|0;}case 9:{mE(Q|0,R|0,(c[p>>2]|0)-(c[q>>2]|0)|0)|0;R=(c[i>>2]|0)+88|0;c[R>>2]=(c[R>>2]|0)+((c[p>>2]|0)-(c[q>>2]|0));c[c[k>>2]>>2]=0;c[h>>2]=(c[v>>2]|0)-(c[(c[i>>2]|0)+88>>2]|0)+3;V=c[h>>2]|0;l=g;return V|0;}case 12:{c[h>>2]=c[y>>2];V=c[h>>2]|0;l=g;return V|0;}case 15:{c[h>>2]=c[A>>2];V=c[h>>2]|0;l=g;return V|0;}case 22:{c[h>>2]=-64;V=c[h>>2]|0;l=g;return V|0;}case 25:{c[h>>2]=-64;V=c[h>>2]|0;l=g;return V|0;}case 33:{c[h>>2]=c[F>>2];V=c[h>>2]|0;l=g;return V|0;}case 40:{c[h>>2]=-20;V=c[h>>2]|0;l=g;return V|0;}case 44:{c[h>>2]=c[K>>2];V=c[h>>2]|0;l=g;return V|0;}case 52:{c[h>>2]=-1;V=c[h>>2]|0;l=g;return V|0;}case 54:{c[c[n>>2]>>2]=(c[q>>2]|0)-(c[o>>2]|0);c[c[k>>2]>>2]=(c[t>>2]|0)-(c[r>>2]|0);c[N>>2]=ky(c[c[i>>2]>>2]|0)|0;c[N>>2]=(c[N>>2]|0)-(c[(c[i>>2]|0)+44>>2]|0);c[h>>2]=c[N>>2];V=c[h>>2]|0;l=g;return V|0;}}return 0;}function ky(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+21536>>2]|0;}function ly(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0;i=l;l=l+80|0;j=i+64|0;k=i+60|0;m=i+56|0;n=i+52|0;o=i+48|0;p=i+44|0;q=i+40|0;r=i+32|0;s=i+24|0;t=i;u=i+20|0;v=i+16|0;w=i+12|0;x=i+8|0;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;if((c[p>>2]|0)!=(c[(c[k>>2]|0)+21536>>2]|0)){c[j>>2]=-72;z=c[j>>2]|0;l=i;return z|0;}if(c[n>>2]|0)us(c[k>>2]|0,c[m>>2]|0);a:do{switch(c[(c[k>>2]|0)+21580>>2]|0){case 0:{if((c[p>>2]|0)!=5){c[j>>2]=-72;z=c[j>>2]|0;l=i;return z|0;}if(((Bq(c[o>>2]|0)|0)&-16|0)==407710288){h=(c[k>>2]|0)+152788|0;g=c[o>>2]|0;a[h>>0]=a[g>>0]|0;a[h+1>>0]=a[g+1>>0]|0;a[h+2>>0]=a[g+2>>0]|0;a[h+3>>0]=a[g+3>>0]|0;a[h+4>>0]=a[g+4>>0]|0;c[(c[k>>2]|0)+21536>>2]=3;c[(c[k>>2]|0)+21580>>2]=4;c[j>>2]=0;z=c[j>>2]|0;l=i;return z|0;}g=Cq(c[o>>2]|0,5)|0;c[(c[k>>2]|0)+21680>>2]=g;g=(hr(c[(c[k>>2]|0)+21680>>2]|0)|0)!=0;h=c[k>>2]|0;if(g){c[j>>2]=c[h+21680>>2];z=c[j>>2]|0;l=i;return z|0;}g=h+152788|0;h=c[o>>2]|0;a[g>>0]=a[h>>0]|0;a[g+1>>0]=a[h+1>>0]|0;a[g+2>>0]=a[h+2>>0]|0;a[g+3>>0]=a[h+3>>0]|0;a[g+4>>0]=a[h+4>>0]|0;h=c[k>>2]|0;if((c[(c[k>>2]|0)+21680>>2]|0)>>>0<=5){c[h+21536>>2]=0;break a;}c[(c[k>>2]|0)+21536>>2]=(c[h+21680>>2]|0)-5;c[(c[k>>2]|0)+21580>>2]=1;c[j>>2]=0;z=c[j>>2]|0;l=i;return z|0;}case 1:break;case 2:{c[s>>2]=ir(c[o>>2]|0,3,r)|0;if(hr(c[s>>2]|0)|0){c[j>>2]=c[s>>2];z=c[j>>2]|0;l=i;return z|0;}if((c[r>>2]|0)==3){if(c[(c[k>>2]|0)+21552+16>>2]|0?(h=Oh((c[k>>2]|0)+21592|0)|0,g=t,c[g>>2]=h,c[g+4>>2]=y,g=t,h=iE(c[g>>2]|0,c[g+4>>2]|0,11)|0,c[u>>2]=h&4194303,c[v>>2]=c[o>>2],c[w>>2]=(d[(c[v>>2]|0)+2>>0]|0)+((d[(c[v>>2]|0)+1>>0]|0)<<8)+(((d[c[v>>2]>>0]|0)&63)<<16),(c[w>>2]|0)!=(c[u>>2]|0)):0){c[j>>2]=-22;z=c[j>>2]|0;l=i;return z|0;}c[(c[k>>2]|0)+21536>>2]=0;c[(c[k>>2]|0)+21580>>2]=0;}else{c[(c[k>>2]|0)+21536>>2]=c[s>>2];c[(c[k>>2]|0)+21576>>2]=c[r>>2];c[(c[k>>2]|0)+21580>>2]=3;}c[j>>2]=0;z=c[j>>2]|0;l=i;return z|0;}case 3:{switch(c[(c[k>>2]|0)+21576>>2]|0){case 0:{c[x>>2]=xs(c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;break;}case 1:{c[x>>2]=ys(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;break;}case 2:{c[j>>2]=-1;z=c[j>>2]|0;l=i;return z|0;}case 3:{c[x>>2]=0;break;}default:{c[j>>2]=-1;z=c[j>>2]|0;l=i;return z|0;}}c[(c[k>>2]|0)+21580>>2]=2;c[(c[k>>2]|0)+21536>>2]=3;c[(c[k>>2]|0)+21520>>2]=(c[m>>2]|0)+(c[x>>2]|0);if(hr(c[x>>2]|0)|0){c[j>>2]=c[x>>2];z=c[j>>2]|0;l=i;return z|0;}if(c[(c[k>>2]|0)+21552+16>>2]|0)Nh((c[k>>2]|0)+21592|0,c[m>>2]|0,c[x>>2]|0)|0;c[j>>2]=c[x>>2];z=c[j>>2]|0;l=i;return z|0;}case 4:{mE((c[k>>2]|0)+152788+5|0,c[o>>2]|0,c[(c[k>>2]|0)+21536>>2]|0)|0;h=Bq((c[k>>2]|0)+152788+4|0)|0;c[(c[k>>2]|0)+21536>>2]=h;c[(c[k>>2]|0)+21580>>2]=5;c[j>>2]=0;z=c[j>>2]|0;l=i;return z|0;}case 5:{c[(c[k>>2]|0)+21536>>2]=0;c[(c[k>>2]|0)+21580>>2]=0;c[j>>2]=0;z=c[j>>2]|0;l=i;return z|0;}default:{c[j>>2]=-1;z=c[j>>2]|0;l=i;return z|0;}}}while(0);mE((c[k>>2]|0)+152788+5|0,c[o>>2]|0,c[(c[k>>2]|0)+21536>>2]|0)|0;c[q>>2]=ws(c[k>>2]|0,(c[k>>2]|0)+152788|0,c[(c[k>>2]|0)+21680>>2]|0)|0;if(hr(c[q>>2]|0)|0){c[j>>2]=c[q>>2];z=c[j>>2]|0;l=i;return z|0;}else{c[(c[k>>2]|0)+21536>>2]=3;c[(c[k>>2]|0)+21580>>2]=2;c[j>>2]=0;z=c[j>>2]|0;l=i;return z|0;}return 0;}function my(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[(c[d>>2]|0)+21580>>2]|0)==5|0;}function ny(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?c[h>>2]|0:c[j>>2]|0;mE(c[g>>2]|0,c[i>>2]|0,c[k>>2]|0)|0;l=f;return c[k>>2]|0;}function oy(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+21536>>2]|0;}function py(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=l;l=l+48|0;i=h+40|0;j=h+36|0;k=h+32|0;m=h+28|0;n=h+24|0;o=h+20|0;p=h+16|0;q=h+8|0;r=h+4|0;s=h;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;if((c[o>>2]|0)!=(c[(c[j>>2]|0)+21536>>2]|0)){c[i>>2]=-72;t=c[i>>2]|0;l=h;return t|0;}if(c[m>>2]|0)Kt(c[j>>2]|0,c[k>>2]|0);a:do{switch(c[(c[j>>2]|0)+21564>>2]|0){case 0:{if((c[o>>2]|0)!=5){c[i>>2]=-72;t=c[i>>2]|0;l=h;return t|0;}g=Nq(c[n>>2]|0,5)|0;c[(c[j>>2]|0)+21540>>2]=g;g=(jr(c[(c[j>>2]|0)+21540>>2]|0)|0)!=0;f=c[j>>2]|0;if(g){c[i>>2]=c[f+21540>>2];t=c[i>>2]|0;l=h;return t|0;}g=f+152660|0;f=c[n>>2]|0;a[g>>0]=a[f>>0]|0;a[g+1>>0]=a[f+1>>0]|0;a[g+2>>0]=a[f+2>>0]|0;a[g+3>>0]=a[f+3>>0]|0;a[g+4>>0]=a[f+4>>0]|0;f=c[j>>2]|0;if((c[(c[j>>2]|0)+21540>>2]|0)>>>0<=5){c[f+21536>>2]=0;break a;}c[(c[j>>2]|0)+21536>>2]=(c[f+21540>>2]|0)-5;c[(c[j>>2]|0)+21564>>2]=1;c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}case 1:break;case 2:{c[r>>2]=kr(c[n>>2]|0,3,q)|0;if(jr(c[r>>2]|0)|0){c[i>>2]=c[r>>2];t=c[i>>2]|0;l=h;return t|0;}if((c[q>>2]|0)==3){c[(c[j>>2]|0)+21536>>2]=0;c[(c[j>>2]|0)+21564>>2]=0;}else{c[(c[j>>2]|0)+21536>>2]=c[r>>2];c[(c[j>>2]|0)+21560>>2]=c[q>>2];c[(c[j>>2]|0)+21564>>2]=3;}c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}case 3:{switch(c[(c[j>>2]|0)+21560>>2]|0){case 0:{c[s>>2]=Nt(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;break;}case 1:{c[s>>2]=Ot(c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;break;}case 2:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}case 3:{c[s>>2]=0;break;}default:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}}c[(c[j>>2]|0)+21564>>2]=2;c[(c[j>>2]|0)+21536>>2]=3;c[(c[j>>2]|0)+21520>>2]=(c[k>>2]|0)+(c[s>>2]|0);c[i>>2]=c[s>>2];t=c[i>>2]|0;l=h;return t|0;}default:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}}}while(0);mE((c[j>>2]|0)+152660+5|0,c[n>>2]|0,c[(c[j>>2]|0)+21536>>2]|0)|0;c[p>>2]=Mt(c[j>>2]|0,(c[j>>2]|0)+152660|0,c[(c[j>>2]|0)+21540>>2]|0)|0;if(jr(c[p>>2]|0)|0){c[i>>2]=c[p>>2];t=c[i>>2]|0;l=h;return t|0;}else{c[(c[j>>2]|0)+21536>>2]=3;c[(c[j>>2]|0)+21564>>2]=2;c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}return 0;}function qy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?c[h>>2]|0:c[j>>2]|0;mE(c[g>>2]|0,c[i>>2]|0,c[k>>2]|0)|0;l=f;return c[k>>2]|0;}function ry(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?c[h>>2]|0:c[j>>2]|0;mE(c[g>>2]|0,c[i>>2]|0,c[k>>2]|0)|0;l=f;return c[k>>2]|0;}function sy(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+26656>>2]|0;}function ty(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=l;l=l+48|0;i=h+40|0;j=h+36|0;k=h+32|0;m=h+28|0;n=h+24|0;o=h+20|0;p=h+16|0;q=h+8|0;r=h+4|0;s=h;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;if((c[o>>2]|0)!=(c[(c[j>>2]|0)+26656>>2]|0)){c[i>>2]=-72;t=c[i>>2]|0;l=h;return t|0;}Tu(c[j>>2]|0,c[k>>2]|0);a:do{switch(c[(c[j>>2]|0)+26708>>2]|0){case 0:{if((c[o>>2]|0)!=5){c[i>>2]=-72;t=c[i>>2]|0;l=h;return t|0;}g=Vu(c[j>>2]|0,c[n>>2]|0,5)|0;c[(c[j>>2]|0)+26660>>2]=g;g=(mr(c[(c[j>>2]|0)+26660>>2]|0)|0)!=0;f=c[j>>2]|0;if(g){c[i>>2]=c[f+26660>>2];t=c[i>>2]|0;l=h;return t|0;}g=f+157804|0;f=c[n>>2]|0;a[g>>0]=a[f>>0]|0;a[g+1>>0]=a[f+1>>0]|0;a[g+2>>0]=a[f+2>>0]|0;a[g+3>>0]=a[f+3>>0]|0;a[g+4>>0]=a[f+4>>0]|0;if((c[(c[j>>2]|0)+26660>>2]|0)>>>0<=5){c[(c[j>>2]|0)+26656>>2]=0;break a;}c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}case 1:break;case 2:{c[r>>2]=lr(c[n>>2]|0,3,q)|0;if(mr(c[r>>2]|0)|0){c[i>>2]=c[r>>2];t=c[i>>2]|0;l=h;return t|0;}if((c[q>>2]|0)==3){c[(c[j>>2]|0)+26656>>2]=0;c[(c[j>>2]|0)+26708>>2]=0;}else{c[(c[j>>2]|0)+26656>>2]=c[r>>2];c[(c[j>>2]|0)+26704>>2]=c[q>>2];c[(c[j>>2]|0)+26708>>2]=3;}c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}case 3:{switch(c[(c[j>>2]|0)+26704>>2]|0){case 0:{c[s>>2]=Xu(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;break;}case 1:{c[s>>2]=Yu(c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;break;}case 2:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}case 3:{c[s>>2]=0;break;}default:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}}c[(c[j>>2]|0)+26708>>2]=2;c[(c[j>>2]|0)+26656>>2]=3;c[(c[j>>2]|0)+26640>>2]=(c[k>>2]|0)+(c[s>>2]|0);c[i>>2]=c[s>>2];t=c[i>>2]|0;l=h;return t|0;}default:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}}}while(0);c[p>>2]=Wu(c[j>>2]|0,(c[j>>2]|0)+157804|0,c[(c[j>>2]|0)+26660>>2]|0)|0;if(mr(c[p>>2]|0)|0){c[i>>2]=c[p>>2];t=c[i>>2]|0;l=h;return t|0;}else{c[(c[j>>2]|0)+26656>>2]=3;c[(c[j>>2]|0)+26708>>2]=2;c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}return 0;}function uy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;g=l;l=l+112|0;h=g+100|0;i=g+96|0;j=g+92|0;k=g+88|0;m=g+84|0;n=g+80|0;o=g+76|0;p=g+72|0;q=g+68|0;r=g+64|0;s=g+60|0;t=g+56|0;u=g+52|0;v=g+48|0;w=g+44|0;x=g+40|0;y=g+36|0;z=g+32|0;A=g+28|0;B=g+24|0;C=g+20|0;D=g+16|0;E=g+12|0;F=g+8|0;G=g+4|0;H=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=c[o>>2];c[q>>2]=(c[o>>2]|0)+(c[c[n>>2]>>2]|0);c[r>>2]=c[j>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[r>>2]|0)+(c[c[k>>2]>>2]|0);c[u>>2]=1;a:while(1){if(!(c[u>>2]|0)){I=50;break;}switch(c[(c[i>>2]|0)+80>>2]|0){case 0:{I=4;break a;break;}case 1:{c[v>>2]=sx((c[i>>2]|0)+8|0,c[m>>2]|0,c[c[n>>2]>>2]|0)|0;j=(rr(c[v>>2]|0)|0)!=0;J=c[v>>2]|0;if(j){I=6;break a;}K=c[i>>2]|0;if(J|0){I=8;break a;}c[K+80>>2]=3;break;}case 2:{c[w>>2]=vy((c[i>>2]|0)+84+(c[(c[i>>2]|0)+68>>2]|0)|0,5-(c[(c[i>>2]|0)+68>>2]|0)|0,c[m>>2]|0,c[c[n>>2]>>2]|0)|0;j=(c[i>>2]|0)+68|0;c[j>>2]=(c[j>>2]|0)+(c[w>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[w>>2]|0);c[w>>2]=sx((c[i>>2]|0)+8|0,(c[i>>2]|0)+84|0,c[(c[i>>2]|0)+68>>2]|0)|0;j=(rr(c[w>>2]|0)|0)!=0;L=c[w>>2]|0;if(j){I=11;break a;}if(L|0){I=13;break a;}else I=14;break;}case 3:{I=14;break;}case 4:{I=25;break;}case 5:{I=35;break;}case 6:{I=44;break;}default:{I=48;break a;}}do{if((I|0)==14){I=0;c[x>>2]=1<<c[(c[i>>2]|0)+8+8>>2];c[y>>2]=131072;if((c[(c[i>>2]|0)+44>>2]|0)>>>0<131072?(Dy(c[(c[i>>2]|0)+40>>2]|0),c[(c[i>>2]|0)+44>>2]=131072,j=Cy(131072)|0,c[(c[i>>2]|0)+40>>2]=j,(c[(c[i>>2]|0)+40>>2]|0)==0):0){I=16;break a;}if((c[(c[i>>2]|0)+56>>2]|0)>>>0<(c[x>>2]|0)>>>0?(Dy(c[(c[i>>2]|0)+52>>2]|0),c[(c[i>>2]|0)+56>>2]=c[x>>2],j=Cy(c[x>>2]|0)|0,c[(c[i>>2]|0)+52>>2]=j,(c[(c[i>>2]|0)+52>>2]|0)==0):0){I=19;break a;}if(c[(c[i>>2]|0)+76>>2]|0)lw(c[c[i>>2]>>2]|0,c[(c[i>>2]|0)+72>>2]|0,c[(c[i>>2]|0)+76>>2]|0);j=c[i>>2]|0;if(c[(c[i>>2]|0)+68>>2]|0){mE(c[j+40>>2]|0,(c[i>>2]|0)+84|0,c[(c[i>>2]|0)+68>>2]|0)|0;c[(c[i>>2]|0)+48>>2]=c[(c[i>>2]|0)+68>>2];c[(c[i>>2]|0)+68>>2]=0;c[(c[i>>2]|0)+80>>2]=5;break;}else{c[j+80>>2]=4;I=25;break;}}}while(0);do{if((I|0)==25){I=0;c[z>>2]=wy(c[c[i>>2]>>2]|0)|0;if(!(c[z>>2]|0)){c[(c[i>>2]|0)+80>>2]=0;c[u>>2]=0;break;}if(((c[q>>2]|0)-(c[p>>2]|0)|0)>>>0<(c[z>>2]|0)>>>0){if((c[p>>2]|0)==(c[q>>2]|0)){c[u>>2]=0;break;}else{c[(c[i>>2]|0)+80>>2]=5;I=35;break;}}else{c[A>>2]=xy(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+52>>2]|0)+(c[(c[i>>2]|0)+60>>2]|0)|0,(c[(c[i>>2]|0)+56>>2]|0)-(c[(c[i>>2]|0)+60>>2]|0)|0,c[p>>2]|0,c[z>>2]|0)|0;if(rr(c[A>>2]|0)|0){I=29;break a;}c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0);if(!(c[A>>2]|0))break;c[(c[i>>2]|0)+64>>2]=(c[(c[i>>2]|0)+60>>2]|0)+(c[A>>2]|0);c[(c[i>>2]|0)+80>>2]=6;break;}}}while(0);do{if((I|0)==35){I=0;c[B>>2]=wy(c[c[i>>2]>>2]|0)|0;c[C>>2]=(c[B>>2]|0)-(c[(c[i>>2]|0)+48>>2]|0);if((c[C>>2]|0)>>>0>((c[(c[i>>2]|0)+44>>2]|0)-(c[(c[i>>2]|0)+48>>2]|0)|0)>>>0){I=36;break a;}c[D>>2]=vy((c[(c[i>>2]|0)+40>>2]|0)+(c[(c[i>>2]|0)+48>>2]|0)|0,c[C>>2]|0,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;c[p>>2]=(c[p>>2]|0)+(c[D>>2]|0);j=(c[i>>2]|0)+48|0;c[j>>2]=(c[j>>2]|0)+(c[D>>2]|0);if((c[D>>2]|0)>>>0<(c[C>>2]|0)>>>0){c[u>>2]=0;break;}c[E>>2]=xy(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+52>>2]|0)+(c[(c[i>>2]|0)+60>>2]|0)|0,(c[(c[i>>2]|0)+56>>2]|0)-(c[(c[i>>2]|0)+60>>2]|0)|0,c[(c[i>>2]|0)+40>>2]|0,c[B>>2]|0)|0;if(rr(c[E>>2]|0)|0){I=40;break a;}c[(c[i>>2]|0)+48>>2]=0;j=c[i>>2]|0;if(c[E>>2]|0){c[(c[i>>2]|0)+64>>2]=(c[j+60>>2]|0)+(c[E>>2]|0);c[(c[i>>2]|0)+80>>2]=6;I=44;break;}else{c[j+80>>2]=4;break;}}}while(0);do{if((I|0)==44){I=0;c[F>>2]=(c[(c[i>>2]|0)+64>>2]|0)-(c[(c[i>>2]|0)+60>>2]|0);c[G>>2]=vy(c[s>>2]|0,(c[t>>2]|0)-(c[s>>2]|0)|0,(c[(c[i>>2]|0)+52>>2]|0)+(c[(c[i>>2]|0)+60>>2]|0)|0,c[F>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[G>>2]|0);j=(c[i>>2]|0)+60|0;c[j>>2]=(c[j>>2]|0)+(c[G>>2]|0);if((c[G>>2]|0)!=(c[F>>2]|0)){c[u>>2]=0;break;}c[(c[i>>2]|0)+80>>2]=4;if(((c[(c[i>>2]|0)+60>>2]|0)+131072|0)>>>0>(c[(c[i>>2]|0)+56>>2]|0)>>>0){c[(c[i>>2]|0)+64>>2]=0;c[(c[i>>2]|0)+60>>2]=0;}}}while(0);}switch(I|0){case 4:{c[h>>2]=-62;M=c[h>>2]|0;l=g;return M|0;}case 6:{c[h>>2]=J;M=c[h>>2]|0;l=g;return M|0;}case 8:{mE(K+84+(c[(c[i>>2]|0)+68>>2]|0)|0,c[m>>2]|0,c[c[n>>2]>>2]|0)|0;m=(c[i>>2]|0)+68|0;c[m>>2]=(c[m>>2]|0)+(c[c[n>>2]>>2]|0);c[c[k>>2]>>2]=0;c[(c[i>>2]|0)+80>>2]=2;c[h>>2]=(c[v>>2]|0)-(c[(c[i>>2]|0)+68>>2]|0);M=c[h>>2]|0;l=g;return M|0;}case 11:{c[h>>2]=L;M=c[h>>2]|0;l=g;return M|0;}case 13:{c[c[k>>2]>>2]=0;c[h>>2]=(c[w>>2]|0)-(c[(c[i>>2]|0)+68>>2]|0);M=c[h>>2]|0;l=g;return M|0;}case 16:{c[h>>2]=-64;M=c[h>>2]|0;l=g;return M|0;}case 19:{c[h>>2]=-64;M=c[h>>2]|0;l=g;return M|0;}case 29:{c[h>>2]=c[A>>2];M=c[h>>2]|0;l=g;return M|0;}case 36:{c[h>>2]=-20;M=c[h>>2]|0;l=g;return M|0;}case 40:{c[h>>2]=c[E>>2];M=c[h>>2]|0;l=g;return M|0;}case 48:{c[h>>2]=-1;M=c[h>>2]|0;l=g;return M|0;}case 50:{c[c[n>>2]>>2]=(c[p>>2]|0)-(c[o>>2]|0);c[c[k>>2]>>2]=(c[s>>2]|0)-(c[r>>2]|0);c[H>>2]=wy(c[c[i>>2]>>2]|0)|0;if((c[H>>2]|0)>>>0>3)c[H>>2]=(c[H>>2]|0)+3;c[H>>2]=(c[H>>2]|0)-(c[(c[i>>2]|0)+48>>2]|0);c[h>>2]=c[H>>2];M=c[h>>2]|0;l=g;return M|0;}}return 0;}function vy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?c[h>>2]|0:c[j>>2]|0;mE(c[g>>2]|0,c[i>>2]|0,c[k>>2]|0)|0;l=f;return c[k>>2]|0;}function wy(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+10268>>2]|0;}function xy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=l;l=l+48|0;i=h+40|0;j=h+36|0;k=h+32|0;m=h+28|0;n=h+24|0;o=h+20|0;p=h+16|0;q=h+8|0;r=h+4|0;s=h;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;if((c[o>>2]|0)!=(c[(c[j>>2]|0)+10268>>2]|0)){c[i>>2]=-72;t=c[i>>2]|0;l=h;return t|0;}yy(c[j>>2]|0,c[k>>2]|0);a:do{switch(c[(c[j>>2]|0)+10316>>2]|0){case 0:{if((c[o>>2]|0)!=5){c[i>>2]=-72;t=c[i>>2]|0;l=h;return t|0;}g=mw(c[j>>2]|0,c[n>>2]|0,5)|0;c[(c[j>>2]|0)+10272>>2]=g;g=(rr(c[(c[j>>2]|0)+10272>>2]|0)|0)!=0;f=c[j>>2]|0;if(g){c[i>>2]=c[f+10272>>2];t=c[i>>2]|0;l=h;return t|0;}g=f+141408|0;f=c[n>>2]|0;a[g>>0]=a[f>>0]|0;a[g+1>>0]=a[f+1>>0]|0;a[g+2>>0]=a[f+2>>0]|0;a[g+3>>0]=a[f+3>>0]|0;a[g+4>>0]=a[f+4>>0]|0;if((c[(c[j>>2]|0)+10272>>2]|0)>>>0<=5){c[(c[j>>2]|0)+10268>>2]=0;break a;}c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}case 1:break;case 2:{c[r>>2]=qr(c[n>>2]|0,3,q)|0;if(rr(c[r>>2]|0)|0){c[i>>2]=c[r>>2];t=c[i>>2]|0;l=h;return t|0;}if((c[q>>2]|0)==3){c[(c[j>>2]|0)+10268>>2]=0;c[(c[j>>2]|0)+10316>>2]=0;}else{c[(c[j>>2]|0)+10268>>2]=c[r>>2];c[(c[j>>2]|0)+10312>>2]=c[q>>2];c[(c[j>>2]|0)+10316>>2]=3;}c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}case 3:{switch(c[(c[j>>2]|0)+10312>>2]|0){case 0:{c[s>>2]=ow(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;break;}case 1:{c[s>>2]=pw(c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;break;}case 2:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}case 3:{c[s>>2]=0;break;}default:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}}c[(c[j>>2]|0)+10316>>2]=2;c[(c[j>>2]|0)+10268>>2]=3;c[(c[j>>2]|0)+10252>>2]=(c[k>>2]|0)+(c[s>>2]|0);c[i>>2]=c[s>>2];t=c[i>>2]|0;l=h;return t|0;}default:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}}}while(0);c[p>>2]=nw(c[j>>2]|0,(c[j>>2]|0)+141408|0,c[(c[j>>2]|0)+10272>>2]|0)|0;if(rr(c[p>>2]|0)|0){c[i>>2]=c[p>>2];t=c[i>>2]|0;l=h;return t|0;}else{c[(c[j>>2]|0)+10268>>2]=3;c[(c[j>>2]|0)+10316>>2]=2;c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}return 0;}function yy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)==(c[(c[e>>2]|0)+10252>>2]|0)){l=d;return;}c[(c[e>>2]|0)+10264>>2]=c[(c[e>>2]|0)+10252>>2];c[(c[e>>2]|0)+10260>>2]=(c[f>>2]|0)+(0-((c[(c[e>>2]|0)+10252>>2]|0)-(c[(c[e>>2]|0)+10256>>2]|0)));c[(c[e>>2]|0)+10256>>2]=c[f>>2];c[(c[e>>2]|0)+10252>>2]=c[f>>2];l=d;return;}function zy(){Ay(0);return;}function Ay(a){a=a|0;Wa(10928,20112);La(10944,20117,1,1,0);Sa(10952,19886,1,-128,127);Sa(10968,19891,1,-128,127);Sa(10960,19903,1,0,255);Sa(10976,19917,2,-32768,32767);Sa(10984,19923,2,0,65535);Sa(10992,20122,4,-2147483648,2147483647);Sa(11e3,20126,4,0,-1);Sa(11008,20139,4,-2147483648,2147483647);Sa(11016,20144,4,0,-1);Qa(11024,20168,4);Qa(11032,20280,8);Ua(10624,19495);Ua(10648,16561);Va(10672,4,16594);Pa(9840,16607);Ta(10696,0,16623);Ta(10704,0,16653);Ta(10712,1,16690);Ta(10720,2,16729);Ta(10728,3,16760);Ta(10736,4,16800);Ta(10744,5,16829);Ta(10752,4,16867);Ta(10760,5,16897);Ta(10704,0,16936);Ta(10712,1,16968);Ta(10720,2,17001);Ta(10728,3,17034);Ta(10736,4,17068);Ta(10744,5,17101);Ta(10768,6,17135);Ta(10776,7,17166);Ta(10784,7,17198);return;}function By(a){a=a|0;return Oz(c[a+4>>2]|0)|0;}function Cy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0;b=l;l=l+16|0;d=b;do{if(a>>>0<245){e=a>>>0<11?16:a+11&-8;f=e>>>3;g=c[5418]|0;h=g>>>f;if(h&3|0){i=(h&1^1)+f|0;j=21712+(i<<1<<2)|0;k=j+8|0;m=c[k>>2]|0;n=m+8|0;o=c[n>>2]|0;if((o|0)==(j|0))c[5418]=g&~(1<<i);else{c[o+12>>2]=j;c[k>>2]=o;}o=i<<3;c[m+4>>2]=o|3;i=m+o+4|0;c[i>>2]=c[i>>2]|1;p=n;l=b;return p|0;}n=c[5420]|0;if(e>>>0>n>>>0){if(h|0){i=2<<f;o=h<<f&(i|0-i);i=(o&0-o)+-1|0;o=i>>>12&16;f=i>>>o;i=f>>>5&8;h=f>>>i;f=h>>>2&4;m=h>>>f;h=m>>>1&2;k=m>>>h;m=k>>>1&1;j=(i|o|f|h|m)+(k>>>m)|0;m=21712+(j<<1<<2)|0;k=m+8|0;h=c[k>>2]|0;f=h+8|0;o=c[f>>2]|0;if((o|0)==(m|0)){i=g&~(1<<j);c[5418]=i;q=i;}else{c[o+12>>2]=m;c[k>>2]=o;q=g;}o=j<<3;j=o-e|0;c[h+4>>2]=e|3;k=h+e|0;c[k+4>>2]=j|1;c[h+o>>2]=j;if(n|0){o=c[5423]|0;h=n>>>3;m=21712+(h<<1<<2)|0;i=1<<h;if(!(q&i)){c[5418]=q|i;r=m;s=m+8|0;}else{i=m+8|0;r=c[i>>2]|0;s=i;}c[s>>2]=o;c[r+12>>2]=o;c[o+8>>2]=r;c[o+12>>2]=m;}c[5420]=j;c[5423]=k;p=f;l=b;return p|0;}f=c[5419]|0;if(f){k=(f&0-f)+-1|0;j=k>>>12&16;m=k>>>j;k=m>>>5&8;o=m>>>k;m=o>>>2&4;i=o>>>m;o=i>>>1&2;h=i>>>o;i=h>>>1&1;t=c[21976+((k|j|m|o|i)+(h>>>i)<<2)>>2]|0;i=t;h=t;o=(c[t+4>>2]&-8)-e|0;while(1){t=c[i+16>>2]|0;if(!t){m=c[i+20>>2]|0;if(!m)break;else u=m;}else u=t;t=(c[u+4>>2]&-8)-e|0;m=t>>>0<o>>>0;i=u;h=m?u:h;o=m?t:o;}i=h+e|0;if(i>>>0>h>>>0){t=c[h+24>>2]|0;m=c[h+12>>2]|0;do{if((m|0)==(h|0)){j=h+20|0;k=c[j>>2]|0;if(!k){v=h+16|0;w=c[v>>2]|0;if(!w){x=0;break;}else{y=w;z=v;}}else{y=k;z=j;}j=y;k=z;while(1){v=j+20|0;w=c[v>>2]|0;if(!w){A=j+16|0;B=c[A>>2]|0;if(!B)break;else{C=B;D=A;}}else{C=w;D=v;}j=C;k=D;}c[k>>2]=0;x=j;}else{v=c[h+8>>2]|0;c[v+12>>2]=m;c[m+8>>2]=v;x=m;}}while(0);do{if(t|0){m=c[h+28>>2]|0;v=21976+(m<<2)|0;if((h|0)==(c[v>>2]|0)){c[v>>2]=x;if(!x){c[5419]=f&~(1<<m);break;}}else{m=t+16|0;c[((c[m>>2]|0)==(h|0)?m:t+20|0)>>2]=x;if(!x)break;}c[x+24>>2]=t;m=c[h+16>>2]|0;if(m|0){c[x+16>>2]=m;c[m+24>>2]=x;}m=c[h+20>>2]|0;if(m|0){c[x+20>>2]=m;c[m+24>>2]=x;}}}while(0);if(o>>>0<16){t=o+e|0;c[h+4>>2]=t|3;f=h+t+4|0;c[f>>2]=c[f>>2]|1;}else{c[h+4>>2]=e|3;c[i+4>>2]=o|1;c[i+o>>2]=o;if(n|0){f=c[5423]|0;t=n>>>3;m=21712+(t<<1<<2)|0;v=1<<t;if(!(v&g)){c[5418]=v|g;E=m;F=m+8|0;}else{v=m+8|0;E=c[v>>2]|0;F=v;}c[F>>2]=f;c[E+12>>2]=f;c[f+8>>2]=E;c[f+12>>2]=m;}c[5420]=o;c[5423]=i;}p=h+8|0;l=b;return p|0;}else G=e;}else G=e;}else G=e;}else if(a>>>0<=4294967231){m=a+11|0;f=m&-8;v=c[5419]|0;if(v){t=0-f|0;w=m>>>8;if(w){if(f>>>0>16777215)H=31;else{m=(w+1048320|0)>>>16&8;A=w<<m;w=(A+520192|0)>>>16&4;B=A<<w;A=(B+245760|0)>>>16&2;I=14-(w|m|A)+(B<<A>>>15)|0;H=f>>>(I+7|0)&1|I<<1;}}else H=0;I=c[21976+(H<<2)>>2]|0;a:do{if(!I){J=0;K=0;L=t;M=61;}else{A=0;B=t;m=I;w=f<<((H|0)==31?0:25-(H>>>1)|0);N=0;while(1){O=(c[m+4>>2]&-8)-f|0;if(O>>>0<B>>>0){if(!O){P=m;Q=0;R=m;M=65;break a;}else{S=m;T=O;}}else{S=A;T=B;}O=c[m+20>>2]|0;m=c[m+16+(w>>>31<<2)>>2]|0;U=(O|0)==0|(O|0)==(m|0)?N:O;if(!m){J=U;K=S;L=T;M=61;break;}else{A=S;B=T;w=w<<1;N=U;}}}}while(0);if((M|0)==61){if((J|0)==0&(K|0)==0){I=2<<H;t=(I|0-I)&v;if(!t){G=f;break;}I=(t&0-t)+-1|0;t=I>>>12&16;e=I>>>t;I=e>>>5&8;h=e>>>I;e=h>>>2&4;i=h>>>e;h=i>>>1&2;o=i>>>h;i=o>>>1&1;V=0;W=c[21976+((I|t|e|h|i)+(o>>>i)<<2)>>2]|0;}else{V=K;W=J;}if(!W){X=V;Y=L;}else{P=V;Q=L;R=W;M=65;}}if((M|0)==65){i=P;o=Q;h=R;while(1){e=(c[h+4>>2]&-8)-f|0;t=e>>>0<o>>>0;I=t?e:o;e=t?h:i;t=c[h+16>>2]|0;if(!t)Z=c[h+20>>2]|0;else Z=t;if(!Z){X=e;Y=I;break;}else{i=e;o=I;h=Z;}}}if(((X|0)!=0?Y>>>0<((c[5420]|0)-f|0)>>>0:0)?(h=X+f|0,h>>>0>X>>>0):0){o=c[X+24>>2]|0;i=c[X+12>>2]|0;do{if((i|0)==(X|0)){I=X+20|0;e=c[I>>2]|0;if(!e){t=X+16|0;g=c[t>>2]|0;if(!g){_=0;break;}else{$=g;aa=t;}}else{$=e;aa=I;}I=$;e=aa;while(1){t=I+20|0;g=c[t>>2]|0;if(!g){n=I+16|0;N=c[n>>2]|0;if(!N)break;else{ba=N;ca=n;}}else{ba=g;ca=t;}I=ba;e=ca;}c[e>>2]=0;_=I;}else{t=c[X+8>>2]|0;c[t+12>>2]=i;c[i+8>>2]=t;_=i;}}while(0);do{if(o){i=c[X+28>>2]|0;t=21976+(i<<2)|0;if((X|0)==(c[t>>2]|0)){c[t>>2]=_;if(!_){t=v&~(1<<i);c[5419]=t;da=t;break;}}else{t=o+16|0;c[((c[t>>2]|0)==(X|0)?t:o+20|0)>>2]=_;if(!_){da=v;break;}}c[_+24>>2]=o;t=c[X+16>>2]|0;if(t|0){c[_+16>>2]=t;c[t+24>>2]=_;}t=c[X+20>>2]|0;if(t){c[_+20>>2]=t;c[t+24>>2]=_;da=v;}else da=v;}else da=v;}while(0);b:do{if(Y>>>0<16){v=Y+f|0;c[X+4>>2]=v|3;o=X+v+4|0;c[o>>2]=c[o>>2]|1;}else{c[X+4>>2]=f|3;c[h+4>>2]=Y|1;c[h+Y>>2]=Y;o=Y>>>3;if(Y>>>0<256){v=21712+(o<<1<<2)|0;t=c[5418]|0;i=1<<o;if(!(t&i)){c[5418]=t|i;ea=v;fa=v+8|0;}else{i=v+8|0;ea=c[i>>2]|0;fa=i;}c[fa>>2]=h;c[ea+12>>2]=h;c[h+8>>2]=ea;c[h+12>>2]=v;break;}v=Y>>>8;if(v){if(Y>>>0>16777215)ga=31;else{i=(v+1048320|0)>>>16&8;t=v<<i;v=(t+520192|0)>>>16&4;o=t<<v;t=(o+245760|0)>>>16&2;g=14-(v|i|t)+(o<<t>>>15)|0;ga=Y>>>(g+7|0)&1|g<<1;}}else ga=0;g=21976+(ga<<2)|0;c[h+28>>2]=ga;t=h+16|0;c[t+4>>2]=0;c[t>>2]=0;t=1<<ga;if(!(da&t)){c[5419]=da|t;c[g>>2]=h;c[h+24>>2]=g;c[h+12>>2]=h;c[h+8>>2]=h;break;}t=c[g>>2]|0;c:do{if((c[t+4>>2]&-8|0)==(Y|0))ha=t;else{g=Y<<((ga|0)==31?0:25-(ga>>>1)|0);o=t;while(1){ia=o+16+(g>>>31<<2)|0;i=c[ia>>2]|0;if(!i)break;if((c[i+4>>2]&-8|0)==(Y|0)){ha=i;break c;}else{g=g<<1;o=i;}}c[ia>>2]=h;c[h+24>>2]=o;c[h+12>>2]=h;c[h+8>>2]=h;break b;}}while(0);t=ha+8|0;I=c[t>>2]|0;c[I+12>>2]=h;c[t>>2]=h;c[h+8>>2]=I;c[h+12>>2]=ha;c[h+24>>2]=0;}}while(0);p=X+8|0;l=b;return p|0;}else G=f;}else G=f;}else G=-1;}while(0);X=c[5420]|0;if(X>>>0>=G>>>0){ha=X-G|0;ia=c[5423]|0;if(ha>>>0>15){Y=ia+G|0;c[5423]=Y;c[5420]=ha;c[Y+4>>2]=ha|1;c[ia+X>>2]=ha;c[ia+4>>2]=G|3;}else{c[5420]=0;c[5423]=0;c[ia+4>>2]=X|3;ha=ia+X+4|0;c[ha>>2]=c[ha>>2]|1;}p=ia+8|0;l=b;return p|0;}ia=c[5421]|0;if(ia>>>0>G>>>0){ha=ia-G|0;c[5421]=ha;X=c[5424]|0;Y=X+G|0;c[5424]=Y;c[Y+4>>2]=ha|1;c[X+4>>2]=G|3;p=X+8|0;l=b;return p|0;}if(!(c[5536]|0)){c[5538]=4096;c[5537]=4096;c[5539]=-1;c[5540]=-1;c[5541]=0;c[5529]=0;c[5536]=d&-16^1431655768;ja=4096;}else ja=c[5538]|0;d=G+48|0;X=G+47|0;ha=ja+X|0;Y=0-ja|0;ja=ha&Y;if(ja>>>0<=G>>>0){p=0;l=b;return p|0;}ga=c[5528]|0;if(ga|0?(da=c[5526]|0,ea=da+ja|0,ea>>>0<=da>>>0|ea>>>0>ga>>>0):0){p=0;l=b;return p|0;}d:do{if(!(c[5529]&4)){ga=c[5424]|0;e:do{if(ga){ea=22120;while(1){da=c[ea>>2]|0;if(da>>>0<=ga>>>0?(da+(c[ea+4>>2]|0)|0)>>>0>ga>>>0:0)break;da=c[ea+8>>2]|0;if(!da){M=128;break e;}else ea=da;}da=ha-ia&Y;if(da>>>0<2147483647){fa=pE(da|0)|0;if((fa|0)==((c[ea>>2]|0)+(c[ea+4>>2]|0)|0)){if((fa|0)==(-1|0))ka=da;else{la=da;ma=fa;M=145;break d;}}else{na=fa;oa=da;M=136;}}else ka=0;}else M=128;}while(0);do{if((M|0)==128){ga=pE(0)|0;if((ga|0)!=(-1|0)?(f=ga,da=c[5537]|0,fa=da+-1|0,_=((fa&f|0)==0?0:(fa+f&0-da)-f|0)+ja|0,f=c[5526]|0,da=_+f|0,_>>>0>G>>>0&_>>>0<2147483647):0){fa=c[5528]|0;if(fa|0?da>>>0<=f>>>0|da>>>0>fa>>>0:0){ka=0;break;}fa=pE(_|0)|0;if((fa|0)==(ga|0)){la=_;ma=ga;M=145;break d;}else{na=fa;oa=_;M=136;}}else ka=0;}}while(0);do{if((M|0)==136){_=0-oa|0;if(!(d>>>0>oa>>>0&(oa>>>0<2147483647&(na|0)!=(-1|0))))if((na|0)==(-1|0)){ka=0;break;}else{la=oa;ma=na;M=145;break d;}fa=c[5538]|0;ga=X-oa+fa&0-fa;if(ga>>>0>=2147483647){la=oa;ma=na;M=145;break d;}if((pE(ga|0)|0)==(-1|0)){pE(_|0)|0;ka=0;break;}else{la=ga+oa|0;ma=na;M=145;break d;}}}while(0);c[5529]=c[5529]|4;pa=ka;M=143;}else{pa=0;M=143;}}while(0);if(((M|0)==143?ja>>>0<2147483647:0)?(ka=pE(ja|0)|0,ja=pE(0)|0,na=ja-ka|0,oa=na>>>0>(G+40|0)>>>0,!((ka|0)==(-1|0)|oa^1|ka>>>0<ja>>>0&((ka|0)!=(-1|0)&(ja|0)!=(-1|0))^1)):0){la=oa?na:pa;ma=ka;M=145;}if((M|0)==145){ka=(c[5526]|0)+la|0;c[5526]=ka;if(ka>>>0>(c[5527]|0)>>>0)c[5527]=ka;ka=c[5424]|0;f:do{if(ka){pa=22120;while(1){qa=c[pa>>2]|0;ra=c[pa+4>>2]|0;if((ma|0)==(qa+ra|0)){M=154;break;}na=c[pa+8>>2]|0;if(!na)break;else pa=na;}if(((M|0)==154?(na=pa+4|0,(c[pa+12>>2]&8|0)==0):0)?ma>>>0>ka>>>0&qa>>>0<=ka>>>0:0){c[na>>2]=ra+la;na=(c[5421]|0)+la|0;oa=ka+8|0;ja=(oa&7|0)==0?0:0-oa&7;oa=ka+ja|0;X=na-ja|0;c[5424]=oa;c[5421]=X;c[oa+4>>2]=X|1;c[ka+na+4>>2]=40;c[5425]=c[5540];break;}if(ma>>>0<(c[5422]|0)>>>0)c[5422]=ma;na=ma+la|0;X=22120;while(1){if((c[X>>2]|0)==(na|0)){M=162;break;}oa=c[X+8>>2]|0;if(!oa)break;else X=oa;}if((M|0)==162?(c[X+12>>2]&8|0)==0:0){c[X>>2]=ma;pa=X+4|0;c[pa>>2]=(c[pa>>2]|0)+la;pa=ma+8|0;oa=ma+((pa&7|0)==0?0:0-pa&7)|0;pa=na+8|0;ja=na+((pa&7|0)==0?0:0-pa&7)|0;pa=oa+G|0;d=ja-oa-G|0;c[oa+4>>2]=G|3;g:do{if((ka|0)==(ja|0)){Y=(c[5421]|0)+d|0;c[5421]=Y;c[5424]=pa;c[pa+4>>2]=Y|1;}else{if((c[5423]|0)==(ja|0)){Y=(c[5420]|0)+d|0;c[5420]=Y;c[5423]=pa;c[pa+4>>2]=Y|1;c[pa+Y>>2]=Y;break;}Y=c[ja+4>>2]|0;if((Y&3|0)==1){ia=Y&-8;ha=Y>>>3;h:do{if(Y>>>0<256){ga=c[ja+8>>2]|0;_=c[ja+12>>2]|0;if((_|0)==(ga|0)){c[5418]=c[5418]&~(1<<ha);break;}else{c[ga+12>>2]=_;c[_+8>>2]=ga;break;}}else{ga=c[ja+24>>2]|0;_=c[ja+12>>2]|0;do{if((_|0)==(ja|0)){fa=ja+16|0;da=fa+4|0;f=c[da>>2]|0;if(!f){ca=c[fa>>2]|0;if(!ca){sa=0;break;}else{ta=ca;ua=fa;}}else{ta=f;ua=da;}da=ta;f=ua;while(1){fa=da+20|0;ca=c[fa>>2]|0;if(!ca){ba=da+16|0;aa=c[ba>>2]|0;if(!aa)break;else{va=aa;wa=ba;}}else{va=ca;wa=fa;}da=va;f=wa;}c[f>>2]=0;sa=da;}else{fa=c[ja+8>>2]|0;c[fa+12>>2]=_;c[_+8>>2]=fa;sa=_;}}while(0);if(!ga)break;_=c[ja+28>>2]|0;o=21976+(_<<2)|0;do{if((c[o>>2]|0)!=(ja|0)){fa=ga+16|0;c[((c[fa>>2]|0)==(ja|0)?fa:ga+20|0)>>2]=sa;if(!sa)break h;}else{c[o>>2]=sa;if(sa|0)break;c[5419]=c[5419]&~(1<<_);break h;}}while(0);c[sa+24>>2]=ga;_=ja+16|0;o=c[_>>2]|0;if(o|0){c[sa+16>>2]=o;c[o+24>>2]=sa;}o=c[_+4>>2]|0;if(!o)break;c[sa+20>>2]=o;c[o+24>>2]=sa;}}while(0);xa=ja+ia|0;ya=ia+d|0;}else{xa=ja;ya=d;}ha=xa+4|0;c[ha>>2]=c[ha>>2]&-2;c[pa+4>>2]=ya|1;c[pa+ya>>2]=ya;ha=ya>>>3;if(ya>>>0<256){Y=21712+(ha<<1<<2)|0;ea=c[5418]|0;o=1<<ha;if(!(ea&o)){c[5418]=ea|o;za=Y;Aa=Y+8|0;}else{o=Y+8|0;za=c[o>>2]|0;Aa=o;}c[Aa>>2]=pa;c[za+12>>2]=pa;c[pa+8>>2]=za;c[pa+12>>2]=Y;break;}Y=ya>>>8;do{if(!Y)Ba=0;else{if(ya>>>0>16777215){Ba=31;break;}o=(Y+1048320|0)>>>16&8;ea=Y<<o;ha=(ea+520192|0)>>>16&4;_=ea<<ha;ea=(_+245760|0)>>>16&2;fa=14-(ha|o|ea)+(_<<ea>>>15)|0;Ba=ya>>>(fa+7|0)&1|fa<<1;}}while(0);Y=21976+(Ba<<2)|0;c[pa+28>>2]=Ba;ia=pa+16|0;c[ia+4>>2]=0;c[ia>>2]=0;ia=c[5419]|0;fa=1<<Ba;if(!(ia&fa)){c[5419]=ia|fa;c[Y>>2]=pa;c[pa+24>>2]=Y;c[pa+12>>2]=pa;c[pa+8>>2]=pa;break;}fa=c[Y>>2]|0;i:do{if((c[fa+4>>2]&-8|0)==(ya|0))Ca=fa;else{Y=ya<<((Ba|0)==31?0:25-(Ba>>>1)|0);ia=fa;while(1){Da=ia+16+(Y>>>31<<2)|0;ea=c[Da>>2]|0;if(!ea)break;if((c[ea+4>>2]&-8|0)==(ya|0)){Ca=ea;break i;}else{Y=Y<<1;ia=ea;}}c[Da>>2]=pa;c[pa+24>>2]=ia;c[pa+12>>2]=pa;c[pa+8>>2]=pa;break g;}}while(0);fa=Ca+8|0;Y=c[fa>>2]|0;c[Y+12>>2]=pa;c[fa>>2]=pa;c[pa+8>>2]=Y;c[pa+12>>2]=Ca;c[pa+24>>2]=0;}}while(0);p=oa+8|0;l=b;return p|0;}pa=22120;while(1){d=c[pa>>2]|0;if(d>>>0<=ka>>>0?(Ea=d+(c[pa+4>>2]|0)|0,Ea>>>0>ka>>>0):0)break;pa=c[pa+8>>2]|0;}pa=Ea+-47|0;oa=pa+8|0;d=pa+((oa&7|0)==0?0:0-oa&7)|0;oa=ka+16|0;pa=d>>>0<oa>>>0?ka:d;d=pa+8|0;ja=la+-40|0;na=ma+8|0;X=(na&7|0)==0?0:0-na&7;na=ma+X|0;Y=ja-X|0;c[5424]=na;c[5421]=Y;c[na+4>>2]=Y|1;c[ma+ja+4>>2]=40;c[5425]=c[5540];ja=pa+4|0;c[ja>>2]=27;c[d>>2]=c[5530];c[d+4>>2]=c[5531];c[d+8>>2]=c[5532];c[d+12>>2]=c[5533];c[5530]=ma;c[5531]=la;c[5533]=0;c[5532]=d;d=pa+24|0;do{Y=d;d=d+4|0;c[d>>2]=7;}while((Y+8|0)>>>0<Ea>>>0);if((pa|0)!=(ka|0)){d=pa-ka|0;c[ja>>2]=c[ja>>2]&-2;c[ka+4>>2]=d|1;c[pa>>2]=d;Y=d>>>3;if(d>>>0<256){na=21712+(Y<<1<<2)|0;X=c[5418]|0;fa=1<<Y;if(!(X&fa)){c[5418]=X|fa;Fa=na;Ga=na+8|0;}else{fa=na+8|0;Fa=c[fa>>2]|0;Ga=fa;}c[Ga>>2]=ka;c[Fa+12>>2]=ka;c[ka+8>>2]=Fa;c[ka+12>>2]=na;break;}na=d>>>8;if(na){if(d>>>0>16777215)Ha=31;else{fa=(na+1048320|0)>>>16&8;X=na<<fa;na=(X+520192|0)>>>16&4;Y=X<<na;X=(Y+245760|0)>>>16&2;ga=14-(na|fa|X)+(Y<<X>>>15)|0;Ha=d>>>(ga+7|0)&1|ga<<1;}}else Ha=0;ga=21976+(Ha<<2)|0;c[ka+28>>2]=Ha;c[ka+20>>2]=0;c[oa>>2]=0;X=c[5419]|0;Y=1<<Ha;if(!(X&Y)){c[5419]=X|Y;c[ga>>2]=ka;c[ka+24>>2]=ga;c[ka+12>>2]=ka;c[ka+8>>2]=ka;break;}Y=c[ga>>2]|0;j:do{if((c[Y+4>>2]&-8|0)==(d|0))Ia=Y;else{ga=d<<((Ha|0)==31?0:25-(Ha>>>1)|0);X=Y;while(1){Ja=X+16+(ga>>>31<<2)|0;fa=c[Ja>>2]|0;if(!fa)break;if((c[fa+4>>2]&-8|0)==(d|0)){Ia=fa;break j;}else{ga=ga<<1;X=fa;}}c[Ja>>2]=ka;c[ka+24>>2]=X;c[ka+12>>2]=ka;c[ka+8>>2]=ka;break f;}}while(0);d=Ia+8|0;Y=c[d>>2]|0;c[Y+12>>2]=ka;c[d>>2]=ka;c[ka+8>>2]=Y;c[ka+12>>2]=Ia;c[ka+24>>2]=0;}}else{Y=c[5422]|0;if((Y|0)==0|ma>>>0<Y>>>0)c[5422]=ma;c[5530]=ma;c[5531]=la;c[5533]=0;c[5427]=c[5536];c[5426]=-1;c[5431]=21712;c[5430]=21712;c[5433]=21720;c[5432]=21720;c[5435]=21728;c[5434]=21728;c[5437]=21736;c[5436]=21736;c[5439]=21744;c[5438]=21744;c[5441]=21752;c[5440]=21752;c[5443]=21760;c[5442]=21760;c[5445]=21768;c[5444]=21768;c[5447]=21776;c[5446]=21776;c[5449]=21784;c[5448]=21784;c[5451]=21792;c[5450]=21792;c[5453]=21800;c[5452]=21800;c[5455]=21808;c[5454]=21808;c[5457]=21816;c[5456]=21816;c[5459]=21824;c[5458]=21824;c[5461]=21832;c[5460]=21832;c[5463]=21840;c[5462]=21840;c[5465]=21848;c[5464]=21848;c[5467]=21856;c[5466]=21856;c[5469]=21864;c[5468]=21864;c[5471]=21872;c[5470]=21872;c[5473]=21880;c[5472]=21880;c[5475]=21888;c[5474]=21888;c[5477]=21896;c[5476]=21896;c[5479]=21904;c[5478]=21904;c[5481]=21912;c[5480]=21912;c[5483]=21920;c[5482]=21920;c[5485]=21928;c[5484]=21928;c[5487]=21936;c[5486]=21936;c[5489]=21944;c[5488]=21944;c[5491]=21952;c[5490]=21952;c[5493]=21960;c[5492]=21960;Y=la+-40|0;d=ma+8|0;oa=(d&7|0)==0?0:0-d&7;d=ma+oa|0;pa=Y-oa|0;c[5424]=d;c[5421]=pa;c[d+4>>2]=pa|1;c[ma+Y+4>>2]=40;c[5425]=c[5540];}}while(0);ma=c[5421]|0;if(ma>>>0>G>>>0){la=ma-G|0;c[5421]=la;ma=c[5424]|0;ka=ma+G|0;c[5424]=ka;c[ka+4>>2]=la|1;c[ma+4>>2]=G|3;p=ma+8|0;l=b;return p|0;}}c[(My()|0)>>2]=12;p=0;l=b;return p|0;}function Dy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;if(!a)return;b=a+-8|0;d=c[5422]|0;e=c[a+-4>>2]|0;a=e&-8;f=b+a|0;do{if(!(e&1)){g=c[b>>2]|0;if(!(e&3))return;h=b+(0-g)|0;i=g+a|0;if(h>>>0<d>>>0)return;if((c[5423]|0)==(h|0)){j=f+4|0;k=c[j>>2]|0;if((k&3|0)!=3){l=h;m=i;n=h;break;}c[5420]=i;c[j>>2]=k&-2;c[h+4>>2]=i|1;c[h+i>>2]=i;return;}k=g>>>3;if(g>>>0<256){g=c[h+8>>2]|0;j=c[h+12>>2]|0;if((j|0)==(g|0)){c[5418]=c[5418]&~(1<<k);l=h;m=i;n=h;break;}else{c[g+12>>2]=j;c[j+8>>2]=g;l=h;m=i;n=h;break;}}g=c[h+24>>2]|0;j=c[h+12>>2]|0;do{if((j|0)==(h|0)){k=h+16|0;o=k+4|0;p=c[o>>2]|0;if(!p){q=c[k>>2]|0;if(!q){r=0;break;}else{s=q;t=k;}}else{s=p;t=o;}o=s;p=t;while(1){k=o+20|0;q=c[k>>2]|0;if(!q){u=o+16|0;v=c[u>>2]|0;if(!v)break;else{w=v;x=u;}}else{w=q;x=k;}o=w;p=x;}c[p>>2]=0;r=o;}else{k=c[h+8>>2]|0;c[k+12>>2]=j;c[j+8>>2]=k;r=j;}}while(0);if(g){j=c[h+28>>2]|0;k=21976+(j<<2)|0;if((c[k>>2]|0)==(h|0)){c[k>>2]=r;if(!r){c[5419]=c[5419]&~(1<<j);l=h;m=i;n=h;break;}}else{j=g+16|0;c[((c[j>>2]|0)==(h|0)?j:g+20|0)>>2]=r;if(!r){l=h;m=i;n=h;break;}}c[r+24>>2]=g;j=h+16|0;k=c[j>>2]|0;if(k|0){c[r+16>>2]=k;c[k+24>>2]=r;}k=c[j+4>>2]|0;if(k){c[r+20>>2]=k;c[k+24>>2]=r;l=h;m=i;n=h;}else{l=h;m=i;n=h;}}else{l=h;m=i;n=h;}}else{l=b;m=a;n=b;}}while(0);if(n>>>0>=f>>>0)return;b=f+4|0;a=c[b>>2]|0;if(!(a&1))return;if(!(a&2)){if((c[5424]|0)==(f|0)){r=(c[5421]|0)+m|0;c[5421]=r;c[5424]=l;c[l+4>>2]=r|1;if((l|0)!=(c[5423]|0))return;c[5423]=0;c[5420]=0;return;}if((c[5423]|0)==(f|0)){r=(c[5420]|0)+m|0;c[5420]=r;c[5423]=n;c[l+4>>2]=r|1;c[n+r>>2]=r;return;}r=(a&-8)+m|0;x=a>>>3;do{if(a>>>0<256){w=c[f+8>>2]|0;t=c[f+12>>2]|0;if((t|0)==(w|0)){c[5418]=c[5418]&~(1<<x);break;}else{c[w+12>>2]=t;c[t+8>>2]=w;break;}}else{w=c[f+24>>2]|0;t=c[f+12>>2]|0;do{if((t|0)==(f|0)){s=f+16|0;d=s+4|0;e=c[d>>2]|0;if(!e){k=c[s>>2]|0;if(!k){y=0;break;}else{z=k;A=s;}}else{z=e;A=d;}d=z;e=A;while(1){s=d+20|0;k=c[s>>2]|0;if(!k){j=d+16|0;q=c[j>>2]|0;if(!q)break;else{B=q;C=j;}}else{B=k;C=s;}d=B;e=C;}c[e>>2]=0;y=d;}else{o=c[f+8>>2]|0;c[o+12>>2]=t;c[t+8>>2]=o;y=t;}}while(0);if(w|0){t=c[f+28>>2]|0;h=21976+(t<<2)|0;if((c[h>>2]|0)==(f|0)){c[h>>2]=y;if(!y){c[5419]=c[5419]&~(1<<t);break;}}else{t=w+16|0;c[((c[t>>2]|0)==(f|0)?t:w+20|0)>>2]=y;if(!y)break;}c[y+24>>2]=w;t=f+16|0;h=c[t>>2]|0;if(h|0){c[y+16>>2]=h;c[h+24>>2]=y;}h=c[t+4>>2]|0;if(h|0){c[y+20>>2]=h;c[h+24>>2]=y;}}}}while(0);c[l+4>>2]=r|1;c[n+r>>2]=r;if((l|0)==(c[5423]|0)){c[5420]=r;return;}else D=r;}else{c[b>>2]=a&-2;c[l+4>>2]=m|1;c[n+m>>2]=m;D=m;}m=D>>>3;if(D>>>0<256){n=21712+(m<<1<<2)|0;a=c[5418]|0;b=1<<m;if(!(a&b)){c[5418]=a|b;E=n;F=n+8|0;}else{b=n+8|0;E=c[b>>2]|0;F=b;}c[F>>2]=l;c[E+12>>2]=l;c[l+8>>2]=E;c[l+12>>2]=n;return;}n=D>>>8;if(n){if(D>>>0>16777215)G=31;else{E=(n+1048320|0)>>>16&8;F=n<<E;n=(F+520192|0)>>>16&4;b=F<<n;F=(b+245760|0)>>>16&2;a=14-(n|E|F)+(b<<F>>>15)|0;G=D>>>(a+7|0)&1|a<<1;}}else G=0;a=21976+(G<<2)|0;c[l+28>>2]=G;c[l+20>>2]=0;c[l+16>>2]=0;F=c[5419]|0;b=1<<G;a:do{if(!(F&b)){c[5419]=F|b;c[a>>2]=l;c[l+24>>2]=a;c[l+12>>2]=l;c[l+8>>2]=l;}else{E=c[a>>2]|0;b:do{if((c[E+4>>2]&-8|0)==(D|0))H=E;else{n=D<<((G|0)==31?0:25-(G>>>1)|0);m=E;while(1){I=m+16+(n>>>31<<2)|0;r=c[I>>2]|0;if(!r)break;if((c[r+4>>2]&-8|0)==(D|0)){H=r;break b;}else{n=n<<1;m=r;}}c[I>>2]=l;c[l+24>>2]=m;c[l+12>>2]=l;c[l+8>>2]=l;break a;}}while(0);E=H+8|0;w=c[E>>2]|0;c[w+12>>2]=l;c[E>>2]=l;c[l+8>>2]=w;c[l+12>>2]=H;c[l+24>>2]=0;}}while(0);l=(c[5426]|0)+-1|0;c[5426]=l;if(l|0)return;l=22128;while(1){H=c[l>>2]|0;if(!H)break;else l=H+8|0;}c[5426]=-1;return;}function Ey(a,b){a=a|0;b=b|0;var d=0,e=0;if(a){d=N(b,a)|0;if((b|a)>>>0>65535)e=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1;else e=d;}else e=0;d=Cy(e)|0;if(!d)return d|0;if(!(c[d+-4>>2]&3))return d|0;oE(d|0,0,e|0)|0;return d|0;}function Fy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!a){d=Cy(b)|0;return d|0;}if(b>>>0>4294967231){c[(My()|0)>>2]=12;d=0;return d|0;}e=Gy(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(e|0){d=e+8|0;return d|0;}e=Cy(b)|0;if(!e){d=0;return d|0;}f=c[a+-4>>2]|0;g=(f&-8)-((f&3|0)==0?8:4)|0;mE(e|0,a|0,(g>>>0<b>>>0?g:b)|0)|0;Dy(a);d=e;return d|0;}function Gy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;d=a+4|0;e=c[d>>2]|0;f=e&-8;g=a+f|0;if(!(e&3)){if(b>>>0<256){h=0;return h|0;}if(f>>>0>=(b+4|0)>>>0?(f-b|0)>>>0<=c[5538]<<1>>>0:0){h=a;return h|0;}h=0;return h|0;}if(f>>>0>=b>>>0){i=f-b|0;if(i>>>0<=15){h=a;return h|0;}j=a+b|0;c[d>>2]=e&1|b|2;c[j+4>>2]=i|3;k=g+4|0;c[k>>2]=c[k>>2]|1;Hy(j,i);h=a;return h|0;}if((c[5424]|0)==(g|0)){i=(c[5421]|0)+f|0;j=i-b|0;k=a+b|0;if(i>>>0<=b>>>0){h=0;return h|0;}c[d>>2]=e&1|b|2;c[k+4>>2]=j|1;c[5424]=k;c[5421]=j;h=a;return h|0;}if((c[5423]|0)==(g|0)){j=(c[5420]|0)+f|0;if(j>>>0<b>>>0){h=0;return h|0;}k=j-b|0;if(k>>>0>15){i=a+b|0;l=a+j|0;c[d>>2]=e&1|b|2;c[i+4>>2]=k|1;c[l>>2]=k;m=l+4|0;c[m>>2]=c[m>>2]&-2;n=i;o=k;}else{c[d>>2]=e&1|j|2;k=a+j+4|0;c[k>>2]=c[k>>2]|1;n=0;o=0;}c[5420]=o;c[5423]=n;h=a;return h|0;}n=c[g+4>>2]|0;if(n&2|0){h=0;return h|0;}o=(n&-8)+f|0;if(o>>>0<b>>>0){h=0;return h|0;}f=o-b|0;k=n>>>3;do{if(n>>>0<256){j=c[g+8>>2]|0;i=c[g+12>>2]|0;if((i|0)==(j|0)){c[5418]=c[5418]&~(1<<k);break;}else{c[j+12>>2]=i;c[i+8>>2]=j;break;}}else{j=c[g+24>>2]|0;i=c[g+12>>2]|0;do{if((i|0)==(g|0)){m=g+16|0;l=m+4|0;p=c[l>>2]|0;if(!p){q=c[m>>2]|0;if(!q){r=0;break;}else{s=q;t=m;}}else{s=p;t=l;}l=s;p=t;while(1){m=l+20|0;q=c[m>>2]|0;if(!q){u=l+16|0;v=c[u>>2]|0;if(!v)break;else{w=v;x=u;}}else{w=q;x=m;}l=w;p=x;}c[p>>2]=0;r=l;}else{m=c[g+8>>2]|0;c[m+12>>2]=i;c[i+8>>2]=m;r=i;}}while(0);if(j|0){i=c[g+28>>2]|0;m=21976+(i<<2)|0;if((c[m>>2]|0)==(g|0)){c[m>>2]=r;if(!r){c[5419]=c[5419]&~(1<<i);break;}}else{i=j+16|0;c[((c[i>>2]|0)==(g|0)?i:j+20|0)>>2]=r;if(!r)break;}c[r+24>>2]=j;i=g+16|0;m=c[i>>2]|0;if(m|0){c[r+16>>2]=m;c[m+24>>2]=r;}m=c[i+4>>2]|0;if(m|0){c[r+20>>2]=m;c[m+24>>2]=r;}}}}while(0);if(f>>>0<16){c[d>>2]=e&1|o|2;r=a+o+4|0;c[r>>2]=c[r>>2]|1;h=a;return h|0;}else{r=a+b|0;c[d>>2]=e&1|b|2;c[r+4>>2]=f|3;b=a+o+4|0;c[b>>2]=c[b>>2]|1;Hy(r,f);h=a;return h|0;}return 0;}function Hy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;d=a+b|0;e=c[a+4>>2]|0;do{if(!(e&1)){f=c[a>>2]|0;if(!(e&3))return;g=a+(0-f)|0;h=f+b|0;if((c[5423]|0)==(g|0)){i=d+4|0;j=c[i>>2]|0;if((j&3|0)!=3){k=g;l=h;break;}c[5420]=h;c[i>>2]=j&-2;c[g+4>>2]=h|1;c[d>>2]=h;return;}j=f>>>3;if(f>>>0<256){f=c[g+8>>2]|0;i=c[g+12>>2]|0;if((i|0)==(f|0)){c[5418]=c[5418]&~(1<<j);k=g;l=h;break;}else{c[f+12>>2]=i;c[i+8>>2]=f;k=g;l=h;break;}}f=c[g+24>>2]|0;i=c[g+12>>2]|0;do{if((i|0)==(g|0)){j=g+16|0;m=j+4|0;n=c[m>>2]|0;if(!n){o=c[j>>2]|0;if(!o){p=0;break;}else{q=o;r=j;}}else{q=n;r=m;}m=q;n=r;while(1){j=m+20|0;o=c[j>>2]|0;if(!o){s=m+16|0;t=c[s>>2]|0;if(!t)break;else{u=t;v=s;}}else{u=o;v=j;}m=u;n=v;}c[n>>2]=0;p=m;}else{j=c[g+8>>2]|0;c[j+12>>2]=i;c[i+8>>2]=j;p=i;}}while(0);if(f){i=c[g+28>>2]|0;j=21976+(i<<2)|0;if((c[j>>2]|0)==(g|0)){c[j>>2]=p;if(!p){c[5419]=c[5419]&~(1<<i);k=g;l=h;break;}}else{i=f+16|0;c[((c[i>>2]|0)==(g|0)?i:f+20|0)>>2]=p;if(!p){k=g;l=h;break;}}c[p+24>>2]=f;i=g+16|0;j=c[i>>2]|0;if(j|0){c[p+16>>2]=j;c[j+24>>2]=p;}j=c[i+4>>2]|0;if(j){c[p+20>>2]=j;c[j+24>>2]=p;k=g;l=h;}else{k=g;l=h;}}else{k=g;l=h;}}else{k=a;l=b;}}while(0);b=d+4|0;a=c[b>>2]|0;if(!(a&2)){if((c[5424]|0)==(d|0)){p=(c[5421]|0)+l|0;c[5421]=p;c[5424]=k;c[k+4>>2]=p|1;if((k|0)!=(c[5423]|0))return;c[5423]=0;c[5420]=0;return;}if((c[5423]|0)==(d|0)){p=(c[5420]|0)+l|0;c[5420]=p;c[5423]=k;c[k+4>>2]=p|1;c[k+p>>2]=p;return;}p=(a&-8)+l|0;v=a>>>3;do{if(a>>>0<256){u=c[d+8>>2]|0;r=c[d+12>>2]|0;if((r|0)==(u|0)){c[5418]=c[5418]&~(1<<v);break;}else{c[u+12>>2]=r;c[r+8>>2]=u;break;}}else{u=c[d+24>>2]|0;r=c[d+12>>2]|0;do{if((r|0)==(d|0)){q=d+16|0;e=q+4|0;j=c[e>>2]|0;if(!j){i=c[q>>2]|0;if(!i){w=0;break;}else{x=i;y=q;}}else{x=j;y=e;}e=x;j=y;while(1){q=e+20|0;i=c[q>>2]|0;if(!i){o=e+16|0;s=c[o>>2]|0;if(!s)break;else{z=s;A=o;}}else{z=i;A=q;}e=z;j=A;}c[j>>2]=0;w=e;}else{m=c[d+8>>2]|0;c[m+12>>2]=r;c[r+8>>2]=m;w=r;}}while(0);if(u|0){r=c[d+28>>2]|0;h=21976+(r<<2)|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=w;if(!w){c[5419]=c[5419]&~(1<<r);break;}}else{r=u+16|0;c[((c[r>>2]|0)==(d|0)?r:u+20|0)>>2]=w;if(!w)break;}c[w+24>>2]=u;r=d+16|0;h=c[r>>2]|0;if(h|0){c[w+16>>2]=h;c[h+24>>2]=w;}h=c[r+4>>2]|0;if(h|0){c[w+20>>2]=h;c[h+24>>2]=w;}}}}while(0);c[k+4>>2]=p|1;c[k+p>>2]=p;if((k|0)==(c[5423]|0)){c[5420]=p;return;}else B=p;}else{c[b>>2]=a&-2;c[k+4>>2]=l|1;c[k+l>>2]=l;B=l;}l=B>>>3;if(B>>>0<256){a=21712+(l<<1<<2)|0;b=c[5418]|0;p=1<<l;if(!(b&p)){c[5418]=b|p;C=a;D=a+8|0;}else{p=a+8|0;C=c[p>>2]|0;D=p;}c[D>>2]=k;c[C+12>>2]=k;c[k+8>>2]=C;c[k+12>>2]=a;return;}a=B>>>8;if(a){if(B>>>0>16777215)E=31;else{C=(a+1048320|0)>>>16&8;D=a<<C;a=(D+520192|0)>>>16&4;p=D<<a;D=(p+245760|0)>>>16&2;b=14-(a|C|D)+(p<<D>>>15)|0;E=B>>>(b+7|0)&1|b<<1;}}else E=0;b=21976+(E<<2)|0;c[k+28>>2]=E;c[k+20>>2]=0;c[k+16>>2]=0;D=c[5419]|0;p=1<<E;if(!(D&p)){c[5419]=D|p;c[b>>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;return;}p=c[b>>2]|0;a:do{if((c[p+4>>2]&-8|0)==(B|0))F=p;else{b=B<<((E|0)==31?0:25-(E>>>1)|0);D=p;while(1){G=D+16+(b>>>31<<2)|0;C=c[G>>2]|0;if(!C)break;if((c[C+4>>2]&-8|0)==(B|0)){F=C;break a;}else{b=b<<1;D=C;}}c[G>>2]=k;c[k+24>>2]=D;c[k+12>>2]=k;c[k+8>>2]=k;return;}}while(0);G=F+8|0;B=c[G>>2]|0;c[B+12>>2]=k;c[G>>2]=k;c[k+8>>2]=B;c[k+12>>2]=F;c[k+24>>2]=0;return;}function Iy(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=Oy(c[a+60>>2]|0)|0;a=Ly(Ja(6,d|0)|0)|0;l=b;return a|0;}function Jy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=l;l=l+32|0;g=f;c[b+36>>2]=3;if((c[b>>2]&64|0)==0?(c[g>>2]=c[b+60>>2],c[g+4>>2]=21523,c[g+8>>2]=f+16,Ia(54,g|0)|0):0)a[b+75>>0]=-1;g=Ny(b,d,e)|0;l=f;return g|0;}function Ky(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+32|0;f=e;g=e+20|0;c[f>>2]=c[a+60>>2];c[f+4>>2]=0;c[f+8>>2]=b;c[f+12>>2]=g;c[f+16>>2]=d;if((Ly(Da(140,f|0)|0)|0)<0){c[g>>2]=-1;h=-1;}else h=c[g>>2]|0;l=e;return h|0;}function Ly(a){a=a|0;var b=0;if(a>>>0>4294963200){c[(My()|0)>>2]=0-a;b=-1;}else b=a;return b|0;}function My(){return 22232;}function Ny(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;e=l;l=l+48|0;f=e+32|0;g=e+16|0;h=e;i=a+28|0;j=c[i>>2]|0;c[h>>2]=j;k=a+20|0;m=(c[k>>2]|0)-j|0;c[h+4>>2]=m;c[h+8>>2]=b;c[h+12>>2]=d;b=m+d|0;m=a+60|0;c[g>>2]=c[m>>2];c[g+4>>2]=h;c[g+8>>2]=2;j=Ly(Fa(146,g|0)|0)|0;a:do{if((b|0)!=(j|0)){g=2;n=b;o=h;p=j;while(1){if((p|0)<0)break;n=n-p|0;q=c[o+4>>2]|0;r=p>>>0>q>>>0;s=r?o+8|0:o;t=g+(r<<31>>31)|0;u=p-(r?q:0)|0;c[s>>2]=(c[s>>2]|0)+u;q=s+4|0;c[q>>2]=(c[q>>2]|0)-u;c[f>>2]=c[m>>2];c[f+4>>2]=s;c[f+8>>2]=t;p=Ly(Fa(146,f|0)|0)|0;if((n|0)==(p|0)){v=3;break a;}else{g=t;o=s;}}c[a+16>>2]=0;c[i>>2]=0;c[k>>2]=0;c[a>>2]=c[a>>2]|32;if((g|0)==2)w=0;else w=d-(c[o+4>>2]|0)|0;}else v=3;}while(0);if((v|0)==3){v=c[a+44>>2]|0;c[a+16>>2]=v+(c[a+48>>2]|0);a=v;c[i>>2]=a;c[k>>2]=a;w=d;}l=e;return w|0;}function Oy(a){a=a|0;return a|0;}function Py(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+32|0;g=f+16|0;h=f;c[h>>2]=d;i=h+4|0;j=b+48|0;k=c[j>>2]|0;c[i>>2]=e-((k|0)!=0&1);m=b+44|0;c[h+8>>2]=c[m>>2];c[h+12>>2]=k;c[g>>2]=c[b+60>>2];c[g+4>>2]=h;c[g+8>>2]=2;h=Ly(Ea(145,g|0)|0)|0;if((h|0)>=1){g=c[i>>2]|0;if(h>>>0>g>>>0){i=c[m>>2]|0;m=b+4|0;c[m>>2]=i;k=i;c[b+8>>2]=k+(h-g);if(!(c[j>>2]|0))n=e;else{c[m>>2]=k+1;a[d+(e+-1)>>0]=a[k>>0]|0;n=e;}}else n=h;}else{c[b>>2]=c[b>>2]|h&48^16;n=h;}l=f;return n|0;}function Qy(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;a:do{if(!d)e=0;else{f=b;g=d;h=c;while(1){i=a[f>>0]|0;j=a[h>>0]|0;if(i<<24>>24!=j<<24>>24)break;g=g+-1|0;if(!g){e=0;break a;}else{f=f+1|0;h=h+1|0;}}e=(i&255)-(j&255)|0;}}while(0);return e|0;}function Ry(b,c){b=b|0;c=c|0;var d=0;d=Xy(b,c)|0;return((a[d>>0]|0)==(c&255)<<24>>24?d:0)|0;}function Sy(a){a=a|0;return(a+-48|0)>>>0<10|0;}function Ty(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=b;a:do{if(!(d&3)){e=b;f=5;}else{g=b;h=d;while(1){if(!(a[g>>0]|0)){i=h;break a;}j=g+1|0;h=j;if(!(h&3)){e=j;f=5;break;}else g=j;}}}while(0);if((f|0)==5){f=e;while(1){k=c[f>>2]|0;if(!((k&-2139062144^-2139062144)&k+-16843009))f=f+4|0;else break;}if(!((k&255)<<24>>24))l=f;else{k=f;while(1){f=k+1|0;if(!(a[f>>0]|0)){l=f;break;}else k=f;}}i=l;}return i-d|0;}function Uy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;f=d&255;g=(e|0)!=0;a:do{if(g&(b&3|0)!=0){h=d&255;i=b;j=e;while(1){if((a[i>>0]|0)==h<<24>>24){k=i;l=j;m=6;break a;}n=i+1|0;o=j+-1|0;p=(o|0)!=0;if(p&(n&3|0)!=0){i=n;j=o;}else{q=n;r=o;s=p;m=5;break;}}}else{q=b;r=e;s=g;m=5;}}while(0);if((m|0)==5)if(s){k=q;l=r;m=6;}else m=16;b:do{if((m|0)==6){r=d&255;if((a[k>>0]|0)==r<<24>>24)if(!l){m=16;break;}else{t=k;break;}q=N(f,16843009)|0;c:do{if(l>>>0>3){s=k;g=l;while(1){e=c[s>>2]^q;if((e&-2139062144^-2139062144)&e+-16843009|0){u=g;v=s;break c;}e=s+4|0;b=g+-4|0;if(b>>>0>3){s=e;g=b;}else{w=e;x=b;m=11;break;}}}else{w=k;x=l;m=11;}}while(0);if((m|0)==11)if(!x){m=16;break;}else{u=x;v=w;}q=v;g=u;while(1){if((a[q>>0]|0)==r<<24>>24){t=q;break b;}g=g+-1|0;if(!g){m=16;break;}else q=q+1|0;}}}while(0);if((m|0)==16)t=0;return t|0;}function Vy(a){a=a|0;return 0;}function Wy(a){a=a|0;return;}function Xy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=d&255;a:do{if(!e)f=b+(Ty(b)|0)|0;else{if(!(b&3))g=b;else{h=d&255;i=b;while(1){j=a[i>>0]|0;if(j<<24>>24==0?1:j<<24>>24==h<<24>>24){f=i;break a;}j=i+1|0;if(!(j&3)){g=j;break;}else i=j;}}i=N(e,16843009)|0;h=c[g>>2]|0;b:do{if(!((h&-2139062144^-2139062144)&h+-16843009)){j=g;k=h;while(1){l=k^i;if((l&-2139062144^-2139062144)&l+-16843009|0){m=j;break b;}l=j+4|0;k=c[l>>2]|0;if((k&-2139062144^-2139062144)&k+-16843009|0){m=l;break;}else j=l;}}else m=g;}while(0);i=d&255;h=m;while(1){j=a[h>>0]|0;if(j<<24>>24==0?1:j<<24>>24==i<<24>>24){f=h;break;}else h=h+1|0;}}}while(0);return f|0;}function Yy(a,b){a=a|0;b=b|0;var d=0;if(!b)d=0;else d=Zy(c[b>>2]|0,c[b+4>>2]|0,a)|0;return((d|0)==0?a:d)|0;}function Zy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=(c[b>>2]|0)+1794895138|0;g=_y(c[b+8>>2]|0,f)|0;h=_y(c[b+12>>2]|0,f)|0;i=_y(c[b+16>>2]|0,f)|0;a:do{if((g>>>0<d>>>2>>>0?(j=d-(g<<2)|0,h>>>0<j>>>0&i>>>0<j>>>0):0)?((i|h)&3|0)==0:0){j=h>>>2;k=i>>>2;l=0;m=g;while(1){n=m>>>1;o=l+n|0;p=o<<1;q=p+j|0;r=_y(c[b+(q<<2)>>2]|0,f)|0;s=_y(c[b+(q+1<<2)>>2]|0,f)|0;if(!(s>>>0<d>>>0&r>>>0<(d-s|0)>>>0)){t=0;break a;}if(a[b+(s+r)>>0]|0){t=0;break a;}r=$y(e,b+s|0)|0;if(!r)break;s=(r|0)<0;if((m|0)==1){t=0;break a;}l=s?l:o;m=s?n:m-n|0;}m=p+k|0;l=_y(c[b+(m<<2)>>2]|0,f)|0;j=_y(c[b+(m+1<<2)>>2]|0,f)|0;if(j>>>0<d>>>0&l>>>0<(d-j|0)>>>0)t=(a[b+(j+l)>>0]|0)==0?b+j|0:0;else t=0;}else t=0;}while(0);return t|0;}function _y(a,b){a=a|0;b=b|0;var c=0;c=kE(a|0)|0;return((b|0)==0?a:c)|0;}function $y(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24){f=e;g=d;}else{d=c;c=b;do{c=c+1|0;d=d+1|0;b=a[c>>0]|0;e=a[d>>0]|0;}while(!(b<<24>>24==0?1:b<<24>>24!=e<<24>>24));f=e;g=b;}return(g&255)-(f&255)|0;}function az(){return 12260;}function bz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=l;l=l+16|0;g=f;c[g>>2]=e;e=cz(a,b,d,g)|0;l=f;return e|0;}function cz(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+128|0;h=g+124|0;i=g;j=i;k=12504;m=j+124|0;do{c[j>>2]=c[k>>2];j=j+4|0;k=k+4|0;}while((j|0)<(m|0));if((d+-1|0)>>>0>2147483646){if(!d){n=h;o=1;p=4;}else{c[(My()|0)>>2]=75;q=-1;}}else{n=b;o=d;p=4;}if((p|0)==4){p=-2-n|0;d=o>>>0>p>>>0?p:o;c[i+48>>2]=d;o=i+20|0;c[o>>2]=n;c[i+44>>2]=n;p=n+d|0;n=i+16|0;c[n>>2]=p;c[i+28>>2]=p;p=dz(i,e,f)|0;if(!d)q=p;else{d=c[o>>2]|0;a[d+(((d|0)==(c[n>>2]|0))<<31>>31)>>0]=0;q=p;}}l=g;return q|0;}function dz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+224|0;g=f+208|0;h=f+160|0;i=f+80|0;j=f;k=h;m=k+40|0;do{c[k>>2]=0;k=k+4|0;}while((k|0)<(m|0));c[g>>2]=c[e>>2];if((ez(0,d,g,i,h)|0)<0)n=-1;else{if((c[b+76>>2]|0)>-1)o=Vy(b)|0;else o=0;e=c[b>>2]|0;k=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;e=b+48|0;if(!(c[e>>2]|0)){m=b+44|0;p=c[m>>2]|0;c[m>>2]=j;q=b+28|0;c[q>>2]=j;r=b+20|0;c[r>>2]=j;c[e>>2]=80;s=b+16|0;c[s>>2]=j+80;j=ez(b,d,g,i,h)|0;if(!p)t=j;else{rc[c[b+36>>2]&31](b,0,0)|0;u=(c[r>>2]|0)==0?-1:j;c[m>>2]=p;c[e>>2]=0;c[s>>2]=0;c[q>>2]=0;c[r>>2]=0;t=u;}}else t=ez(b,d,g,i,h)|0;h=c[b>>2]|0;c[b>>2]=h|k;if(o|0)Wy(b);n=(h&32|0)==0?t:-1;}l=f;return n|0;}function ez(d,e,f,g,i){d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0;j=l;l=l+64|0;k=j+56|0;m=j+40|0;n=j;o=j+48|0;p=j+60|0;c[k>>2]=e;e=(d|0)!=0;q=n+40|0;r=q;s=n+39|0;n=o+4|0;t=0;u=0;v=0;a:while(1){w=t;x=u;while(1){do{if((x|0)>-1){if((w|0)>(2147483647-x|0)){c[(My()|0)>>2]=75;z=-1;break;}else{z=w+x|0;break;}}else z=x;}while(0);A=c[k>>2]|0;B=a[A>>0]|0;if(!(B<<24>>24)){C=94;break a;}D=B;B=A;b:while(1){switch(D<<24>>24){case 37:{C=10;break b;break;}case 0:{E=B;break b;break;}default:{}}F=B+1|0;c[k>>2]=F;D=a[F>>0]|0;B=F;}c:do{if((C|0)==10){C=0;D=B;F=B;while(1){if((a[F+1>>0]|0)!=37){E=D;break c;}G=D+1|0;F=F+2|0;c[k>>2]=F;if((a[F>>0]|0)!=37){E=G;break;}else D=G;}}}while(0);w=E-A|0;if(e)fz(d,A,w);if(!w)break;else x=z;}x=(Sy(a[(c[k>>2]|0)+1>>0]|0)|0)==0;w=c[k>>2]|0;if(!x?(a[w+2>>0]|0)==36:0){H=(a[w+1>>0]|0)+-48|0;I=1;J=3;}else{H=-1;I=v;J=1;}x=w+J|0;c[k>>2]=x;w=a[x>>0]|0;B=(w<<24>>24)+-32|0;if(B>>>0>31|(1<<B&75913|0)==0){K=0;L=w;M=x;}else{w=0;D=B;B=x;while(1){x=1<<D|w;F=B+1|0;c[k>>2]=F;G=a[F>>0]|0;D=(G<<24>>24)+-32|0;if(D>>>0>31|(1<<D&75913|0)==0){K=x;L=G;M=F;break;}else{w=x;B=F;}}}if(L<<24>>24==42){if((Sy(a[M+1>>0]|0)|0)!=0?(B=c[k>>2]|0,(a[B+2>>0]|0)==36):0){w=B+1|0;c[i+((a[w>>0]|0)+-48<<2)>>2]=10;N=c[g+((a[w>>0]|0)+-48<<3)>>2]|0;O=1;P=B+3|0;}else{if(I|0){Q=-1;break;}if(e){B=(c[f>>2]|0)+(4-1)&~(4-1);w=c[B>>2]|0;c[f>>2]=B+4;R=w;}else R=0;N=R;O=0;P=(c[k>>2]|0)+1|0;}c[k>>2]=P;w=(N|0)<0;S=w?0-N|0:N;T=w?K|8192:K;U=O;V=P;}else{w=gz(k)|0;if((w|0)<0){Q=-1;break;}S=w;T=K;U=I;V=c[k>>2]|0;}do{if((a[V>>0]|0)==46){w=V+1|0;if((a[w>>0]|0)!=42){c[k>>2]=w;w=gz(k)|0;W=w;X=c[k>>2]|0;break;}if(Sy(a[V+2>>0]|0)|0?(w=c[k>>2]|0,(a[w+3>>0]|0)==36):0){B=w+2|0;c[i+((a[B>>0]|0)+-48<<2)>>2]=10;D=c[g+((a[B>>0]|0)+-48<<3)>>2]|0;B=w+4|0;c[k>>2]=B;W=D;X=B;break;}if(U|0){Q=-1;break a;}if(e){B=(c[f>>2]|0)+(4-1)&~(4-1);D=c[B>>2]|0;c[f>>2]=B+4;Y=D;}else Y=0;D=(c[k>>2]|0)+2|0;c[k>>2]=D;W=Y;X=D;}else{W=-1;X=V;}}while(0);D=0;B=X;while(1){if(((a[B>>0]|0)+-65|0)>>>0>57){Q=-1;break a;}w=B;B=B+1|0;c[k>>2]=B;Z=a[(a[w>>0]|0)+-65+(7456+(D*58|0))>>0]|0;_=Z&255;if((_+-1|0)>>>0>=8)break;else D=_;}if(!(Z<<24>>24)){Q=-1;break;}w=(H|0)>-1;do{if(Z<<24>>24==19){if(w){Q=-1;break a;}else C=54;}else{if(w){c[i+(H<<2)>>2]=_;F=g+(H<<3)|0;x=c[F+4>>2]|0;G=m;c[G>>2]=c[F>>2];c[G+4>>2]=x;C=54;break;}if(!e){Q=0;break a;}hz(m,_,f);$=c[k>>2]|0;C=55;}}while(0);if((C|0)==54){C=0;if(e){$=B;C=55;}else aa=0;}d:do{if((C|0)==55){C=0;w=a[$+-1>>0]|0;x=(D|0)!=0&(w&15|0)==3?w&-33:w;w=T&-65537;G=(T&8192|0)==0?T:w;e:do{switch(x|0){case 110:{switch((D&255)<<24>>24){case 0:{c[c[m>>2]>>2]=z;aa=0;break d;break;}case 1:{c[c[m>>2]>>2]=z;aa=0;break d;break;}case 2:{F=c[m>>2]|0;c[F>>2]=z;c[F+4>>2]=((z|0)<0)<<31>>31;aa=0;break d;break;}case 3:{b[c[m>>2]>>1]=z;aa=0;break d;break;}case 4:{a[c[m>>2]>>0]=z;aa=0;break d;break;}case 6:{c[c[m>>2]>>2]=z;aa=0;break d;break;}case 7:{F=c[m>>2]|0;c[F>>2]=z;c[F+4>>2]=((z|0)<0)<<31>>31;aa=0;break d;break;}default:{aa=0;break d;}}break;}case 112:{ba=120;ca=W>>>0>8?W:8;da=G|8;C=67;break;}case 88:case 120:{ba=x;ca=W;da=G;C=67;break;}case 111:{F=m;ea=c[F>>2]|0;fa=c[F+4>>2]|0;F=jz(ea,fa,q)|0;ga=r-F|0;ha=F;ia=0;ja=17834;ka=(G&8|0)==0|(W|0)>(ga|0)?W:ga+1|0;la=G;ma=ea;na=fa;C=73;break;}case 105:case 100:{fa=m;ea=c[fa>>2]|0;ga=c[fa+4>>2]|0;if((ga|0)<0){fa=eE(0,0,ea|0,ga|0)|0;F=y;oa=m;c[oa>>2]=fa;c[oa+4>>2]=F;pa=1;qa=17834;ra=fa;sa=F;C=72;break e;}else{pa=(G&2049|0)!=0&1;qa=(G&2048|0)==0?(G&1|0)==0?17834:17836:17835;ra=ea;sa=ga;C=72;break e;}break;}case 117:{ga=m;pa=0;qa=17834;ra=c[ga>>2]|0;sa=c[ga+4>>2]|0;C=72;break;}case 99:{a[s>>0]=c[m>>2];ta=s;ua=0;va=17834;wa=1;xa=w;ya=r;break;}case 109:{za=lz(c[(My()|0)>>2]|0)|0;C=77;break;}case 115:{ga=c[m>>2]|0;za=(ga|0)==0?17844:ga;C=77;break;}case 67:{c[o>>2]=c[m>>2];c[n>>2]=0;c[m>>2]=o;Aa=-1;C=81;break;}case 83:{if(!W){mz(d,32,S,0,G);Ba=0;C=91;}else{Aa=W;C=81;}break;}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{aa=oz(d,+h[m>>3],S,W,G,x)|0;break d;break;}default:{ta=A;ua=0;va=17834;wa=W;xa=G;ya=r;}}}while(0);f:do{if((C|0)==67){C=0;x=m;ga=c[x>>2]|0;ea=c[x+4>>2]|0;x=iz(ga,ea,q,ba&32)|0;F=(da&8|0)==0|(ga|0)==0&(ea|0)==0;ha=x;ia=F?0:2;ja=F?17834:17834+(ba>>>4)|0;ka=ca;la=da;ma=ga;na=ea;C=73;}else if((C|0)==72){C=0;ha=kz(ra,sa,q)|0;ia=pa;ja=qa;ka=W;la=G;ma=ra;na=sa;C=73;}else if((C|0)==77){C=0;ea=Uy(za,0,W)|0;ga=(ea|0)==0;ta=za;ua=0;va=17834;wa=ga?W:ea-za|0;xa=w;ya=ga?za+W|0:ea;}else if((C|0)==81){C=0;ea=c[m>>2]|0;ga=0;while(1){F=c[ea>>2]|0;if(!F){Ca=ga;break;}x=nz(p,F)|0;Da=(x|0)<0;if(Da|x>>>0>(Aa-ga|0)>>>0){C=85;break;}F=x+ga|0;if(Aa>>>0>F>>>0){ea=ea+4|0;ga=F;}else{Ca=F;break;}}if((C|0)==85){C=0;if(Da){Q=-1;break a;}else Ca=ga;}mz(d,32,S,Ca,G);if(!Ca){Ba=0;C=91;}else{ea=c[m>>2]|0;F=0;while(1){x=c[ea>>2]|0;if(!x){Ba=Ca;C=91;break f;}fa=nz(p,x)|0;F=fa+F|0;if((F|0)>(Ca|0)){Ba=Ca;C=91;break f;}fz(d,p,fa);if(F>>>0>=Ca>>>0){Ba=Ca;C=91;break;}else ea=ea+4|0;}}}}while(0);if((C|0)==73){C=0;w=(ma|0)!=0|(na|0)!=0;ea=(ka|0)!=0|w;F=r-ha+((w^1)&1)|0;ta=ea?ha:q;ua=ia;va=ja;wa=ea?(ka|0)>(F|0)?ka:F:0;xa=(ka|0)>-1?la&-65537:la;ya=r;}else if((C|0)==91){C=0;mz(d,32,S,Ba,G^8192);aa=(S|0)>(Ba|0)?S:Ba;break;}F=ya-ta|0;ea=(wa|0)<(F|0)?F:wa;w=ea+ua|0;ga=(S|0)<(w|0)?w:S;mz(d,32,ga,w,xa);fz(d,va,ua);mz(d,48,ga,w,xa^65536);mz(d,48,ea,F,0);fz(d,ta,F);mz(d,32,ga,w,xa^8192);aa=ga;}}while(0);t=aa;u=z;v=U;}g:do{if((C|0)==94)if(!d){if(!v)Q=0;else{U=1;while(1){u=c[i+(U<<2)>>2]|0;if(!u)break;hz(g+(U<<3)|0,u,f);u=U+1|0;if(u>>>0<10)U=u;else{Q=1;break g;}}u=U;while(1){if(c[i+(u<<2)>>2]|0){Q=-1;break g;}u=u+1|0;if(u>>>0>=10){Q=1;break;}}}}else Q=z;}while(0);l=j;return Q|0;}function fz(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))xz(b,d,a)|0;return;}function gz(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;if(!(Sy(a[c[b>>2]>>0]|0)|0))d=0;else{e=0;while(1){f=c[b>>2]|0;g=(e*10|0)+-48+(a[f>>0]|0)|0;h=f+1|0;c[b>>2]=h;if(!(Sy(a[h>>0]|0)|0)){d=g;break;}else e=g;}}return d|0;}function hz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0;a:do{if(b>>>0<=20)do{switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);f=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=f;break a;break;}case 10:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a;break;}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);f=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=f;c[e+4>>2]=0;break a;break;}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);f=e;g=c[f>>2]|0;i=c[f+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=g;c[e+4>>2]=i;break a;break;}case 13:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=(e&65535)<<16>>16;e=a;c[e>>2]=i;c[e+4>>2]=((i|0)<0)<<31>>31;break a;break;}case 14:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=a;c[i>>2]=e&65535;c[i+4>>2]=0;break a;break;}case 15:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=(e&255)<<24>>24;e=a;c[e>>2]=i;c[e+4>>2]=((i|0)<0)<<31>>31;break a;break;}case 16:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=a;c[i>>2]=e&255;c[i+4>>2]=0;break a;break;}case 17:{i=(c[d>>2]|0)+(8-1)&~(8-1);j=+h[i>>3];c[d>>2]=i+8;h[a>>3]=j;break a;break;}case 18:{i=(c[d>>2]|0)+(8-1)&~(8-1);j=+h[i>>3];c[d>>2]=i+8;h[a>>3]=j;break a;break;}default:break a;}}while(0);}while(0);return;}function iz(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0;if((b|0)==0&(c|0)==0)g=e;else{h=e;e=c;c=b;while(1){b=h+-1|0;a[b>>0]=d[7920+(c&15)>>0]|0|f;c=iE(c|0,e|0,4)|0;e=y;if((c|0)==0&(e|0)==0){g=b;break;}else h=b;}}return g|0;}function jz(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;if((b|0)==0&(c|0)==0)e=d;else{f=d;d=c;c=b;while(1){b=f+-1|0;a[b>>0]=c&7|48;c=iE(c|0,d|0,3)|0;d=y;if((c|0)==0&(d|0)==0){e=b;break;}else f=b;}}return e|0;}function kz(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){e=d;f=b;g=c;do{c=f;f=hE(f|0,g|0,10,0)|0;h=g;g=y;i=cE(f|0,g|0,10,0)|0;j=eE(c|0,h|0,i|0,y|0)|0;e=e+-1|0;a[e>>0]=j&255|48;}while(h>>>0>9|(h|0)==9&c>>>0>4294967295);k=f;l=e;}else{k=b;l=d;}if(!k)m=l;else{d=k;k=l;while(1){l=d;d=(d>>>0)/10|0;b=k+-1|0;a[b>>0]=l-(d*10|0)|48;if(l>>>0<10){m=b;break;}else k=b;}}return m|0;}function lz(a){a=a|0;return vz(a,c[(uz()|0)+188>>2]|0)|0;}function mz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+256|0;g=f;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;oE(g|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;d=e;do{fz(a,g,256);d=d+-256|0;}while(d>>>0>255);h=b&255;}else h=e;fz(a,g,h);}l=f;return;}function nz(a,b){a=a|0;b=b|0;var c=0;if(!a)c=0;else c=sz(a,b,0)|0;return c|0;}function oz(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0.0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0,H=0,I=0,J=0.0,K=0,L=0,M=0,O=0,P=0,Q=0,R=0.0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0.0,ja=0.0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0;j=l;l=l+560|0;k=j+32|0;m=j+536|0;n=j;o=n;p=j+540|0;c[m>>2]=0;q=p+12|0;r=pz(e)|0;s=y;if((s|0)<0){t=-e;u=pz(t)|0;v=t;w=1;x=17851;z=y;A=u;}else{v=e;w=(h&2049|0)!=0&1;x=(h&2048|0)==0?(h&1|0)==0?17852:17857:17854;z=s;A=r;}do{if(0==0&(z&2146435072|0)==2146435072){r=(i&32|0)!=0;A=w+3|0;mz(b,32,f,A,h&-65537);fz(b,x,w);fz(b,v!=v|0.0!=0.0?r?17878:17882:r?17870:17874,3);mz(b,32,f,A,h^8192);B=A;}else{e=+qz(v,m)*2.0;A=e!=0.0;if(A)c[m>>2]=(c[m>>2]|0)+-1;r=i|32;if((r|0)==97){s=i&32;u=(s|0)==0?x:x+9|0;C=w|2;D=12-g|0;do{if(!(g>>>0>11|(D|0)==0)){t=8.0;E=D;do{E=E+-1|0;t=t*16.0;}while((E|0)!=0);if((a[u>>0]|0)==45){F=-(t+(-e-t));break;}else{F=e+t-t;break;}}else F=e;}while(0);D=c[m>>2]|0;E=(D|0)<0?0-D|0:D;G=kz(E,((E|0)<0)<<31>>31,q)|0;if((G|0)==(q|0)){E=p+11|0;a[E>>0]=48;H=E;}else H=G;a[H+-1>>0]=(D>>31&2)+43;D=H+-2|0;a[D>>0]=i+15;G=(g|0)<1;E=(h&8|0)==0;I=n;J=F;while(1){K=~~J;L=I+1|0;a[I>>0]=s|d[7920+K>>0];J=(J-+(K|0))*16.0;if((L-o|0)==1?!(E&(G&J==0.0)):0){a[L>>0]=46;M=I+2|0;}else M=L;if(!(J!=0.0))break;else I=M;}I=M;if((g|0)!=0?(-2-o+I|0)<(g|0):0){G=q;E=D;O=g+2+G-E|0;P=G;Q=E;}else{E=q;G=D;O=E-o-G+I|0;P=E;Q=G;}G=O+C|0;mz(b,32,f,G,h);fz(b,u,C);mz(b,48,f,G,h^65536);E=I-o|0;fz(b,n,E);I=P-Q|0;mz(b,48,O-(E+I)|0,0,0);fz(b,D,I);mz(b,32,f,G,h^8192);B=G;break;}G=(g|0)<0?6:g;if(A){I=(c[m>>2]|0)+-28|0;c[m>>2]=I;R=e*268435456.0;S=I;}else{R=e;S=c[m>>2]|0;}I=(S|0)<0?k:k+288|0;E=I;J=R;do{s=~~J>>>0;c[E>>2]=s;E=E+4|0;J=(J-+(s>>>0))*1.0e9;}while(J!=0.0);A=I;if((S|0)>0){D=I;C=E;u=S;while(1){s=(u|0)<29?u:29;L=C+-4|0;if(L>>>0>=D>>>0){K=L;L=0;do{T=jE(c[K>>2]|0,0,s|0)|0;U=dE(T|0,y|0,L|0,0)|0;T=y;L=hE(U|0,T|0,1e9,0)|0;V=cE(L|0,y|0,1e9,0)|0;W=eE(U|0,T|0,V|0,y|0)|0;c[K>>2]=W;K=K+-4|0;}while(K>>>0>=D>>>0);if(L){K=D+-4|0;c[K>>2]=L;X=K;}else X=D;}else X=D;a:do{if(C>>>0>X>>>0){K=C;while(1){W=K+-4|0;if(c[W>>2]|0){Y=K;break a;}if(W>>>0>X>>>0)K=W;else{Y=W;break;}}}else Y=C;}while(0);L=(c[m>>2]|0)-s|0;c[m>>2]=L;if((L|0)>0){D=X;C=Y;u=L;}else{Z=X;_=Y;$=L;break;}}}else{Z=I;_=E;$=S;}if(($|0)<0){u=((G+25|0)/9|0)+1|0;C=(r|0)==102;D=Z;L=_;K=$;while(1){W=0-K|0;V=(W|0)<9?W:9;if(D>>>0<L>>>0){W=(1<<V)+-1|0;T=1e9>>>V;U=0;aa=D;do{ba=c[aa>>2]|0;c[aa>>2]=(ba>>>V)+U;U=N(ba&W,T)|0;aa=aa+4|0;}while(aa>>>0<L>>>0);aa=(c[D>>2]|0)==0?D+4|0:D;if(!U){ca=L;da=aa;}else{c[L>>2]=U;ca=L+4|0;da=aa;}}else{ca=L;da=(c[D>>2]|0)==0?D+4|0:D;}aa=C?I:da;T=(ca-aa>>2|0)>(u|0)?aa+(u<<2)|0:ca;K=(c[m>>2]|0)+V|0;c[m>>2]=K;if((K|0)>=0){ea=da;fa=T;break;}else{D=da;L=T;}}}else{ea=Z;fa=_;}if(ea>>>0<fa>>>0){L=(A-ea>>2)*9|0;D=c[ea>>2]|0;if(D>>>0<10)ga=L;else{K=L;L=10;while(1){L=L*10|0;u=K+1|0;if(D>>>0<L>>>0){ga=u;break;}else K=u;}}}else ga=0;K=(r|0)==103;L=(G|0)!=0;D=G-((r|0)==102?0:ga)+((L&K)<<31>>31)|0;if((D|0)<(((fa-A>>2)*9|0)+-9|0)){u=D+9216|0;D=(u|0)/9|0;C=I+4+(D+-1024<<2)|0;E=u-(D*9|0)|0;if((E|0)<8){D=E;E=10;while(1){u=E*10|0;if((D|0)<7){D=D+1|0;E=u;}else{ha=u;break;}}}else ha=10;E=c[C>>2]|0;D=(E>>>0)/(ha>>>0)|0;r=E-(N(D,ha)|0)|0;u=(C+4|0)==(fa|0);if(!(u&(r|0)==0)){t=(D&1|0)==0?9007199254740992.0:9007199254740994.0;D=ha>>>1;J=r>>>0<D>>>0?.5:u&(r|0)==(D|0)?1.0:1.5;if(!w){ia=J;ja=t;}else{D=(a[x>>0]|0)==45;ia=D?-J:J;ja=D?-t:t;}D=E-r|0;c[C>>2]=D;if(ja+ia!=ja){r=D+ha|0;c[C>>2]=r;if(r>>>0>999999999){r=C;D=ea;while(1){E=r+-4|0;c[r>>2]=0;if(E>>>0<D>>>0){u=D+-4|0;c[u>>2]=0;ka=u;}else ka=D;u=(c[E>>2]|0)+1|0;c[E>>2]=u;if(u>>>0>999999999){r=E;D=ka;}else{la=E;ma=ka;break;}}}else{la=C;ma=ea;}D=(A-ma>>2)*9|0;r=c[ma>>2]|0;if(r>>>0<10){na=la;oa=D;pa=ma;}else{E=D;D=10;while(1){D=D*10|0;u=E+1|0;if(r>>>0<D>>>0){na=la;oa=u;pa=ma;break;}else E=u;}}}else{na=C;oa=ga;pa=ea;}}else{na=C;oa=ga;pa=ea;}E=na+4|0;qa=oa;ra=fa>>>0>E>>>0?E:fa;sa=pa;}else{qa=ga;ra=fa;sa=ea;}E=0-qa|0;b:do{if(ra>>>0>sa>>>0){D=ra;while(1){r=D+-4|0;if(c[r>>2]|0){ta=D;ua=1;break b;}if(r>>>0>sa>>>0)D=r;else{ta=r;ua=0;break;}}}else{ta=ra;ua=0;}}while(0);do{if(K){C=G+((L^1)&1)|0;if((C|0)>(qa|0)&(qa|0)>-5){va=i+-1|0;wa=C+-1-qa|0;}else{va=i+-2|0;wa=C+-1|0;}if(!(h&8)){if(ua?(C=c[ta+-4>>2]|0,(C|0)!=0):0){if(!((C>>>0)%10|0)){D=0;V=10;while(1){V=V*10|0;U=D+1|0;if((C>>>0)%(V>>>0)|0|0){xa=U;break;}else D=U;}}else xa=0;}else xa=9;D=((ta-A>>2)*9|0)+-9|0;if((va|32|0)==102){V=D-xa|0;C=(V|0)>0?V:0;ya=va;za=(wa|0)<(C|0)?wa:C;break;}else{C=D+qa-xa|0;D=(C|0)>0?C:0;ya=va;za=(wa|0)<(D|0)?wa:D;break;}}else{ya=va;za=wa;}}else{ya=i;za=G;}}while(0);G=(za|0)!=0;A=G?1:h>>>3&1;L=(ya|32|0)==102;if(L){Aa=0;Ba=(qa|0)>0?qa:0;}else{K=(qa|0)<0?E:qa;D=kz(K,((K|0)<0)<<31>>31,q)|0;K=q;if((K-D|0)<2){C=D;while(1){V=C+-1|0;a[V>>0]=48;if((K-V|0)<2)C=V;else{Ca=V;break;}}}else Ca=D;a[Ca+-1>>0]=(qa>>31&2)+43;C=Ca+-2|0;a[C>>0]=ya;Aa=C;Ba=K-C|0;}C=w+1+za+A+Ba|0;mz(b,32,f,C,h);fz(b,x,w);mz(b,48,f,C,h^65536);if(L){E=sa>>>0>I>>>0?I:sa;V=n+9|0;U=V;r=n+8|0;u=E;do{T=kz(c[u>>2]|0,0,V)|0;if((u|0)==(E|0)){if((T|0)==(V|0)){a[r>>0]=48;Da=r;}else Da=T;}else if(T>>>0>n>>>0){oE(n|0,48,T-o|0)|0;aa=T;while(1){W=aa+-1|0;if(W>>>0>n>>>0)aa=W;else{Da=W;break;}}}else Da=T;fz(b,Da,U-Da|0);u=u+4|0;}while(u>>>0<=I>>>0);if(!((h&8|0)==0&(G^1)))fz(b,18964,1);if(u>>>0<ta>>>0&(za|0)>0){I=za;U=u;while(1){r=kz(c[U>>2]|0,0,V)|0;if(r>>>0>n>>>0){oE(n|0,48,r-o|0)|0;E=r;while(1){L=E+-1|0;if(L>>>0>n>>>0)E=L;else{Ea=L;break;}}}else Ea=r;fz(b,Ea,(I|0)<9?I:9);U=U+4|0;E=I+-9|0;if(!(U>>>0<ta>>>0&(I|0)>9)){Fa=E;break;}else I=E;}}else Fa=za;mz(b,48,Fa+9|0,9,0);}else{I=ua?ta:sa+4|0;if(sa>>>0<I>>>0&(za|0)>-1){U=n+9|0;V=(h&8|0)==0;u=U;G=0-o|0;E=n+8|0;T=za;L=sa;while(1){A=kz(c[L>>2]|0,0,U)|0;if((A|0)==(U|0)){a[E>>0]=48;Ga=E;}else Ga=A;do{if((L|0)==(sa|0)){A=Ga+1|0;fz(b,Ga,1);if(V&(T|0)<1){Ha=A;break;}fz(b,18964,1);Ha=A;}else{if(Ga>>>0<=n>>>0){Ha=Ga;break;}oE(n|0,48,Ga+G|0)|0;A=Ga;while(1){K=A+-1|0;if(K>>>0>n>>>0)A=K;else{Ha=K;break;}}}}while(0);r=u-Ha|0;fz(b,Ha,(T|0)>(r|0)?r:T);A=T-r|0;L=L+4|0;if(!(L>>>0<I>>>0&(A|0)>-1)){Ia=A;break;}else T=A;}}else Ia=za;mz(b,48,Ia+18|0,18,0);fz(b,Aa,q-Aa|0);}mz(b,32,f,C,h^8192);B=C;}}while(0);l=j;return((B|0)<(f|0)?f:B)|0;}function pz(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;y=c[j+4>>2]|0;return b|0;}function qz(a,b){a=+a;b=b|0;return+ +rz(a,b);}function rz(a,b){a=+a;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,k=0,l=0.0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+4>>2]|0;f=iE(d|0,e|0,52)|0;switch(f&2047){case 0:{if(a!=0.0){g=+rz(a*18446744073709551616.0,b);i=g;k=(c[b>>2]|0)+-64|0;}else{i=a;k=0;}c[b>>2]=k;l=i;break;}case 2047:{l=a;break;}default:{c[b>>2]=(f&2047)+-1022;c[j>>2]=d;c[j+4>>2]=e&-2146435073|1071644672;l=+h[j>>3];}}return+l;}function sz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;do{if(b){if(d>>>0<128){a[b>>0]=d;f=1;break;}if(!(c[c[(tz()|0)+188>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;f=1;break;}else{c[(My()|0)>>2]=84;f=-1;break;}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;f=2;break;}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;f=3;break;}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;f=4;break;}else{c[(My()|0)>>2]=84;f=-1;break;}}else f=1;}while(0);return f|0;}function tz(){return az()|0;}function uz(){return az()|0;}function vz(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=0;while(1){if((d[7936+f>>0]|0)==(b|0)){g=4;break;}h=f+1|0;if((h|0)==87){i=87;g=5;break;}else f=h;}if((g|0)==4)if(!f)j=8032;else{i=f;g=5;}if((g|0)==5){g=8032;f=i;while(1){i=g;do{b=i;i=i+1|0;}while((a[b>>0]|0)!=0);f=f+-1|0;if(!f){j=i;break;}else g=i;}}return wz(j,c[e+20>>2]|0)|0;}function wz(a,b){a=a|0;b=b|0;return Yy(a,b)|0;}function xz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=e+16|0;g=c[f>>2]|0;if(!g){if(!(yz(e)|0)){h=c[f>>2]|0;i=5;}else j=0;}else{h=g;i=5;}a:do{if((i|0)==5){g=e+20|0;f=c[g>>2]|0;k=f;if((h-f|0)>>>0<d>>>0){j=rc[c[e+36>>2]&31](e,b,d)|0;break;}b:do{if((a[e+75>>0]|0)<0|(d|0)==0){l=0;m=b;n=d;o=k;}else{f=d;while(1){p=f+-1|0;if((a[b+p>>0]|0)==10)break;if(!p){l=0;m=b;n=d;o=k;break b;}else f=p;}p=rc[c[e+36>>2]&31](e,b,f)|0;if(p>>>0<f>>>0){j=p;break a;}l=f;m=b+f|0;n=d-f|0;o=c[g>>2]|0;}}while(0);mE(o|0,m|0,n|0)|0;c[g>>2]=(c[g>>2]|0)+n;j=l+n|0;}}while(0);return j|0;}function yz(b){b=b|0;var d=0,e=0,f=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;e=c[b>>2]|0;if(!(e&8)){c[b+8>>2]=0;c[b+4>>2]=0;d=c[b+44>>2]|0;c[b+28>>2]=d;c[b+20>>2]=d;c[b+16>>2]=d+(c[b+48>>2]|0);f=0;}else{c[b>>2]=e|32;f=-1;}return f|0;}function zz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+20|0;f=c[e>>2]|0;g=(c[a+16>>2]|0)-f|0;a=g>>>0>d>>>0?d:g;mE(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0;}function Az(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=dz(c[3e3]|0,a,e)|0;l=d;return b|0;}function Bz(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+16|0;g=f;h=e&255;a[g>>0]=h;i=b+16|0;j=c[i>>2]|0;if(!j){if(!(yz(b)|0)){k=c[i>>2]|0;m=4;}else n=-1;}else{k=j;m=4;}do{if((m|0)==4){j=b+20|0;i=c[j>>2]|0;if(i>>>0<k>>>0?(o=e&255,(o|0)!=(a[b+75>>0]|0)):0){c[j>>2]=i+1;a[i>>0]=h;n=o;break;}if((rc[c[b+36>>2]&31](b,g,1)|0)==1)n=d[g>>0]|0;else n=-1;}}while(0);l=f;return n|0;}function Cz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+48|0;f=e+32|0;g=e+16|0;h=e;if(Ry(17886,a[d>>0]|0)|0){i=Dz(d)|0;c[h>>2]=b;c[h+4>>2]=i|32768;c[h+8>>2]=438;b=Ly(Ha(5,h|0)|0)|0;if((b|0)>=0){if(i&524288|0){c[g>>2]=b;c[g+4>>2]=2;c[g+8>>2]=1;Ga(221,g|0)|0;}g=Ez(b,d)|0;if(!g){c[f>>2]=b;Ja(6,f|0)|0;j=0;}else j=g;}else j=0;}else{c[(My()|0)>>2]=22;j=0;}l=e;return j|0;}function Dz(b){b=b|0;var c=0,d=0,e=0,f=0;c=(Ry(b,43)|0)==0;d=a[b>>0]|0;e=c?d<<24>>24!=114&1:2;c=(Ry(b,120)|0)==0;f=c?e:e|128;e=(Ry(b,101)|0)==0;b=e?f:f|524288;f=d<<24>>24==114?b:b|64;b=d<<24>>24==119?f|512:f;return(d<<24>>24==97?b|1024:b)|0;}function Ez(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;e=l;l=l+64|0;f=e+40|0;g=e+24|0;h=e+16|0;i=e;j=e+56|0;if(Ry(17886,a[d>>0]|0)|0){k=Cy(1156)|0;if(!k)m=0;else{oE(k|0,0,124)|0;if(!(Ry(d,43)|0))c[k>>2]=(a[d>>0]|0)==114?8:4;if(Ry(d,101)|0){c[i>>2]=b;c[i+4>>2]=2;c[i+8>>2]=1;Ga(221,i|0)|0;}if((a[d>>0]|0)==97){c[h>>2]=b;c[h+4>>2]=3;d=Ga(221,h|0)|0;if(!(d&1024)){c[g>>2]=b;c[g+4>>2]=4;c[g+8>>2]=d|1024;Ga(221,g|0)|0;}g=c[k>>2]|128;c[k>>2]=g;n=g;}else n=c[k>>2]|0;c[k+60>>2]=b;c[k+44>>2]=k+132;c[k+48>>2]=1024;g=k+75|0;a[g>>0]=-1;if((n&8|0)==0?(c[f>>2]=b,c[f+4>>2]=21523,c[f+8>>2]=j,(Ia(54,f|0)|0)==0):0)a[g>>0]=10;c[k+32>>2]=22;c[k+36>>2]=3;c[k+40>>2]=2;c[k+12>>2]=29;if(!(c[5543]|0))c[k+76>>2]=-1;Fz(k)|0;m=k;}}else{c[(My()|0)>>2]=22;m=0;}l=e;return m|0;}function Fz(a){a=a|0;var b=0,d=0;b=Gz()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;Hz();return a|0;}function Gz(){Aa(22236);return 22244;}function Hz(){Ka(22236);return;}function Iz(){return az()|0;}function Jz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;do{if(a){if((c[a+76>>2]|0)<=-1){b=Mz(a)|0;break;}d=(Vy(a)|0)==0;e=Mz(a)|0;if(d)b=e;else{Wy(a);b=e;}}else{if(!(c[3032]|0))f=0;else f=Jz(c[3032]|0)|0;e=c[(Gz()|0)>>2]|0;if(!e)g=f;else{d=e;e=f;while(1){if((c[d+76>>2]|0)>-1)h=Vy(d)|0;else h=0;if((c[d+20>>2]|0)>>>0>(c[d+28>>2]|0)>>>0)i=Mz(d)|0|e;else i=e;if(h|0)Wy(d);d=c[d+56>>2]|0;if(!d){g=i;break;}else e=i;}}Hz();b=g;}}while(0);return b|0;}function Kz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;if((c[a+76>>2]|0)>-1)b=Vy(a)|0;else b=0;Lz(a);d=(c[a>>2]&1|0)!=0;if(!d){e=Gz()|0;f=c[a+52>>2]|0;g=a+56|0;if(f|0)c[f+56>>2]=c[g>>2];h=c[g>>2]|0;if(h|0)c[h+52>>2]=f;if((c[e>>2]|0)==(a|0))c[e>>2]=h;Hz();}h=Jz(a)|0;e=pc[c[a+12>>2]&63](a)|0|h;h=c[a+92>>2]|0;if(h|0)Dy(h);if(d){if(b|0)Wy(a);}else Dy(a);return e|0;}function Lz(a){a=a|0;var b=0,d=0,e=0;if(c[a+68>>2]|0){b=c[a+116>>2]|0;d=a+112|0;if(b|0)c[b+112>>2]=c[d>>2];a=c[d>>2]|0;if(!a)e=(Iz()|0)+232|0;else e=a+116|0;c[e>>2]=b;}return;}function Mz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+20|0;d=a+28|0;if((c[b>>2]|0)>>>0>(c[d>>2]|0)>>>0?(rc[c[a+36>>2]&31](a,0,0)|0,(c[b>>2]|0)==0):0)e=-1;else{f=a+4|0;g=c[f>>2]|0;h=a+8|0;i=c[h>>2]|0;if(g>>>0<i>>>0)rc[c[a+40>>2]&31](a,g-i|0,1)|0;c[a+16>>2]=0;c[d>>2]=0;c[b>>2]=0;c[h>>2]=0;c[f>>2]=0;e=0;}return e|0;}function Nz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(Vy(d)|0)!=0:0){e=b&255;f=b&255;if((f|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=e;i=f;}else i=Bz(d,b)|0;Wy(d);j=i;}else k=3;do{if((k|0)==3){i=b&255;f=b&255;if((f|0)!=(a[d+75>>0]|0)?(e=d+20|0,h=c[e>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[e>>2]=h+1;a[h>>0]=i;j=f;break;}j=Bz(d,b)|0;}}while(0);return j|0;}function Oz(a){a=a|0;var b=0,c=0,d=0;b=(Ty(a)|0)+1|0;c=Cy(b)|0;if(!c)d=0;else d=mE(c|0,a|0,b|0)|0;return d|0;}function Pz(a){a=a|0;return(a+-65|0)>>>0<26|0;}function Qz(a){a=a|0;return(((a|32)+-97|0)>>>0<6|(Sy(a)|0)!=0)&1|0;}function Rz(a){a=a|0;return;}function Sz(a){a=a|0;Rz(a);Vz(a);return;}function Tz(a){a=a|0;return 17890;}function Uz(a){a=a|0;var b=0,c=0;b=(a|0)==0?1:a;while(1){a=Cy(b)|0;if(a|0){c=a;break;}a=ZD()|0;if(!a){c=0;break;}vc[a&3]();}return c|0;}function Vz(a){a=a|0;Dy(a);return;}function Wz(a){a=a|0;lb();}function Xz(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a=l;l=l+48|0;b=a+32|0;d=a+24|0;e=a+16|0;f=a;g=a+36|0;a=Yz()|0;if(a|0?(h=c[a>>2]|0,h|0):0){a=h+48|0;i=c[a>>2]|0;j=c[a+4>>2]|0;if(!((i&-256|0)==1126902528&(j|0)==1129074247)){c[d>>2]=18077;Zz(18027,d);}if((i|0)==1126902529&(j|0)==1129074247)k=c[h+44>>2]|0;else k=h+80|0;c[g>>2]=k;k=c[h>>2]|0;h=c[k+4>>2]|0;if(rc[c[(c[2704]|0)+16>>2]&31](10816,k,g)|0){k=c[g>>2]|0;g=pc[c[(c[k>>2]|0)+8>>2]&63](k)|0;c[f>>2]=18077;c[f+4>>2]=h;c[f+8>>2]=g;Zz(17941,f);}else{c[e>>2]=18077;c[e+4>>2]=h;Zz(17986,e);}}Zz(18065,b);}function Yz(){var a=0,b=0;a=l;l=l+16|0;if(!(rb(22248,3)|0)){b=pb(c[5563]|0)|0;l=a;return b|0;}else Zz(18216,a);return 0;}function Zz(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=c[3033]|0;dz(b,a,e)|0;Nz(10,b)|0;lb();}function _z(a){a=a|0;return;}function $z(a){a=a|0;_z(a);Vz(a);return;}function aA(a){a=a|0;return;}function bA(a){a=a|0;return;}function cA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+64|0;f=e;if(!(gA(a,b,0)|0)){if((b|0)!=0?(g=kA(b,10840,10824,0)|0,(g|0)!=0):0){b=f+4|0;h=b+52|0;do{c[b>>2]=0;b=b+4|0;}while((b|0)<(h|0));c[f>>2]=g;c[f+8>>2]=a;c[f+12>>2]=-1;c[f+48>>2]=1;zc[c[(c[g>>2]|0)+28>>2]&7](g,f,c[d>>2]|0,1);if((c[f+24>>2]|0)==1){c[d>>2]=c[f+16>>2];i=1;}else i=0;j=i;}else j=0;}else j=1;l=e;return j|0;}function dA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(gA(a,c[b+8>>2]|0,g)|0)jA(0,b,d,e,f);return;}function eA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;do{if(!(gA(b,c[d+8>>2]|0,g)|0)){if(gA(b,c[d>>2]|0,g)|0){if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;h=d+40|0;c[h>>2]=(c[h>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;break;}if((f|0)==1)c[d+32>>2]=1;}}else iA(0,d,e,f);}while(0);return;}function fA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(gA(a,c[b+8>>2]|0,0)|0)hA(0,b,d,e);return;}function gA(a,b,c){a=a|0;b=b|0;c=c|0;return(a|0)==(b|0)|0;}function hA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;b=d+16|0;g=c[b>>2]|0;do{if(g){if((g|0)!=(e|0)){h=d+36|0;c[h>>2]=(c[h>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;break;}h=d+24|0;if((c[h>>2]|0)==2)c[h>>2]=f;}else{c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;}}while(0);return;}function iA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((c[b+4>>2]|0)==(d|0)?(d=b+28|0,(c[d>>2]|0)!=1):0)c[d>>2]=e;return;}function jA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;a[d+53>>0]=1;do{if((c[d+4>>2]|0)==(f|0)){a[d+52>>0]=1;b=d+16|0;h=c[b>>2]|0;if(!h){c[b>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0))break;a[d+54>>0]=1;break;}if((h|0)!=(e|0)){h=d+36|0;c[h>>2]=(c[h>>2]|0)+1;a[d+54>>0]=1;break;}h=d+24|0;b=c[h>>2]|0;if((b|0)==2){c[h>>2]=g;i=g;}else i=b;if((i|0)==1?(c[d+48>>2]|0)==1:0)a[d+54>>0]=1;}}while(0);return;}function kA(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;h=l;l=l+64|0;i=h;j=c[d>>2]|0;k=d+(c[j+-8>>2]|0)|0;m=c[j+-4>>2]|0;c[i>>2]=f;c[i+4>>2]=d;c[i+8>>2]=e;c[i+12>>2]=g;g=i+16|0;e=i+20|0;d=i+24|0;j=i+28|0;n=i+32|0;o=i+40|0;p=g;q=p+36|0;do{c[p>>2]=0;p=p+4|0;}while((p|0)<(q|0));b[g+36>>1]=0;a[g+38>>0]=0;a:do{if(gA(m,f,0)|0){c[i+48>>2]=1;Bc[c[(c[m>>2]|0)+20>>2]&3](m,i,k,k,1,0);r=(c[d>>2]|0)==1?k:0;}else{Ac[c[(c[m>>2]|0)+24>>2]&3](m,i,k,1,0);switch(c[i+36>>2]|0){case 0:{r=(c[o>>2]|0)==1&(c[j>>2]|0)==1&(c[n>>2]|0)==1?c[e>>2]|0:0;break a;break;}case 1:break;default:{r=0;break a;}}if((c[d>>2]|0)!=1?!((c[o>>2]|0)==0&(c[j>>2]|0)==1&(c[n>>2]|0)==1):0){r=0;break;}r=c[g>>2]|0;}}while(0);l=h;return r|0;}function lA(a){a=a|0;_z(a);Vz(a);return;}function mA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;if(gA(a,c[b+8>>2]|0,g)|0)jA(0,b,d,e,f);else{h=c[a+8>>2]|0;Bc[c[(c[h>>2]|0)+20>>2]&3](h,b,d,e,f,g);}return;}function nA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;do{if(!(gA(b,c[d+8>>2]|0,g)|0)){if(!(gA(b,c[d>>2]|0,g)|0)){h=c[b+8>>2]|0;Ac[c[(c[h>>2]|0)+24>>2]&3](h,d,e,f,g);break;}if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;i=d+44|0;if((c[i>>2]|0)==4)break;j=d+52|0;a[j>>0]=0;k=d+53|0;a[k>>0]=0;l=c[b+8>>2]|0;Bc[c[(c[l>>2]|0)+20>>2]&3](l,d,e,e,1,g);if(a[k>>0]|0){if(!(a[j>>0]|0)){m=1;n=11;}else n=15;}else{m=0;n=11;}do{if((n|0)==11){c[h>>2]=e;j=d+40|0;c[j>>2]=(c[j>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(m){n=15;break;}else{o=4;break;}}if(m)n=15;else o=4;}}while(0);if((n|0)==15)o=3;c[i>>2]=o;break;}if((f|0)==1)c[d+32>>2]=1;}else iA(0,d,e,f);}while(0);return;}function oA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if(gA(a,c[b+8>>2]|0,0)|0)hA(0,b,d,e);else{f=c[a+8>>2]|0;zc[c[(c[f>>2]|0)+28>>2]&7](f,b,d,e);}return;}function pA(a){a=a|0;return;}function qA(){var a=0;a=l;l=l+16|0;if(!(qb(22252,72)|0)){l=a;return;}else Zz(18265,a);}function rA(a){a=a|0;var b=0;b=l;l=l+16|0;Dy(a);if(!(sb(c[5563]|0,0)|0)){l=b;return;}else Zz(18315,b);}function sA(){var a=0,b=0;a=Yz()|0;if((a|0?(b=c[a>>2]|0,b|0):0)?(a=b+48|0,(c[a>>2]&-256|0)==1126902528?(c[a+4>>2]|0)==1129074247:0):0)tA(c[b+12>>2]|0);tA(uA()|0);}function tA(a){a=a|0;var b=0;b=l;l=l+16|0;vc[a&3]();Zz(18368,b);}function uA(){var a=0;a=c[3162]|0;c[3162]=a+0;return a|0;}function vA(a){a=a|0;return;}function wA(a){a=a|0;_z(a);Vz(a);return;}function xA(a,b,c){a=a|0;b=b|0;c=c|0;return gA(a,b,0)|0;}function yA(a){a=a|0;_z(a);Vz(a);return;}function zA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+64|0;f=e;c[d>>2]=c[c[d>>2]>>2];if(!(AA(a,b,0)|0)){if(((b|0)!=0?(g=kA(b,10840,10896,0)|0,(g|0)!=0):0)?(c[g+8>>2]&~c[a+8>>2]|0)==0:0){b=a+12|0;a=g+12|0;if(!(gA(c[b>>2]|0,c[a>>2]|0,0)|0)?!(gA(c[b>>2]|0,10928,0)|0):0){g=c[b>>2]|0;if((((g|0)!=0?(b=kA(g,10840,10824,0)|0,(b|0)!=0):0)?(g=c[a>>2]|0,(g|0)!=0):0)?(a=kA(g,10840,10824,0)|0,(a|0)!=0):0){g=f+4|0;h=g+52|0;do{c[g>>2]=0;g=g+4|0;}while((g|0)<(h|0));c[f>>2]=a;c[f+8>>2]=b;c[f+12>>2]=-1;c[f+48>>2]=1;zc[c[(c[a>>2]|0)+28>>2]&7](a,f,c[d>>2]|0,1);if((c[f+24>>2]|0)==1){c[d>>2]=c[f+16>>2];i=1;}else i=0;j=i;}else j=0;}else j=1;}else j=0;}else j=1;l=e;return j|0;}function AA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(gA(a,b,0)|0)d=1;else d=gA(b,10936,0)|0;return d|0;}function BA(a){a=a|0;_z(a);Vz(a);return;}function CA(a,b,c){a=a|0;b=b|0;c=c|0;return 0;}function DA(a){a=a|0;_z(a);Vz(a);return;}function EA(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(gA(b,c[d+8>>2]|0,h)|0)jA(0,d,e,f,g);else{i=d+52|0;j=a[i>>0]|0;k=d+53|0;l=a[k>>0]|0;m=c[b+12>>2]|0;n=b+16+(m<<3)|0;a[i>>0]=0;a[k>>0]=0;IA(b+16|0,d,e,f,g,h);a:do{if((m|0)>1){o=d+24|0;p=b+8|0;q=d+54|0;r=b+24|0;do{if(a[q>>0]|0)break a;if(!(a[i>>0]|0)){if(a[k>>0]|0?(c[p>>2]&1|0)==0:0)break a;}else{if((c[o>>2]|0)==1)break a;if(!(c[p>>2]&2))break a;}a[i>>0]=0;a[k>>0]=0;IA(r,d,e,f,g,h);r=r+8|0;}while(r>>>0<n>>>0);}}while(0);a[i>>0]=j;a[k>>0]=l;}return;}function FA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;a:do{if(!(gA(b,c[d+8>>2]|0,g)|0)){if(!(gA(b,c[d>>2]|0,g)|0)){h=c[b+12>>2]|0;i=b+16+(h<<3)|0;JA(b+16|0,d,e,f,g);j=b+24|0;if((h|0)<=1)break;h=c[b+8>>2]|0;if((h&2|0)==0?(k=d+36|0,(c[k>>2]|0)!=1):0){if(!(h&1)){h=d+54|0;l=j;while(1){if(a[h>>0]|0)break a;if((c[k>>2]|0)==1)break a;JA(l,d,e,f,g);l=l+8|0;if(l>>>0>=i>>>0)break a;}}l=d+24|0;h=d+54|0;m=j;while(1){if(a[h>>0]|0)break a;if((c[k>>2]|0)==1?(c[l>>2]|0)==1:0)break a;JA(m,d,e,f,g);m=m+8|0;if(m>>>0>=i>>>0)break a;}}m=d+54|0;l=j;while(1){if(a[m>>0]|0)break a;JA(l,d,e,f,g);l=l+8|0;if(l>>>0>=i>>>0)break a;}}if((c[d+16>>2]|0)!=(e|0)?(i=d+20|0,(c[i>>2]|0)!=(e|0)):0){c[d+32>>2]=f;l=d+44|0;if((c[l>>2]|0)==4)break;m=b+16+(c[b+12>>2]<<3)|0;j=d+52|0;k=d+53|0;h=d+54|0;n=b+8|0;o=d+24|0;p=0;q=b+16|0;r=0;b:while(1){if(q>>>0>=m>>>0){s=p;t=18;break;}a[j>>0]=0;a[k>>0]=0;IA(q,d,e,e,1,g);if(a[h>>0]|0){s=p;t=18;break;}do{if(a[k>>0]|0){if(!(a[j>>0]|0))if(!(c[n>>2]&1)){s=1;t=18;break b;}else{u=1;v=r;break;}if((c[o>>2]|0)==1){t=23;break b;}if(!(c[n>>2]&2)){t=23;break b;}else{u=1;v=1;}}else{u=p;v=r;}}while(0);p=u;q=q+8|0;r=v;}do{if((t|0)==18){if((!r?(c[i>>2]=e,q=d+40|0,c[q>>2]=(c[q>>2]|0)+1,(c[d+36>>2]|0)==1):0)?(c[o>>2]|0)==2:0){a[h>>0]=1;if(s){t=23;break;}else{w=4;break;}}if(s)t=23;else w=4;}}while(0);if((t|0)==23)w=3;c[l>>2]=w;break;}if((f|0)==1)c[d+32>>2]=1;}else iA(0,d,e,f);}while(0);return;}function GA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do{if(!(gA(b,c[d+8>>2]|0,0)|0)){g=c[b+12>>2]|0;h=b+16+(g<<3)|0;HA(b+16|0,d,e,f);if((g|0)>1){g=d+54|0;i=b+24|0;do{HA(i,d,e,f);if(a[g>>0]|0)break a;i=i+8|0;}while(i>>>0<h>>>0);}}else hA(0,d,e,f);}while(0);return;}function HA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=c[a+4>>2]|0;g=f>>8;if(!(f&1))h=g;else h=c[(c[d>>2]|0)+g>>2]|0;g=c[a>>2]|0;zc[c[(c[g>>2]|0)+28>>2]&7](g,b,d+h|0,(f&2|0)==0?2:e);return;}function IA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=c[a+4>>2]|0;i=h>>8;if(!(h&1))j=i;else j=c[(c[e>>2]|0)+i>>2]|0;i=c[a>>2]|0;Bc[c[(c[i>>2]|0)+20>>2]&3](i,b,d,e+j|0,(h&2|0)==0?2:f,g);return;}function JA(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[a+4>>2]|0;h=g>>8;if(!(g&1))i=h;else i=c[(c[d>>2]|0)+h>>2]|0;h=c[a>>2]|0;Ac[c[(c[h>>2]|0)+24>>2]&3](h,b,d+i|0,(g&2|0)==0?2:e,f);return;}function KA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;g=l;l=l+4192|0;h=g+4176|0;i=g;j=g+4112|0;if((b|0)!=0?(k=(d|0)!=0,m=(e|0)==0,!(k&m)):0){if(k)n=c[e>>2]|0;else n=0;LA(i);MA(j,i);k=j+48|0;o=j+61|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;a[k+12>>0]=0;a[o>>0]=1;k=j+32|0;p=j+36|0;q=c[p>>2]|0;if(q>>>0<(c[j+40>>2]|0)>>>0){NA(h,i);c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=c[h>>2];c[p>>2]=(c[p>>2]|0)+16;}else OA(k,i);q=j+62|0;a[q>>0]=0;a[j+63>>0]=1;c[h>>2]=0;r=b+(Ty(b)|0)|0;PA(b,r,j,h);s=c[h>>2]|0;do{if(!((s|0)!=0|(a[q>>0]|0)==0)){t=c[k>>2]|0;if((t|0)!=(c[p>>2]|0)?(c[t>>2]|0)!=(c[t+4>>2]|0):0){a[q>>0]=0;a[o>>0]=0;t=c[j>>2]|0;u=j+4|0;v=c[u>>2]|0;while(1){if((v|0)==(t|0))break;w=v+-24|0;QA(w);v=w;}c[u>>2]=t;v=c[j+16>>2]|0;w=j+20|0;x=c[w>>2]|0;while(1){if((x|0)==(v|0))break;y=x+-16|0;RA(y);x=y;}c[w>>2]=v;PA(b,r,j,h);if(!(a[q>>0]|0)){z=c[h>>2]|0;A=22;break;}else{c[h>>2]=-2;B=0;C=-2;break;}}else A=23;}else{z=s;A=22;}}while(0);if((A|0)==22)if(!z)A=23;else{B=0;C=z;}do{if((A|0)==23){z=j+4|0;s=SA((c[z>>2]|0)+-24|0)|0;q=s+1|0;if(q>>>0>n>>>0){r=Fy(d,q)|0;if(!r){c[h>>2]=-1;B=0;C=-1;break;}if(m)D=r;else{c[e>>2]=q;D=r;}}else if(!d){B=0;C=0;break;}else D=d;r=c[z>>2]|0;q=r+-12|0;b=a[q+11>>0]|0;o=b<<24>>24<0;TA(r+-24|0,o?c[q>>2]|0:q,o?c[r+-8>>2]|0:b&255)|0;b=(c[z>>2]|0)+-24|0;if((a[b+11>>0]|0)<0)E=c[b>>2]|0;else E=b;mE(D|0,E|0,s|0)|0;a[D+s>>0]=0;B=D;C=0;}}while(0);if(f|0)c[f>>2]=C;UA(j);VA(i);F=B;}else if(!f)F=0;else{c[f>>2]=-3;F=0;}l=g;return F|0;}function LA(a){a=a|0;c[a+4096>>2]=a;return;}function MA(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;SD(e,b);c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=c[e>>2];NA(e,b);TD(a+16|0,e);UD(e,b);VD(a+32|0,e);l=d;return;}function NA(a,b){a=a|0;b=b|0;c[a>>2]=b;return;}function OA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;d=l;l=l+32|0;e=d+20|0;f=d;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>4)+1|0;i=qD(a)|0;if(i>>>0<h>>>0)Wz(a);else{j=c[a>>2]|0;k=(c[a+8>>2]|0)-j|0;m=k>>3;rD(f,k>>4>>>0<i>>>1>>>0?m>>>0<h>>>0?h:m:i,(c[g>>2]|0)-j>>4,a+12|0);j=f+8|0;g=c[j>>2]|0;NA(e,b);c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=c[e>>2];c[j>>2]=g+16;sD(a,f);tD(f);l=d;return;}}function PA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a:do{if(b>>>0<d>>>0){b:do{if((a[b>>0]|0)!=95){if((mB(b,d,e)|0)!=(d|0)){c[f>>2]=-2;break a;}}else{if((d-b|0)<=3){c[f>>2]=-2;break a;}switch(a[b+1>>0]|0){case 90:{g=b+2|0;h=jB(g,d,e)|0;if(!((h|0)==(g|0)|(h|0)==(d|0))?(a[h>>0]|0)==46:0)i=kB(h,d,e)|0;else i=h;if((i|0)==(d|0))break b;c[f>>2]=-2;break a;break;}case 95:{j=11;break;}default:{}}if(((j|0)==11?(a[b+2>>0]|0)==95:0)?(a[b+3>>0]|0)==90:0){h=b+4|0;g=jB(h,d,e)|0;if((g|0)==(h|0)|(g|0)==(d|0)){c[f>>2]=-2;break a;}if((lB(g,d,e)|0)==(d|0))break;c[f>>2]=-2;break a;}c[f>>2]=-2;break a;}}while(0);if((c[f>>2]|0)==0?(c[e>>2]|0)==(c[e+4>>2]|0):0)c[f>>2]=-2;}else c[f>>2]=-2;}while(0);return;}function QA(a){a=a|0;iB(a+12|0);iB(a);return;}function RA(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;if(b|0){d=a+4|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-24|0;QA(f);e=f;}c[d>>2]=b;b=c[a>>2]|0;hB(a+12|0,b,((c[a+8>>2]|0)-b|0)/24|0);}return;}function SA(b){b=b|0;var d=0,e=0,f=0;d=a[b+11>>0]|0;if(d<<24>>24<0)e=c[b+4>>2]|0;else e=d&255;d=a[b+12+11>>0]|0;if(d<<24>>24<0)f=c[b+16>>2]|0;else f=d&255;return f+e|0;}function TA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+16|0;g=f;h=b+11|0;i=a[h>>0]|0;j=i<<24>>24<0;if(j){k=c[b+4>>2]|0;m=(c[b+8>>2]&2147483647)+-1|0;}else{k=i&255;m=10;}if((m-k|0)>>>0>=e>>>0){if(e|0){if(j)n=c[b>>2]|0;else n=b;bB(n+k|0,d,e)|0;j=k+e|0;if((a[h>>0]|0)<0)c[b+4>>2]=j;else a[h>>0]=j;a[g>>0]=0;cB(n+j|0,g);}}else dB(b,m,k+e-m|0,k,k,0,e,d);l=f;return b|0;}function UA(a){a=a|0;WA(a+32|0);XA(a+16|0);RA(a);return;}function VA(a){a=a|0;c[a+4096>>2]=0;return;}function WA(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;if(b|0){d=a+4|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-16|0;XA(f);e=f;}c[d>>2]=b;b=c[a>>2]|0;aB(a+12|0,b,(c[a+8>>2]|0)-b>>4);}return;}function XA(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;if(b|0){d=a+4|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-16|0;RA(f);e=f;}c[d>>2]=b;b=c[a>>2]|0;YA(a+12|0,b,(c[a+8>>2]|0)-b>>4);}return;}function YA(a,b,d){a=a|0;b=b|0;d=d|0;ZA(c[a>>2]|0,b,d<<4);return;}function ZA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(_A(a,b)|0){e=b+($A(d)|0)|0;d=a+4096|0;if((e|0)==(c[d>>2]|0))c[d>>2]=b;}else Dy(b);return;}function _A(a,b){a=a|0;b=b|0;return(a+4096|0)>>>0>=b>>>0&a>>>0<=b>>>0|0;}function $A(a){a=a|0;return a+15&-16|0;}function aB(a,b,d){a=a|0;b=b|0;d=d|0;ZA(c[a>>2]|0,b,d<<4);return;}function bB(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)mE(a|0,b|0,c|0)|0;return a|0;}function cB(b,c){b=b|0;c=c|0;a[b>>0]=a[c>>0]|0;return;}function dB(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0;k=l;l=l+16|0;m=k;if((-18-d|0)>>>0<e>>>0)eB(b);if((a[b+11>>0]|0)<0)n=c[b>>2]|0;else n=b;if(d>>>0<2147483623){o=e+d|0;e=d<<1;p=o>>>0<e>>>0?e:o;q=p>>>0<11?11:p+16&-16;}else q=-17;p=fB(q)|0;if(g|0)bB(p,n,g)|0;if(i|0)bB(p+g|0,j,i)|0;j=f-h|0;f=j-g|0;if(f|0)bB(p+g+i|0,n+g+h|0,f)|0;if((d|0)!=10)gB(n);c[b>>2]=p;c[b+8>>2]=q|-2147483648;q=j+i|0;c[b+4>>2]=q;a[m>>0]=0;cB(p+q|0,m);l=k;return;}function eB(a){a=a|0;lb();}function fB(a){a=a|0;return Cy(a)|0;}function gB(a){a=a|0;Dy(a);return;}function hB(a,b,d){a=a|0;b=b|0;d=d|0;ZA(c[a>>2]|0,b,d*24|0);return;}function iB(b){b=b|0;if((a[b+11>>0]|0)<0)gB(c[b>>2]|0);return;}function jB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;f=l;l=l+64|0;g=f+48|0;h=f+40|0;i=f+32|0;j=f+24|0;k=f+12|0;m=f;if((b|0)!=(d|0)){n=e+56|0;MD(h,n);c[n>>2]=(c[n>>2]|0)+1;o=e+61|0;ND(i,o);if((c[n>>2]|0)>>>0>1)a[o>>0]=1;a:do{switch(a[b>>0]|0){case 84:case 71:{p=OD(b,d,e)|0;q=1;break;}default:{n=MB(b,d,e)|0;r=c[e+48>>2]|0;s=c[e+52>>2]|0;b:do{if((n|0)!=(b|0)){if((n|0)!=(d|0)){switch(a[n>>0]|0){case 46:case 69:{t=n;break b;break;}default:{}}ND(j,o);a[o>>0]=0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;u=0;while(1){if((u|0)==3)break;c[k+(u<<2)>>2]=0;u=u+1|0;}u=e+4|0;v=c[u>>2]|0;c:do{if((c[e>>2]|0)!=(v|0)){w=v+-24|0;x=a[w+11>>0]|0;y=x<<24>>24<0;if(y)z=c[v+-20>>2]|0;else z=x&255;if(z){if(!(a[e+60>>0]|0)){if(y){A=c[w>>2]|0;B=c[v+-20>>2]|0;}else{A=w;B=x&255;}if((a[A+B+-1>>0]|0)==62){if(y){C=c[v+-20>>2]|0;D=c[w>>2]|0;}else{C=x&255;D=w;}if((a[D+(C+-2)>>0]|0)!=45){if(y){E=c[v+-20>>2]|0;F=c[w>>2]|0;}else{E=x&255;F=w;}if((a[F+(E+-2)>>0]|0)!=62){x=mB(n,d,e)|0;if((x|0)==(n|0)){G=b;H=0;break;}y=c[u>>2]|0;I=y;if(((y-(c[e>>2]|0)|0)/24|0)>>>0<2){G=b;H=0;break;}y=I+-24|0;c[m>>2]=c[y>>2];c[m+4>>2]=c[y+4>>2];c[m+8>>2]=c[y+8>>2];J=0;while(1){if((J|0)==3)break;c[y+(J<<2)>>2]=0;J=J+1|0;}J=I+-12|0;y=k+11|0;if((a[y>>0]|0)<0){K=c[k>>2]|0;a[g>>0]=0;cB(K,g);c[k+4>>2]=0;}else{a[g>>0]=0;cB(k,g);a[y>>0]=0;}TB(k);c[k>>2]=c[J>>2];c[k+4>>2]=c[J+4>>2];c[k+8>>2]=c[J+8>>2];K=0;while(1){if((K|0)==3)break;c[J+(K<<2)>>2]=0;K=K+1|0;}K=a[y>>0]|0;if(!((K<<24>>24<0?c[k+4>>2]|0:K&255)|0))NC(m,32);K=c[u>>2]|0;J=0;while(1){if((J|0)==-1)break;I=J+-1|0;QA(K+(I*24|0)|0);J=I;}c[u>>2]=K+-24;J=a[m+11>>0]|0;y=J<<24>>24<0;zD(K+-48|0,0,y?c[m>>2]|0:m,y?c[m+4>>2]|0:J&255)|0;iB(m);L=x;M=(c[u>>2]|0)+-24|0;}else{L=n;M=w;}}else{L=n;M=w;}}else{L=n;M=w;}}else{L=n;M=w;}NC(M,40);if((L|0)!=(d|0)?(a[L>>0]|0)==118:0){N=L+1|0;O=c[e>>2]|0;P=c[u>>2]|0;}else Q=50;do{if((Q|0)==50){J=g+11|0;y=g+4|0;I=m+11|0;R=m+4|0;S=1;T=L;d:while(1){U=T;while(1){V=((c[u>>2]|0)-(c[e>>2]|0)|0)/24|0;W=mB(U,d,e)|0;X=c[u>>2]|0;Y=c[e>>2]|0;Z=(X-Y|0)/24|0;if((W|0)==(U|0)){Q=74;break d;}if(Z>>>0>V>>>0)break;else U=W;}c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;_=0;while(1){if((_|0)==3)break;c[g+(_<<2)>>2]=0;_=_+1|0;}_=V;while(1){if(_>>>0>=Z>>>0)break;$=a[J>>0]|0;if(($<<24>>24<0?c[y>>2]|0:$&255)|0)qB(g,18897)|0;FB(m,(c[e>>2]|0)+(_*24|0)|0);$=a[I>>0]|0;aa=$<<24>>24<0;TA(g,aa?c[m>>2]|0:m,aa?c[R>>2]|0:$&255)|0;iB(m);_=_+1|0;}_=V;while(1){if(_>>>0>=Z>>>0)break;$=c[u>>2]|0;aa=0;while(1){if((aa|0)==-1)break;ba=aa+-1|0;QA($+(ba*24|0)|0);aa=ba;}c[u>>2]=$+-24;_=_+1|0;}_=a[J>>0]|0;aa=c[y>>2]|0;ba=_&255;if(!((_<<24>>24<0?aa:ba)|0))ca=S;else{da=c[u>>2]|0;if((c[e>>2]|0)==(da|0)){Q=86;break;}if(S){ea=ba;fa=da;ga=_;ha=aa;}else{qB(da+-24|0,18897)|0;da=a[J>>0]|0;ea=da&255;fa=c[u>>2]|0;ga=da;ha=c[y>>2]|0;}da=ga<<24>>24<0;TA(fa+-24|0,da?c[g>>2]|0:g,da?ha:ea)|0;ca=0;}iB(g);S=ca;T=W;}if((Q|0)==74){N=U;O=Y;P=X;break;}else if((Q|0)==86){iB(g);G=b;H=0;break c;}}}while(0);if((O|0)!=(P|0)){NC(P+-24|0,41);if(r&1|0)qB((c[u>>2]|0)+-24|0,18620)|0;if(r&2|0)qB((c[u>>2]|0)+-24|0,18627)|0;if(r&4|0)qB((c[u>>2]|0)+-24|0,18637)|0;switch(s|0){case 1:{qB((c[u>>2]|0)+-24|0,20101)|0;break;}case 2:{qB((c[u>>2]|0)+-24|0,20104)|0;break;}default:{}}w=a[k+11>>0]|0;x=w<<24>>24<0;TA((c[u>>2]|0)+-24|0,x?c[k>>2]|0:k,x?c[k+4>>2]|0:w&255)|0;G=N;H=1;}else{G=b;H=0;}}else{G=b;H=0;}}else{G=b;H=0;}}while(0);iB(k);PD(j);if(H)t=G;else{p=G;q=0;break a;}}else t=d;}else t=b;}while(0);p=t;q=1;}}}while(0);PD(i);QD(h);if(q){ia=p;Q=90;}else ja=b;}else{ia=b;Q=90;}if((Q|0)==90)ja=ia;l=f;return ja|0;}function kB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+48|0;g=f+24|0;h=f+12|0;i=f;if(((b|0)!=(d|0)?(a[b>>0]|0)==46:0)?(j=e+4|0,(c[e>>2]|0)!=(c[j>>2]|0)):0){c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;QC(i,b,d);pB(i,0,18670)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];e=0;while(1){if((e|0)==3)break;c[i+(e<<2)>>2]=0;e=e+1|0;}qB(h,18673)|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];e=0;while(1){if((e|0)==3)break;c[h+(e<<2)>>2]=0;e=e+1|0;}e=a[g+11>>0]|0;k=e<<24>>24<0;TA((c[j>>2]|0)+-24|0,k?c[g>>2]|0:g,k?c[g+4>>2]|0:e&255)|0;iB(g);iB(h);iB(i);m=d;}else m=b;l=f;return m|0;}function lB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;a:do{if((d-b|0)>12){f=0;g=b;while(1){if(f>>>0>=13)break;if((a[g>>0]|0)!=(a[20306+f>>0]|0)){h=b;break a;}f=f+1|0;g=g+1|0;}b:do{if((g|0)==(d|0))i=d;else{if((a[g>>0]|0)==95){f=g+1|0;if((f|0)==(d|0)){h=b;break a;}if(((a[f>>0]|0)+-48|0)>>>0>=10){h=b;break a;}j=g+2|0;}else j=g;f=j;while(1){if((f|0)==(d|0)){i=d;break b;}if(((a[f>>0]|0)+-48|0)>>>0>=10){i=f;break b;}f=f+1|0;}}}while(0);g=c[e+4>>2]|0;if((c[e>>2]|0)!=(g|0)){pB(g+-24|0,0,20320)|0;h=i;}else h=b;}else h=b;}while(0);return h|0;}function mB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;f=l;l=l+144|0;g=f+128|0;h=f+104|0;i=f+40|0;j=f+88|0;k=f+24|0;m=f+76|0;n=f+12|0;o=f;p=f+64|0;a:do{if((b|0)!=(d|0)){switch(a[b>>0]|0){case 75:case 86:case 114:{c[g>>2]=0;q=nB(b,d,g)|0;b:do{if((q|0)!=(b|0)?(r=(a[q>>0]|0)==70,s=e+4|0,t=((c[s>>2]|0)-(c[e>>2]|0)|0)/24|0,u=mB(q,d,e)|0,v=((c[s>>2]|0)-(c[e>>2]|0)|0)/24|0,(u|0)!=(q|0)):0){s=e+20|0;w=c[s>>2]|0;if(r){x=0;while(1){if((x|0)==-1)break;y=x+-1|0;RA(w+(y<<4)|0);x=y;}x=w+-16|0;c[s>>2]=x;z=x;}else z=w;x=c[e+12>>2]|0;c[h>>2]=x;if(z>>>0<(c[e+24>>2]|0)>>>0){c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=x;c[s>>2]=(c[s>>2]|0)+16;}else oB(e+16|0,h);x=c[g>>2]|0;y=(x&1|0)==0;A=(x&2|0)==0;B=(x&4|0)==0;x=t;while(1){if(x>>>0>=v>>>0){C=u;break b;}if(r){D=c[e>>2]|0;E=D+(x*24|0)+12|0;F=a[E+11>>0]|0;G=F<<24>>24<0;if(G){H=c[D+(x*24|0)+16>>2]|0;I=c[E>>2]|0;}else{H=F&255;I=E;}J=H+-2|0;if((a[I+J>>0]|0)==38)K=H+-3|0;else{if(G){L=c[E>>2]|0;M=c[D+(x*24|0)+16>>2]|0;}else{L=E;M=F&255;}K=(a[L+M+-1>>0]|0)==38?J:H;}if(y)N=K;else{pB(E,K,18620)|0;N=K+6|0;}if(A)O=N;else{pB((c[e>>2]|0)+(x*24|0)+12|0,N,18627)|0;O=N+9|0;}if(!B)pB((c[e>>2]|0)+(x*24|0)+12|0,O,18637)|0;}else{if(!y)qB((c[e>>2]|0)+(x*24|0)|0,18620)|0;if(!A)qB((c[e>>2]|0)+(x*24|0)|0,18627)|0;if(!B)qB((c[e>>2]|0)+(x*24|0)|0,18637)|0;}E=c[s>>2]|0;J=(c[e>>2]|0)+(x*24|0)|0;F=E+-12|0;D=c[F>>2]|0;if((D|0)==(c[E+-8>>2]|0))sB(E+-16|0,J);else{rB(D,J);c[F>>2]=(c[F>>2]|0)+24;}x=x+1|0;}}else C=b;}while(0);P=C;break a;break;}default:{}}q=tB(b,d,e)|0;if((q|0)==(b|0)){c:do{switch(a[b>>0]|0){case 65:{x=uB(b,d,e)|0;if((x|0)==(b|0)){P=b;break a;}s=c[e+4>>2]|0;if((c[e>>2]|0)==(s|0)){P=b;break a;}c[h>>2]=c[e+12>>2];vB(g,s+-24|0,h);s=e+20|0;B=c[s>>2]|0;if(B>>>0<(c[e+24>>2]|0)>>>0){c[B>>2]=0;A=B+4|0;c[A>>2]=0;y=B+8|0;c[y>>2]=0;c[B+12>>2]=c[g+12>>2];c[B>>2]=c[g>>2];B=g+4|0;c[A>>2]=c[B>>2];A=g+8|0;c[y>>2]=c[A>>2];c[A>>2]=0;c[B>>2]=0;c[g>>2]=0;c[s>>2]=(c[s>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=x;break a;break;}case 67:{x=b+1|0;s=mB(x,d,e)|0;if((s|0)==(x|0)){P=b;break a;}x=e+4|0;B=c[x>>2]|0;if((c[e>>2]|0)==(B|0)){P=b;break a;}qB(B+-24|0,18647)|0;B=(c[x>>2]|0)+-24|0;c[h>>2]=c[e+12>>2];vB(g,B,h);B=e+20|0;x=c[B>>2]|0;if(x>>>0<(c[e+24>>2]|0)>>>0){c[x>>2]=0;A=x+4|0;c[A>>2]=0;y=x+8|0;c[y>>2]=0;c[x+12>>2]=c[g+12>>2];c[x>>2]=c[g>>2];x=g+4|0;c[A>>2]=c[x>>2];A=g+8|0;c[y>>2]=c[A>>2];c[A>>2]=0;c[x>>2]=0;c[g>>2]=0;c[B>>2]=(c[B>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=s;break a;break;}case 70:{s=xB(b,d,e)|0;if((s|0)==(b|0)){P=b;break a;}B=c[e+4>>2]|0;if((c[e>>2]|0)==(B|0)){P=b;break a;}c[h>>2]=c[e+12>>2];vB(g,B+-24|0,h);B=e+20|0;x=c[B>>2]|0;if(x>>>0<(c[e+24>>2]|0)>>>0){c[x>>2]=0;A=x+4|0;c[A>>2]=0;y=x+8|0;c[y>>2]=0;c[x+12>>2]=c[g+12>>2];c[x>>2]=c[g>>2];x=g+4|0;c[A>>2]=c[x>>2];A=g+8|0;c[y>>2]=c[A>>2];c[A>>2]=0;c[x>>2]=0;c[g>>2]=0;c[B>>2]=(c[B>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=s;break a;break;}case 71:{s=b+1|0;B=mB(s,d,e)|0;if((B|0)==(s|0)){P=b;break a;}s=e+4|0;x=c[s>>2]|0;if((c[e>>2]|0)==(x|0)){P=b;break a;}qB(x+-24|0,18656)|0;x=(c[s>>2]|0)+-24|0;c[h>>2]=c[e+12>>2];vB(g,x,h);x=e+20|0;s=c[x>>2]|0;if(s>>>0<(c[e+24>>2]|0)>>>0){c[s>>2]=0;A=s+4|0;c[A>>2]=0;y=s+8|0;c[y>>2]=0;c[s+12>>2]=c[g+12>>2];c[s>>2]=c[g>>2];s=g+4|0;c[A>>2]=c[s>>2];A=g+8|0;c[y>>2]=c[A>>2];c[A>>2]=0;c[s>>2]=0;c[g>>2]=0;c[x>>2]=(c[x>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=B;break a;break;}case 77:{B=yB(b,d,e)|0;if((B|0)==(b|0)){P=b;break a;}x=c[e+4>>2]|0;if((c[e>>2]|0)==(x|0)){P=b;break a;}c[h>>2]=c[e+12>>2];vB(g,x+-24|0,h);x=e+20|0;s=c[x>>2]|0;if(s>>>0<(c[e+24>>2]|0)>>>0){c[s>>2]=0;A=s+4|0;c[A>>2]=0;y=s+8|0;c[y>>2]=0;c[s+12>>2]=c[g+12>>2];c[s>>2]=c[g>>2];s=g+4|0;c[A>>2]=c[s>>2];A=g+8|0;c[y>>2]=c[A>>2];c[A>>2]=0;c[s>>2]=0;c[g>>2]=0;c[x>>2]=(c[x>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=B;break a;break;}case 79:{B=e+4|0;x=((c[B>>2]|0)-(c[e>>2]|0)|0)/24|0;s=b+1|0;A=mB(s,d,e)|0;y=((c[B>>2]|0)-(c[e>>2]|0)|0)/24|0;if((A|0)==(s|0)){P=b;break a;}s=c[e+12>>2]|0;c[g>>2]=s;B=e+20|0;r=c[B>>2]|0;if(r>>>0<(c[e+24>>2]|0)>>>0){c[r>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=s;c[B>>2]=(c[B>>2]|0)+16;}else oB(e+16|0,g);s=g+11|0;r=g+4|0;u=x;while(1){if(u>>>0>=y>>>0){P=A;break a;}zB(g,(c[e>>2]|0)+(u*24|0)+12|0,2);x=AB(18667)|0;v=a[s>>0]|0;if((x|0)==((v<<24>>24<0?c[r>>2]|0:v&255)|0))Q=(BB(g,18667,x)|0)==0;else Q=0;iB(g);x=c[e>>2]|0;v=x+(u*24|0)|0;if(!Q){t=x+(u*24|0)+12|0;if((a[t+11>>0]|0)<0)R=c[t>>2]|0;else R=t;if((a[R>>0]|0)==40){qB(v,18675)|0;pB((c[e>>2]|0)+(u*24|0)+12|0,0,18673)|0;}}else{qB(v,18670)|0;pB((c[e>>2]|0)+(u*24|0)+12|0,0,18673)|0;}qB((c[e>>2]|0)+(u*24|0)|0,18677)|0;v=c[B>>2]|0;t=(c[e>>2]|0)+(u*24|0)|0;x=v+-12|0;w=c[x>>2]|0;if((w|0)==(c[v+-8>>2]|0))sB(v+-16|0,t);else{rB(w,t);c[x>>2]=(c[x>>2]|0)+24;}u=u+1|0;}break;}case 80:{u=e+4|0;B=((c[u>>2]|0)-(c[e>>2]|0)|0)/24|0;r=b+1|0;s=mB(r,d,e)|0;A=((c[u>>2]|0)-(c[e>>2]|0)|0)/24|0;if((s|0)==(r|0)){P=b;break a;}u=c[e+12>>2]|0;c[g>>2]=u;y=e+20|0;x=c[y>>2]|0;if(x>>>0<(c[e+24>>2]|0)>>>0){c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=u;c[y>>2]=(c[y>>2]|0)+16;}else oB(e+16|0,g);u=g+11|0;x=g+4|0;t=g+11|0;w=g+4|0;v=B;while(1){if(v>>>0>=A>>>0){P=s;break a;}zB(g,(c[e>>2]|0)+(v*24|0)+12|0,2);B=AB(18667)|0;F=a[u>>0]|0;if((B|0)==((F<<24>>24<0?c[x>>2]|0:F&255)|0))S=(BB(g,18667,B)|0)==0;else S=0;iB(g);B=c[e>>2]|0;F=B+(v*24|0)|0;if(!S){J=B+(v*24|0)+12|0;if((a[J+11>>0]|0)<0)T=c[J>>2]|0;else T=J;if((a[T>>0]|0)==40){qB(F,18675)|0;pB((c[e>>2]|0)+(v*24|0)+12|0,0,18673)|0;}}else{qB(F,18670)|0;pB((c[e>>2]|0)+(v*24|0)+12|0,0,18673)|0;}if((a[r>>0]|0)==85){zB(g,(c[e>>2]|0)+(v*24|0)|0,12);F=AB(18680)|0;J=a[t>>0]|0;if((F|0)==((J<<24>>24<0?c[w>>2]|0:J&255)|0))U=(BB(g,18680,F)|0)!=0;else U=1;iB(g);F=(c[e>>2]|0)+(v*24|0)|0;if(U){V=F;W=113;}else CB(F);}else{V=(c[e>>2]|0)+(v*24|0)|0;W=113;}if((W|0)==113){W=0;qB(V,18693)|0;}F=c[y>>2]|0;J=(c[e>>2]|0)+(v*24|0)|0;B=F+-12|0;D=c[B>>2]|0;if((D|0)==(c[F+-8>>2]|0))sB(F+-16|0,J);else{rB(D,J);c[B>>2]=(c[B>>2]|0)+24;}v=v+1|0;}break;}case 82:{v=e+4|0;y=((c[v>>2]|0)-(c[e>>2]|0)|0)/24|0;w=b+1|0;t=mB(w,d,e)|0;r=((c[v>>2]|0)-(c[e>>2]|0)|0)/24|0;if((t|0)==(w|0)){P=b;break a;}w=c[e+12>>2]|0;c[g>>2]=w;v=e+20|0;x=c[v>>2]|0;if(x>>>0<(c[e+24>>2]|0)>>>0){c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=w;c[v>>2]=(c[v>>2]|0)+16;}else oB(e+16|0,g);w=g+11|0;x=g+4|0;u=y;while(1){if(u>>>0>=r>>>0){P=t;break a;}zB(g,(c[e>>2]|0)+(u*24|0)+12|0,2);y=AB(18667)|0;s=a[w>>0]|0;if((y|0)==((s<<24>>24<0?c[x>>2]|0:s&255)|0))X=(BB(g,18667,y)|0)==0;else X=0;iB(g);y=c[e>>2]|0;s=y+(u*24|0)|0;if(!X){A=y+(u*24|0)+12|0;if((a[A+11>>0]|0)<0)Y=c[A>>2]|0;else Y=A;if((a[Y>>0]|0)==40){qB(s,18675)|0;pB((c[e>>2]|0)+(u*24|0)+12|0,0,18673)|0;}}else{qB(s,18670)|0;pB((c[e>>2]|0)+(u*24|0)+12|0,0,18673)|0;}qB((c[e>>2]|0)+(u*24|0)|0,18695)|0;s=c[v>>2]|0;A=(c[e>>2]|0)+(u*24|0)|0;y=s+-12|0;B=c[y>>2]|0;if((B|0)==(c[s+-8>>2]|0))sB(s+-16|0,A);else{rB(B,A);c[y>>2]=(c[y>>2]|0)+24;}u=u+1|0;}break;}case 84:{u=e+4|0;v=((c[u>>2]|0)-(c[e>>2]|0)|0)/24|0;x=DB(b,d,e)|0;w=((c[u>>2]|0)-(c[e>>2]|0)|0)/24|0;if((x|0)==(b|0)){P=b;break a;}t=e+16|0;r=e+12|0;y=c[r>>2]|0;c[g>>2]=y;A=e+20|0;B=c[A>>2]|0;s=e+24|0;if(B>>>0<(c[s>>2]|0)>>>0){c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;c[B+12>>2]=y;c[A>>2]=(c[A>>2]|0)+16;}else oB(t,g);y=v;while(1){if(y>>>0>=w>>>0)break;B=c[A>>2]|0;J=(c[e>>2]|0)+(y*24|0)|0;D=B+-12|0;F=c[D>>2]|0;if((F|0)==(c[B+-8>>2]|0))sB(B+-16|0,J);else{rB(F,J);c[D>>2]=(c[D>>2]|0)+24;}y=y+1|0;}if(!((w|0)==(v+1|0)&(a[e+63>>0]|0)!=0)){P=x;break a;}y=EB(x,d,e)|0;if((y|0)==(x|0)){P=x;break a;}FB(g,(c[u>>2]|0)+-24|0);D=c[u>>2]|0;J=0;while(1){if((J|0)==-1)break;F=J+-1|0;QA(D+(F*24|0)|0);J=F;}c[u>>2]=D+-24;J=a[g+11>>0]|0;x=J<<24>>24<0;TA(D+-48|0,x?c[g>>2]|0:g,x?c[g+4>>2]|0:J&255)|0;J=(c[u>>2]|0)+-24|0;c[i>>2]=c[r>>2];vB(h,J,i);J=c[A>>2]|0;if(J>>>0<(c[s>>2]|0)>>>0){c[J>>2]=0;x=J+4|0;c[x>>2]=0;v=J+8|0;c[v>>2]=0;c[J+12>>2]=c[h+12>>2];c[J>>2]=c[h>>2];J=h+4|0;c[x>>2]=c[J>>2];x=h+8|0;c[v>>2]=c[x>>2];c[x>>2]=0;c[J>>2]=0;c[h>>2]=0;c[A>>2]=(c[A>>2]|0)+16;}else wB(t,h);RA(h);iB(g);P=y;break a;break;}case 85:{J=b+1|0;if((J|0)==(d|0)){P=b;break a;}x=GB(J,d,e)|0;if((x|0)==(J|0)){P=b;break a;}J=mB(x,d,e)|0;if((J|0)==(x|0)){P=b;break a;}x=e+4|0;v=c[x>>2]|0;if(((v-(c[e>>2]|0)|0)/24|0)>>>0<2){P=b;break a;}FB(g,v+-24|0);v=c[x>>2]|0;w=0;while(1){if((w|0)==-1)break;F=w+-1|0;QA(v+(F*24|0)|0);w=F;}c[x>>2]=v+-24;zB(h,v+-48|0,9);w=AB(18697)|0;y=a[h+11>>0]|0;if((w|0)==((y<<24>>24<0?c[h+4>>2]|0:y&255)|0)){y=(BB(h,18697,w)|0)==0;iB(h);if(y){FB(h,(c[x>>2]|0)+-24|0);y=c[x>>2]|0;w=0;while(1){if((w|0)==-1)break;t=w+-1|0;QA(y+(t*24|0)|0);w=t;}c[x>>2]=y+-24;w=h+11|0;v=a[w>>0]|0;t=v<<24>>24<0;A=h+4|0;s=t?c[h>>2]|0:h;r=GB(s+9|0,s+(t?c[A>>2]|0:v&255)|0,e)|0;if((r|0)==(((a[w>>0]|0)<0?c[h>>2]|0:h)+9|0)){HB(k,g,18707);r=a[w>>0]|0;w=r<<24>>24<0;TA(k,w?c[h>>2]|0:h,w?c[A>>2]|0:r&255)|0;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];c[p+8>>2]=c[k+8>>2];r=0;while(1){if((r|0)==3)break;c[k+(r<<2)>>2]=0;r=r+1|0;}IB(i,p);r=c[x>>2]|0;if(r>>>0<(c[e+8>>2]|0)>>>0){KB(r,i);c[x>>2]=(c[x>>2]|0)+24;}else LB(e,i);QA(i);iB(p);iB(k);}else{HB(n,g,18709);FB(o,(c[x>>2]|0)+-24|0);r=a[o+11>>0]|0;y=r<<24>>24<0;TA(n,y?c[o>>2]|0:o,y?c[o+4>>2]|0:r&255)|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];r=0;while(1){if((r|0)==3)break;c[n+(r<<2)>>2]=0;r=r+1|0;}qB(k,18711)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];r=0;while(1){if((r|0)==3)break;c[k+(r<<2)>>2]=0;r=r+1|0;}IB(i,m);JB((c[x>>2]|0)+-24|0,i);QA(i);iB(m);iB(k);iB(o);iB(n);}iB(h);}else W=167;}else{iB(h);W=167;}if((W|0)==167){HB(i,g,18707);FB(k,(c[x>>2]|0)+-24|0);r=a[k+11>>0]|0;y=r<<24>>24<0;TA(i,y?c[k>>2]|0:k,y?c[k+4>>2]|0:r&255)|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];r=0;while(1){if((r|0)==3)break;c[i+(r<<2)>>2]=0;r=r+1|0;}IB(h,j);JB((c[x>>2]|0)+-24|0,h);QA(h);iB(j);iB(k);iB(i);}r=(c[x>>2]|0)+-24|0;c[i>>2]=c[e+12>>2];vB(h,r,i);r=e+20|0;y=c[r>>2]|0;if(y>>>0<(c[e+24>>2]|0)>>>0){c[y>>2]=0;A=y+4|0;c[A>>2]=0;w=y+8|0;c[w>>2]=0;c[y+12>>2]=c[h+12>>2];c[y>>2]=c[h>>2];y=h+4|0;c[A>>2]=c[y>>2];A=h+8|0;c[w>>2]=c[A>>2];c[A>>2]=0;c[y>>2]=0;c[h>>2]=0;c[r>>2]=(c[r>>2]|0)+16;}else wB(e+16|0,h);RA(h);iB(g);P=J;break a;break;}case 83:{r=b+1|0;if((r|0)!=(d|0)?(a[r>>0]|0)==116:0){r=MB(b,d,e)|0;if((r|0)==(b|0)){P=b;break a;}y=c[e+4>>2]|0;if((c[e>>2]|0)==(y|0)){P=b;break a;}c[h>>2]=c[e+12>>2];vB(g,y+-24|0,h);y=e+20|0;A=c[y>>2]|0;if(A>>>0<(c[e+24>>2]|0)>>>0){c[A>>2]=0;w=A+4|0;c[w>>2]=0;v=A+8|0;c[v>>2]=0;c[A+12>>2]=c[g+12>>2];c[A>>2]=c[g>>2];A=g+4|0;c[w>>2]=c[A>>2];w=g+8|0;c[v>>2]=c[w>>2];c[w>>2]=0;c[A>>2]=0;c[g>>2]=0;c[y>>2]=(c[y>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=r;break a;}r=NB(b,d,e)|0;if((r|0)==(b|0)){P=b;break a;}y=EB(r,d,e)|0;if((y|0)==(r|0)){P=r;break a;}A=e+4|0;w=c[A>>2]|0;if(((w-(c[e>>2]|0)|0)/24|0)>>>0<2){P=r;break a;}FB(g,w+-24|0);w=c[A>>2]|0;r=0;while(1){if((r|0)==-1)break;v=r+-1|0;QA(w+(v*24|0)|0);r=v;}c[A>>2]=w+-24;r=a[g+11>>0]|0;J=r<<24>>24<0;TA(w+-48|0,J?c[g>>2]|0:g,J?c[g+4>>2]|0:r&255)|0;r=(c[A>>2]|0)+-24|0;c[i>>2]=c[e+12>>2];vB(h,r,i);r=e+20|0;J=c[r>>2]|0;if(J>>>0<(c[e+24>>2]|0)>>>0){c[J>>2]=0;x=J+4|0;c[x>>2]=0;v=J+8|0;c[v>>2]=0;c[J+12>>2]=c[h+12>>2];c[J>>2]=c[h>>2];J=h+4|0;c[x>>2]=c[J>>2];x=h+8|0;c[v>>2]=c[x>>2];c[x>>2]=0;c[J>>2]=0;c[h>>2]=0;c[r>>2]=(c[r>>2]|0)+16;}else wB(e+16|0,h);RA(h);iB(g);P=y;break a;break;}case 68:{r=b+1|0;if((r|0)!=(d|0))switch(a[r>>0]|0){case 112:{r=e+4|0;J=((c[r>>2]|0)-(c[e>>2]|0)|0)/24|0;x=b+2|0;v=mB(x,d,e)|0;t=((c[r>>2]|0)-(c[e>>2]|0)|0)/24|0;if((v|0)==(x|0))break c;x=c[e+12>>2]|0;c[g>>2]=x;r=e+20|0;s=c[r>>2]|0;if(s>>>0<(c[e+24>>2]|0)>>>0){c[s>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=x;c[r>>2]=(c[r>>2]|0)+16;}else oB(e+16|0,g);x=J;while(1){if(x>>>0>=t>>>0){P=v;break a;}J=c[r>>2]|0;s=(c[e>>2]|0)+(x*24|0)|0;u=J+-12|0;D=c[u>>2]|0;if((D|0)==(c[J+-8>>2]|0))sB(J+-16|0,s);else{rB(D,s);c[u>>2]=(c[u>>2]|0)+24;}x=x+1|0;}break;}case 84:case 116:{x=OB(b,d,e)|0;if((x|0)==(b|0))break c;r=c[e+4>>2]|0;if((c[e>>2]|0)==(r|0)){P=b;break a;}c[h>>2]=c[e+12>>2];vB(g,r+-24|0,h);r=e+20|0;v=c[r>>2]|0;if(v>>>0<(c[e+24>>2]|0)>>>0){c[v>>2]=0;t=v+4|0;c[t>>2]=0;y=v+8|0;c[y>>2]=0;c[v+12>>2]=c[g+12>>2];c[v>>2]=c[g>>2];v=g+4|0;c[t>>2]=c[v>>2];t=g+8|0;c[y>>2]=c[t>>2];c[t>>2]=0;c[v>>2]=0;c[g>>2]=0;c[r>>2]=(c[r>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=x;break a;break;}case 118:{x=PB(b,d,e)|0;if((x|0)==(b|0))break c;r=c[e+4>>2]|0;if((c[e>>2]|0)==(r|0)){P=b;break a;}c[h>>2]=c[e+12>>2];vB(g,r+-24|0,h);r=e+20|0;v=c[r>>2]|0;if(v>>>0<(c[e+24>>2]|0)>>>0){c[v>>2]=0;t=v+4|0;c[t>>2]=0;y=v+8|0;c[y>>2]=0;c[v+12>>2]=c[g+12>>2];c[v>>2]=c[g>>2];v=g+4|0;c[t>>2]=c[v>>2];t=g+8|0;c[y>>2]=c[t>>2];c[t>>2]=0;c[v>>2]=0;c[g>>2]=0;c[r>>2]=(c[r>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=x;break a;break;}default:break c;}break;}default:{}}}while(0);x=tB(b,d,e)|0;if((x|0)==(b|0)){r=MB(b,d,e)|0;if((r|0)!=(b|0)?(v=c[e+4>>2]|0,(c[e>>2]|0)!=(v|0)):0){c[h>>2]=c[e+12>>2];vB(g,v+-24|0,h);v=e+20|0;t=c[v>>2]|0;if(t>>>0<(c[e+24>>2]|0)>>>0){c[t>>2]=0;y=t+4|0;c[y>>2]=0;A=t+8|0;c[A>>2]=0;c[t+12>>2]=c[g+12>>2];c[t>>2]=c[g>>2];t=g+4|0;c[y>>2]=c[t>>2];y=g+8|0;c[A>>2]=c[y>>2];c[y>>2]=0;c[t>>2]=0;c[g>>2]=0;c[v>>2]=(c[v>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=r;}else P=b;}else P=x;}else P=q;}else P=b;}while(0);l=f;return P|0;}function nB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c[e>>2]=0;if((b|0)!=(d|0)){d=a[b>>0]|0;if(d<<24>>24==114){c[e>>2]=4;f=b+1|0;g=f;h=4;i=a[f>>0]|0;}else{g=b;h=0;i=d;}if(i<<24>>24==86){d=h|2;c[e>>2]=d;f=g+1|0;j=f;k=a[f>>0]|0;l=d;}else{j=g;k=i;l=h;}if(k<<24>>24==75){c[e>>2]=l|1;m=j+1|0;}else m=j;}else m=b;return m|0;}function oB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=l;l=l+32|0;e=d;f=a+4|0;g=((c[f>>2]|0)-(c[a>>2]|0)>>4)+1|0;h=AD(a)|0;if(h>>>0<g>>>0)Wz(a);else{i=c[a>>2]|0;j=(c[a+8>>2]|0)-i|0;k=j>>3;BD(e,j>>4>>>0<h>>>1>>>0?k>>>0<g>>>0?g:k:h,(c[f>>2]|0)-i>>4,a+12|0);i=e+8|0;f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=c[b>>2];c[i>>2]=f+16;CD(a,e);DD(e);l=d;return;}}function pB(a,b,c){a=a|0;b=b|0;c=c|0;return zD(a,b,c,AB(c)|0)|0;}function qB(a,b){a=a|0;b=b|0;return TA(a,b,AB(b)|0)|0;}function rB(a,b){a=a|0;b=b|0;TC(a,b);TC(a+12|0,b+12|0);return;}function sB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=l;l=l+32|0;e=d;f=a+4|0;g=(((c[f>>2]|0)-(c[a>>2]|0)|0)/24|0)+1|0;h=XC(a)|0;if(h>>>0<g>>>0)Wz(a);else{i=c[a>>2]|0;j=((c[a+8>>2]|0)-i|0)/24|0;k=j<<1;YC(e,j>>>0<h>>>1>>>0?k>>>0<g>>>0?g:k:h,((c[f>>2]|0)-i|0)/24|0,a+12|0);i=e+8|0;f=c[i>>2]|0;rB(f,b);c[i>>2]=f+24;ZC(a,e);_C(e);l=d;return;}}function tB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+32|0;g=f;a:do{if((b|0)==(d|0))h=b;else do{switch(a[b>>0]|0){case 118:{cD(g,20112);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 119:{HD(g);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 98:{cD(g,20117);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 99:{cD(g,19886);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 97:{JC(g,19891);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 104:{gD(g,19903);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 115:{sC(g,19917);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 116:{KC(g,19923);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 105:{ID(g,20122);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 106:{LC(g,20126);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 108:{cD(g,20139);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 109:{gD(g,20144);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 120:{GC(g,20158);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 121:{JD(g);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 110:{KD(g,19952);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 111:{HC(g,19961);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 102:{sC(g,20168);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 100:{LD(g);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 101:{JC(g,20174);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 103:{FC(g,20186);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 122:{ID(g,20197);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 117:{i=b+1|0;j=GB(i,d,e)|0;h=(j|0)==(i|0)?b:j;break a;break;}case 68:{j=b+1|0;if((j|0)==(d|0)){h=b;break a;}switch(a[j>>0]|0){case 100:{GC(g,20201);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 101:{FC(g,20211);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 102:{GC(g,20222);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 104:{GC(g,20232);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 105:{KD(g,20242);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 115:{KD(g,20251);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 97:{cD(g,20260);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 110:{KC(g,20265);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}default:{h=b;break a;}}break;}default:{h=b;break a;}}}while(0);}while(0);l=f;return h|0;}function uB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=l;l=l+112|0;g=f+96|0;h=f+72|0;i=f+48|0;j=f+36|0;k=f+24|0;m=f+12|0;n=f;do{if(((b|0)!=(d|0)?(a[b>>0]|0)==65:0)?(o=b+1|0,(o|0)!=(d|0)):0){p=a[o>>0]|0;if(p<<24>>24==95){q=b+2|0;r=mB(q,d,e)|0;if((r|0)==(q|0)){s=b;break;}q=e+4|0;t=c[q>>2]|0;if((c[e>>2]|0)==(t|0)){s=b;break;}zB(g,t+-12|0,2);t=AB(18667)|0;u=a[g+11>>0]|0;if((t|0)==((u<<24>>24<0?c[g+4>>2]|0:u&255)|0)){u=(BB(g,18667,t)|0)==0;iB(g);if(u)GD((c[q>>2]|0)+-12|0);}else iB(g);pB((c[q>>2]|0)+-12|0,0,20108)|0;s=r;break;}if((p+-49&255)<9){p=QB(o,d)|0;if((p|0)==(d|0)){s=b;break;}if((a[p>>0]|0)!=95){s=b;break;}r=p+1|0;q=mB(r,d,e)|0;if((q|0)==(r|0)){s=b;break;}r=e+4|0;u=c[r>>2]|0;if((c[e>>2]|0)==(u|0)){s=b;break;}zB(g,u+-12|0,2);u=AB(18667)|0;t=a[g+11>>0]|0;if((u|0)==((t<<24>>24<0?c[g+4>>2]|0:t&255)|0)){t=(BB(g,18667,u)|0)==0;iB(g);if(t)GD((c[r>>2]|0)+-12|0);}else iB(g);t=(c[r>>2]|0)+-12|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;QC(i,o,p);pB(i,0,18667)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];p=0;while(1){if((p|0)==3)break;c[i+(p<<2)>>2]=0;p=p+1|0;}qB(h,18722)|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];p=0;while(1){if((p|0)==3)break;c[h+(p<<2)>>2]=0;p=p+1|0;}p=a[g+11>>0]|0;r=p<<24>>24<0;zD(t,0,r?c[g>>2]|0:g,r?c[g+4>>2]|0:p&255)|0;iB(g);iB(h);iB(i);s=q;break;}p=SB(o,d,e)|0;if(((!((p|0)==(o|0)|(p|0)==(d|0))?(a[p>>0]|0)==95:0)?(r=p+1|0,p=mB(r,d,e)|0,(p|0)!=(r|0)):0)?(r=e+4|0,u=c[r>>2]|0,((u-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){KB(h,u+-24|0);u=c[r>>2]|0;v=0;while(1){if((v|0)==-1)break;w=v+-1|0;QA(u+(w*24|0)|0);v=w;}c[r>>2]=u+-24;KB(i,u+-48|0);v=c[r>>2]|0;o=v+-24|0;q=o+11|0;if((a[q>>0]|0)<0){t=c[o>>2]|0;a[g>>0]=0;cB(t,g);c[v+-20>>2]=0;}else{a[g>>0]=0;cB(o,g);a[q>>0]=0;}TB(o);c[o>>2]=c[h>>2];c[o+4>>2]=c[h+4>>2];c[o+8>>2]=c[h+8>>2];o=0;while(1){if((o|0)==3)break;c[h+(o<<2)>>2]=0;o=o+1|0;}o=h+12|0;zB(g,o,2);u=AB(18667)|0;q=a[g+11>>0]|0;if((u|0)==((q<<24>>24<0?c[g+4>>2]|0:q&255)|0)){q=(BB(g,18667,u)|0)==0;iB(g);if(q)GD(o);}else iB(g);FB(n,i);pB(n,0,18667)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];q=0;while(1){if((q|0)==3)break;c[n+(q<<2)>>2]=0;q=q+1|0;}qB(m,18722)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];q=0;while(1){if((q|0)==3)break;c[m+(q<<2)>>2]=0;q=q+1|0;}q=a[o+11>>0]|0;u=q<<24>>24<0;TA(k,u?c[o>>2]|0:o,u?c[h+16>>2]|0:q&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];q=0;while(1){if((q|0)==3)break;c[k+(q<<2)>>2]=0;q=q+1|0;}q=c[r>>2]|0;o=q+-12|0;u=o+11|0;if((a[u>>0]|0)<0){v=c[o>>2]|0;a[g>>0]=0;cB(v,g);c[q+-8>>2]=0;}else{a[g>>0]=0;cB(o,g);a[u>>0]=0;}TB(o);c[o>>2]=c[j>>2];c[o+4>>2]=c[j+4>>2];c[o+8>>2]=c[j+8>>2];o=0;while(1){if((o|0)==3)break;c[j+(o<<2)>>2]=0;o=o+1|0;}iB(j);iB(k);iB(m);iB(n);QA(i);QA(h);s=p;}else s=b;}else s=b;}while(0);l=f;return s|0;}function vB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[a>>2]=0;e=a+4|0;c[e>>2]=0;c[a+8>>2]=0;c[a+12>>2]=c[d>>2];FD(a);rB(c[e>>2]|0,b);c[e>>2]=(c[e>>2]|0)+24;return;}function wB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=l;l=l+32|0;e=d;f=a+4|0;g=((c[f>>2]|0)-(c[a>>2]|0)>>4)+1|0;h=AD(a)|0;if(h>>>0<g>>>0)Wz(a);else{i=c[a>>2]|0;j=(c[a+8>>2]|0)-i|0;k=j>>3;BD(e,j>>4>>>0<h>>>1>>>0?k>>>0<g>>>0?g:k:h,(c[f>>2]|0)-i>>4,a+12|0);i=e+8|0;f=c[i>>2]|0;c[f>>2]=0;h=f+4|0;c[h>>2]=0;k=f+8|0;c[k>>2]=0;c[f+12>>2]=c[b+12>>2];c[f>>2]=c[b>>2];g=b+4|0;c[h>>2]=c[g>>2];h=b+8|0;c[k>>2]=c[h>>2];c[h>>2]=0;c[g>>2]=0;c[b>>2]=0;c[i>>2]=f+16;CD(a,e);DD(e);l=d;return;}}function xB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=l;l=l+32|0;g=f+12|0;h=f;do{if(((b|0)!=(d|0)?(a[b>>0]|0)==70:0)?(i=b+1|0,(i|0)!=(d|0)):0){if((a[i>>0]|0)==89){j=b+2|0;if((j|0)==(d|0)){k=b;break;}else m=j;}else m=i;i=mB(m,d,e)|0;if((i|0)!=(m|0)){c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18675,AB(18675)|0);j=e+4|0;n=g+11|0;o=g+4|0;p=h+11|0;q=h+4|0;r=0;s=i;a:while(1){t=s;b:while(1){if((t|0)==(d|0)){u=11;break a;}switch(a[t>>0]|0){case 69:{u=16;break a;break;}case 118:{v=t+1|0;break;}case 82:{i=t+1|0;if((i|0)!=(d|0)?(a[i>>0]|0)==69:0){w=1;x=i;break b;}else u=23;break;}case 79:{i=t+1|0;if((i|0)!=(d|0)?(a[i>>0]|0)==69:0){w=2;x=i;break b;}else u=23;break;}default:u=23;}c:do{if((u|0)==23){u=0;i=((c[j>>2]|0)-(c[e>>2]|0)|0)/24|0;y=mB(t,d,e)|0;z=((c[j>>2]|0)-(c[e>>2]|0)|0)/24|0;if((y|0)==(t|0)|(y|0)==(d|0))break a;A=i;while(1){if(A>>>0>=z>>>0)break;B=a[n>>0]|0;if((B<<24>>24<0?c[o>>2]|0:B&255)>>>0>1)qB(g,18897)|0;FB(h,(c[e>>2]|0)+(A*24|0)|0);B=a[p>>0]|0;C=B<<24>>24<0;TA(g,C?c[h>>2]|0:h,C?c[q>>2]|0:B&255)|0;iB(h);A=A+1|0;}A=i;while(1){if(A>>>0>=z>>>0){v=y;break c;}B=c[j>>2]|0;C=0;while(1){if((C|0)==-1)break;D=C+-1|0;QA(B+(D*24|0)|0);C=D;}c[j>>2]=B+-24;A=A+1|0;}}}while(0);t=v;}r=w;s=x;}if((u|0)==11){s=c[j>>2]|0;q=0;while(1){if((q|0)==-1)break;p=q+-1|0;QA(s+(p*24|0)|0);q=p;}c[j>>2]=s+-24;}else if((u|0)==16){q=t+1|0;qB(g,18673)|0;switch(r&3){case 1:{qB(g,20101)|0;break;}case 2:{qB(g,20104)|0;break;}default:{}}p=c[j>>2]|0;if((c[e>>2]|0)!=(p|0)){qB(p+-24|0,18707)|0;p=a[n>>0]|0;A=p<<24>>24<0;zD((c[j>>2]|0)+-12|0,0,A?c[g>>2]|0:g,A?c[o>>2]|0:p&255)|0;iB(g);k=q;break;}}iB(g);k=b;}else k=b;}else k=b;}while(0);l=f;return k|0;}function yB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=l;l=l+112|0;g=f+96|0;h=f+72|0;i=f+48|0;j=f+36|0;k=f+24|0;m=f+12|0;n=f;if(((((b|0)!=(d|0)?(a[b>>0]|0)==77:0)?(o=b+1|0,p=mB(o,d,e)|0,(p|0)!=(o|0)):0)?(o=mB(p,d,e)|0,(o|0)!=(p|0)):0)?(p=e+4|0,d=c[p>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){KB(h,d+-24|0);d=c[p>>2]|0;e=0;while(1){if((e|0)==-1)break;q=e+-1|0;QA(d+(q*24|0)|0);e=q;}c[p>>2]=d+-24;KB(i,d+-48|0);d=h+12|0;a:do{if((a[((a[d+11>>0]|0)<0?c[d>>2]|0:d)>>0]|0)==40){qB(h,18675)|0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];e=0;while(1){if((e|0)==3)break;c[h+(e<<2)>>2]=0;e=e+1|0;}FB(n,i);e=a[n+11>>0]|0;q=e<<24>>24<0;TA(m,q?c[n>>2]|0:n,q?c[n+4>>2]|0:e&255)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];e=0;while(1){if((e|0)==3)break;c[m+(e<<2)>>2]=0;e=e+1|0;}qB(k,20097)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];e=0;while(1){if((e|0)==3)break;c[k+(e<<2)>>2]=0;e=e+1|0;}e=c[p>>2]|0;q=e+-24|0;r=q+11|0;if((a[r>>0]|0)<0){s=c[q>>2]|0;a[g>>0]=0;cB(s,g);c[e+-20>>2]=0;}else{a[g>>0]=0;cB(q,g);a[r>>0]=0;}TB(q);c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];q=0;while(1){if((q|0)==3)break;c[j+(q<<2)>>2]=0;q=q+1|0;}iB(j);iB(k);iB(n);iB(m);pB(d,0,18673)|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];q=0;while(1){if((q|0)==3)break;c[d+(q<<2)>>2]=0;q=q+1|0;}q=c[p>>2]|0;r=q+-12|0;e=r+11|0;if((a[e>>0]|0)<0){s=c[r>>2]|0;a[g>>0]=0;cB(s,g);c[q+-8>>2]=0;}else{a[g>>0]=0;cB(r,g);a[e>>0]=0;}TB(r);c[r>>2]=c[j>>2];c[r+4>>2]=c[j+4>>2];c[r+8>>2]=c[j+8>>2];r=0;while(1){if((r|0)==3)break;c[j+(r<<2)>>2]=0;r=r+1|0;}iB(j);}else{qB(h,18707)|0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];r=0;while(1){if((r|0)==3)break;c[h+(r<<2)>>2]=0;r=r+1|0;}FB(n,i);r=a[n+11>>0]|0;e=r<<24>>24<0;TA(m,e?c[n>>2]|0:n,e?c[n+4>>2]|0:r&255)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];r=0;while(1){if((r|0)==3)break;c[m+(r<<2)>>2]=0;r=r+1|0;}qB(k,20097)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];r=0;while(1){if((r|0)==3)break;c[k+(r<<2)>>2]=0;r=r+1|0;}r=c[p>>2]|0;e=r+-24|0;q=e+11|0;if((a[q>>0]|0)<0){s=c[e>>2]|0;a[g>>0]=0;cB(s,g);c[r+-20>>2]=0;}else{a[g>>0]=0;cB(e,g);a[q>>0]=0;}TB(e);c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];e=0;while(1){if((e|0)==3)break;c[j+(e<<2)>>2]=0;e=e+1|0;}iB(j);iB(k);iB(n);iB(m);e=c[p>>2]|0;q=e+-12|0;r=q+11|0;if((a[r>>0]|0)<0){s=c[q>>2]|0;a[g>>0]=0;cB(s,g);c[e+-8>>2]=0;}else{a[g>>0]=0;cB(q,g);a[r>>0]=0;}TB(q);c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];q=0;while(1){if((q|0)==3)break a;c[d+(q<<2)>>2]=0;q=q+1|0;}}}while(0);QA(i);QA(h);t=o;}else t=b;l=f;return t|0;}function zB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;f=a[d+11>>0]|0;g=f<<24>>24<0;h=g?c[d+4>>2]|0:f&255;RB(b,g?c[d>>2]|0:d,h>>>0<e>>>0?h:e);return;}function AB(a){a=a|0;return Ty(a)|0;}function BB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=a[b+11>>0]|0;g=f<<24>>24<0;if(g)h=c[b+4>>2]|0;else h=f&255;if((e|0)==-1)xD(b);if(g)i=c[b>>2]|0;else i=b;b=h>>>0>e>>>0;g=yD(i,d,b?e:h)|0;if(!g)return(h>>>0<e>>>0?-1:b&1)|0;else return g|0;return 0;}function CB(a){a=a|0;wD(a,AB(20094)|0);return;}function DB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+48|0;g=f+16|0;h=f;a:do{if((d-b|0)>1?(a[b>>0]|0)==84:0){i=a[b+1>>0]|0;if(i<<24>>24==95){j=c[e+36>>2]|0;if((c[e+32>>2]|0)==(j|0)){k=b;break;}m=c[j+-16>>2]|0;if((m|0)==(c[j+-12>>2]|0)){vD(g);j=e+4|0;n=c[j>>2]|0;if(n>>>0<(c[e+8>>2]|0)>>>0){KB(n,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);a[e+62>>0]=1;k=b+2|0;break;}j=c[m+4>>2]|0;n=e+4|0;o=e+8|0;p=c[m>>2]|0;while(1){if((p|0)==(j|0))break;m=c[n>>2]|0;if((m|0)==(c[o>>2]|0))sB(e,p);else{rB(m,p);c[n>>2]=(c[n>>2]|0)+24;}p=p+24|0;}k=b+2|0;break;}p=(i<<24>>24)+-48|0;if(p>>>0<10){n=p;p=b+2|0;while(1){if((p|0)==(d|0)){k=b;break a;}q=a[p>>0]|0;o=(q<<24>>24)+-48|0;if(o>>>0>=10)break;n=o+(n*10|0)|0;p=p+1|0;}if(q<<24>>24==95?(i=c[e+36>>2]|0,(c[e+32>>2]|0)!=(i|0)):0){o=n+1|0;j=c[i+-16>>2]|0;m=j;if(o>>>0>=(c[i+-12>>2]|0)-j>>4>>>0){j=p+1|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;QC(h,b,j);IB(g,h);i=e+4|0;r=c[i>>2]|0;if(r>>>0<(c[e+8>>2]|0)>>>0){KB(r,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);iB(h);a[e+62>>0]=1;k=j;break;}j=c[m+(o<<4)+4>>2]|0;i=e+4|0;r=e+8|0;s=c[m+(o<<4)>>2]|0;while(1){if((s|0)==(j|0))break;o=c[i>>2]|0;if((o|0)==(c[r>>2]|0))sB(e,s);else{rB(o,s);c[i>>2]=(c[i>>2]|0)+24;}s=s+24|0;}k=p+1|0;}else k=b;}else k=b;}else k=b;}while(0);l=f;return k|0;}function EB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;f=l;l=l+64|0;g=f+32|0;h=f+16|0;i=f+12|0;j=f;do{if((d-b|0)>1?(a[b>>0]|0)==73:0){k=e+61|0;m=e+36|0;if(a[k>>0]|0){n=c[m>>2]|0;o=c[n+-16>>2]|0;p=n+-12|0;n=c[p>>2]|0;while(1){if((n|0)==(o|0))break;q=n+-16|0;RA(q);n=q;}c[p>>2]=o;}c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;RB(h,18709,AB(18709)|0);n=e+4|0;q=e+12|0;r=e+40|0;s=e+32|0;t=h+11|0;u=h+4|0;v=g+11|0;w=g+4|0;x=b+1|0;while(1){if((a[x>>0]|0)==69)break;if(a[k>>0]|0){c[i>>2]=c[q>>2];y=c[m>>2]|0;if(y>>>0<(c[r>>2]|0)>>>0){nD(g,i);c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;c[y+12>>2]=c[g>>2];c[m>>2]=(c[m>>2]|0)+16;}else oD(s,i);}y=((c[n>>2]|0)-(c[e>>2]|0)|0)/24|0;z=pD(x,d,e)|0;A=((c[n>>2]|0)-(c[e>>2]|0)|0)/24|0;if(a[k>>0]|0){B=c[m>>2]|0;C=0;while(1){if((C|0)==-1)break;D=C+-1|0;XA(B+(D<<4)|0);C=D;}c[m>>2]=B+-16;}if((z|0)==(x|0)|(z|0)==(d|0)){E=53;break;}a:do{if(a[k>>0]|0){C=c[m>>2]|0;D=c[q>>2]|0;c[g>>2]=D;F=C+-12|0;G=c[F>>2]|0;if(G>>>0<(c[C+-8>>2]|0)>>>0){c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+12>>2]=D;c[F>>2]=(c[F>>2]|0)+16;}else oB(C+-16|0,g);C=y;while(1){if(C>>>0>=A>>>0)break a;F=c[(c[m>>2]|0)+-12>>2]|0;D=(c[e>>2]|0)+(C*24|0)|0;G=F+-12|0;H=c[G>>2]|0;if((H|0)==(c[F+-8>>2]|0))sB(F+-16|0,D);else{rB(H,D);c[G>>2]=(c[G>>2]|0)+24;}C=C+1|0;}}}while(0);B=y;while(1){if(B>>>0>=A>>>0)break;C=a[t>>0]|0;if((C<<24>>24<0?c[u>>2]|0:C&255)>>>0>1)qB(h,18897)|0;FB(g,(c[e>>2]|0)+(B*24|0)|0);C=a[v>>0]|0;G=C<<24>>24<0;TA(h,G?c[g>>2]|0:g,G?c[w>>2]|0:C&255)|0;iB(g);B=B+1|0;}B=A;while(1){if((B|0)==(y|0))break;C=c[n>>2]|0;G=0;while(1){if((G|0)==-1)break;D=G+-1|0;QA(C+(D*24|0)|0);G=D;}c[n>>2]=C+-24;B=B+-1|0;}x=z;}if((E|0)==53){iB(h);I=b;break;}w=x+1|0;v=a[t>>0]|0;m=v<<24>>24<0;if((a[(m?c[h>>2]|0:h)+(m?c[u>>2]|0:v&255)+-1>>0]|0)==62)qB(h,20088)|0;else qB(h,18711)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];v=0;while(1){if((v|0)==3)break;c[h+(v<<2)>>2]=0;v=v+1|0;}IB(g,j);v=c[n>>2]|0;if(v>>>0<(c[e+8>>2]|0)>>>0){KB(v,g);c[n>>2]=(c[n>>2]|0)+24;}else LB(e,g);QA(g);iB(j);iB(h);I=w;}else I=b;}while(0);l=f;return I|0;}function FB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=d+12|0;f=a[e+11>>0]|0;g=f<<24>>24<0;TA(d,g?c[e>>2]|0:e,g?c[d+16>>2]|0:f&255)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0;}return;}function GB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+64|0;g=f+40|0;h=f+16|0;i=f;a:do{if(((b|0)!=(d|0)?(j=(a[b>>0]|0)+-48|0,j>>>0<10):0)?(k=b+1|0,(k|0)!=(d|0)):0){m=j;j=k;while(1){k=(a[j>>0]|0)+-48|0;if(k>>>0>=10)break;n=j+1|0;if((n|0)==(d|0)){o=b;break a;}m=k+(m*10|0)|0;j=n;}if((d-j|0)>>>0>=m>>>0){c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,j,m);zB(h,g,10);n=AB(20055)|0;k=a[h+11>>0]|0;if((n|0)==((k<<24>>24<0?c[h+4>>2]|0:k&255)|0))p=(BB(h,20055,n)|0)==0;else p=0;iB(h);if(p){mD(h);n=e+4|0;k=c[n>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,h);c[n>>2]=(c[n>>2]|0)+24;}else LB(e,h);QA(h);}else{c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];n=0;while(1){if((n|0)==3)break;c[g+(n<<2)>>2]=0;n=n+1|0;}IB(h,i);n=e+4|0;k=c[n>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,h);c[n>>2]=(c[n>>2]|0)+24;}else LB(e,h);QA(h);iB(i);}iB(g);o=j+m|0;}else o=b;}else o=b;}while(0);l=f;return o|0;}function HB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;f=0;while(1){if((f|0)==3)break;c[b+(f<<2)>>2]=0;f=f+1|0;}f=d+11|0;g=a[f>>0]|0;h=g<<24>>24<0?c[d+4>>2]|0:g&255;g=AB(e)|0;VB(b,(a[f>>0]|0)<0?c[d>>2]|0:d,h,h+g|0);TA(b,e,g)|0;return;}function IB(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];d=0;while(1){if((d|0)==3)break;c[b+(d<<2)>>2]=0;d=d+1|0;}d=a+12|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[d+(a<<2)>>2]=0;a=a+1|0;}return;}function JB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e;g=b+11|0;if((a[g>>0]|0)<0){h=c[b>>2]|0;a[f>>0]=0;cB(h,f);c[b+4>>2]=0;}else{a[f>>0]=0;cB(b,f);a[g>>0]=0;}TB(b);c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];g=0;while(1){if((g|0)==3)break;c[d+(g<<2)>>2]=0;g=g+1|0;}g=b+12|0;h=d+12|0;d=g+11|0;if((a[d>>0]|0)<0){i=c[g>>2]|0;a[f>>0]=0;cB(i,f);c[b+16>>2]=0;}else{a[f>>0]=0;cB(g,f);a[d>>0]=0;}TB(g);c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];g=0;while(1){if((g|0)==3)break;c[h+(g<<2)>>2]=0;g=g+1|0;}l=e;return;}function KB(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];d=0;while(1){if((d|0)==3)break;c[b+(d<<2)>>2]=0;d=d+1|0;}d=a+12|0;a=b+12|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];d=0;while(1){if((d|0)==3)break;c[a+(d<<2)>>2]=0;d=d+1|0;}return;}function LB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=l;l=l+32|0;e=d;f=a+4|0;g=(((c[f>>2]|0)-(c[a>>2]|0)|0)/24|0)+1|0;h=XC(a)|0;if(h>>>0<g>>>0)Wz(a);else{i=c[a>>2]|0;j=((c[a+8>>2]|0)-i|0)/24|0;k=j<<1;YC(e,j>>>0<h>>>1>>>0?k>>>0<g>>>0?g:k:h,((c[f>>2]|0)-i|0)/24|0,a+12|0);i=e+8|0;f=c[i>>2]|0;KB(f,b);c[i>>2]=f+24;ZC(a,e);_C(e);l=d;return;}}function MB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+32|0;g=f+8|0;h=f;a:do{if((d-b|0)>1){i=(a[b>>0]|0)==76?b+1|0:b;switch(a[i>>0]|0){case 78:{j=hD(i,d,e)|0;k=(j|0)==(i|0)?b:j;break a;break;}case 90:{j=iD(i,d,e)|0;k=(j|0)==(i|0)?b:j;break a;break;}default:{j=jD(i,d,e)|0;if((j|0)==(i|0)){m=NB(i,d,e)|0;if((m|0)==(i|0)|(m|0)==(d|0)){k=b;break a;}if((a[m>>0]|0)!=73){k=b;break a;}i=EB(m,d,e)|0;if((i|0)==(m|0)){k=b;break a;}m=e+4|0;n=c[m>>2]|0;if(((n-(c[e>>2]|0)|0)/24|0)>>>0<2){k=b;break a;}FB(g,n+-24|0);n=c[m>>2]|0;o=0;while(1){if((o|0)==-1)break;p=o+-1|0;QA(n+(p*24|0)|0);o=p;}c[m>>2]=n+-24;o=a[g+11>>0]|0;p=o<<24>>24<0;TA(n+-48|0,p?c[g>>2]|0:g,p?c[g+4>>2]|0:o&255)|0;iB(g);k=i;break a;}if((j|0)==(d|0)){k=d;break a;}if((a[j>>0]|0)!=73){k=j;break a;}o=e+4|0;p=c[o>>2]|0;if((c[e>>2]|0)==(p|0)){k=b;break a;}c[h>>2]=c[e+12>>2];vB(g,p+-24|0,h);p=e+20|0;q=c[p>>2]|0;if(q>>>0<(c[e+24>>2]|0)>>>0){c[q>>2]=0;r=q+4|0;c[r>>2]=0;s=q+8|0;c[s>>2]=0;c[q+12>>2]=c[g+12>>2];c[q>>2]=c[g>>2];q=g+4|0;c[r>>2]=c[q>>2];r=g+8|0;c[s>>2]=c[r>>2];c[r>>2]=0;c[q>>2]=0;c[g>>2]=0;c[p>>2]=(c[p>>2]|0)+16;}else wB(e+16|0,g);RA(g);p=EB(j,d,e)|0;if((p|0)==(j|0)){k=b;break a;}q=c[o>>2]|0;if(((q-(c[e>>2]|0)|0)/24|0)>>>0<2){k=b;break a;}FB(g,q+-24|0);q=c[o>>2]|0;r=0;while(1){if((r|0)==-1)break;s=r+-1|0;QA(q+(s*24|0)|0);r=s;}c[o>>2]=q+-24;r=a[g+11>>0]|0;j=r<<24>>24<0;TA(q+-48|0,j?c[g>>2]|0:g,j?c[g+4>>2]|0:r&255)|0;iB(g);k=p;break a;}}}else k=b;}while(0);l=f;return k|0;}function NB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+32|0;g=f;a:do{if((d-b|0)>1?(a[b>>0]|0)==83:0){h=a[b+1>>0]|0;switch(h|0){case 97:{KC(g,20001);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);k=b+2|0;break a;break;}case 98:{HC(g,20016);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);k=b+2|0;break a;break;}case 115:{JC(g,19495);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);k=b+2|0;break a;break;}case 105:{LC(g,19591);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);k=b+2|0;break a;break;}case 111:{LC(g,19668);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);k=b+2|0;break a;break;}case 100:{gD(g,19745);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);k=b+2|0;break a;break;}case 95:{i=c[e+16>>2]|0;if((i|0)==(c[e+20>>2]|0)){k=b;break a;}j=c[i+4>>2]|0;m=e+4|0;n=e+8|0;o=c[i>>2]|0;while(1){if((o|0)==(j|0))break;i=c[m>>2]|0;if((i|0)==(c[n>>2]|0))sB(e,o);else{rB(i,o);c[m>>2]=(c[m>>2]|0)+24;}o=o+24|0;}k=b+2|0;break a;break;}default:{o=h+-48|0;m=o>>>0<10;if(!m?(Pz(h)|0)==0:0){k=b;break a;}n=b+2|0;j=m?o:h+-55|0;while(1){if((n|0)==(d|0)){k=b;break a;}p=a[n>>0]|0;o=p<<24>>24;m=o+-48|0;i=m>>>0<10;if(!i?(Pz(o)|0)==0:0)break;n=n+1|0;j=(i?m:o+-55|0)+(j*36|0)|0;}if(p<<24>>24!=95){k=b;break a;}h=j+1|0;o=c[e+16>>2]|0;m=o;if(h>>>0>=(c[e+20>>2]|0)-o>>4>>>0){k=b;break a;}o=c[m+(h<<4)+4>>2]|0;i=e+4|0;q=e+8|0;r=c[m+(h<<4)>>2]|0;while(1){if((r|0)==(o|0))break;h=c[i>>2]|0;if((h|0)==(c[q>>2]|0))sB(e,r);else{rB(h,r);c[i>>2]=(c[i>>2]|0)+24;}r=r+24|0;}k=n+1|0;break a;}}}else k=b;}while(0);l=f;return k|0;}function OB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+64|0;g=f+40|0;h=f+12|0;i=f+24|0;j=f;a:do{if((d-b|0)>3?(a[b>>0]|0)==68:0){switch(a[b+1>>0]|0){case 84:case 116:break;default:{k=b;break a;}}m=b+2|0;n=SB(m,d,e)|0;if((!((n|0)==(m|0)|(n|0)==(d|0))?(a[n>>0]|0)==69:0)?(m=e+4|0,o=c[m>>2]|0,(c[e>>2]|0)!=(o|0)):0){FB(j,o+-24|0);pB(j,0,19991)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];o=0;while(1){if((o|0)==3)break;c[j+(o<<2)>>2]=0;o=o+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];o=0;while(1){if((o|0)==3)break;c[i+(o<<2)>>2]=0;o=o+1|0;}IB(g,h);JB((c[m>>2]|0)+-24|0,g);QA(g);iB(h);iB(i);iB(j);k=n+1|0;}else k=b;}else k=b;}while(0);l=f;return k|0;}function PB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=l;l=l+64|0;g=f+40|0;h=f+12|0;i=f;j=f+24|0;a:do{if(((d-b|0)>3?(a[b>>0]|0)==68:0)?(a[b+1>>0]|0)==118:0){k=b+2|0;m=a[k>>0]|0;if((m+-49&255)<9){n=QB(k,d)|0;if((n|0)==(d|0)){o=b;break;}if((a[n>>0]|0)!=95){o=b;break;}p=n-k|0;q=n+1|0;if((q|0)==(d|0)){o=b;break;}if((a[q>>0]|0)!=112){r=mB(q,d,e)|0;if((r|0)==(q|0)){o=b;break;}q=e+4|0;if((c[e>>2]|0)==(c[q>>2]|0)){o=b;break;};c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;RB(i,k,p);pB(i,0,18713)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];s=0;while(1){if((s|0)==3)break;c[i+(s<<2)>>2]=0;s=s+1|0;}qB(h,18722)|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];s=0;while(1){if((s|0)==3)break;c[h+(s<<2)>>2]=0;s=s+1|0;}s=a[g+11>>0]|0;t=s<<24>>24<0;TA((c[q>>2]|0)+-24|0,t?c[g>>2]|0:g,t?c[g+4>>2]|0:s&255)|0;iB(g);iB(h);iB(i);o=r;break;}s=n+2|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;RB(i,k,p);pB(i,0,18724)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];t=0;while(1){if((t|0)==3)break;c[i+(t<<2)>>2]=0;t=t+1|0;}qB(h,18722)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];t=0;while(1){if((t|0)==3)break;c[h+(t<<2)>>2]=0;t=t+1|0;}IB(g,j);t=e+4|0;p=c[t>>2]|0;if(p>>>0<(c[e+8>>2]|0)>>>0){KB(p,g);c[t>>2]=(c[t>>2]|0)+24;}else LB(e,g);QA(g);iB(j);iB(h);iB(i);o=s;break;};c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;t=0;while(1){if((t|0)==3)break;c[h+(t<<2)>>2]=0;t=t+1|0;}if(m<<24>>24!=95?(t=SB(k,d,e)|0,(t|0)!=(k|0)):0){s=e+4|0;p=c[s>>2]|0;if((c[e>>2]|0)!=(p|0)){FB(i,p+-24|0);p=h+11|0;if((a[p>>0]|0)<0){n=c[h>>2]|0;a[g>>0]=0;cB(n,g);c[h+4>>2]=0;}else{a[g>>0]=0;cB(h,g);a[p>>0]=0;}TB(h);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];p=0;while(1){if((p|0)==3)break;c[i+(p<<2)>>2]=0;p=p+1|0;}iB(i);p=c[s>>2]|0;m=0;while(1){if((m|0)==-1)break;n=m+-1|0;QA(p+(n*24|0)|0);m=n;}c[s>>2]=p+-24;u=t;v=44;}}else{u=k;v=44;}do{if((v|0)==44){if((((u|0)!=(d|0)?(a[u>>0]|0)==95:0)?(m=u+1|0,(m|0)!=(d|0)):0)?(n=mB(m,d,e)|0,(n|0)!=(m|0)):0){m=e+4|0;if((c[e>>2]|0)==(c[m>>2]|0))break;UB(i,18713,h);qB(i,18722)|0;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];c[g+8>>2]=c[i+8>>2];r=0;while(1){if((r|0)==3)break;c[i+(r<<2)>>2]=0;r=r+1|0;}r=a[g+11>>0]|0;q=r<<24>>24<0;TA((c[m>>2]|0)+-24|0,q?c[g>>2]|0:g,q?c[g+4>>2]|0:r&255)|0;iB(g);iB(i);w=n;}else w=b;iB(h);o=w;break a;}}while(0);iB(h);o=b;}else o=b;}while(0);l=f;return o|0;}function QB(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;a:do{if((b|0)!=(c|0)?(d=(a[b>>0]|0)==110?b+1|0:b,(d|0)!=(c|0)):0){e=a[d>>0]|0;if(e<<24>>24==48){f=d+1|0;break;}if((e+-49&255)<9){e=d;while(1){d=e+1|0;if((d|0)==(c|0)){f=c;break a;}if(((a[d>>0]|0)+-48|0)>>>0<10)e=d;else{f=d;break;}}}else f=b;}else f=b;}while(0);return f|0;}function RB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+16|0;g=f;if(e>>>0>4294967279)eB(b);if(e>>>0<11){a[b+11>>0]=e;h=b;}else{i=e+16&-16;j=fB(i)|0;c[b>>2]=j;c[b+8>>2]=i|-2147483648;c[b+4>>2]=e;h=j;}bB(h,d,e)|0;a[g>>0]=0;cB(h+e|0,g);l=f;return;}function SB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;f=l;l=l+208|0;g=f+176|0;h=f+112|0;i=f+88|0;j=f+64|0;k=f+48|0;m=f+160|0;n=f+36|0;o=f+148|0;p=f+136|0;q=f+124|0;r=f+24|0;s=f+12|0;t=f;u=d;v=u-b|0;a:do{if((v|0)>1){if((v|0)>3?(a[b>>0]|0)==103:0){w=(a[b+1>>0]|0)==115;x=w?b+2|0:b;y=w;}else{x=b;y=0;}do{switch(a[x>>0]|0){case 76:{z=WB(b,d,e)|0;break a;break;}case 84:{z=DB(b,d,e)|0;break a;break;}case 102:{z=XB(b,d,e)|0;break a;break;}case 97:{switch(a[x+1>>0]|0){case 97:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18677,AB(18677)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 100:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18695,AB(18695)|0);w=ZB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 110:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18695,AB(18695)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 78:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18738,AB(18738)|0);w=YB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 83:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18741,AB(18741)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 116:{z=_B(b,d,e)|0;break a;break;}case 122:{z=$B(b,d,e)|0;break a;break;}default:{z=b;break a;}}break;}case 99:{switch(a[x+1>>0]|0){case 99:{z=aC(b,d,e)|0;break a;break;}case 108:{z=bC(b,d,e)|0;break a;break;}case 109:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18743,AB(18743)|0);w=YB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 111:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18745,AB(18745)|0);A=ZB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 118:{z=cC(b,d,e)|0;break a;break;}default:{z=b;break a;}}break;}case 100:{switch(a[x+1>>0]|0){case 97:{A=x+2|0;w=SB(A,d,e)|0;if((w|0)==(A|0)){z=b;break a;}A=e+4|0;if((c[e>>2]|0)==(c[A>>2]|0)){z=b;break a;};c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;b:do{if(y)RB(j,18747,AB(18747)|0);else{B=0;while(1){if((B|0)==3)break b;c[j+(B<<2)>>2]=0;B=B+1|0;}}}while(0);qB(j,18750)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];B=0;while(1){if((B|0)==3)break;c[j+(B<<2)>>2]=0;B=B+1|0;}FB(k,(c[A>>2]|0)+-24|0);B=a[k+11>>0]|0;C=B<<24>>24<0;TA(i,C?c[k>>2]|0:k,C?c[k+4>>2]|0:B&255)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];B=0;while(1){if((B|0)==3)break;c[i+(B<<2)>>2]=0;B=B+1|0;}B=c[A>>2]|0;C=B+-24|0;D=C+11|0;if((a[D>>0]|0)<0){E=c[C>>2]|0;a[g>>0]=0;cB(E,g);c[B+-20>>2]=0;}else{a[g>>0]=0;cB(C,g);a[D>>0]=0;}TB(C);c[C>>2]=c[h>>2];c[C+4>>2]=c[h+4>>2];c[C+8>>2]=c[h+8>>2];C=0;while(1){if((C|0)==3)break;c[h+(C<<2)>>2]=0;C=C+1|0;}iB(h);iB(k);iB(i);iB(j);z=w;break a;break;}case 99:{z=dC(b,d,e)|0;break a;break;}case 101:{C=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18693,AB(18693)|0);A=ZB(C,d,g,e)|0;iB(g);z=(A|0)==(C|0)?b:A;break a;break;}case 108:{A=x+2|0;C=SB(A,d,e)|0;if((C|0)==(A|0)){z=b;break a;}A=e+4|0;if((c[e>>2]|0)==(c[A>>2]|0)){z=b;break a;};c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c:do{if(y)RB(j,18747,AB(18747)|0);else{D=0;while(1){if((D|0)==3)break c;c[j+(D<<2)>>2]=0;D=D+1|0;}}}while(0);qB(j,18760)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];w=0;while(1){if((w|0)==3)break;c[j+(w<<2)>>2]=0;w=w+1|0;}FB(k,(c[A>>2]|0)+-24|0);w=a[k+11>>0]|0;D=w<<24>>24<0;TA(i,D?c[k>>2]|0:k,D?c[k+4>>2]|0:w&255)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];w=0;while(1){if((w|0)==3)break;c[i+(w<<2)>>2]=0;w=w+1|0;}w=c[A>>2]|0;D=w+-24|0;B=D+11|0;if((a[B>>0]|0)<0){E=c[D>>2]|0;a[g>>0]=0;cB(E,g);c[w+-20>>2]=0;}else{a[g>>0]=0;cB(D,g);a[B>>0]=0;}TB(D);c[D>>2]=c[h>>2];c[D+4>>2]=c[h+4>>2];c[D+8>>2]=c[h+8>>2];D=0;while(1){if((D|0)==3)break;c[h+(D<<2)>>2]=0;D=D+1|0;}iB(h);iB(k);iB(i);iB(j);z=C;break a;break;}case 110:{z=eC(b,d,e)|0;break a;break;}case 115:{z=fC(b,d,e)|0;break a;break;}case 116:{z=gC(b,d,e)|0;break a;break;}case 118:{D=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18768,AB(18768)|0);A=YB(D,d,g,e)|0;iB(g);z=(A|0)==(D|0)?b:A;break a;break;}case 86:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18770,AB(18770)|0);D=YB(A,d,g,e)|0;iB(g);z=(D|0)==(A|0)?b:D;break a;break;}default:{z=b;break a;}}break;}case 101:{switch(a[x+1>>0]|0){case 111:{D=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18773,AB(18773)|0);A=YB(D,d,g,e)|0;iB(g);z=(A|0)==(D|0)?b:A;break a;break;}case 79:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18775,AB(18775)|0);D=YB(A,d,g,e)|0;iB(g);z=(D|0)==(A|0)?b:D;break a;break;}case 113:{D=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18778,AB(18778)|0);A=YB(D,d,g,e)|0;iB(g);z=(A|0)==(D|0)?b:A;break a;break;}default:{z=b;break a;}}break;}case 103:{switch(a[x+1>>0]|0){case 101:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18781,AB(18781)|0);D=YB(A,d,g,e)|0;iB(g);z=(D|0)==(A|0)?b:D;break a;break;}case 116:{D=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18711,AB(18711)|0);A=YB(D,d,g,e)|0;iB(g);z=(A|0)==(D|0)?b:A;break a;break;}default:{z=b;break a;}}break;}case 105:{if((a[x+1>>0]|0)!=120){z=b;break a;}A=b+2|0;D=SB(A,d,e)|0;if((D|0)==(A|0)){z=b;break a;}A=SB(D,d,e)|0;B=e+4|0;if((A|0)==(D|0)){D=c[B>>2]|0;w=0;while(1){if((w|0)==-1)break;E=w+-1|0;QA(D+(E*24|0)|0);w=E;}c[B>>2]=D+-24;z=b;break a;}w=c[B>>2]|0;if(((w-(c[e>>2]|0)|0)/24|0)>>>0<2){z=b;break a;}FB(g,w+-24|0);w=c[B>>2]|0;C=0;while(1){if((C|0)==-1)break;E=C+-1|0;QA(w+(E*24|0)|0);C=E;}c[B>>2]=w+-24;FB(h,w+-48|0);UB(n,18675,h);qB(n,18784)|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];C=0;while(1){if((C|0)==3)break;c[n+(C<<2)>>2]=0;C=C+1|0;}C=a[g+11>>0]|0;w=C<<24>>24<0;TA(k,w?c[g>>2]|0:g,w?c[g+4>>2]|0:C&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];C=0;while(1){if((C|0)==3)break;c[k+(C<<2)>>2]=0;C=C+1|0;}qB(j,18722)|0;c[m>>2]=c[j>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];C=0;while(1){if((C|0)==3)break;c[j+(C<<2)>>2]=0;C=C+1|0;}IB(i,m);JB((c[B>>2]|0)+-24|0,i);QA(i);iB(m);iB(j);iB(k);iB(n);iB(h);iB(g);z=A;break a;break;}case 108:{switch(a[x+1>>0]|0){case 101:{C=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18787,AB(18787)|0);w=YB(C,d,g,e)|0;iB(g);z=(w|0)==(C|0)?b:w;break a;break;}case 115:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18790,AB(18790)|0);C=YB(w,d,g,e)|0;iB(g);z=(C|0)==(w|0)?b:C;break a;break;}case 83:{C=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18793,AB(18793)|0);w=YB(C,d,g,e)|0;iB(g);z=(w|0)==(C|0)?b:w;break a;break;}case 116:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18709,AB(18709)|0);C=YB(w,d,g,e)|0;iB(g);z=(C|0)==(w|0)?b:C;break a;break;}default:{z=b;break a;}}break;}case 109:{switch(a[x+1>>0]|0){case 105:{C=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18797,AB(18797)|0);w=YB(C,d,g,e)|0;iB(g);z=(w|0)==(C|0)?b:w;break a;break;}case 73:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18799,AB(18799)|0);C=YB(w,d,g,e)|0;iB(g);z=(C|0)==(w|0)?b:C;break a;break;}case 108:{C=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18693,AB(18693)|0);w=YB(C,d,g,e)|0;iB(g);z=(w|0)==(C|0)?b:w;break a;break;}case 76:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18802,AB(18802)|0);C=YB(w,d,g,e)|0;iB(g);z=(C|0)==(w|0)?b:C;break a;break;}case 109:{C=b+2|0;if((C|0)!=(d|0)?(a[C>>0]|0)==95:0){w=b+3|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18805,AB(18805)|0);D=ZB(w,d,g,e)|0;iB(g);z=(D|0)==(w|0)?b:D;break a;}D=SB(C,d,e)|0;if((D|0)==(C|0)){z=b;break a;}C=e+4|0;w=c[C>>2]|0;if((c[e>>2]|0)==(w|0)){z=b;break a;}FB(i,w+-24|0);pB(i,0,18675)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];w=0;while(1){if((w|0)==3)break;c[i+(w<<2)>>2]=0;w=w+1|0;}qB(h,18808)|0;c[o>>2]=c[h>>2];c[o+4>>2]=c[h+4>>2];c[o+8>>2]=c[h+8>>2];w=0;while(1){if((w|0)==3)break;c[h+(w<<2)>>2]=0;w=w+1|0;}IB(g,o);JB((c[C>>2]|0)+-24|0,g);QA(g);iB(o);iB(h);iB(i);z=D;break a;break;}default:{z=b;break a;}}break;}case 110:{switch(a[x+1>>0]|0){case 119:case 97:{z=hC(b,d,e)|0;break a;break;}case 101:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18812,AB(18812)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 103:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18797,AB(18797)|0);w=ZB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 116:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18815,AB(18815)|0);A=ZB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 120:{A=b+2|0;w=iC(A,d,e)|0;z=(w|0)==(A|0)?b:w;break a;break;}default:{z=b;break a;}}break;}case 111:{switch(a[x+1>>0]|0){case 110:{z=eC(b,d,e)|0;break a;break;}case 111:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18817,AB(18817)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 114:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18820,AB(18820)|0);w=YB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 82:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18822,AB(18822)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}default:{z=b;break a;}}break;}case 112:{switch(a[x+1>>0]|0){case 109:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18825,AB(18825)|0);w=YB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 108:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18829,AB(18829)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 76:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18831,AB(18831)|0);w=YB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 112:{w=b+2|0;if((w|0)!=(d|0)?(a[w>>0]|0)==95:0){A=b+3|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18834,AB(18834)|0);B=ZB(A,d,g,e)|0;iB(g);z=(B|0)==(A|0)?b:B;break a;}B=SB(w,d,e)|0;if((B|0)==(w|0)){z=b;break a;}w=e+4|0;A=c[w>>2]|0;if((c[e>>2]|0)==(A|0)){z=b;break a;}FB(i,A+-24|0);pB(i,0,18675)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];A=0;while(1){if((A|0)==3)break;c[i+(A<<2)>>2]=0;A=A+1|0;}qB(h,18837)|0;c[p>>2]=c[h>>2];c[p+4>>2]=c[h+4>>2];c[p+8>>2]=c[h+8>>2];A=0;while(1){if((A|0)==3)break;c[h+(A<<2)>>2]=0;A=A+1|0;}IB(g,p);JB((c[w>>2]|0)+-24|0,g);QA(g);iB(p);iB(h);iB(i);z=B;break a;break;}case 115:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18829,AB(18829)|0);D=ZB(A,d,g,e)|0;iB(g);z=(D|0)==(A|0)?b:D;break a;break;}case 116:{z=jC(b,d,e)|0;break a;break;}default:{z=b;break a;}}break;}case 113:{if((a[x+1>>0]|0)!=117){z=b;break a;}D=b+2|0;A=SB(D,d,e)|0;if((A|0)==(D|0)){z=b;break a;}D=SB(A,d,e)|0;if((D|0)==(A|0)){A=e+4|0;C=c[A>>2]|0;E=0;while(1){if((E|0)==-1)break;F=E+-1|0;QA(C+(F*24|0)|0);E=F;}c[A>>2]=C+-24;z=b;break a;}E=SB(D,d,e)|0;B=e+4|0;if((E|0)==(D|0)){w=c[B>>2]|0;F=0;while(1){if((F|0)==-1)break;G=F+-1|0;QA(w+(G*24|0)|0);F=G;}F=w+-24|0;c[B>>2]=F;D=0;while(1){if((D|0)==-1)break;C=D+-1|0;QA(F+(C*24|0)|0);D=C;}c[B>>2]=w+-48;z=b;break a;}D=c[B>>2]|0;if(((D-(c[e>>2]|0)|0)/24|0)>>>0<3){z=b;break a;}FB(g,D+-24|0);D=c[B>>2]|0;F=0;while(1){if((F|0)==-1)break;C=F+-1|0;QA(D+(C*24|0)|0);F=C;}c[B>>2]=D+-24;FB(h,D+-48|0);F=c[B>>2]|0;w=0;while(1){if((w|0)==-1)break;C=w+-1|0;QA(F+(C*24|0)|0);w=C;}c[B>>2]=F+-24;FB(i,F+-48|0);UB(t,18675,i);qB(t,18841)|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];w=0;while(1){if((w|0)==3)break;c[t+(w<<2)>>2]=0;w=w+1|0;}w=a[h+11>>0]|0;F=w<<24>>24<0;TA(s,F?c[h>>2]|0:h,F?c[h+4>>2]|0:w&255)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];w=0;while(1){if((w|0)==3)break;c[s+(w<<2)>>2]=0;w=w+1|0;}qB(r,18847)|0;c[n>>2]=c[r>>2];c[n+4>>2]=c[r+4>>2];c[n+8>>2]=c[r+8>>2];w=0;while(1){if((w|0)==3)break;c[r+(w<<2)>>2]=0;w=w+1|0;}w=a[g+11>>0]|0;F=w<<24>>24<0;TA(n,F?c[g>>2]|0:g,F?c[g+4>>2]|0:w&255)|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];w=0;while(1){if((w|0)==3)break;c[n+(w<<2)>>2]=0;w=w+1|0;}qB(k,18673)|0;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];w=0;while(1){if((w|0)==3)break;c[k+(w<<2)>>2]=0;w=w+1|0;}IB(j,q);JB((c[B>>2]|0)+-24|0,j);QA(j);iB(q);iB(k);iB(n);iB(r);iB(s);iB(t);iB(i);iB(h);iB(g);z=E;break a;break;}case 114:{switch(a[x+1>>0]|0){case 99:{z=kC(b,d,e)|0;break a;break;}case 109:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18853,AB(18853)|0);F=YB(w,d,g,e)|0;iB(g);z=(F|0)==(w|0)?b:F;break a;break;}case 77:{F=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18855,AB(18855)|0);w=YB(F,d,g,e)|0;iB(g);z=(w|0)==(F|0)?b:w;break a;break;}case 115:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18858,AB(18858)|0);F=YB(w,d,g,e)|0;iB(g);z=(F|0)==(w|0)?b:F;break a;break;}case 83:{F=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18861,AB(18861)|0);w=YB(F,d,g,e)|0;iB(g);z=(w|0)==(F|0)?b:w;break a;break;}default:{z=b;break a;}}break;}case 115:{switch(a[x+1>>0]|0){case 99:{z=lC(b,d,e)|0;break a;break;}case 112:{z=mC(b,d,e)|0;break a;break;}case 114:{z=eC(b,d,e)|0;break a;break;}case 116:{z=nC(b,d,e)|0;break a;break;}case 122:{z=oC(b,d,e)|0;break a;break;}case 90:{if((u-x|0)<=2){z=b;break a;}switch(a[x+2>>0]|0){case 84:{z=pC(b,d,e)|0;break a;break;}case 102:{z=qC(b,d,e)|0;break a;break;}default:{z=b;break a;}}break;}default:{z=b;break a;}}break;}case 116:{switch(a[x+1>>0]|0){case 105:case 101:{z=rC(b,d,e)|0;break a;break;}case 114:{sC(g,18865);w=e+4|0;F=c[w>>2]|0;if(F>>>0<(c[e+8>>2]|0)>>>0){KB(F,g);c[w>>2]=(c[w>>2]|0)+24;}else LB(e,g);QA(g);z=b+2|0;break a;break;}case 119:{z=tC(b,d,e)|0;break a;break;}default:{z=b;break a;}}break;}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{z=eC(b,d,e)|0;break a;break;}default:{z=b;break a;}}}while(0);}else z=b;}while(0);l=f;return z|0;}function TB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=b+11|0;e=a[d>>0]|0;f=e<<24>>24<0;if(f){g=c[b+4>>2]|0;h=(c[b+8>>2]&2147483647)+-1|0;}else{g=e&255;h=10;}i=g>>>0<11;j=i?10:(g+16&-16)+-1|0;a:do{if((j|0)!=(h|0)){do{if(i){k=c[b>>2]|0;if(f){l=0;m=k;n=b;o=12;}else{bB(b,k,(e&255)+1|0)|0;gB(k);o=15;}}else{k=j+1|0;p=fB(k)|0;if(j>>>0<=h>>>0&(p|0)==0)break a;q=a[d>>0]|0;if(q<<24>>24<0){l=1;m=c[b>>2]|0;n=p;o=12;break;}else{bB(p,b,(q&255)+1|0)|0;r=p;s=k;t=b+4|0;o=14;break;}}}while(0);if((o|0)==12){k=b+4|0;bB(n,m,(c[k>>2]|0)+1|0)|0;gB(m);if(l){r=n;s=j+1|0;t=k;o=14;}else o=15;}if((o|0)==14){c[b+8>>2]=s|-2147483648;c[t>>2]=g;c[b>>2]=r;break;}else if((o|0)==15){a[d>>0]=g;break;}}}while(0);return;}function UB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;f=0;while(1){if((f|0)==3)break;c[b+(f<<2)>>2]=0;f=f+1|0;}f=AB(d)|0;g=e+11|0;h=a[g>>0]|0;i=h<<24>>24<0?c[e+4>>2]|0:h&255;VB(b,d,f,i+f|0);TA(b,(a[g>>0]|0)<0?c[e>>2]|0:e,i)|0;return;}function VB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g;if(f>>>0>4294967279)eB(b);if(f>>>0<11){a[b+11>>0]=e;i=b;}else{j=f+16&-16;f=fB(j)|0;c[b>>2]=f;c[b+8>>2]=j|-2147483648;c[b+4>>2]=e;i=f;}bB(i,d,e)|0;a[h>>0]=0;cB(i+e|0,h);l=g;return;}function WB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+96|0;g=f+64|0;h=f+48|0;i=f+36|0;j=f+24|0;k=f+12|0;m=f;a:do{if((d-b|0)>3?(a[b>>0]|0)==76:0){n=b+1|0;do{switch(a[n>>0]|0){case 84:{o=b;break a;break;}case 119:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19867,AB(19867)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 98:{if((a[b+3>>0]|0)!=69){o=b;break a;}switch(a[b+2>>0]|0){case 48:{sC(g,19875);q=e+4|0;p=c[q>>2]|0;if(p>>>0<(c[e+8>>2]|0)>>>0){KB(p,g);c[q>>2]=(c[q>>2]|0)+24;}else LB(e,g);QA(g);o=b+4|0;break a;break;}case 49:{cD(g,19881);q=e+4|0;p=c[q>>2]|0;if(p>>>0<(c[e+8>>2]|0)>>>0){KB(p,g);c[q>>2]=(c[q>>2]|0)+24;}else LB(e,g);QA(g);o=b+4|0;break a;break;}default:{o=b;break a;}}break;}case 99:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19886,AB(19886)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 97:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19891,AB(19891)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 104:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19903,AB(19903)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 115:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19917,AB(19917)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 116:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19923,AB(19923)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 105:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,22268,AB(22268)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 106:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19938,AB(19938)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 108:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19940,AB(19940)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 109:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19942,AB(19942)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 120:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19945,AB(19945)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 121:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19948,AB(19948)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 110:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19952,AB(19952)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 111:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19961,AB(19961)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 102:{p=b+2|0;q=dD(p,d,e)|0;o=(q|0)==(p|0)?b:q;break a;break;}case 100:{q=b+2|0;p=eD(q,d,e)|0;o=(p|0)==(q|0)?b:p;break a;break;}case 101:{p=b+2|0;q=fD(p,d,e)|0;o=(q|0)==(p|0)?b:q;break a;break;}case 95:{if((a[b+2>>0]|0)!=90){o=b;break a;}q=b+3|0;p=jB(q,d,e)|0;if((p|0)==(q|0)|(p|0)==(d|0)){o=b;break a;}o=(a[p>>0]|0)==69?p+1|0:b;break a;break;}default:{p=mB(n,d,e)|0;if((p|0)==(n|0)|(p|0)==(d|0)){o=b;break a;}if((a[p>>0]|0)==69){o=p+1|0;break a;}q=p;while(1){if((q|0)==(d|0)){o=b;break a;}r=a[q>>0]|0;if(((r<<24>>24)+-48|0)>>>0>=10)break;q=q+1|0;}if(!((q|0)!=(p|0)&r<<24>>24==69)){o=b;break a;}s=e+4|0;t=c[s>>2]|0;if((c[e>>2]|0)==(t|0)){o=b;break a;}FB(k,t+-24|0);pB(k,0,18675)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];t=0;while(1){if((t|0)==3)break;c[k+(t<<2)>>2]=0;t=t+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];t=0;while(1){if((t|0)==3)break;c[j+(t<<2)>>2]=0;t=t+1|0;}c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;QC(m,p,q);t=a[m+11>>0]|0;u=t<<24>>24<0;TA(i,u?c[m>>2]|0:m,u?c[m+4>>2]|0:t&255)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];t=0;while(1){if((t|0)==3)break;c[i+(t<<2)>>2]=0;t=t+1|0;}IB(g,h);JB((c[s>>2]|0)+-24|0,g);QA(g);iB(h);iB(m);iB(i);iB(j);iB(k);o=q+1|0;break a;}}}while(0);}else o=b;}while(0);l=f;return o|0;}function XB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+80|0;g=f+64|0;h=f+40|0;i=f+12|0;j=f+24|0;k=f;a:do{if((d-b|0)>2?(a[b>>0]|0)==102:0){switch(a[b+1>>0]|0){case 112:{m=nB(b+2|0,d,g)|0;n=QB(m,d)|0;if((n|0)!=(d|0)?(a[n>>0]|0)==95:0){c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;QC(j,m,n);pB(j,0,19864)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];m=0;while(1){if((m|0)==3)break;c[j+(m<<2)>>2]=0;m=m+1|0;}IB(h,i);m=e+4|0;o=c[m>>2]|0;if(o>>>0<(c[e+8>>2]|0)>>>0){KB(o,h);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,h);QA(h);iB(i);iB(j);p=n+1|0;}else p=b;q=p;break a;break;}case 76:break;default:{q=b;break a;}}m=QB(b+2|0,d)|0;if((((m|0)!=(d|0)?(a[m>>0]|0)==112:0)?(o=nB(m+1|0,d,g)|0,m=QB(o,d)|0,(m|0)!=(d|0)):0)?(a[m>>0]|0)==95:0){c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;QC(j,o,m);pB(j,0,19864)|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];o=0;while(1){if((o|0)==3)break;c[j+(o<<2)>>2]=0;o=o+1|0;}IB(h,k);o=e+4|0;n=c[o>>2]|0;if(n>>>0<(c[e+8>>2]|0)>>>0){KB(n,h);c[o>>2]=(c[o>>2]|0)+24;}else LB(e,h);QA(h);iB(k);iB(j);r=m+1|0;}else r=b;q=r;}else q=b;}while(0);l=f;return q|0;}function YB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;g=l;l=l+96|0;h=g+84|0;i=g+72|0;j=g+60|0;k=g+48|0;m=g+36|0;n=g+24|0;o=g+12|0;p=g;q=SB(b,d,f)|0;do{if((q|0)!=(b|0)){r=SB(q,d,f)|0;s=f+4|0;if((r|0)==(q|0)){t=c[s>>2]|0;u=0;while(1){if((u|0)==-1)break;v=u+-1|0;QA(t+(v*24|0)|0);u=v;}c[s>>2]=t+-24;w=b;break;}u=c[s>>2]|0;if(((u-(c[f>>2]|0)|0)/24|0)>>>0>=2){FB(i,u+-24|0);u=c[s>>2]|0;v=0;while(1){if((v|0)==-1)break;x=v+-1|0;QA(u+(x*24|0)|0);v=x;}c[s>>2]=u+-24;FB(j,u+-48|0);v=c[s>>2]|0;t=v+-24|0;x=t+11|0;if((a[x>>0]|0)<0){y=c[t>>2]|0;a[h>>0]=0;cB(y,h);c[v+-20>>2]=0;}else{a[h>>0]=0;cB(t,h);a[x>>0]=0;}x=AB(18711)|0;v=e+11|0;y=a[v>>0]|0;z=e+4|0;if((x|0)==((y<<24>>24<0?c[z>>2]|0:y&255)|0)?(BB(e,18711,x)|0)==0:0)NC(t,40);UB(p,18675,j);qB(p,18961)|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];x=0;while(1){if((x|0)==3)break;c[p+(x<<2)>>2]=0;x=x+1|0;}x=a[v>>0]|0;s=x<<24>>24<0;TA(o,s?c[e>>2]|0:e,s?c[z>>2]|0:x&255)|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];x=0;while(1){if((x|0)==3)break;c[o+(x<<2)>>2]=0;x=x+1|0;}qB(n,18670)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];x=0;while(1){if((x|0)==3)break;c[n+(x<<2)>>2]=0;x=x+1|0;}x=a[i+11>>0]|0;s=x<<24>>24<0;TA(m,s?c[i>>2]|0:i,s?c[i+4>>2]|0:x&255)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];x=0;while(1){if((x|0)==3)break;c[m+(x<<2)>>2]=0;x=x+1|0;}qB(k,18673)|0;c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];x=0;while(1){if((x|0)==3)break;c[k+(x<<2)>>2]=0;x=x+1|0;}x=a[h+11>>0]|0;s=x<<24>>24<0;TA(t,s?c[h>>2]|0:h,s?c[h+4>>2]|0:x&255)|0;iB(h);iB(k);iB(m);iB(n);iB(o);iB(p);x=AB(18711)|0;s=a[v>>0]|0;if((x|0)==((s<<24>>24<0?c[z>>2]|0:s&255)|0)?(BB(e,18711,x)|0)==0:0)NC(t,41);iB(j);iB(i);w=r;}else w=b;}else w=b;}while(0);l=g;return w|0;}function ZB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+64|0;h=g+48|0;i=g+36|0;j=g+24|0;k=g+12|0;m=g;n=SB(b,d,f)|0;if((n|0)!=(b|0)?(d=f+4|0,(c[f>>2]|0)!=(c[d>>2]|0)):0){HB(k,e,18675);FB(m,(c[d>>2]|0)+-24|0);e=a[m+11>>0]|0;f=e<<24>>24<0;TA(k,f?c[m>>2]|0:m,f?c[m+4>>2]|0:e&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];e=0;while(1){if((e|0)==3)break;c[k+(e<<2)>>2]=0;e=e+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];e=0;while(1){if((e|0)==3)break;c[j+(e<<2)>>2]=0;e=e+1|0;}e=c[d>>2]|0;d=e+-24|0;f=d+11|0;if((a[f>>0]|0)<0){o=c[d>>2]|0;a[h>>0]=0;cB(o,h);c[e+-20>>2]=0;}else{a[h>>0]=0;cB(d,h);a[f>>0]=0;}TB(d);c[d>>2]=c[i>>2];c[d+4>>2]=c[i+4>>2];c[d+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}iB(i);iB(j);iB(m);iB(k);p=n;}else p=b;l=g;return p|0;}function _B(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+48|0;g=f+36|0;h=f+24|0;i=f+12|0;j=f;if(((((d-b|0)>2?(a[b>>0]|0)==97:0)?(a[b+1>>0]|0)==116:0)?(k=b+2|0,m=mB(k,d,e)|0,(m|0)!=(k|0)):0)?(k=e+4|0,d=c[k>>2]|0,(c[e>>2]|0)!=(d|0)):0){FB(j,d+-24|0);pB(j,0,19854)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}d=c[k>>2]|0;k=d+-24|0;e=k+11|0;if((a[e>>0]|0)<0){n=c[k>>2]|0;a[g>>0]=0;cB(n,g);c[d+-20>>2]=0;}else{a[g>>0]=0;cB(k,g);a[e>>0]=0;}TB(k);c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];k=0;while(1){if((k|0)==3)break;c[h+(k<<2)>>2]=0;k=k+1|0;}iB(h);iB(i);iB(j);o=m;}else o=b;l=f;return o|0;}function $B(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+48|0;g=f+36|0;h=f+24|0;i=f+12|0;j=f;if(((((d-b|0)>2?(a[b>>0]|0)==97:0)?(a[b+1>>0]|0)==122:0)?(k=b+2|0,m=SB(k,d,e)|0,(m|0)!=(k|0)):0)?(k=e+4|0,d=c[k>>2]|0,(c[e>>2]|0)!=(d|0)):0){FB(j,d+-24|0);pB(j,0,19854)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}d=c[k>>2]|0;k=d+-24|0;e=k+11|0;if((a[e>>0]|0)<0){n=c[k>>2]|0;a[g>>0]=0;cB(n,g);c[d+-20>>2]=0;}else{a[g>>0]=0;cB(k,g);a[e>>0]=0;}TB(k);c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];k=0;while(1){if((k|0)==3)break;c[h+(k<<2)>>2]=0;k=k+1|0;}iB(h);iB(i);iB(j);o=m;}else o=b;l=f;return o|0;}function aC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+112|0;g=f+88|0;h=f+64|0;i=f+36|0;j=f+48|0;k=f+24|0;m=f+12|0;n=f;if((((((d-b|0)>2?(a[b>>0]|0)==99:0)?(a[b+1>>0]|0)==99:0)?(o=b+2|0,p=mB(o,d,e)|0,(p|0)!=(o|0)):0)?(o=SB(p,d,e)|0,(o|0)!=(p|0)):0)?(p=e+4|0,d=c[p>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[p>>2]|0;e=0;while(1){if((e|0)==-1)break;q=e+-1|0;QA(d+(q*24|0)|0);e=q;}c[p>>2]=d+-24;FB(n,d+-48|0);pB(n,0,19842)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];d=0;while(1){if((d|0)==3)break;c[n+(d<<2)>>2]=0;d=d+1|0;}qB(m,18922)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];d=0;while(1){if((d|0)==3)break;c[m+(d<<2)>>2]=0;d=d+1|0;}d=a[g+11>>0]|0;e=d<<24>>24<0;TA(k,e?c[g>>2]|0:g,e?c[g+4>>2]|0:d&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];d=0;while(1){if((d|0)==3)break;c[k+(d<<2)>>2]=0;d=d+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}IB(h,i);JB((c[p>>2]|0)+-24|0,h);QA(h);iB(i);iB(j);iB(k);iB(m);iB(n);iB(g);r=o;}else r=b;l=f;return r|0;}function bC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;f=l;l=l+32|0;g=f+12|0;h=f;a:do{if(((((d-b|0)>3?(a[b>>0]|0)==99:0)?(a[b+1>>0]|0)==108:0)?(i=b+2|0,j=SB(i,d,e)|0,!((j|0)==(i|0)|(j|0)==(d|0))):0)?(i=e+4|0,k=c[i>>2]|0,(c[e>>2]|0)!=(k|0)):0){m=k+-12|0;n=a[m+11>>0]|0;o=n<<24>>24<0;TA(k+-24|0,o?c[m>>2]|0:m,o?c[k+-8>>2]|0:n&255)|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[h+(n<<2)>>2]=0;n=n+1|0;}n=c[i>>2]|0;k=n+-12|0;o=k+11|0;if((a[o>>0]|0)<0){m=c[k>>2]|0;a[g>>0]=0;cB(m,g);c[n+-8>>2]=0;}else{a[g>>0]=0;cB(k,g);a[o>>0]=0;}TB(k);c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];k=0;while(1){if((k|0)==3)break;c[h+(k<<2)>>2]=0;k=k+1|0;}iB(h);qB((c[i>>2]|0)+-24|0,18675)|0;k=g+11|0;o=g+4|0;n=0;m=j;while(1){if((a[m>>0]|0)==69)break;p=SB(m,d,e)|0;if((p|0)==(m|0)|(p|0)==(d|0)){q=b;break a;}r=c[i>>2]|0;if((c[e>>2]|0)==(r|0)){q=b;break a;}FB(g,r+-24|0);r=c[i>>2]|0;s=0;while(1){if((s|0)==-1)break;t=s+-1|0;QA(r+(t*24|0)|0);s=t;}s=r+-24|0;c[i>>2]=s;t=a[k>>0]|0;u=t<<24>>24<0;v=u?c[o>>2]|0:t&255;if(v){if((c[e>>2]|0)==(s|0)){w=0;x=b;y=m;}else{TA(r+-48|0,u?c[g>>2]|0:g,v)|0;w=1;x=n;y=p;}}else{w=1;x=n;y=p;}iB(g);if(w){n=x;m=y;}else{q=x;break a;}}n=c[i>>2]|0;if((c[e>>2]|0)!=(n|0)){qB(n+-24|0,18673)|0;q=m+1|0;}else q=b;}else q=b;}while(0);l=f;return q|0;}function cC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;f=l;l=l+112|0;g=f+88|0;h=f+64|0;i=f+36|0;j=f+48|0;k=f+24|0;m=f+12|0;n=f;a:do{if((((d-b|0)>2?(a[b>>0]|0)==99:0)?(a[b+1>>0]|0)==118:0)?(o=e+63|0,p=a[o>>0]|0,a[o>>0]=0,q=b+2|0,r=mB(q,d,e)|0,a[o>>0]=p,!((r|0)==(q|0)|(r|0)==(d|0))):0){if((a[r>>0]|0)!=95){q=SB(r,d,e)|0;if((q|0)==(r|0)){s=b;break;}else t=q;}else{q=r+1|0;if((q|0)==(d|0)){s=b;break;}r=a[q>>0]|0;b:do{if(r<<24>>24==69){p=e+4|0;o=c[p>>2]|0;if(o>>>0<(c[e+8>>2]|0)>>>0){c[o>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[o+16>>2]=0;c[o+20>>2]=0;VC(o);c[p>>2]=(c[p>>2]|0)+24;u=q;break;}else{WC(e);u=q;break;}}else{p=q;o=r;while(1){if(o<<24>>24==69){u=p;break b;}v=SB(p,d,e)|0;if((v|0)==(p|0)|(v|0)==(d|0)){s=b;break a;}p=v;o=a[v>>0]|0;}}}while(0);t=u+1|0;}r=e+4|0;q=c[r>>2]|0;if(((q-(c[e>>2]|0)|0)/24|0)>>>0>=2){FB(g,q+-24|0);q=c[r>>2]|0;o=0;while(1){if((o|0)==-1)break;p=o+-1|0;QA(q+(p*24|0)|0);o=p;}c[r>>2]=q+-24;FB(n,q+-48|0);pB(n,0,18675)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];o=0;while(1){if((o|0)==3)break;c[n+(o<<2)>>2]=0;o=o+1|0;}qB(m,19839)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];o=0;while(1){if((o|0)==3)break;c[m+(o<<2)>>2]=0;o=o+1|0;}o=a[g+11>>0]|0;q=o<<24>>24<0;TA(k,q?c[g>>2]|0:g,q?c[g+4>>2]|0:o&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];o=0;while(1){if((o|0)==3)break;c[k+(o<<2)>>2]=0;o=o+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];o=0;while(1){if((o|0)==3)break;c[j+(o<<2)>>2]=0;o=o+1|0;}IB(h,i);JB((c[r>>2]|0)+-24|0,h);QA(h);iB(i);iB(j);iB(k);iB(m);iB(n);iB(g);s=t;}else s=b;}else s=b;}while(0);l=f;return s|0;}function dC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+112|0;g=f+88|0;h=f+64|0;i=f+36|0;j=f+48|0;k=f+24|0;m=f+12|0;n=f;if((((((d-b|0)>2?(a[b>>0]|0)==100:0)?(a[b+1>>0]|0)==99:0)?(o=b+2|0,p=mB(o,d,e)|0,(p|0)!=(o|0)):0)?(o=SB(p,d,e)|0,(o|0)!=(p|0)):0)?(p=e+4|0,d=c[p>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[p>>2]|0;e=0;while(1){if((e|0)==-1)break;q=e+-1|0;QA(d+(q*24|0)|0);e=q;}c[p>>2]=d+-24;FB(n,d+-48|0);pB(n,0,19825)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];d=0;while(1){if((d|0)==3)break;c[n+(d<<2)>>2]=0;d=d+1|0;}qB(m,18922)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];d=0;while(1){if((d|0)==3)break;c[m+(d<<2)>>2]=0;d=d+1|0;}d=a[g+11>>0]|0;e=d<<24>>24<0;TA(k,e?c[g>>2]|0:g,e?c[g+4>>2]|0:d&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];d=0;while(1){if((d|0)==3)break;c[k+(d<<2)>>2]=0;d=d+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}IB(h,i);JB((c[p>>2]|0)+-24|0,h);QA(h);iB(i);iB(j);iB(k);iB(m);iB(n);iB(g);r=o;}else r=b;l=f;return r|0;}function eC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;f=l;l=l+32|0;g=f+12|0;h=f;i=d;a:do{if((i-b|0)>2){if((a[b>>0]|0)==103){j=(a[b+1>>0]|0)==115;k=j;m=j?b+2|0:b;}else{k=0;m=b;}j=xC(m,d,e)|0;if((j|0)!=(m|0)){if(!k){n=j;break;}o=c[e+4>>2]|0;if((c[e>>2]|0)==(o|0)){n=b;break;}pB(o+-24|0,0,18747)|0;n=j;break;}if(((i-m|0)>2?(a[m>>0]|0)==115:0)?(a[m+1>>0]|0)==114:0){j=m+2|0;if((a[j>>0]|0)==78){o=m+3|0;p=yC(o,d,e)|0;if((p|0)==(o|0)|(p|0)==(d|0)){n=b;break;}o=EB(p,d,e)|0;q=e+4|0;do{if((o|0)==(p|0)){r=p;s=e;}else{t=c[q>>2]|0;if(((t-(c[e>>2]|0)|0)/24|0)>>>0<2){n=b;break a;}FB(g,t+-24|0);t=c[q>>2]|0;u=0;while(1){if((u|0)==-1)break;v=u+-1|0;QA(t+(v*24|0)|0);u=v;}c[q>>2]=t+-24;u=a[g+11>>0]|0;v=u<<24>>24<0;TA(t+-48|0,v?c[g>>2]|0:g,v?c[g+4>>2]|0:u&255)|0;if((o|0)!=(d|0)){iB(g);r=o;s=e;break;}u=c[q>>2]|0;v=0;while(1){if((v|0)==-1)break;w=v+-1|0;QA(u+(w*24|0)|0);v=w;}c[q>>2]=u+-24;iB(g);n=b;break a;}}while(0);o=h+11|0;p=h+4|0;v=r;while(1){if((a[v>>0]|0)==69)break;t=zC(v,d,e)|0;if((t|0)==(v|0)|(t|0)==(d|0)){n=b;break a;}w=c[q>>2]|0;if(((w-(c[s>>2]|0)|0)/24|0)>>>0<2){n=b;break a;}FB(g,w+-24|0);w=c[q>>2]|0;x=0;while(1){if((x|0)==-1)break;y=x+-1|0;QA(w+(y*24|0)|0);x=y;}c[q>>2]=w+-24;pB(g,0,18747)|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];x=0;while(1){if((x|0)==3)break;c[g+(x<<2)>>2]=0;x=x+1|0;}x=a[o>>0]|0;w=x<<24>>24<0;TA((c[q>>2]|0)+-24|0,w?c[h>>2]|0:h,w?c[p>>2]|0:x&255)|0;iB(h);iB(g);v=t;}p=v+1|0;o=xC(p,d,e)|0;if((o|0)==(p|0)){p=c[q>>2]|0;if((c[e>>2]|0)==(p|0)){n=b;break;}x=0;while(1){if((x|0)==-1)break;w=x+-1|0;QA(p+(w*24|0)|0);x=w;}c[q>>2]=p+-24;n=b;break;}x=c[q>>2]|0;if(((x-(c[s>>2]|0)|0)/24|0)>>>0<2){n=b;break;}FB(g,x+-24|0);x=c[q>>2]|0;v=0;while(1){if((v|0)==-1)break;w=v+-1|0;QA(x+(w*24|0)|0);v=w;}c[q>>2]=x+-24;pB(g,0,18747)|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];v=0;while(1){if((v|0)==3)break;c[g+(v<<2)>>2]=0;v=v+1|0;}v=a[h+11>>0]|0;x=v<<24>>24<0;TA((c[q>>2]|0)+-24|0,x?c[h>>2]|0:h,x?c[h+4>>2]|0:v&255)|0;iB(h);iB(g);n=o;break;}v=yC(j,d,e)|0;if((v|0)!=(j|0)){x=EB(v,d,e)|0;if((x|0)==(v|0))z=v;else{v=e+4|0;p=c[v>>2]|0;if(((p-(c[e>>2]|0)|0)/24|0)>>>0<2){n=b;break;}FB(g,p+-24|0);p=c[v>>2]|0;w=0;while(1){if((w|0)==-1)break;u=w+-1|0;QA(p+(u*24|0)|0);w=u;}c[v>>2]=p+-24;w=a[g+11>>0]|0;o=w<<24>>24<0;TA(p+-48|0,o?c[g>>2]|0:g,o?c[g+4>>2]|0:w&255)|0;iB(g);z=x;}w=xC(z,d,e)|0;if((w|0)==(z|0)){o=e+4|0;q=c[o>>2]|0;if((c[e>>2]|0)==(q|0)){n=b;break;}u=0;while(1){if((u|0)==-1)break;y=u+-1|0;QA(q+(y*24|0)|0);u=y;}c[o>>2]=q+-24;n=b;break;}u=e+4|0;x=c[u>>2]|0;if(((x-(c[e>>2]|0)|0)/24|0)>>>0<2){n=b;break;}FB(g,x+-24|0);x=c[u>>2]|0;p=0;while(1){if((p|0)==-1)break;v=p+-1|0;QA(x+(v*24|0)|0);p=v;}c[u>>2]=x+-24;pB(g,0,18747)|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];p=0;while(1){if((p|0)==3)break;c[g+(p<<2)>>2]=0;p=p+1|0;}p=a[h+11>>0]|0;x=p<<24>>24<0;TA((c[u>>2]|0)+-24|0,x?c[h>>2]|0:h,x?c[h+4>>2]|0:p&255)|0;iB(h);iB(g);n=w;break;}p=zC(j,d,e)|0;if(!((p|0)==(j|0)|(p|0)==(d|0))){if(k){x=e+4|0;q=c[x>>2]|0;if((c[e>>2]|0)==(q|0)){n=b;break;}pB(q+-24|0,0,18747)|0;A=x;}else A=e+4|0;x=h+11|0;q=h+4|0;o=p;while(1){if((a[o>>0]|0)==69)break;p=zC(o,d,e)|0;if((p|0)==(o|0)|(p|0)==(d|0)){n=b;break a;}v=c[A>>2]|0;if(((v-(c[e>>2]|0)|0)/24|0)>>>0<2){n=b;break a;}FB(g,v+-24|0);v=c[A>>2]|0;y=0;while(1){if((y|0)==-1)break;B=y+-1|0;QA(v+(B*24|0)|0);y=B;}c[A>>2]=v+-24;pB(g,0,18747)|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];y=0;while(1){if((y|0)==3)break;c[g+(y<<2)>>2]=0;y=y+1|0;}y=a[x>>0]|0;v=y<<24>>24<0;TA((c[A>>2]|0)+-24|0,v?c[h>>2]|0:h,v?c[q>>2]|0:y&255)|0;iB(h);iB(g);o=p;}q=o+1|0;x=xC(q,d,e)|0;if((x|0)==(q|0)){q=c[A>>2]|0;if((c[e>>2]|0)==(q|0)){n=b;break;}j=0;while(1){if((j|0)==-1)break;w=j+-1|0;QA(q+(w*24|0)|0);j=w;}c[A>>2]=q+-24;n=b;break;}j=c[A>>2]|0;if(((j-(c[e>>2]|0)|0)/24|0)>>>0>=2){FB(g,j+-24|0);j=c[A>>2]|0;o=0;while(1){if((o|0)==-1)break;w=o+-1|0;QA(j+(w*24|0)|0);o=w;}c[A>>2]=j+-24;pB(g,0,18747)|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];o=0;while(1){if((o|0)==3)break;c[g+(o<<2)>>2]=0;o=o+1|0;}o=a[h+11>>0]|0;j=o<<24>>24<0;TA((c[A>>2]|0)+-24|0,j?c[h>>2]|0:h,j?c[h+4>>2]|0:o&255)|0;iB(h);iB(g);n=x;}else n=b;}else n=b;}else n=b;}else n=b;}while(0);l=f;return n|0;}function fC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+12|0;h=f;if((((((d-b|0)>2?(a[b>>0]|0)==100:0)?(a[b+1>>0]|0)==115:0)?(i=b+2|0,j=SB(i,d,e)|0,(j|0)!=(i|0)):0)?(i=SB(j,d,e)|0,(i|0)!=(j|0)):0)?(j=e+4|0,d=c[j>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[j>>2]|0;e=0;while(1){if((e|0)==-1)break;k=e+-1|0;QA(d+(k*24|0)|0);e=k;}c[j>>2]=d+-24;UB(h,18966,g);d=a[h+11>>0]|0;e=d<<24>>24<0;TA((c[j>>2]|0)+-24|0,e?c[h>>2]|0:h,e?c[h+4>>2]|0:d&255)|0;iB(h);iB(g);m=i;}else m=b;l=f;return m|0;}function gC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+12|0;h=f;if((((((d-b|0)>2?(a[b>>0]|0)==100:0)?(a[b+1>>0]|0)==116:0)?(i=b+2|0,j=SB(i,d,e)|0,(j|0)!=(i|0)):0)?(i=eC(j,d,e)|0,(i|0)!=(j|0)):0)?(j=e+4|0,d=c[j>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[j>>2]|0;e=0;while(1){if((e|0)==-1)break;k=e+-1|0;QA(d+(k*24|0)|0);e=k;}c[j>>2]=d+-24;UB(h,18964,g);d=a[h+11>>0]|0;e=d<<24>>24<0;TA((c[j>>2]|0)+-24|0,e?c[h>>2]|0:h,e?c[h+4>>2]|0:d&255)|0;iB(h);iB(g);m=i;}else m=b;l=f;return m|0;}function hC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;f=l;l=l+112|0;g=f+88|0;h=f+76|0;i=f+64|0;j=f+40|0;k=f+16|0;m=f;n=f+52|0;o=d;a:do{if((o-b|0)>3){p=a[b>>0]|0;if(p<<24>>24==103){q=(a[b+1>>0]|0)==115;r=q?b+2|0:b;s=q;t=r;u=a[r>>0]|0;}else{s=0;t=b;u=p;}if(u<<24>>24==110){p=a[t+1>>0]|0;switch(p<<24>>24){case 97:case 119:break;default:{v=b;break a;}}r=p<<24>>24==97;p=t+2|0;b:do{if((p|0)!=(d|0)){q=0;w=p;while(1){if((a[w>>0]|0)==95)break;x=SB(w,d,e)|0;if((x|0)==(w|0)|(x|0)==(d|0))break b;else{q=1;w=x;}}x=w+1|0;y=mB(x,d,e)|0;if(!((y|0)==(x|0)|(y|0)==(d|0))){x=a[y>>0]|0;c:do{if(!((o-y|0)>2&x<<24>>24==112)){if(x<<24>>24==69){z=0;A=y;}else break b;}else{if((a[y+1>>0]|0)!=105)break b;B=y+2|0;while(1){if((a[B>>0]|0)==69){z=1;A=B;break c;}C=B;B=SB(B,d,e)|0;if((B|0)==(C|0)|(B|0)==(d|0))break b;}}}while(0);c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;y=0;while(1){if((y|0)==3)break;c[h+(y<<2)>>2]=0;y=y+1|0;}if(z){y=e+4|0;x=c[y>>2]|0;if((c[e>>2]|0)==(x|0)){D=b;E=1;}else{FB(i,x+-24|0);x=h+11|0;if((a[x>>0]|0)<0){w=c[h>>2]|0;a[g>>0]=0;cB(w,g);c[h+4>>2]=0;}else{a[g>>0]=0;cB(h,g);a[x>>0]=0;}TB(h);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];x=0;while(1){if((x|0)==3)break;c[i+(x<<2)>>2]=0;x=x+1|0;}iB(i);x=c[y>>2]|0;w=0;while(1){if((w|0)==-1)break;B=w+-1|0;QA(x+(B*24|0)|0);w=B;}w=x+-24|0;c[y>>2]=w;F=y;G=e;H=w;I=33;}}else{w=e+4|0;F=w;G=e;H=c[w>>2]|0;I=33;}if((I|0)==33)if((c[G>>2]|0)==(H|0)){D=b;E=1;}else{FB(i,H+-24|0);w=c[F>>2]|0;B=0;while(1){if((B|0)==-1)break;C=B+-1|0;QA(w+(C*24|0)|0);B=C;}B=w+-24|0;c[F>>2]=B;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;y=0;while(1){if((y|0)==3)break;c[j+(y<<2)>>2]=0;y=y+1|0;}if(q){if((c[G>>2]|0)==(B|0)){J=b;K=1;}else{FB(k,w+-48|0);y=j+11|0;if((a[y>>0]|0)<0){x=c[j>>2]|0;a[g>>0]=0;cB(x,g);c[j+4>>2]=0;}else{a[g>>0]=0;cB(j,g);a[y>>0]=0;}TB(j);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];y=0;while(1){if((y|0)==3)break;c[k+(y<<2)>>2]=0;y=y+1|0;}iB(k);y=c[F>>2]|0;w=0;while(1){if((w|0)==-1)break;B=w+-1|0;QA(y+(B*24|0)|0);w=B;}c[F>>2]=y+-24;I=52;}}else I=52;if((I|0)==52){c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;w=0;while(1){if((w|0)==3)break;c[g+(w<<2)>>2]=0;w=w+1|0;}if(s)uC(g,18747);if(r)qB(g,18957)|0;else qB(g,18707)|0;if(q){UB(m,18675,j);qB(m,18961)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];w=0;while(1){if((w|0)==3)break;c[m+(w<<2)>>2]=0;w=w+1|0;}w=a[k+11>>0]|0;q=w<<24>>24<0;TA(g,q?c[k>>2]|0:k,q?c[k+4>>2]|0:w&255)|0;iB(k);iB(m);}w=a[i+11>>0]|0;q=w<<24>>24<0;TA(g,q?c[i>>2]|0:i,q?c[i+4>>2]|0:w&255)|0;if(z){UB(m,18670,h);qB(m,18673)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];w=0;while(1){if((w|0)==3)break;c[m+(w<<2)>>2]=0;w=w+1|0;}w=a[k+11>>0]|0;q=w<<24>>24<0;TA(g,q?c[k>>2]|0:k,q?c[k+4>>2]|0:w&255)|0;iB(k);iB(m);};c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];w=0;while(1){if((w|0)==3)break;c[g+(w<<2)>>2]=0;w=w+1|0;}IB(k,n);w=c[F>>2]|0;if(w>>>0<(c[e+8>>2]|0)>>>0){KB(w,k);c[F>>2]=(c[F>>2]|0)+24;}else LB(e,k);QA(k);iB(n);iB(g);J=A+1|0;K=0;}iB(j);iB(i);D=J;E=K;}iB(h);if(!E){v=D;break a;}}}}while(0);v=b;}else v=b;}else v=b;}while(0);l=f;return v|0;}function iC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+48|0;g=f+36|0;h=f+24|0;i=f+12|0;j=f;k=SB(b,d,e)|0;if((k|0)!=(b|0)?(d=e+4|0,m=c[d>>2]|0,(c[e>>2]|0)!=(m|0)):0){FB(j,m+-24|0);pB(j,0,18946)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];m=0;while(1){if((m|0)==3)break;c[j+(m<<2)>>2]=0;m=m+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];m=0;while(1){if((m|0)==3)break;c[i+(m<<2)>>2]=0;m=m+1|0;}m=c[d>>2]|0;d=m+-24|0;e=d+11|0;if((a[e>>0]|0)<0){n=c[d>>2]|0;a[g>>0]=0;cB(n,g);c[m+-20>>2]=0;}else{a[g>>0]=0;cB(d,g);a[e>>0]=0;}TB(d);c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];d=0;while(1){if((d|0)==3)break;c[h+(d<<2)>>2]=0;d=d+1|0;}iB(h);iB(i);iB(j);o=k;}else o=b;l=f;return o|0;}function jC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+16|0;g=f;if((((((d-b|0)>2?(a[b>>0]|0)==112:0)?(a[b+1>>0]|0)==116:0)?(h=b+2|0,i=SB(h,d,e)|0,(i|0)!=(h|0)):0)?(h=SB(i,d,e)|0,(h|0)!=(i|0)):0)?(i=e+4|0,d=c[i>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[i>>2]|0;e=0;while(1){if((e|0)==-1)break;j=e+-1|0;QA(d+(j*24|0)|0);e=j;}c[i>>2]=d+-24;qB(d+-48|0,18943)|0;d=a[g+11>>0]|0;e=d<<24>>24<0;TA((c[i>>2]|0)+-24|0,e?c[g>>2]|0:g,e?c[g+4>>2]|0:d&255)|0;iB(g);k=h;}else k=b;l=f;return k|0;}function kC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+112|0;g=f+88|0;h=f+64|0;i=f+36|0;j=f+48|0;k=f+24|0;m=f+12|0;n=f;if((((((d-b|0)>2?(a[b>>0]|0)==114:0)?(a[b+1>>0]|0)==99:0)?(o=b+2|0,p=mB(o,d,e)|0,(p|0)!=(o|0)):0)?(o=SB(p,d,e)|0,(o|0)!=(p|0)):0)?(p=e+4|0,d=c[p>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[p>>2]|0;e=0;while(1){if((e|0)==-1)break;q=e+-1|0;QA(d+(q*24|0)|0);e=q;}c[p>>2]=d+-24;FB(n,d+-48|0);pB(n,0,18925)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];d=0;while(1){if((d|0)==3)break;c[n+(d<<2)>>2]=0;d=d+1|0;}qB(m,18922)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];d=0;while(1){if((d|0)==3)break;c[m+(d<<2)>>2]=0;d=d+1|0;}d=a[g+11>>0]|0;e=d<<24>>24<0;TA(k,e?c[g>>2]|0:g,e?c[g+4>>2]|0:d&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];d=0;while(1){if((d|0)==3)break;c[k+(d<<2)>>2]=0;d=d+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}IB(h,i);JB((c[p>>2]|0)+-24|0,h);QA(h);iB(i);iB(j);iB(k);iB(m);iB(n);iB(g);r=o;}else r=b;l=f;return r|0;}function lC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+112|0;g=f+88|0;h=f+64|0;i=f+36|0;j=f+48|0;k=f+24|0;m=f+12|0;n=f;if((((((d-b|0)>2?(a[b>>0]|0)==115:0)?(a[b+1>>0]|0)==99:0)?(o=b+2|0,p=mB(o,d,e)|0,(p|0)!=(o|0)):0)?(o=SB(p,d,e)|0,(o|0)!=(p|0)):0)?(p=e+4|0,d=c[p>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[p>>2]|0;e=0;while(1){if((e|0)==-1)break;q=e+-1|0;QA(d+(q*24|0)|0);e=q;}c[p>>2]=d+-24;FB(n,d+-48|0);pB(n,0,18909)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];d=0;while(1){if((d|0)==3)break;c[n+(d<<2)>>2]=0;d=d+1|0;}qB(m,18922)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];d=0;while(1){if((d|0)==3)break;c[m+(d<<2)>>2]=0;d=d+1|0;}d=a[g+11>>0]|0;e=d<<24>>24<0;TA(k,e?c[g>>2]|0:g,e?c[g+4>>2]|0:d&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];d=0;while(1){if((d|0)==3)break;c[k+(d<<2)>>2]=0;d=d+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}IB(h,i);JB((c[p>>2]|0)+-24|0,h);QA(h);iB(i);iB(j);iB(k);iB(m);iB(n);iB(g);r=o;}else r=b;l=f;return r|0;}function mC(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(((c-b|0)>2?(a[b>>0]|0)==115:0)?(a[b+1>>0]|0)==112:0){e=b+2|0;f=SB(e,c,d)|0;g=(f|0)==(e|0)?b:f;}else g=b;return g|0;}function nC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+64|0;g=f+40|0;h=f+12|0;i=f+24|0;j=f;if(((((d-b|0)>2?(a[b>>0]|0)==115:0)?(a[b+1>>0]|0)==116:0)?(k=b+2|0,m=mB(k,d,e)|0,(m|0)!=(k|0)):0)?(k=e+4|0,d=c[k>>2]|0,(c[e>>2]|0)!=(d|0)):0){FB(j,d+-24|0);pB(j,0,18900)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}IB(g,h);JB((c[k>>2]|0)+-24|0,g);QA(g);iB(h);iB(i);iB(j);n=m;}else n=b;l=f;return n|0;}function oC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+64|0;g=f+40|0;h=f+12|0;i=f+24|0;j=f;if(((((d-b|0)>2?(a[b>>0]|0)==115:0)?(a[b+1>>0]|0)==122:0)?(k=b+2|0,m=SB(k,d,e)|0,(m|0)!=(k|0)):0)?(k=e+4|0,d=c[k>>2]|0,(c[e>>2]|0)!=(d|0)):0){FB(j,d+-24|0);pB(j,0,18900)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}IB(g,h);JB((c[k>>2]|0)+-24|0,g);QA(g);iB(h);iB(i);iB(j);n=m;}else n=b;l=f;return n|0;}function pC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+64|0;g=f+48|0;h=f+24|0;i=f;j=f+12|0;if(((((d-b|0)>2?(a[b>>0]|0)==115:0)?(a[b+1>>0]|0)==90:0)?(k=b+2|0,(a[k>>0]|0)==84):0)?(m=e+4|0,n=((c[m>>2]|0)-(c[e>>2]|0)|0)/24|0,o=DB(k,d,e)|0,d=((c[m>>2]|0)-(c[e>>2]|0)|0)/24|0,(o|0)!=(k|0)):0){c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18886,AB(18886)|0);a:do{if((n|0)!=(d|0)){FB(h,(c[e>>2]|0)+(n*24|0)|0);k=a[h+11>>0]|0;p=k<<24>>24<0;TA(g,p?c[h>>2]|0:h,p?c[h+4>>2]|0:k&255)|0;iB(h);k=h+11|0;p=h+4|0;q=n;while(1){r=q+1|0;if((r|0)==(d|0))break a;FB(i,(c[e>>2]|0)+(r*24|0)|0);pB(i,0,18897)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];s=0;while(1){if((s|0)==3)break;c[i+(s<<2)>>2]=0;s=s+1|0;}s=a[k>>0]|0;t=s<<24>>24<0;TA(g,t?c[h>>2]|0:h,t?c[p>>2]|0:s&255)|0;iB(h);iB(i);q=r;}}}while(0);qB(g,18673)|0;i=d;while(1){if((i|0)==(n|0))break;d=c[m>>2]|0;q=0;while(1){if((q|0)==-1)break;p=q+-1|0;QA(d+(p*24|0)|0);q=p;}c[m>>2]=d+-24;i=i+-1|0;}c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];i=0;while(1){if((i|0)==3)break;c[g+(i<<2)>>2]=0;i=i+1|0;}IB(h,j);i=c[m>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,h);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,h);QA(h);iB(j);iB(g);u=o;}else u=b;l=f;return u|0;}function qC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+64|0;g=f+40|0;h=f+12|0;i=f+24|0;j=f;if((((((d-b|0)>2?(a[b>>0]|0)==115:0)?(a[b+1>>0]|0)==90:0)?(k=b+2|0,(a[k>>0]|0)==102):0)?(m=XB(k,d,e)|0,(m|0)!=(k|0)):0)?(k=e+4|0,d=c[k>>2]|0,(c[e>>2]|0)!=(d|0)):0){FB(j,d+-24|0);pB(j,0,18886)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}IB(g,h);JB((c[k>>2]|0)+-24|0,g);QA(g);iB(h);iB(i);iB(j);n=m;}else n=b;l=f;return n|0;}function rC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+64|0;g=f+40|0;h=f+12|0;i=f+24|0;j=f;a:do{if((d-b|0)>2?(a[b>>0]|0)==116:0){k=a[b+1>>0]|0;switch(k<<24>>24){case 105:case 101:break;default:{m=b;break a;}}n=b+2|0;if(k<<24>>24==101)o=SB(n,d,e)|0;else o=mB(n,d,e)|0;if((o|0)!=(n|0)?(n=e+4|0,k=c[n>>2]|0,(c[e>>2]|0)!=(k|0)):0){FB(j,k+-24|0);pB(j,0,18878)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];k=0;while(1){if((k|0)==3)break;c[j+(k<<2)>>2]=0;k=k+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];k=0;while(1){if((k|0)==3)break;c[i+(k<<2)>>2]=0;k=k+1|0;}IB(g,h);JB((c[n>>2]|0)+-24|0,g);QA(g);iB(h);iB(i);iB(j);m=o;}else m=b;}else m=b;}while(0);l=f;return m|0;}function sC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,5);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function tC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+48|0;g=f+24|0;h=f;i=f+12|0;if(((((d-b|0)>2?(a[b>>0]|0)==116:0)?(a[b+1>>0]|0)==119:0)?(j=b+2|0,k=SB(j,d,e)|0,(k|0)!=(j|0)):0)?(j=e+4|0,d=c[j>>2]|0,(c[e>>2]|0)!=(d|0)):0){FB(i,d+-24|0);pB(i,0,18871)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}IB(g,h);JB((c[j>>2]|0)+-24|0,g);QA(g);iB(h);iB(i);m=k;}else m=b;l=f;return m|0;}function uC(a,b){a=a|0;b=b|0;vC(a,b,AB(b)|0);return;}function vC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+16|0;g=f;h=b+11|0;i=a[h>>0]|0;j=i<<24>>24<0;if(j)k=(c[b+8>>2]&2147483647)+-1|0;else k=10;do{if(k>>>0>=e>>>0){if(j)m=c[b>>2]|0;else m=b;wC(m,d,e)|0;a[g>>0]=0;cB(m+e|0,g);if((a[h>>0]|0)<0){c[b+4>>2]=e;break;}else{a[h>>0]=e;break;}}else{if(j)n=c[b+4>>2]|0;else n=i&255;dB(b,k,e-k|0,n,0,n,e,d);}}while(0);l=f;return;}function wC(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)nE(a|0,b|0,c|0)|0;return a|0;}function xC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+16|0;g=f;a:do{if((d-b|0)>1){h=a[b>>0]|0;switch(h<<24>>24){case 100:case 111:{if((a[b+1>>0]|0)==110){i=b+2|0;if(h<<24>>24!=111){h=UC(i,d,e)|0;j=(h|0)==(i|0)?b:h;break a;}h=EC(i,d,e)|0;if((h|0)==(i|0)){j=b;break a;}i=EB(h,d,e)|0;if((i|0)==(h|0)){j=h;break a;}h=e+4|0;k=c[h>>2]|0;if(((k-(c[e>>2]|0)|0)/24|0)>>>0<2){j=i;break a;}FB(g,k+-24|0);k=c[h>>2]|0;m=0;while(1){if((m|0)==-1)break;n=m+-1|0;QA(k+(n*24|0)|0);m=n;}c[h>>2]=k+-24;m=a[g+11>>0]|0;n=m<<24>>24<0;TA(k+-48|0,n?c[g>>2]|0:g,n?c[g+4>>2]|0:m&255)|0;iB(g);j=i;break a;}break;}default:{}}m=AC(b,d,e)|0;if((m|0)==(b|0)){n=EC(b,d,e)|0;if((n|0)!=(b|0)){o=EB(n,d,e)|0;if((o|0)!=(n|0)){p=e+4|0;q=c[p>>2]|0;if(((q-(c[e>>2]|0)|0)/24|0)>>>0<2)j=o;else{FB(g,q+-24|0);q=c[p>>2]|0;r=0;while(1){if((r|0)==-1)break;s=r+-1|0;QA(q+(s*24|0)|0);r=s;}c[p>>2]=q+-24;r=a[g+11>>0]|0;i=r<<24>>24<0;TA(q+-48|0,i?c[g>>2]|0:g,i?c[g+4>>2]|0:r&255)|0;iB(g);j=o;}}else j=n;}else j=b;}else j=m;}else j=b;}while(0);l=f;return j|0;}function yC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+32|0;g=f+8|0;h=f;a:do{if((b|0)==(d|0))i=b;else switch(a[b>>0]|0){case 84:{j=e+4|0;k=((c[j>>2]|0)-(c[e>>2]|0)|0)/24|0;m=DB(b,d,e)|0;n=c[j>>2]|0;o=(n-(c[e>>2]|0)|0)/24|0;p=n;if((m|0)!=(b|0)&(o|0)==(k+1|0)){c[h>>2]=c[e+12>>2];vB(g,p+-24|0,h);n=e+20|0;q=c[n>>2]|0;if(q>>>0<(c[e+24>>2]|0)>>>0){c[q>>2]=0;r=q+4|0;c[r>>2]=0;s=q+8|0;c[s>>2]=0;c[q+12>>2]=c[g+12>>2];c[q>>2]=c[g>>2];q=g+4|0;c[r>>2]=c[q>>2];r=g+8|0;c[s>>2]=c[r>>2];c[r>>2]=0;c[q>>2]=0;c[g>>2]=0;c[n>>2]=(c[n>>2]|0)+16;}else wB(e+16|0,g);RA(g);i=m;break a;}m=o;o=p;while(1){if((m|0)==(k|0)){i=b;break a;}p=0;while(1){if((p|0)==-1)break;n=p+-1|0;QA(o+(n*24|0)|0);p=n;}p=o+-24|0;c[j>>2]=p;m=m+-1|0;o=p;}break;}case 68:{o=OB(b,d,e)|0;if((o|0)==(b|0)){i=b;break a;}m=c[e+4>>2]|0;if((c[e>>2]|0)==(m|0)){i=b;break a;}c[h>>2]=c[e+12>>2];vB(g,m+-24|0,h);m=e+20|0;j=c[m>>2]|0;if(j>>>0<(c[e+24>>2]|0)>>>0){c[j>>2]=0;k=j+4|0;c[k>>2]=0;p=j+8|0;c[p>>2]=0;c[j+12>>2]=c[g+12>>2];c[j>>2]=c[g>>2];j=g+4|0;c[k>>2]=c[j>>2];k=g+8|0;c[p>>2]=c[k>>2];c[k>>2]=0;c[j>>2]=0;c[g>>2]=0;c[m>>2]=(c[m>>2]|0)+16;}else wB(e+16|0,g);RA(g);i=o;break a;break;}case 83:{o=NB(b,d,e)|0;if((o|0)!=(b|0)){i=o;break a;}if((d-b|0)<=2){i=b;break a;}if((a[b+1>>0]|0)!=116){i=b;break a;}o=b+2|0;m=BC(o,d,e)|0;if((m|0)==(o|0)){i=b;break a;}o=e+4|0;j=c[o>>2]|0;if((c[e>>2]|0)==(j|0)){i=b;break a;}pB(j+-24|0,0,18969)|0;j=(c[o>>2]|0)+-24|0;c[h>>2]=c[e+12>>2];vB(g,j,h);j=e+20|0;o=c[j>>2]|0;if(o>>>0<(c[e+24>>2]|0)>>>0){c[o>>2]=0;k=o+4|0;c[k>>2]=0;p=o+8|0;c[p>>2]=0;c[o+12>>2]=c[g+12>>2];c[o>>2]=c[g>>2];o=g+4|0;c[k>>2]=c[o>>2];k=g+8|0;c[p>>2]=c[k>>2];c[k>>2]=0;c[o>>2]=0;c[g>>2]=0;c[j>>2]=(c[j>>2]|0)+16;}else wB(e+16|0,g);RA(g);i=m;break a;break;}default:{i=b;break a;}}}while(0);l=f;return i|0;}function zC(a,b,c){a=a|0;b=b|0;c=c|0;return AC(a,b,c)|0;}function AC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+16|0;g=f;if((b|0)!=(d|0)?(h=GB(b,d,e)|0,(h|0)!=(b|0)):0){i=EB(h,d,e)|0;if((i|0)!=(h|0)){d=e+4|0;j=c[d>>2]|0;if(((j-(c[e>>2]|0)|0)/24|0)>>>0<2)k=b;else{FB(g,j+-24|0);j=c[d>>2]|0;e=0;while(1){if((e|0)==-1)break;m=e+-1|0;QA(j+(m*24|0)|0);e=m;}c[d>>2]=j+-24;d=a[g+11>>0]|0;e=d<<24>>24<0;TA(j+-48|0,e?c[g>>2]|0:g,e?c[g+4>>2]|0:d&255)|0;iB(g);k=i;}}else k=h;}else k=b;l=f;return k|0;}function BC(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do{if((b|0)==(c|0))e=b;else switch(a[b>>0]|0){case 68:case 67:{e=CC(b,c,d)|0;break a;break;}case 85:{e=DC(b,c,d)|0;break a;break;}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{e=GB(b,c,d)|0;break a;break;}default:return EC(b,c,d)|0;}}while(0);return e|0;}function CC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+64|0;g=f+40|0;h=f+24|0;i=f;j=f+12|0;a:do{if((d-b|0)>1?(k=e+4|0,m=c[k>>2]|0,(c[e>>2]|0)!=(m|0)):0){switch(a[b>>0]|0){case 67:{switch(a[b+1>>0]|0){case 53:case 51:case 50:case 49:break;default:{n=b;break a;}}SC(h,m+-24|0);IB(g,h);o=c[k>>2]|0;if(o>>>0<(c[e+8>>2]|0)>>>0){KB(o,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);iB(h);a[e+60>>0]=1;n=b+2|0;break a;break;}case 68:break;default:{n=b;break a;}}switch(a[b+1>>0]|0){case 53:case 50:case 49:case 48:break;default:{n=b;break a;}}SC(j,m+-24|0);pB(j,0,18745)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];m=0;while(1){if((m|0)==3)break;c[j+(m<<2)>>2]=0;m=m+1|0;}IB(g,i);m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);iB(i);iB(j);a[e+60>>0]=1;n=b+2|0;}else n=b;}while(0);l=f;return n|0;}function Zl(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;i=l;l=l+192|0;j=i+176|0;k=i+172|0;m=i+168|0;n=i+164|0;o=i+160|0;p=i+156|0;q=i+152|0;r=i+148|0;s=i+144|0;t=i+140|0;u=i+136|0;v=i+132|0;w=i+128|0;x=i+124|0;y=i+120|0;z=i+116|0;A=i+112|0;B=i+108|0;C=i+104|0;D=i+100|0;E=i+96|0;F=i+92|0;G=i+88|0;H=i+84|0;I=i+80|0;J=i+76|0;K=i+72|0;L=i+68|0;M=i+64|0;N=i+60|0;O=i+56|0;P=i+52|0;Q=i+48|0;R=i+44|0;S=i+40|0;T=i+36|0;U=i+32|0;V=i+28|0;W=i+24|0;X=i+20|0;Y=i+16|0;Z=i+12|0;_=i+8|0;$=i+4|0;aa=i;c[X>>2]=a;c[Y>>2]=b;c[Z>>2]=e;c[_>>2]=f;c[$>>2]=g;c[aa>>2]=h;h=c[Y>>2]|0;Y=c[Z>>2]|0;Z=c[_>>2]|0;_=c[$>>2]|0;$=c[aa>>2]|0;c[j>>2]=c[X>>2];c[k>>2]=h;c[m>>2]=Y;c[n>>2]=Z;c[o>>2]=_;c[p>>2]=$;c[q>>2]=0;c[r>>2]=0;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+12>>2]|0);c[y>>2]=c[q>>2]|0?5:4;c[z>>2]=c[c[m>>2]>>2];c[A>>2]=c[(c[m>>2]|0)+4>>2];c[B>>2]=0;c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[x>>2]|0)&1);c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[C>>2]=(c[t>>2]|0)-(c[x>>2]|0);if((c[A>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[A>>2];c[A>>2]=0;}if((c[z>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[z>>2];c[z>>2]=0;}while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[D>>2]=0;c[E>>2]=0;c[F>>2]=(c[t>>2]|0)+1;C=(c[z>>2]|0)>>>0>0&1;q=Bk((c[t>>2]|0)+1|0)|0;if(!(C&(q|0)==(Bk((c[t>>2]|0)+1+(0-(c[z>>2]|0))|0)|0)|0?(c[D>>2]=(Qm((c[t>>2]|0)+1+4|0,(c[t>>2]|0)+1+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[G>>2]=99999999;c[H>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,G)|0;if((c[H>>2]|0)>>>0>(c[D>>2]|0)>>>0){c[D>>2]=c[H>>2];c[F>>2]=c[t>>2];c[E>>2]=c[G>>2];}if((c[D>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;if(((c[E>>2]|0?(q=(c[z>>2]|0)>>>0>0&1,C=Bk(c[t>>2]|0)|0,q&(C|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[I>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[J>>2]=(c[I>>2]|0)*3,C=(c[D>>2]|0)*3|0,c[K>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[I>>2]|0)>>>0>=4):0)?(c[J>>2]|0)>(c[K>>2]|0):0){c[D>>2]=c[I>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}c[L>>2]=99999999;c[M>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,L)|0;C=c[M>>2]<<2;c[N>>2]=C-(Mm((c[L>>2]|0)+1|0)|0);C=c[D>>2]<<2;c[O>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+4;if((c[M>>2]|0)>>>0>=4?(c[N>>2]|0)>(c[O>>2]|0):0){c[D>>2]=c[M>>2];c[E>>2]=c[L>>2];c[F>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;do{if((c[E>>2]|0?(C=(c[z>>2]|0)>>>0>0&1,q=Bk(c[t>>2]|0)|0,C&(q|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[P>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[Q>>2]=c[P>>2]<<2,q=c[D>>2]<<2,c[R>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[P>>2]|0)>>>0>=4):0){if((c[Q>>2]|0)<=(c[R>>2]|0))break;c[D>>2]=c[P>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}}while(0);c[S>>2]=99999999;c[T>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,S)|0;q=c[T>>2]<<2;c[U>>2]=q-(Mm((c[S>>2]|0)+1|0)|0);q=c[D>>2]<<2;c[V>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+7;if((c[T>>2]|0)>>>0<4)break a;if((c[U>>2]|0)<=(c[V>>2]|0))break a;c[D>>2]=c[T>>2];c[E>>2]=c[S>>2];c[F>>2]=c[t>>2];}}while(0);if(c[E>>2]|0){while(1){if(!(((c[F>>2]|0)>>>0>(c[u>>2]|0)>>>0?((c[F>>2]|0)+(0-((c[E>>2]|0)-2))|0)>>>0>(c[x>>2]|0)>>>0:0)|0))break;if((d[(c[F>>2]|0)+-1>>0]|0|0)!=(d[(c[F>>2]|0)+(0-((c[E>>2]|0)-2))+-1>>0]|0|0))break;c[F>>2]=(c[F>>2]|0)+-1;c[D>>2]=(c[D>>2]|0)+1;}c[A>>2]=c[z>>2];c[z>>2]=(c[E>>2]|0)-2;}}c[W>>2]=(c[F>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[W>>2]|0,c[u>>2]|0,c[E>>2]|0,(c[D>>2]|0)-3|0);q=(c[F>>2]|0)+(c[D>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if(!(((c[A>>2]|0)>>>0>0?(c[t>>2]|0)>>>0<=(c[w>>2]|0)>>>0:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk((c[t>>2]|0)+(0-(c[A>>2]|0))|0)|0))break;c[D>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[A>>2]|0))|0,c[v>>2]|0)|0)+4;c[E>>2]=c[A>>2];c[A>>2]=c[z>>2];c[z>>2]=c[E>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[D>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[D>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[z>>2]|0?c[z>>2]|0:c[B>>2]|0;c[(c[m>>2]|0)+4>>2]=c[A>>2]|0?c[A>>2]|0:c[B>>2]|0;l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function _l(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;i=l;l=l+192|0;j=i+176|0;k=i+172|0;m=i+168|0;n=i+164|0;o=i+160|0;p=i+156|0;q=i+152|0;r=i+148|0;s=i+144|0;t=i+140|0;u=i+136|0;v=i+132|0;w=i+128|0;x=i+124|0;y=i+120|0;z=i+116|0;A=i+112|0;B=i+108|0;C=i+104|0;D=i+100|0;E=i+96|0;F=i+92|0;G=i+88|0;H=i+84|0;I=i+80|0;J=i+76|0;K=i+72|0;L=i+68|0;M=i+64|0;N=i+60|0;O=i+56|0;P=i+52|0;Q=i+48|0;R=i+44|0;S=i+40|0;T=i+36|0;U=i+32|0;V=i+28|0;W=i+24|0;X=i+20|0;Y=i+16|0;Z=i+12|0;_=i+8|0;$=i+4|0;aa=i;c[X>>2]=a;c[Y>>2]=b;c[Z>>2]=e;c[_>>2]=f;c[$>>2]=g;c[aa>>2]=h;h=c[Y>>2]|0;Y=c[Z>>2]|0;Z=c[_>>2]|0;_=c[$>>2]|0;$=c[aa>>2]|0;c[j>>2]=c[X>>2];c[k>>2]=h;c[m>>2]=Y;c[n>>2]=Z;c[o>>2]=_;c[p>>2]=$;c[q>>2]=0;c[r>>2]=1;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+12>>2]|0);c[y>>2]=c[q>>2]|0?5:4;c[z>>2]=c[c[m>>2]>>2];c[A>>2]=c[(c[m>>2]|0)+4>>2];c[B>>2]=0;c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[x>>2]|0)&1);c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[C>>2]=(c[t>>2]|0)-(c[x>>2]|0);if((c[A>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[A>>2];c[A>>2]=0;}if((c[z>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[z>>2];c[z>>2]=0;}while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[D>>2]=0;c[E>>2]=0;c[F>>2]=(c[t>>2]|0)+1;C=(c[z>>2]|0)>>>0>0&1;q=Bk((c[t>>2]|0)+1|0)|0;if(!(C&(q|0)==(Bk((c[t>>2]|0)+1+(0-(c[z>>2]|0))|0)|0)|0?(c[D>>2]=(Qm((c[t>>2]|0)+1+4|0,(c[t>>2]|0)+1+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[G>>2]=99999999;c[H>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,G)|0;if((c[H>>2]|0)>>>0>(c[D>>2]|0)>>>0){c[D>>2]=c[H>>2];c[F>>2]=c[t>>2];c[E>>2]=c[G>>2];}if((c[D>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;if(((c[E>>2]|0?(q=(c[z>>2]|0)>>>0>0&1,C=Bk(c[t>>2]|0)|0,q&(C|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[I>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[J>>2]=(c[I>>2]|0)*3,C=(c[D>>2]|0)*3|0,c[K>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[I>>2]|0)>>>0>=4):0)?(c[J>>2]|0)>(c[K>>2]|0):0){c[D>>2]=c[I>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}c[L>>2]=99999999;c[M>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,L)|0;C=c[M>>2]<<2;c[N>>2]=C-(Mm((c[L>>2]|0)+1|0)|0);C=c[D>>2]<<2;c[O>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+4;if((c[M>>2]|0)>>>0>=4?(c[N>>2]|0)>(c[O>>2]|0):0){c[D>>2]=c[M>>2];c[E>>2]=c[L>>2];c[F>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;do{if((c[E>>2]|0?(C=(c[z>>2]|0)>>>0>0&1,q=Bk(c[t>>2]|0)|0,C&(q|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[P>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[Q>>2]=c[P>>2]<<2,q=c[D>>2]<<2,c[R>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[P>>2]|0)>>>0>=4):0){if((c[Q>>2]|0)<=(c[R>>2]|0))break;c[D>>2]=c[P>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}}while(0);c[S>>2]=99999999;c[T>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,S)|0;q=c[T>>2]<<2;c[U>>2]=q-(Mm((c[S>>2]|0)+1|0)|0);q=c[D>>2]<<2;c[V>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+7;if((c[T>>2]|0)>>>0<4)break a;if((c[U>>2]|0)<=(c[V>>2]|0))break a;c[D>>2]=c[T>>2];c[E>>2]=c[S>>2];c[F>>2]=c[t>>2];}}while(0);if(c[E>>2]|0){while(1){if(!(((c[F>>2]|0)>>>0>(c[u>>2]|0)>>>0?((c[F>>2]|0)+(0-((c[E>>2]|0)-2))|0)>>>0>(c[x>>2]|0)>>>0:0)|0))break;if((d[(c[F>>2]|0)+-1>>0]|0|0)!=(d[(c[F>>2]|0)+(0-((c[E>>2]|0)-2))+-1>>0]|0|0))break;c[F>>2]=(c[F>>2]|0)+-1;c[D>>2]=(c[D>>2]|0)+1;}c[A>>2]=c[z>>2];c[z>>2]=(c[E>>2]|0)-2;}}c[W>>2]=(c[F>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[W>>2]|0,c[u>>2]|0,c[E>>2]|0,(c[D>>2]|0)-3|0);q=(c[F>>2]|0)+(c[D>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if(!(((c[A>>2]|0)>>>0>0?(c[t>>2]|0)>>>0<=(c[w>>2]|0)>>>0:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk((c[t>>2]|0)+(0-(c[A>>2]|0))|0)|0))break;c[D>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[A>>2]|0))|0,c[v>>2]|0)|0)+4;c[E>>2]=c[A>>2];c[A>>2]=c[z>>2];c[z>>2]=c[E>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[D>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[D>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[z>>2]|0?c[z>>2]|0:c[B>>2]|0;c[(c[m>>2]|0)+4>>2]=c[A>>2]|0?c[A>>2]|0:c[B>>2]|0;l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function $l(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;i=l;l=l+192|0;j=i+176|0;k=i+172|0;m=i+168|0;n=i+164|0;o=i+160|0;p=i+156|0;q=i+152|0;r=i+148|0;s=i+144|0;t=i+140|0;u=i+136|0;v=i+132|0;w=i+128|0;x=i+124|0;y=i+120|0;z=i+116|0;A=i+112|0;B=i+108|0;C=i+104|0;D=i+100|0;E=i+96|0;F=i+92|0;G=i+88|0;H=i+84|0;I=i+80|0;J=i+76|0;K=i+72|0;L=i+68|0;M=i+64|0;N=i+60|0;O=i+56|0;P=i+52|0;Q=i+48|0;R=i+44|0;S=i+40|0;T=i+36|0;U=i+32|0;V=i+28|0;W=i+24|0;X=i+20|0;Y=i+16|0;Z=i+12|0;_=i+8|0;$=i+4|0;aa=i;c[X>>2]=a;c[Y>>2]=b;c[Z>>2]=e;c[_>>2]=f;c[$>>2]=g;c[aa>>2]=h;h=c[Y>>2]|0;Y=c[Z>>2]|0;Z=c[_>>2]|0;_=c[$>>2]|0;$=c[aa>>2]|0;c[j>>2]=c[X>>2];c[k>>2]=h;c[m>>2]=Y;c[n>>2]=Z;c[o>>2]=_;c[p>>2]=$;c[q>>2]=0;c[r>>2]=2;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+12>>2]|0);c[y>>2]=c[q>>2]|0?5:4;c[z>>2]=c[c[m>>2]>>2];c[A>>2]=c[(c[m>>2]|0)+4>>2];c[B>>2]=0;c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[x>>2]|0)&1);c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[C>>2]=(c[t>>2]|0)-(c[x>>2]|0);if((c[A>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[A>>2];c[A>>2]=0;}if((c[z>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[z>>2];c[z>>2]=0;}while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[D>>2]=0;c[E>>2]=0;c[F>>2]=(c[t>>2]|0)+1;C=(c[z>>2]|0)>>>0>0&1;q=Bk((c[t>>2]|0)+1|0)|0;if(!(C&(q|0)==(Bk((c[t>>2]|0)+1+(0-(c[z>>2]|0))|0)|0)|0?(c[D>>2]=(Qm((c[t>>2]|0)+1+4|0,(c[t>>2]|0)+1+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[G>>2]=99999999;c[H>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,G)|0;if((c[H>>2]|0)>>>0>(c[D>>2]|0)>>>0){c[D>>2]=c[H>>2];c[F>>2]=c[t>>2];c[E>>2]=c[G>>2];}if((c[D>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;if(((c[E>>2]|0?(q=(c[z>>2]|0)>>>0>0&1,C=Bk(c[t>>2]|0)|0,q&(C|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[I>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[J>>2]=(c[I>>2]|0)*3,C=(c[D>>2]|0)*3|0,c[K>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[I>>2]|0)>>>0>=4):0)?(c[J>>2]|0)>(c[K>>2]|0):0){c[D>>2]=c[I>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}c[L>>2]=99999999;c[M>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,L)|0;C=c[M>>2]<<2;c[N>>2]=C-(Mm((c[L>>2]|0)+1|0)|0);C=c[D>>2]<<2;c[O>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+4;if((c[M>>2]|0)>>>0>=4?(c[N>>2]|0)>(c[O>>2]|0):0){c[D>>2]=c[M>>2];c[E>>2]=c[L>>2];c[F>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;do{if((c[E>>2]|0?(C=(c[z>>2]|0)>>>0>0&1,q=Bk(c[t>>2]|0)|0,C&(q|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[P>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[Q>>2]=c[P>>2]<<2,q=c[D>>2]<<2,c[R>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[P>>2]|0)>>>0>=4):0){if((c[Q>>2]|0)<=(c[R>>2]|0))break;c[D>>2]=c[P>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}}while(0);c[S>>2]=99999999;c[T>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,S)|0;q=c[T>>2]<<2;c[U>>2]=q-(Mm((c[S>>2]|0)+1|0)|0);q=c[D>>2]<<2;c[V>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+7;if((c[T>>2]|0)>>>0<4)break a;if((c[U>>2]|0)<=(c[V>>2]|0))break a;c[D>>2]=c[T>>2];c[E>>2]=c[S>>2];c[F>>2]=c[t>>2];}}while(0);if(c[E>>2]|0){while(1){if(!(((c[F>>2]|0)>>>0>(c[u>>2]|0)>>>0?((c[F>>2]|0)+(0-((c[E>>2]|0)-2))|0)>>>0>(c[x>>2]|0)>>>0:0)|0))break;if((d[(c[F>>2]|0)+-1>>0]|0|0)!=(d[(c[F>>2]|0)+(0-((c[E>>2]|0)-2))+-1>>0]|0|0))break;c[F>>2]=(c[F>>2]|0)+-1;c[D>>2]=(c[D>>2]|0)+1;}c[A>>2]=c[z>>2];c[z>>2]=(c[E>>2]|0)-2;}}c[W>>2]=(c[F>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[W>>2]|0,c[u>>2]|0,c[E>>2]|0,(c[D>>2]|0)-3|0);q=(c[F>>2]|0)+(c[D>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if(!(((c[A>>2]|0)>>>0>0?(c[t>>2]|0)>>>0<=(c[w>>2]|0)>>>0:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk((c[t>>2]|0)+(0-(c[A>>2]|0))|0)|0))break;c[D>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[A>>2]|0))|0,c[v>>2]|0)|0)+4;c[E>>2]=c[A>>2];c[A>>2]=c[z>>2];c[z>>2]=c[E>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[D>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[D>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[z>>2]|0?c[z>>2]|0:c[B>>2]|0;c[(c[m>>2]|0)+4>>2]=c[A>>2]|0?c[A>>2]|0:c[B>>2]|0;l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function am(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;i=l;l=l+192|0;j=i+176|0;k=i+172|0;m=i+168|0;n=i+164|0;o=i+160|0;p=i+156|0;q=i+152|0;r=i+148|0;s=i+144|0;t=i+140|0;u=i+136|0;v=i+132|0;w=i+128|0;x=i+124|0;y=i+120|0;z=i+116|0;A=i+112|0;B=i+108|0;C=i+104|0;D=i+100|0;E=i+96|0;F=i+92|0;G=i+88|0;H=i+84|0;I=i+80|0;J=i+76|0;K=i+72|0;L=i+68|0;M=i+64|0;N=i+60|0;O=i+56|0;P=i+52|0;Q=i+48|0;R=i+44|0;S=i+40|0;T=i+36|0;U=i+32|0;V=i+28|0;W=i+24|0;X=i+20|0;Y=i+16|0;Z=i+12|0;_=i+8|0;$=i+4|0;aa=i;c[X>>2]=a;c[Y>>2]=b;c[Z>>2]=e;c[_>>2]=f;c[$>>2]=g;c[aa>>2]=h;h=c[Y>>2]|0;Y=c[Z>>2]|0;Z=c[_>>2]|0;_=c[$>>2]|0;$=c[aa>>2]|0;c[j>>2]=c[X>>2];c[k>>2]=h;c[m>>2]=Y;c[n>>2]=Z;c[o>>2]=_;c[p>>2]=$;c[q>>2]=1;c[r>>2]=2;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+12>>2]|0);c[y>>2]=c[q>>2]|0?5:4;c[z>>2]=c[c[m>>2]>>2];c[A>>2]=c[(c[m>>2]|0)+4>>2];c[B>>2]=0;c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[x>>2]|0)&1);c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[C>>2]=(c[t>>2]|0)-(c[x>>2]|0);if((c[A>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[A>>2];c[A>>2]=0;}if((c[z>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[z>>2];c[z>>2]=0;}while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[D>>2]=0;c[E>>2]=0;c[F>>2]=(c[t>>2]|0)+1;C=(c[z>>2]|0)>>>0>0&1;q=Bk((c[t>>2]|0)+1|0)|0;if(!(C&(q|0)==(Bk((c[t>>2]|0)+1+(0-(c[z>>2]|0))|0)|0)|0?(c[D>>2]=(Qm((c[t>>2]|0)+1+4|0,(c[t>>2]|0)+1+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[G>>2]=99999999;c[H>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,G)|0;if((c[H>>2]|0)>>>0>(c[D>>2]|0)>>>0){c[D>>2]=c[H>>2];c[F>>2]=c[t>>2];c[E>>2]=c[G>>2];}if((c[D>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;if(((c[E>>2]|0?(q=(c[z>>2]|0)>>>0>0&1,C=Bk(c[t>>2]|0)|0,q&(C|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[I>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[J>>2]=(c[I>>2]|0)*3,C=(c[D>>2]|0)*3|0,c[K>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[I>>2]|0)>>>0>=4):0)?(c[J>>2]|0)>(c[K>>2]|0):0){c[D>>2]=c[I>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}c[L>>2]=99999999;c[M>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,L)|0;C=c[M>>2]<<2;c[N>>2]=C-(Mm((c[L>>2]|0)+1|0)|0);C=c[D>>2]<<2;c[O>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+4;if((c[M>>2]|0)>>>0>=4?(c[N>>2]|0)>(c[O>>2]|0):0){c[D>>2]=c[M>>2];c[E>>2]=c[L>>2];c[F>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;do{if((c[E>>2]|0?(C=(c[z>>2]|0)>>>0>0&1,q=Bk(c[t>>2]|0)|0,C&(q|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[P>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[Q>>2]=c[P>>2]<<2,q=c[D>>2]<<2,c[R>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[P>>2]|0)>>>0>=4):0){if((c[Q>>2]|0)<=(c[R>>2]|0))break;c[D>>2]=c[P>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}}while(0);c[S>>2]=99999999;c[T>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,S)|0;q=c[T>>2]<<2;c[U>>2]=q-(Mm((c[S>>2]|0)+1|0)|0);q=c[D>>2]<<2;c[V>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+7;if((c[T>>2]|0)>>>0<4)break a;if((c[U>>2]|0)<=(c[V>>2]|0))break a;c[D>>2]=c[T>>2];c[E>>2]=c[S>>2];c[F>>2]=c[t>>2];}}while(0);if(c[E>>2]|0){while(1){if(!(((c[F>>2]|0)>>>0>(c[u>>2]|0)>>>0?((c[F>>2]|0)+(0-((c[E>>2]|0)-2))|0)>>>0>(c[x>>2]|0)>>>0:0)|0))break;if((d[(c[F>>2]|0)+-1>>0]|0|0)!=(d[(c[F>>2]|0)+(0-((c[E>>2]|0)-2))+-1>>0]|0|0))break;c[F>>2]=(c[F>>2]|0)+-1;c[D>>2]=(c[D>>2]|0)+1;}c[A>>2]=c[z>>2];c[z>>2]=(c[E>>2]|0)-2;}}c[W>>2]=(c[F>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[W>>2]|0,c[u>>2]|0,c[E>>2]|0,(c[D>>2]|0)-3|0);q=(c[F>>2]|0)+(c[D>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if(!(((c[A>>2]|0)>>>0>0?(c[t>>2]|0)>>>0<=(c[w>>2]|0)>>>0:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk((c[t>>2]|0)+(0-(c[A>>2]|0))|0)|0))break;c[D>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[A>>2]|0))|0,c[v>>2]|0)|0)+4;c[E>>2]=c[A>>2];c[A>>2]=c[z>>2];c[z>>2]=c[E>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[D>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[D>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[z>>2]|0?c[z>>2]|0:c[B>>2]|0;c[(c[m>>2]|0)+4>>2]=c[A>>2]|0?c[A>>2]|0:c[B>>2]|0;l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function bm(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,gg=0,hg=0,ig=0,jg=0,kg=0,lg=0,mg=0,ng=0,og=0,pg=0,qg=0,rg=0,sg=0,tg=0,ug=0,vg=0,wg=0,xg=0,yg=0,zg=0,Ag=0,Bg=0,Cg=0,Dg=0,Eg=0,Fg=0,Gg=0,Hg=0,Ig=0,Jg=0,Kg=0,Lg=0,Mg=0,Ng=0,Og=0,Pg=0,Qg=0,Rg=0,Sg=0,Tg=0,Ug=0,Vg=0,Wg=0,Xg=0,Yg=0,Zg=0,_g=0,$g=0,ah=0,bh=0,ch=0,dh=0,eh=0,fh=0,gh=0,hh=0,ih=0,jh=0,kh=0,lh=0,mh=0,nh=0,oh=0,ph=0,qh=0,rh=0,sh=0,th=0,uh=0,vh=0,wh=0,xh=0,yh=0,zh=0,Ah=0,Bh=0,Ch=0,Dh=0,Eh=0,Fh=0,Gh=0,Hh=0,Ih=0,Jh=0,Kh=0,Lh=0,Mh=0,Nh=0,Oh=0,Ph=0,Qh=0,Rh=0,Sh=0,Th=0,Uh=0,Vh=0,Wh=0,Xh=0,Yh=0,Zh=0,_h=0,$h=0,ai=0,bi=0,ci=0,di=0,ei=0,fi=0,gi=0,hi=0,ii=0,ji=0,ki=0,li=0,mi=0,ni=0,oi=0,pi=0,qi=0,ri=0,si=0,ti=0,ui=0,vi=0,wi=0,xi=0,yi=0,zi=0,Ai=0,Bi=0,Ci=0,Di=0,Ei=0,Fi=0,Gi=0,Hi=0,Ii=0,Ji=0,Ki=0,Li=0,Mi=0,Ni=0,Oi=0,Pi=0,Qi=0,Ri=0,Si=0,Ti=0,Ui=0,Vi=0,Wi=0,Xi=0,Yi=0,Zi=0,_i=0,$i=0,aj=0,bj=0,cj=0,dj=0,ej=0,fj=0,gj=0,hj=0,ij=0,jj=0,kj=0,lj=0,mj=0,nj=0,oj=0,pj=0,qj=0,rj=0,sj=0,tj=0,uj=0,vj=0,wj=0,xj=0,yj=0,zj=0,Aj=0,Bj=0,Cj=0,Dj=0,Ej=0;i=l;l=l+2144|0;j=i+2136|0;k=i+2132|0;m=i+2128|0;n=i+2124|0;o=i+2120|0;p=i+2116|0;q=i+2112|0;r=i+2108|0;s=i+2104|0;t=i+2100|0;u=i+2096|0;v=i+2092|0;w=i+2088|0;x=i+2084|0;y=i+2080|0;z=i+2076|0;A=i+2072|0;B=i+2068|0;C=i+2064|0;D=i+2060|0;E=i+2056|0;F=i+2052|0;G=i+2048|0;H=i+2044|0;I=i+2040|0;J=i+2036|0;K=i+2032|0;L=i+2028|0;M=i+2024|0;N=i+2020|0;O=i+2016|0;P=i+2012|0;Q=i+2008|0;R=i+2004|0;S=i+2e3|0;T=i+1996|0;U=i+1992|0;V=i+1988|0;W=i+1984|0;X=i+1980|0;Y=i+1976|0;Z=i+1972|0;_=i+1968|0;$=i+1964|0;aa=i+1960|0;ba=i+1956|0;ca=i+1952|0;da=i+1948|0;ea=i+1944|0;fa=i+1940|0;ga=i+1936|0;ha=i+1932|0;ia=i+1928|0;ja=i+1924|0;ka=i+1920|0;la=i+1916|0;ma=i+1912|0;na=i+1908|0;oa=i+1904|0;pa=i+1900|0;qa=i+1896|0;ra=i+1892|0;sa=i+1888|0;ta=i+1884|0;ua=i+1880|0;va=i+1876|0;wa=i+1872|0;xa=i+1868|0;ya=i+1864|0;za=i+1860|0;Aa=i+1856|0;Ba=i+1852|0;Ca=i+1848|0;Da=i+1844|0;Ea=i+1840|0;Fa=i+1836|0;Ga=i+1832|0;Ha=i+1828|0;Ia=i+1824|0;Ja=i+1820|0;Ka=i+1816|0;La=i+1812|0;Ma=i+1808|0;Na=i+1804|0;Oa=i+1800|0;Pa=i+1796|0;Qa=i+1792|0;Ra=i+1788|0;Sa=i+1784|0;Ta=i+1780|0;Ua=i+1776|0;Va=i+1772|0;Wa=i+1768|0;Xa=i+1764|0;Ya=i+1760|0;Za=i+1756|0;_a=i+1752|0;$a=i+1748|0;ab=i+1744|0;bb=i+1740|0;cb=i+1736|0;db=i+1732|0;eb=i+1728|0;fb=i+1724|0;gb=i+1720|0;hb=i+1716|0;ib=i+1712|0;jb=i+1708|0;kb=i+1704|0;lb=i+1700|0;mb=i+1696|0;nb=i+1692|0;ob=i+1688|0;pb=i+1684|0;qb=i+1680|0;rb=i+1676|0;sb=i+1672|0;tb=i+1668|0;ub=i+1664|0;vb=i+1660|0;wb=i+1656|0;xb=i+1652|0;yb=i+1648|0;zb=i+1644|0;Ab=i+1640|0;Bb=i+1636|0;Cb=i+1632|0;Db=i+1628|0;Eb=i+1624|0;Fb=i+1620|0;Gb=i+1616|0;Hb=i+1612|0;Ib=i+1608|0;Jb=i+1604|0;Kb=i+1600|0;Lb=i+1596|0;Mb=i+1592|0;Nb=i+1588|0;Ob=i+1584|0;Pb=i+1580|0;Qb=i+1576|0;Rb=i+1572|0;Sb=i+1568|0;Tb=i+1564|0;Ub=i+1560|0;Vb=i+1556|0;Wb=i+1552|0;Xb=i+1548|0;Yb=i+1544|0;Zb=i+1540|0;_b=i+1536|0;$b=i+1532|0;ac=i+1528|0;bc=i+1524|0;cc=i+1520|0;dc=i+1516|0;ec=i+1512|0;fc=i+1508|0;gc=i+1504|0;hc=i+1500|0;ic=i+1496|0;jc=i+1492|0;kc=i+1488|0;lc=i+1484|0;mc=i+1480|0;nc=i+1476|0;oc=i+1472|0;pc=i+1468|0;qc=i+1464|0;rc=i+1460|0;sc=i+1456|0;tc=i+1452|0;uc=i+1448|0;vc=i+1444|0;wc=i+1440|0;xc=i+1436|0;yc=i+1432|0;zc=i+1428|0;Ac=i+1424|0;Bc=i+1420|0;Cc=i+1416|0;Dc=i+1412|0;Ec=i+1408|0;Fc=i+1404|0;Gc=i+1400|0;Hc=i+1396|0;Ic=i+1392|0;Jc=i+1388|0;Kc=i+1384|0;Lc=i+1380|0;Mc=i+1376|0;Nc=i+1372|0;Oc=i+1368|0;Pc=i+1364|0;Qc=i+1360|0;Rc=i+1356|0;Sc=i+1352|0;Tc=i+1348|0;Uc=i+1344|0;Vc=i+1340|0;Wc=i+1336|0;Xc=i+1332|0;Yc=i+1328|0;Zc=i+1324|0;_c=i+1320|0;$c=i+1316|0;ad=i+1312|0;bd=i+1308|0;cd=i+1304|0;dd=i+1300|0;ed=i+1296|0;fd=i+1292|0;gd=i+1288|0;hd=i+1284|0;id=i+1280|0;jd=i+1276|0;kd=i+1272|0;ld=i+1268|0;md=i+1264|0;nd=i+1260|0;od=i+1256|0;pd=i+1252|0;qd=i+1248|0;rd=i+1244|0;sd=i+1240|0;td=i+1236|0;ud=i+1232|0;vd=i+1228|0;wd=i+1224|0;xd=i+1220|0;yd=i+1216|0;zd=i+1212|0;Ad=i+1208|0;Bd=i+1204|0;Cd=i+1200|0;Dd=i+1196|0;Ed=i+1192|0;Fd=i+1188|0;Gd=i+1184|0;Hd=i+1180|0;Id=i+1176|0;Jd=i+1172|0;Kd=i+1168|0;Ld=i+1164|0;Md=i+1160|0;Nd=i+1156|0;Od=i+1152|0;Pd=i+1148|0;Qd=i+1144|0;Rd=i+1140|0;Sd=i+1136|0;Td=i+1132|0;Ud=i+1128|0;Vd=i+1124|0;Wd=i+1120|0;Xd=i+1116|0;Yd=i+1112|0;Zd=i+1108|0;_d=i+1104|0;$d=i+1100|0;ae=i+1096|0;be=i+1092|0;ce=i+1088|0;de=i+1084|0;ee=i+1080|0;fe=i+1076|0;ge=i+1072|0;he=i+1068|0;ie=i+1064|0;je=i+1060|0;ke=i+1056|0;le=i+1052|0;me=i+1048|0;ne=i+1044|0;oe=i+1040|0;pe=i+1036|0;qe=i+1032|0;re=i+1028|0;se=i+1024|0;te=i+1020|0;ue=i+1016|0;ve=i+1012|0;we=i+1008|0;xe=i+1004|0;ye=i+1e3|0;ze=i+996|0;Ae=i+992|0;Be=i+988|0;Ce=i+984|0;De=i+980|0;Ee=i+976|0;Fe=i+972|0;Ge=i+968|0;He=i+964|0;Ie=i+960|0;Je=i+956|0;Ke=i+952|0;Le=i+948|0;Me=i+944|0;Ne=i+940|0;Oe=i+936|0;Pe=i+932|0;Qe=i+928|0;Re=i+924|0;Se=i+920|0;Te=i+916|0;Ue=i+912|0;Ve=i+908|0;We=i+904|0;Xe=i+900|0;Ye=i+896|0;Ze=i+892|0;_e=i+888|0;$e=i+884|0;af=i+880|0;bf=i+876|0;cf=i+872|0;df=i+868|0;ef=i+864|0;ff=i+860|0;gf=i+856|0;hf=i+852|0;jf=i+848|0;kf=i+844|0;lf=i+840|0;mf=i+836|0;nf=i+832|0;of=i+828|0;pf=i+824|0;qf=i+820|0;rf=i+816|0;sf=i+812|0;tf=i+808|0;uf=i+804|0;vf=i+800|0;wf=i+796|0;xf=i+792|0;yf=i+788|0;zf=i+784|0;Af=i+780|0;Bf=i+776|0;Cf=i+772|0;Df=i+768|0;Ef=i+764|0;Ff=i+760|0;Gf=i+756|0;Hf=i+752|0;If=i+748|0;Jf=i+744|0;Kf=i+740|0;Lf=i+736|0;Mf=i+732|0;Nf=i+728|0;Of=i+724|0;Pf=i+720|0;Qf=i+716|0;Rf=i+712|0;Sf=i+708|0;Tf=i+704|0;Uf=i+700|0;Vf=i+696|0;Wf=i+692|0;Xf=i+688|0;Yf=i+684|0;Zf=i+680|0;_f=i+676|0;$f=i+672|0;ag=i+668|0;bg=i+664|0;cg=i+660|0;dg=i+656|0;eg=i+652|0;fg=i+648|0;gg=i+644|0;hg=i+640|0;ig=i+636|0;jg=i+632|0;kg=i+628|0;lg=i+624|0;mg=i+620|0;ng=i+616|0;og=i+612|0;pg=i+608|0;qg=i+604|0;rg=i+600|0;sg=i+596|0;tg=i+592|0;ug=i+588|0;vg=i+584|0;wg=i+580|0;xg=i+576|0;yg=i+572|0;zg=i+568|0;Ag=i+564|0;Bg=i+560|0;Cg=i+556|0;Dg=i+552|0;Eg=i+548|0;Fg=i+544|0;Gg=i+540|0;Hg=i+536|0;Ig=i+532|0;Jg=i+528|0;Kg=i+524|0;Lg=i+520|0;Mg=i+516|0;Ng=i+512|0;Og=i+508|0;Pg=i+504|0;Qg=i+500|0;Rg=i+496|0;Sg=i+492|0;Tg=i+488|0;Ug=i+484|0;Vg=i+480|0;Wg=i+476|0;Xg=i+472|0;Yg=i+468|0;Zg=i+464|0;_g=i+460|0;$g=i+456|0;ah=i+452|0;bh=i+448|0;ch=i+444|0;dh=i+440|0;eh=i+436|0;fh=i+432|0;gh=i+428|0;hh=i+424|0;ih=i+420|0;jh=i+416|0;kh=i+412|0;lh=i+408|0;mh=i+404|0;nh=i+400|0;oh=i+396|0;ph=i+392|0;qh=i+388|0;rh=i+384|0;sh=i+380|0;th=i+376|0;uh=i+372|0;vh=i+368|0;wh=i+364|0;xh=i+360|0;yh=i+356|0;zh=i+352|0;Ah=i+348|0;Bh=i+344|0;Ch=i+340|0;Dh=i+336|0;Eh=i+332|0;Fh=i+328|0;Gh=i+324|0;Hh=i+320|0;Ih=i+316|0;Jh=i+312|0;Kh=i+308|0;Lh=i+304|0;Mh=i+300|0;Nh=i+296|0;Oh=i+292|0;Ph=i+288|0;Qh=i+284|0;Rh=i+280|0;Sh=i+276|0;Th=i+272|0;Uh=i+268|0;Vh=i+264|0;Wh=i+260|0;Xh=i+256|0;Yh=i+252|0;Zh=i+248|0;_h=i+244|0;$h=i+240|0;ai=i+236|0;bi=i+232|0;ci=i+228|0;di=i+216|0;ei=i+212|0;fi=i+208|0;gi=i+204|0;hi=i+200|0;ii=i+196|0;ji=i+192|0;ki=i+188|0;li=i+184|0;mi=i+180|0;ni=i+176|0;oi=i+172|0;pi=i+168|0;qi=i+164|0;ri=i+160|0;si=i+148|0;ti=i+144|0;ui=i+140|0;vi=i+136|0;wi=i+132|0;xi=i+128|0;yi=i+124|0;zi=i+120|0;Ai=i+116|0;Bi=i+112|0;Ci=i+108|0;Di=i+104|0;Ei=i+100|0;Fi=i+88|0;Gi=i+84|0;Hi=i+80|0;Ii=i+76|0;Ji=i+72|0;Ki=i+68|0;Li=i+64|0;Mi=i+60|0;Ni=i+56|0;Oi=i+52|0;Pi=i+48|0;Qi=i+44|0;Ri=i+40|0;Si=i+36|0;Ti=i+32|0;Ui=i+28|0;Vi=i+24|0;Wi=i+20|0;Xi=i+16|0;Yi=i+12|0;Zi=i+8|0;_i=i+4|0;$i=i;c[Wi>>2]=a;c[Xi>>2]=b;c[Yi>>2]=e;c[Zi>>2]=f;c[_i>>2]=g;c[$i>>2]=h;h=c[Xi>>2]|0;Xi=c[Yi>>2]|0;Yi=c[Zi>>2]|0;Zi=c[_i>>2]|0;_i=c[$i>>2]|0;c[Lh>>2]=c[Wi>>2];c[Mh>>2]=h;c[Nh>>2]=Xi;c[Oh>>2]=Yi;c[Ph>>2]=Zi;c[Qh>>2]=_i;c[Rh>>2]=0;c[Sh>>2]=0;c[Th>>2]=(c[Lh>>2]|0)+48;c[Uh>>2]=c[Ph>>2];c[Vh>>2]=c[Uh>>2];c[Wh>>2]=c[Uh>>2];c[Xh>>2]=(c[Uh>>2]|0)+(c[Qh>>2]|0);c[Yh>>2]=(c[Xh>>2]|0)+-8;c[Zh>>2]=c[(c[Lh>>2]|0)+4>>2];c[_h>>2]=(c[Zh>>2]|0)+(c[(c[Lh>>2]|0)+12>>2]|0);if((c[(c[Oh>>2]|0)+20>>2]|0)>>>0<4095)aj=c[(c[Oh>>2]|0)+20>>2]|0;else aj=4095;c[$h>>2]=aj;c[ai>>2]=(c[(c[Oh>>2]|0)+16>>2]|0)==3?3:4;c[bi>>2]=c[(c[Th>>2]|0)+20>>2];c[ci>>2]=c[(c[Th>>2]|0)+16>>2];c[(c[Lh>>2]|0)+28>>2]=c[(c[Lh>>2]|0)+24>>2];lm(c[Th>>2]|0,c[Ph>>2]|0,c[Qh>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+((c[Vh>>2]|0)==(c[_h>>2]|0)&1);c[di>>2]=0;c[di+4>>2]=0;c[di+8>>2]=0;while(1){if((c[Vh>>2]|0)>>>0>=(c[Yh>>2]|0)>>>0)break;c[fi>>2]=0;c[ii>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[ji>>2]=((c[ii>>2]|0)!=0^1)&1;_h=c[Oh>>2]|0;Qh=c[Vh>>2]|0;Ph=c[Xh>>2]|0;aj=c[Sh>>2]|0;Zh=c[Nh>>2]|0;Uh=c[ji>>2]|0;_i=c[ci>>2]|0;Zi=c[ai>>2]|0;c[Bh>>2]=c[Lh>>2];c[Ch>>2]=_h;c[Dh>>2]=Qh;c[Eh>>2]=Ph;c[Fh>>2]=aj;c[Gh>>2]=Zh;c[Hh>>2]=Uh;c[Ih>>2]=_i;c[Jh>>2]=Zi;c[Kh>>2]=c[(c[Ch>>2]|0)+16>>2];a:do{if((c[Dh>>2]|0)>>>0<((c[(c[Bh>>2]|0)+4>>2]|0)+(c[(c[Bh>>2]|0)+24>>2]|0)|0)>>>0)c[Ah>>2]=0;else{Zi=c[Ch>>2]|0;_i=c[Dh>>2]|0;Uh=c[Eh>>2]|0;Zh=c[Kh>>2]|0;aj=c[Fh>>2]|0;c[rh>>2]=c[Bh>>2];c[sh>>2]=Zi;c[th>>2]=_i;c[uh>>2]=Uh;c[vh>>2]=Zh;c[wh>>2]=aj;c[xh>>2]=c[(c[rh>>2]|0)+4>>2];c[yh>>2]=(c[th>>2]|0)-(c[xh>>2]|0);c[zh>>2]=c[(c[rh>>2]|0)+24>>2];while(1){if((c[zh>>2]|0)>>>0>=(c[yh>>2]|0)>>>0)break;aj=Rj(c[rh>>2]|0,c[sh>>2]|0,(c[xh>>2]|0)+(c[zh>>2]|0)|0,c[uh>>2]|0,c[vh>>2]|0,c[wh>>2]|0)|0;c[zh>>2]=(c[zh>>2]|0)+aj;}c[(c[rh>>2]|0)+24>>2]=c[yh>>2];switch(c[Kh>>2]|0){case 3:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[wg>>2]=c[Bh>>2];c[xg>>2]=aj;c[yg>>2]=Zh;c[zg>>2]=Uh;c[Ag>>2]=_i;c[Bg>>2]=Zi;c[Cg>>2]=Ph;c[Dg>>2]=Qh;c[Eg>>2]=_h;c[Fg>>2]=3;if((c[(c[xg>>2]|0)+20>>2]|0)>>>0<4095)bj=c[(c[xg>>2]|0)+20>>2]|0;else bj=4095;c[Gg>>2]=bj;c[Hg>>2]=c[(c[wg>>2]|0)+4>>2];c[Ig>>2]=(c[yg>>2]|0)-(c[Hg>>2]|0);c[Jg>>2]=c[(c[xg>>2]|0)+8>>2];c[Kg>>2]=(c[Fg>>2]|0)==3?3:4;c[Lg>>2]=c[(c[wg>>2]|0)+36>>2];c[Mg>>2]=Sj(c[yg>>2]|0,c[Jg>>2]|0,c[Fg>>2]|0)|0;c[Ng>>2]=c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2];c[Og>>2]=c[(c[wg>>2]|0)+44>>2];c[Pg>>2]=(c[(c[xg>>2]|0)+4>>2]|0)-1;c[Qg>>2]=(1<<c[Pg>>2])-1;c[Rg>>2]=0;c[Sg>>2]=0;c[Tg>>2]=c[(c[wg>>2]|0)+8>>2];c[Ug>>2]=c[(c[wg>>2]|0)+12>>2];c[Vg>>2]=(c[Tg>>2]|0)+(c[Ug>>2]|0);c[Wg>>2]=(c[Hg>>2]|0)+(c[Ug>>2]|0);if((c[Qg>>2]|0)>>>0>=(c[Ig>>2]|0)>>>0)cj=0;else cj=(c[Ig>>2]|0)-(c[Qg>>2]|0)|0;c[Xg>>2]=cj;c[Yg>>2]=c[(c[wg>>2]|0)+16>>2];c[Zg>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2);c[_g>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2)+4;c[$g>>2]=(c[Ig>>2]|0)+8+1;c[bh>>2]=0;c[ch>>2]=1<<c[(c[xg>>2]|0)+12>>2];c[dh>>2]=(c[Eg>>2]|0)-1;c[eh>>2]=3+(c[Cg>>2]|0);c[fh>>2]=c[Cg>>2];while(1){if((c[fh>>2]|0)>>>0>=(c[eh>>2]|0)>>>0){dj=31;break;}_h=c[Bg>>2]|0;if((c[fh>>2]|0)==3)ej=(c[_h>>2]|0)-1|0;else ej=c[_h+(c[fh>>2]<<2)>>2]|0;c[gh>>2]=ej;c[hh>>2]=(c[Ig>>2]|0)-(c[gh>>2]|0);c[ih>>2]=0;if(((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Ug>>2]|0)|0)>>>0){_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0;if((_h|0)==(mm((c[yg>>2]|0)+(0-(c[gh>>2]|0))|0,c[Kg>>2]|0)|0)){_h=Tj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[yg>>2]|0)+(c[Kg>>2]|0)+(0-(c[gh>>2]|0))|0,c[zg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}else{c[jh>>2]=(c[Tg>>2]|0)+(c[hh>>2]|0);if((c[Ag>>2]|0?(((c[Ug>>2]|0)-1-(c[hh>>2]|0)|0)>>>0>=3?((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Yg>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0,(_h|0)==(mm(c[jh>>2]|0,c[Kg>>2]|0)|0)):0){_h=Uj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[jh>>2]|0)+(c[Kg>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}if((c[ih>>2]|0)>>>0>(c[dh>>2]|0)>>>0?(c[dh>>2]=c[ih>>2],c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[fh>>2]|0)-(c[Cg>>2]|0),c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ih>>2],c[bh>>2]=(c[bh>>2]|0)+1,((c[ih>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[ih>>2]|0)|0)==(c[zg>>2]|0))|0):0){dj=29;break;}c[fh>>2]=(c[fh>>2]|0)+1;}do{if((dj|0)==29){dj=0;c[vg>>2]=c[bh>>2];}else if((dj|0)==31){dj=0;if(((c[Fg>>2]|0)==3?(c[dh>>2]|0)>>>0<(c[Fg>>2]|0)>>>0:0)?(c[kh>>2]=nm(c[wg>>2]|0,c[yg>>2]|0)|0,((c[kh>>2]|0)>>>0>(c[Yg>>2]|0)>>>0?((c[Ig>>2]|0)-(c[kh>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ag>>2]|0?(c[kh>>2]|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[nh>>2]=(c[Tg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Uj(c[yg>>2]|0,c[nh>>2]|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;}else{c[mh>>2]=(c[Hg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Tj(c[yg>>2]|0,c[mh>>2]|0,c[zg>>2]|0)|0;}if((c[lh>>2]|0)>>>0>=(c[Fg>>2]|0)>>>0?(c[dh>>2]=c[lh>>2],c[c[Dg>>2]>>2]=(c[Ig>>2]|0)-(c[kh>>2]|0)+2,c[(c[Dg>>2]|0)+4>>2]=c[lh>>2],c[bh>>2]=1,((c[lh>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[lh>>2]|0)|0)==(c[zg>>2]|0))|0):0){c[(c[wg>>2]|0)+24>>2]=(c[Ig>>2]|0)+1;c[vg>>2]=1;break;}}c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2]=c[Ig>>2];while(1){_h=c[ch>>2]|0;c[ch>>2]=_h+-1;if(!_h)break;if((c[Ng>>2]|0)>>>0<=(c[Yg>>2]|0)>>>0)break;c[oh>>2]=(c[Og>>2]|0)+((c[Ng>>2]&c[Qg>>2])<<1<<2);c[ph>>2]=(c[Rg>>2]|0)>>>0<(c[Sg>>2]|0)>>>0?c[Rg>>2]|0:c[Sg>>2]|0;if(c[Ag>>2]|0?((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[qh>>2]=(c[Tg>>2]|0)+(c[Ng>>2]|0);_h=Uj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;if(((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0>=(c[Ug>>2]|0)>>>0)c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);}else{c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);_h=Tj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;}if((c[ph>>2]|0)>>>0>(c[dh>>2]|0)>>>0){if((c[ph>>2]|0)>>>0>((c[$g>>2]|0)-(c[Ng>>2]|0)|0)>>>0)c[$g>>2]=(c[Ng>>2]|0)+(c[ph>>2]|0);c[dh>>2]=c[ph>>2];c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[Ig>>2]|0)-(c[Ng>>2]|0)+2;c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ph>>2];c[bh>>2]=(c[bh>>2]|0)+1;if((c[ph>>2]|0)>>>0>4096)break;if(((c[yg>>2]|0)+(c[ph>>2]|0)|0)==(c[zg>>2]|0))break;}_h=c[Ng>>2]|0;if((d[(c[qh>>2]|0)+(c[ph>>2]|0)>>0]|0|0)<(d[(c[yg>>2]|0)+(c[ph>>2]|0)>>0]|0|0)){c[c[Zg>>2]>>2]=_h;c[Rg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=56;break;}c[Zg>>2]=(c[oh>>2]|0)+4;c[Ng>>2]=c[(c[oh>>2]|0)+4>>2];}else{c[c[_g>>2]>>2]=_h;c[Sg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=59;break;}c[_g>>2]=c[oh>>2];c[Ng>>2]=c[c[oh>>2]>>2];}}if((dj|0)==56){dj=0;c[Zg>>2]=ah;}else if((dj|0)==59){dj=0;c[_g>>2]=ah;}c[c[_g>>2]>>2]=0;c[c[Zg>>2]>>2]=0;c[(c[wg>>2]|0)+24>>2]=(c[$g>>2]|0)-8;c[vg>>2]=c[bh>>2];}}while(0);c[Ah>>2]=c[vg>>2];break a;break;}case 7:case 6:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Hd>>2]=c[Bh>>2];c[Id>>2]=_h;c[Jd>>2]=Qh;c[Kd>>2]=Ph;c[Ld>>2]=Zi;c[Md>>2]=_i;c[Nd>>2]=Uh;c[Od>>2]=Zh;c[Pd>>2]=aj;c[Qd>>2]=6;if((c[(c[Id>>2]|0)+20>>2]|0)>>>0<4095)fj=c[(c[Id>>2]|0)+20>>2]|0;else fj=4095;c[Rd>>2]=fj;c[Sd>>2]=c[(c[Hd>>2]|0)+4>>2];c[Td>>2]=(c[Jd>>2]|0)-(c[Sd>>2]|0);c[Ud>>2]=c[(c[Id>>2]|0)+8>>2];c[Vd>>2]=(c[Qd>>2]|0)==3?3:4;c[Wd>>2]=c[(c[Hd>>2]|0)+36>>2];c[Xd>>2]=Sj(c[Jd>>2]|0,c[Ud>>2]|0,c[Qd>>2]|0)|0;c[Yd>>2]=c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2];c[Zd>>2]=c[(c[Hd>>2]|0)+44>>2];c[_d>>2]=(c[(c[Id>>2]|0)+4>>2]|0)-1;c[$d>>2]=(1<<c[_d>>2])-1;c[ae>>2]=0;c[be>>2]=0;c[ce>>2]=c[(c[Hd>>2]|0)+8>>2];c[de>>2]=c[(c[Hd>>2]|0)+12>>2];c[ee>>2]=(c[ce>>2]|0)+(c[de>>2]|0);c[fe>>2]=(c[Sd>>2]|0)+(c[de>>2]|0);if((c[$d>>2]|0)>>>0>=(c[Td>>2]|0)>>>0)gj=0;else gj=(c[Td>>2]|0)-(c[$d>>2]|0)|0;c[ge>>2]=gj;c[he>>2]=c[(c[Hd>>2]|0)+16>>2];c[ie>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2);c[je>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2)+4;c[ke>>2]=(c[Td>>2]|0)+8+1;c[me>>2]=0;c[ne>>2]=1<<c[(c[Id>>2]|0)+12>>2];c[oe>>2]=(c[Pd>>2]|0)-1;c[pe>>2]=3+(c[Nd>>2]|0);c[qe>>2]=c[Nd>>2];while(1){if((c[qe>>2]|0)>>>0>=(c[pe>>2]|0)>>>0){dj=190;break;}aj=c[Md>>2]|0;if((c[qe>>2]|0)==3)hj=(c[aj>>2]|0)-1|0;else hj=c[aj+(c[qe>>2]<<2)>>2]|0;c[re>>2]=hj;c[se>>2]=(c[Td>>2]|0)-(c[re>>2]|0);c[te>>2]=0;if(((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[de>>2]|0)|0)>>>0){aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0;if((aj|0)==(mm((c[Jd>>2]|0)+(0-(c[re>>2]|0))|0,c[Vd>>2]|0)|0)){aj=Tj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[Jd>>2]|0)+(c[Vd>>2]|0)+(0-(c[re>>2]|0))|0,c[Kd>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}else{c[ue>>2]=(c[ce>>2]|0)+(c[se>>2]|0);if((c[Ld>>2]|0?(((c[de>>2]|0)-1-(c[se>>2]|0)|0)>>>0>=3?((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[he>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0,(aj|0)==(mm(c[ue>>2]|0,c[Vd>>2]|0)|0)):0){aj=Uj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[ue>>2]|0)+(c[Vd>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}if((c[te>>2]|0)>>>0>(c[oe>>2]|0)>>>0?(c[oe>>2]=c[te>>2],c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[qe>>2]|0)-(c[Nd>>2]|0),c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[te>>2],c[me>>2]=(c[me>>2]|0)+1,((c[te>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[te>>2]|0)|0)==(c[Kd>>2]|0))|0):0){dj=188;break;}c[qe>>2]=(c[qe>>2]|0)+1;}do{if((dj|0)==188){dj=0;c[Gd>>2]=c[me>>2];}else if((dj|0)==190){dj=0;if(((c[Qd>>2]|0)==3?(c[oe>>2]|0)>>>0<(c[Qd>>2]|0)>>>0:0)?(c[ve>>2]=nm(c[Hd>>2]|0,c[Jd>>2]|0)|0,((c[ve>>2]|0)>>>0>(c[he>>2]|0)>>>0?((c[Td>>2]|0)-(c[ve>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ld>>2]|0?(c[ve>>2]|0)>>>0<(c[de>>2]|0)>>>0:0){c[ye>>2]=(c[ce>>2]|0)+(c[ve>>2]|0);c[we>>2]=Uj(c[Jd>>2]|0,c[ye>>2]|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;}else{c[xe>>2]=(c[Sd>>2]|0)+(c[ve>>2]|0);c[we>>2]=Tj(c[Jd>>2]|0,c[xe>>2]|0,c[Kd>>2]|0)|0;}if((c[we>>2]|0)>>>0>=(c[Qd>>2]|0)>>>0?(c[oe>>2]=c[we>>2],c[c[Od>>2]>>2]=(c[Td>>2]|0)-(c[ve>>2]|0)+2,c[(c[Od>>2]|0)+4>>2]=c[we>>2],c[me>>2]=1,((c[we>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[we>>2]|0)|0)==(c[Kd>>2]|0))|0):0){c[(c[Hd>>2]|0)+24>>2]=(c[Td>>2]|0)+1;c[Gd>>2]=1;break;}}c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2]=c[Td>>2];while(1){aj=c[ne>>2]|0;c[ne>>2]=aj+-1;if(!aj)break;if((c[Yd>>2]|0)>>>0<=(c[he>>2]|0)>>>0)break;c[ze>>2]=(c[Zd>>2]|0)+((c[Yd>>2]&c[$d>>2])<<1<<2);c[Ae>>2]=(c[ae>>2]|0)>>>0<(c[be>>2]|0)>>>0?c[ae>>2]|0:c[be>>2]|0;if(c[Ld>>2]|0?((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0<(c[de>>2]|0)>>>0:0){c[Be>>2]=(c[ce>>2]|0)+(c[Yd>>2]|0);aj=Uj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;if(((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0>=(c[de>>2]|0)>>>0)c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);}else{c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);aj=Tj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;}if((c[Ae>>2]|0)>>>0>(c[oe>>2]|0)>>>0){if((c[Ae>>2]|0)>>>0>((c[ke>>2]|0)-(c[Yd>>2]|0)|0)>>>0)c[ke>>2]=(c[Yd>>2]|0)+(c[Ae>>2]|0);c[oe>>2]=c[Ae>>2];c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[Td>>2]|0)-(c[Yd>>2]|0)+2;c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[Ae>>2];c[me>>2]=(c[me>>2]|0)+1;if((c[Ae>>2]|0)>>>0>4096)break;if(((c[Jd>>2]|0)+(c[Ae>>2]|0)|0)==(c[Kd>>2]|0))break;}aj=c[Yd>>2]|0;if((d[(c[Be>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)<(d[(c[Jd>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)){c[c[ie>>2]>>2]=aj;c[ae>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=215;break;}c[ie>>2]=(c[ze>>2]|0)+4;c[Yd>>2]=c[(c[ze>>2]|0)+4>>2];}else{c[c[je>>2]>>2]=aj;c[be>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=218;break;}c[je>>2]=c[ze>>2];c[Yd>>2]=c[c[ze>>2]>>2];}}if((dj|0)==215){dj=0;c[ie>>2]=le;}else if((dj|0)==218){dj=0;c[je>>2]=le;}c[c[je>>2]>>2]=0;c[c[ie>>2]>>2]=0;c[(c[Hd>>2]|0)+24>>2]=(c[ke>>2]|0)-8;c[Gd>>2]=c[me>>2];}}while(0);c[Ah>>2]=c[Gd>>2];break a;break;}case 5:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[De>>2]=c[Bh>>2];c[Ee>>2]=aj;c[Fe>>2]=Zh;c[Ge>>2]=Uh;c[He>>2]=_i;c[Ie>>2]=Zi;c[Je>>2]=Ph;c[Ke>>2]=Qh;c[Le>>2]=_h;c[Me>>2]=5;if((c[(c[Ee>>2]|0)+20>>2]|0)>>>0<4095)ij=c[(c[Ee>>2]|0)+20>>2]|0;else ij=4095;c[Ne>>2]=ij;c[Oe>>2]=c[(c[De>>2]|0)+4>>2];c[Pe>>2]=(c[Fe>>2]|0)-(c[Oe>>2]|0);c[Qe>>2]=c[(c[Ee>>2]|0)+8>>2];c[Re>>2]=(c[Me>>2]|0)==3?3:4;c[Se>>2]=c[(c[De>>2]|0)+36>>2];c[Te>>2]=Sj(c[Fe>>2]|0,c[Qe>>2]|0,c[Me>>2]|0)|0;c[Ue>>2]=c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2];c[Ve>>2]=c[(c[De>>2]|0)+44>>2];c[We>>2]=(c[(c[Ee>>2]|0)+4>>2]|0)-1;c[Xe>>2]=(1<<c[We>>2])-1;c[Ye>>2]=0;c[Ze>>2]=0;c[_e>>2]=c[(c[De>>2]|0)+8>>2];c[$e>>2]=c[(c[De>>2]|0)+12>>2];c[af>>2]=(c[_e>>2]|0)+(c[$e>>2]|0);c[bf>>2]=(c[Oe>>2]|0)+(c[$e>>2]|0);if((c[Xe>>2]|0)>>>0>=(c[Pe>>2]|0)>>>0)jj=0;else jj=(c[Pe>>2]|0)-(c[Xe>>2]|0)|0;c[cf>>2]=jj;c[df>>2]=c[(c[De>>2]|0)+16>>2];c[ef>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2);c[ff>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2)+4;c[gf>>2]=(c[Pe>>2]|0)+8+1;c[jf>>2]=0;c[kf>>2]=1<<c[(c[Ee>>2]|0)+12>>2];c[lf>>2]=(c[Le>>2]|0)-1;c[mf>>2]=3+(c[Je>>2]|0);c[nf>>2]=c[Je>>2];while(1){if((c[nf>>2]|0)>>>0>=(c[mf>>2]|0)>>>0){dj=137;break;}_h=c[Ie>>2]|0;if((c[nf>>2]|0)==3)kj=(c[_h>>2]|0)-1|0;else kj=c[_h+(c[nf>>2]<<2)>>2]|0;c[of>>2]=kj;c[pf>>2]=(c[Pe>>2]|0)-(c[of>>2]|0);c[qf>>2]=0;if(((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[$e>>2]|0)|0)>>>0){_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0;if((_h|0)==(mm((c[Fe>>2]|0)+(0-(c[of>>2]|0))|0,c[Re>>2]|0)|0)){_h=Tj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[Fe>>2]|0)+(c[Re>>2]|0)+(0-(c[of>>2]|0))|0,c[Ge>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}else{c[rf>>2]=(c[_e>>2]|0)+(c[pf>>2]|0);if((c[He>>2]|0?(((c[$e>>2]|0)-1-(c[pf>>2]|0)|0)>>>0>=3?((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[df>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0,(_h|0)==(mm(c[rf>>2]|0,c[Re>>2]|0)|0)):0){_h=Uj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[rf>>2]|0)+(c[Re>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}if((c[qf>>2]|0)>>>0>(c[lf>>2]|0)>>>0?(c[lf>>2]=c[qf>>2],c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[nf>>2]|0)-(c[Je>>2]|0),c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[qf>>2],c[jf>>2]=(c[jf>>2]|0)+1,((c[qf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[qf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){dj=135;break;}c[nf>>2]=(c[nf>>2]|0)+1;}do{if((dj|0)==135){dj=0;c[Ce>>2]=c[jf>>2];}else if((dj|0)==137){dj=0;if(((c[Me>>2]|0)==3?(c[lf>>2]|0)>>>0<(c[Me>>2]|0)>>>0:0)?(c[sf>>2]=nm(c[De>>2]|0,c[Fe>>2]|0)|0,((c[sf>>2]|0)>>>0>(c[df>>2]|0)>>>0?((c[Pe>>2]|0)-(c[sf>>2]|0)|0)>>>0<262144:0)|0):0){if(c[He>>2]|0?(c[sf>>2]|0)>>>0<(c[$e>>2]|0)>>>0:0){c[vf>>2]=(c[_e>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Uj(c[Fe>>2]|0,c[vf>>2]|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;}else{c[uf>>2]=(c[Oe>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Tj(c[Fe>>2]|0,c[uf>>2]|0,c[Ge>>2]|0)|0;}if((c[tf>>2]|0)>>>0>=(c[Me>>2]|0)>>>0?(c[lf>>2]=c[tf>>2],c[c[Ke>>2]>>2]=(c[Pe>>2]|0)-(c[sf>>2]|0)+2,c[(c[Ke>>2]|0)+4>>2]=c[tf>>2],c[jf>>2]=1,((c[tf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[tf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){c[(c[De>>2]|0)+24>>2]=(c[Pe>>2]|0)+1;c[Ce>>2]=1;break;}}c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2]=c[Pe>>2];while(1){_h=c[kf>>2]|0;c[kf>>2]=_h+-1;if(!_h)break;if((c[Ue>>2]|0)>>>0<=(c[df>>2]|0)>>>0)break;c[wf>>2]=(c[Ve>>2]|0)+((c[Ue>>2]&c[Xe>>2])<<1<<2);c[xf>>2]=(c[Ye>>2]|0)>>>0<(c[Ze>>2]|0)>>>0?c[Ye>>2]|0:c[Ze>>2]|0;if(c[He>>2]|0?((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0<(c[$e>>2]|0)>>>0:0){c[yf>>2]=(c[_e>>2]|0)+(c[Ue>>2]|0);_h=Uj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;if(((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0>=(c[$e>>2]|0)>>>0)c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);}else{c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);_h=Tj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;}if((c[xf>>2]|0)>>>0>(c[lf>>2]|0)>>>0){if((c[xf>>2]|0)>>>0>((c[gf>>2]|0)-(c[Ue>>2]|0)|0)>>>0)c[gf>>2]=(c[Ue>>2]|0)+(c[xf>>2]|0);c[lf>>2]=c[xf>>2];c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[Pe>>2]|0)-(c[Ue>>2]|0)+2;c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[xf>>2];c[jf>>2]=(c[jf>>2]|0)+1;if((c[xf>>2]|0)>>>0>4096)break;if(((c[Fe>>2]|0)+(c[xf>>2]|0)|0)==(c[Ge>>2]|0))break;}_h=c[Ue>>2]|0;if((d[(c[yf>>2]|0)+(c[xf>>2]|0)>>0]|0|0)<(d[(c[Fe>>2]|0)+(c[xf>>2]|0)>>0]|0|0)){c[c[ef>>2]>>2]=_h;c[Ye>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=162;break;}c[ef>>2]=(c[wf>>2]|0)+4;c[Ue>>2]=c[(c[wf>>2]|0)+4>>2];}else{c[c[ff>>2]>>2]=_h;c[Ze>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=165;break;}c[ff>>2]=c[wf>>2];c[Ue>>2]=c[c[wf>>2]>>2];}}if((dj|0)==162){dj=0;c[ef>>2]=hf;}else if((dj|0)==165){dj=0;c[ff>>2]=hf;}c[c[ff>>2]>>2]=0;c[c[ef>>2]>>2]=0;c[(c[De>>2]|0)+24>>2]=(c[gf>>2]|0)-8;c[Ce>>2]=c[jf>>2];}}while(0);c[Ah>>2]=c[Ce>>2];break a;break;}default:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Af>>2]=c[Bh>>2];c[Bf>>2]=_h;c[Cf>>2]=Qh;c[Df>>2]=Ph;c[Ef>>2]=Zi;c[Ff>>2]=_i;c[Gf>>2]=Uh;c[Hf>>2]=Zh;c[If>>2]=aj;c[Jf>>2]=4;if((c[(c[Bf>>2]|0)+20>>2]|0)>>>0<4095)lj=c[(c[Bf>>2]|0)+20>>2]|0;else lj=4095;c[Kf>>2]=lj;c[Lf>>2]=c[(c[Af>>2]|0)+4>>2];c[Mf>>2]=(c[Cf>>2]|0)-(c[Lf>>2]|0);c[Nf>>2]=c[(c[Bf>>2]|0)+8>>2];c[Of>>2]=(c[Jf>>2]|0)==3?3:4;c[Pf>>2]=c[(c[Af>>2]|0)+36>>2];c[Qf>>2]=Sj(c[Cf>>2]|0,c[Nf>>2]|0,c[Jf>>2]|0)|0;c[Rf>>2]=c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2];c[Sf>>2]=c[(c[Af>>2]|0)+44>>2];c[Tf>>2]=(c[(c[Bf>>2]|0)+4>>2]|0)-1;c[Uf>>2]=(1<<c[Tf>>2])-1;c[Vf>>2]=0;c[Wf>>2]=0;c[Xf>>2]=c[(c[Af>>2]|0)+8>>2];c[Yf>>2]=c[(c[Af>>2]|0)+12>>2];c[Zf>>2]=(c[Xf>>2]|0)+(c[Yf>>2]|0);c[_f>>2]=(c[Lf>>2]|0)+(c[Yf>>2]|0);if((c[Uf>>2]|0)>>>0>=(c[Mf>>2]|0)>>>0)mj=0;else mj=(c[Mf>>2]|0)-(c[Uf>>2]|0)|0;c[$f>>2]=mj;c[ag>>2]=c[(c[Af>>2]|0)+16>>2];c[bg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2);c[cg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2)+4;c[dg>>2]=(c[Mf>>2]|0)+8+1;c[fg>>2]=0;c[gg>>2]=1<<c[(c[Bf>>2]|0)+12>>2];c[hg>>2]=(c[If>>2]|0)-1;c[ig>>2]=3+(c[Gf>>2]|0);c[jg>>2]=c[Gf>>2];while(1){if((c[jg>>2]|0)>>>0>=(c[ig>>2]|0)>>>0){dj=84;break;}aj=c[Ff>>2]|0;if((c[jg>>2]|0)==3)nj=(c[aj>>2]|0)-1|0;else nj=c[aj+(c[jg>>2]<<2)>>2]|0;c[kg>>2]=nj;c[lg>>2]=(c[Mf>>2]|0)-(c[kg>>2]|0);c[mg>>2]=0;if(((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[Yf>>2]|0)|0)>>>0){aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0;if((aj|0)==(mm((c[Cf>>2]|0)+(0-(c[kg>>2]|0))|0,c[Of>>2]|0)|0)){aj=Tj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[Cf>>2]|0)+(c[Of>>2]|0)+(0-(c[kg>>2]|0))|0,c[Df>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}else{c[ng>>2]=(c[Xf>>2]|0)+(c[lg>>2]|0);if((c[Ef>>2]|0?(((c[Yf>>2]|0)-1-(c[lg>>2]|0)|0)>>>0>=3?((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[ag>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0,(aj|0)==(mm(c[ng>>2]|0,c[Of>>2]|0)|0)):0){aj=Uj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[ng>>2]|0)+(c[Of>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}if((c[mg>>2]|0)>>>0>(c[hg>>2]|0)>>>0?(c[hg>>2]=c[mg>>2],c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[jg>>2]|0)-(c[Gf>>2]|0),c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[mg>>2],c[fg>>2]=(c[fg>>2]|0)+1,((c[mg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[mg>>2]|0)|0)==(c[Df>>2]|0))|0):0){dj=82;break;}c[jg>>2]=(c[jg>>2]|0)+1;}do{if((dj|0)==82){dj=0;c[zf>>2]=c[fg>>2];}else if((dj|0)==84){dj=0;if(((c[Jf>>2]|0)==3?(c[hg>>2]|0)>>>0<(c[Jf>>2]|0)>>>0:0)?(c[og>>2]=nm(c[Af>>2]|0,c[Cf>>2]|0)|0,((c[og>>2]|0)>>>0>(c[ag>>2]|0)>>>0?((c[Mf>>2]|0)-(c[og>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ef>>2]|0?(c[og>>2]|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[rg>>2]=(c[Xf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Uj(c[Cf>>2]|0,c[rg>>2]|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;}else{c[qg>>2]=(c[Lf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Tj(c[Cf>>2]|0,c[qg>>2]|0,c[Df>>2]|0)|0;}if((c[pg>>2]|0)>>>0>=(c[Jf>>2]|0)>>>0?(c[hg>>2]=c[pg>>2],c[c[Hf>>2]>>2]=(c[Mf>>2]|0)-(c[og>>2]|0)+2,c[(c[Hf>>2]|0)+4>>2]=c[pg>>2],c[fg>>2]=1,((c[pg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[pg>>2]|0)|0)==(c[Df>>2]|0))|0):0){c[(c[Af>>2]|0)+24>>2]=(c[Mf>>2]|0)+1;c[zf>>2]=1;break;}}c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2]=c[Mf>>2];while(1){aj=c[gg>>2]|0;c[gg>>2]=aj+-1;if(!aj)break;if((c[Rf>>2]|0)>>>0<=(c[ag>>2]|0)>>>0)break;c[sg>>2]=(c[Sf>>2]|0)+((c[Rf>>2]&c[Uf>>2])<<1<<2);c[tg>>2]=(c[Vf>>2]|0)>>>0<(c[Wf>>2]|0)>>>0?c[Vf>>2]|0:c[Wf>>2]|0;if(c[Ef>>2]|0?((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[ug>>2]=(c[Xf>>2]|0)+(c[Rf>>2]|0);aj=Uj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;if(((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0>=(c[Yf>>2]|0)>>>0)c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);}else{c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);aj=Tj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;}if((c[tg>>2]|0)>>>0>(c[hg>>2]|0)>>>0){if((c[tg>>2]|0)>>>0>((c[dg>>2]|0)-(c[Rf>>2]|0)|0)>>>0)c[dg>>2]=(c[Rf>>2]|0)+(c[tg>>2]|0);c[hg>>2]=c[tg>>2];c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[Mf>>2]|0)-(c[Rf>>2]|0)+2;c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[tg>>2];c[fg>>2]=(c[fg>>2]|0)+1;if((c[tg>>2]|0)>>>0>4096)break;if(((c[Cf>>2]|0)+(c[tg>>2]|0)|0)==(c[Df>>2]|0))break;}aj=c[Rf>>2]|0;if((d[(c[ug>>2]|0)+(c[tg>>2]|0)>>0]|0|0)<(d[(c[Cf>>2]|0)+(c[tg>>2]|0)>>0]|0|0)){c[c[bg>>2]>>2]=aj;c[Vf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=109;break;}c[bg>>2]=(c[sg>>2]|0)+4;c[Rf>>2]=c[(c[sg>>2]|0)+4>>2];}else{c[c[cg>>2]>>2]=aj;c[Wf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=112;break;}c[cg>>2]=c[sg>>2];c[Rf>>2]=c[c[sg>>2]>>2];}}if((dj|0)==109){dj=0;c[bg>>2]=eg;}else if((dj|0)==112){dj=0;c[cg>>2]=eg;}c[c[cg>>2]>>2]=0;c[c[bg>>2]>>2]=0;c[(c[Af>>2]|0)+24>>2]=(c[dg>>2]|0)-8;c[zf>>2]=c[fg>>2];}}while(0);c[Ah>>2]=c[zf>>2];break a;}}}}while(0);c[ki>>2]=c[Ah>>2];if(!(c[ki>>2]|0)){c[Vh>>2]=(c[Vh>>2]|0)+1;continue;}c[li>>2]=0;while(1){if((c[li>>2]|0)>>>0>=3)break;c[(c[bi>>2]|0)+16+(c[li>>2]<<2)>>2]=c[(c[Nh>>2]|0)+(c[li>>2]<<2)>>2];c[li>>2]=(c[li>>2]|0)+1;}c[(c[bi>>2]|0)+8>>2]=1;c[(c[bi>>2]|0)+12>>2]=c[ii>>2];c[mi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)+4>>2];do{if((c[mi>>2]|0)>>>0<=(c[$h>>2]|0)>>>0){c[ni>>2]=om(di,c[Wh>>2]|0,c[ii>>2]|0,c[Th>>2]|0)|0;c[oi>>2]=0;while(1){if((c[oi>>2]|0)>>>0>=(c[ai>>2]|0)>>>0)break;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=1073741824;c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=0;while(1){if((c[pi>>2]|0)>>>0>=(c[ki>>2]|0)>>>0)break;c[qi>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)>>2];c[ri>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)+4>>2];pm(si,c[Nh>>2]|0,c[qi>>2]|0,c[ji>>2]|0);while(1){if((c[oi>>2]|0)>>>0>(c[ri>>2]|0)>>>0)break;aj=c[ni>>2]|0;Zh=c[oi>>2]|0;Uh=c[Th>>2]|0;_i=c[Rh>>2]|0;c[yd>>2]=c[qi>>2];c[zd>>2]=Zh;c[Ad>>2]=Uh;c[Bd>>2]=_i;c[Dd>>2]=qm((c[yd>>2]|0)+1|0)|0;c[Ed>>2]=(c[zd>>2]|0)-3;if(c[(c[Ad>>2]|0)+56>>2]|0){_i=(qm((c[Ed>>2]|0)+1|0)|0)+16|0;c[xd>>2]=_i+(c[Dd>>2]|0);}else{_i=(c[Dd>>2]|0)+(c[(c[Ad>>2]|0)+52>>2]|0)|0;c[Cd>>2]=_i-(qm((c[(c[(c[Ad>>2]|0)+12>>2]|0)+(c[Dd>>2]<<2)>>2]|0)+1|0)|0);if((c[Bd>>2]|0)<2&(c[Dd>>2]|0)>>>0>=20)c[Cd>>2]=(c[Cd>>2]|0)+((c[Dd>>2]|0)-19<<1);c[Fd>>2]=rm(c[Ed>>2]|0)|0;_i=(c[5840+(c[Fd>>2]<<2)>>2]|0)+(c[(c[Ad>>2]|0)+48>>2]|0)|0;Uh=_i-(qm((c[(c[(c[Ad>>2]|0)+8>>2]|0)+(c[Fd>>2]<<2)>>2]|0)+1|0)|0)|0;c[Cd>>2]=(c[Cd>>2]|0)+Uh;c[xd>>2]=c[Cd>>2];}c[ti>>2]=aj+(c[xd>>2]|0);c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=c[oi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+4>>2]=c[qi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+12>>2]=c[ii>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=c[ti>>2];aj=(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+16|0;c[aj>>2]=c[si>>2];c[aj+4>>2]=c[si+4>>2];c[aj+8>>2]=c[si+8>>2];c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=(c[pi>>2]|0)+1;}c[fi>>2]=(c[oi>>2]|0)-1;c[ei>>2]=1;b:while(1){if((c[ei>>2]|0)>>>0>(c[fi>>2]|0)>>>0){dj=504;break;}c[ui>>2]=(c[Vh>>2]|0)+(c[ei>>2]|0);if((c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+8>>2]|0)==1)oj=(c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+12>>2]|0)+1|0;else oj=1;c[vi>>2]=oj;if((c[ei>>2]|0)>>>0>(c[vi>>2]|0)>>>0){aj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[vi>>2]|0)|0)*28|0)>>2]|0;c[wi>>2]=aj+(sm((c[ui>>2]|0)+(0-(c[vi>>2]|0))|0,c[vi>>2]|0,c[Th>>2]|0)|0);}else c[wi>>2]=tm(di,c[Wh>>2]|0,c[vi>>2]|0,c[Th>>2]|0)|0;if((c[wi>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0)){c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+4>>2]=0;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]=c[vi>>2];c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]=c[wi>>2];aj=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Uh=(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+16|0;c[aj>>2]=c[Uh>>2];c[aj+4>>2]=c[Uh+4>>2];c[aj+8>>2]=c[Uh+8>>2];}c:do{if((c[ui>>2]|0)>>>0<=(c[Yh>>2]|0)>>>0){if((c[ei>>2]|0)==(c[fi>>2]|0)){dj=504;break b;}if((c[Rh>>2]|0)==0?(c[(c[bi>>2]|0)+(((c[ei>>2]|0)+1|0)*28|0)>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0):0)break;c[xi>>2]=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)!=1&1;if((c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)==1)pj=c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]|0;else pj=0;c[yi>>2]=pj;if((c[ei>>2]|0)>>>0>(c[yi>>2]|0)>>>0)qj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[yi>>2]|0)|0)*28|0)>>2]|0;else qj=0;c[zi>>2]=qj;Uh=c[zi>>2]|0;c[Ai>>2]=Uh+(um((c[ui>>2]|0)+(0-(c[yi>>2]|0))|0,c[yi>>2]|0,c[Th>>2]|0)|0);Uh=c[Oh>>2]|0;aj=c[ui>>2]|0;_i=c[Xh>>2]|0;Zh=c[Sh>>2]|0;Zi=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Ph=c[xi>>2]|0;Qh=c[ci>>2]|0;_h=c[ai>>2]|0;c[nd>>2]=c[Lh>>2];c[od>>2]=Uh;c[pd>>2]=aj;c[qd>>2]=_i;c[rd>>2]=Zh;c[sd>>2]=Zi;c[td>>2]=Ph;c[ud>>2]=Qh;c[vd>>2]=_h;c[wd>>2]=c[(c[od>>2]|0)+16>>2];d:do{if((c[pd>>2]|0)>>>0<((c[(c[nd>>2]|0)+4>>2]|0)+(c[(c[nd>>2]|0)+24>>2]|0)|0)>>>0)c[md>>2]=0;else{_h=c[od>>2]|0;Qh=c[pd>>2]|0;Ph=c[qd>>2]|0;Zi=c[wd>>2]|0;Zh=c[rd>>2]|0;c[dd>>2]=c[nd>>2];c[ed>>2]=_h;c[fd>>2]=Qh;c[gd>>2]=Ph;c[hd>>2]=Zi;c[id>>2]=Zh;c[jd>>2]=c[(c[dd>>2]|0)+4>>2];c[kd>>2]=(c[fd>>2]|0)-(c[jd>>2]|0);c[ld>>2]=c[(c[dd>>2]|0)+24>>2];while(1){if((c[ld>>2]|0)>>>0>=(c[kd>>2]|0)>>>0)break;Zh=Rj(c[dd>>2]|0,c[ed>>2]|0,(c[jd>>2]|0)+(c[ld>>2]|0)|0,c[gd>>2]|0,c[hd>>2]|0,c[id>>2]|0)|0;c[ld>>2]=(c[ld>>2]|0)+Zh;}c[(c[dd>>2]|0)+24>>2]=c[kd>>2];switch(c[wd>>2]|0){case 3:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[ic>>2]=c[nd>>2];c[jc>>2]=Zh;c[kc>>2]=Zi;c[lc>>2]=Ph;c[mc>>2]=Qh;c[nc>>2]=_h;c[oc>>2]=_i;c[pc>>2]=aj;c[qc>>2]=Uh;c[rc>>2]=3;if((c[(c[jc>>2]|0)+20>>2]|0)>>>0<4095)rj=c[(c[jc>>2]|0)+20>>2]|0;else rj=4095;c[sc>>2]=rj;c[tc>>2]=c[(c[ic>>2]|0)+4>>2];c[uc>>2]=(c[kc>>2]|0)-(c[tc>>2]|0);c[vc>>2]=c[(c[jc>>2]|0)+8>>2];c[wc>>2]=(c[rc>>2]|0)==3?3:4;c[xc>>2]=c[(c[ic>>2]|0)+36>>2];c[yc>>2]=Sj(c[kc>>2]|0,c[vc>>2]|0,c[rc>>2]|0)|0;c[zc>>2]=c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2];c[Ac>>2]=c[(c[ic>>2]|0)+44>>2];c[Bc>>2]=(c[(c[jc>>2]|0)+4>>2]|0)-1;c[Cc>>2]=(1<<c[Bc>>2])-1;c[Dc>>2]=0;c[Ec>>2]=0;c[Fc>>2]=c[(c[ic>>2]|0)+8>>2];c[Gc>>2]=c[(c[ic>>2]|0)+12>>2];c[Hc>>2]=(c[Fc>>2]|0)+(c[Gc>>2]|0);c[Ic>>2]=(c[tc>>2]|0)+(c[Gc>>2]|0);if((c[Cc>>2]|0)>>>0>=(c[uc>>2]|0)>>>0)sj=0;else sj=(c[uc>>2]|0)-(c[Cc>>2]|0)|0;c[Jc>>2]=sj;c[Kc>>2]=c[(c[ic>>2]|0)+16>>2];c[Lc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2);c[Mc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2)+4;c[Nc>>2]=(c[uc>>2]|0)+8+1;c[Pc>>2]=0;c[Qc>>2]=1<<c[(c[jc>>2]|0)+12>>2];c[Rc>>2]=(c[qc>>2]|0)-1;c[Sc>>2]=3+(c[oc>>2]|0);c[Tc>>2]=c[oc>>2];while(1){if((c[Tc>>2]|0)>>>0>=(c[Sc>>2]|0)>>>0){dj=287;break;}Uh=c[nc>>2]|0;if((c[Tc>>2]|0)==3)tj=(c[Uh>>2]|0)-1|0;else tj=c[Uh+(c[Tc>>2]<<2)>>2]|0;c[Uc>>2]=tj;c[Vc>>2]=(c[uc>>2]|0)-(c[Uc>>2]|0);c[Wc>>2]=0;do{if(((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Gc>>2]|0)|0)>>>0){Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm((c[kc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[wc>>2]|0)|0))break;Uh=Tj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[kc>>2]|0)+(c[wc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[lc>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}else{c[Xc>>2]=(c[Fc>>2]|0)+(c[Vc>>2]|0);if(!(c[mc>>2]|0))break;if(!((((c[Gc>>2]|0)-1-(c[Vc>>2]|0)|0)>>>0>=3?((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Kc>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm(c[Xc>>2]|0,c[wc>>2]|0)|0))break;Uh=Uj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[Xc>>2]|0)+(c[wc>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}}while(0);if((c[Wc>>2]|0)>>>0>(c[Rc>>2]|0)>>>0?(c[Rc>>2]=c[Wc>>2],c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[Tc>>2]|0)-(c[oc>>2]|0),c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[Wc>>2],c[Pc>>2]=(c[Pc>>2]|0)+1,((c[Wc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Wc>>2]|0)|0)==(c[lc>>2]|0))|0):0){dj=285;break;}c[Tc>>2]=(c[Tc>>2]|0)+1;}e:do{if((dj|0)==285){dj=0;c[hc>>2]=c[Pc>>2];}else if((dj|0)==287){dj=0;do{if((c[rc>>2]|0)==3){if((c[Rc>>2]|0)>>>0>=(c[rc>>2]|0)>>>0)break;c[Yc>>2]=nm(c[ic>>2]|0,c[kc>>2]|0)|0;if(!(((c[Yc>>2]|0)>>>0>(c[Kc>>2]|0)>>>0?((c[uc>>2]|0)-(c[Yc>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[mc>>2]|0){if((c[Yc>>2]|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=292;break;}c[$c>>2]=(c[Fc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Uj(c[kc>>2]|0,c[$c>>2]|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;}else dj=292;}while(0);if((dj|0)==292){dj=0;c[_c>>2]=(c[tc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Tj(c[kc>>2]|0,c[_c>>2]|0,c[lc>>2]|0)|0;}if((c[Zc>>2]|0)>>>0<(c[rc>>2]|0)>>>0)break;c[Rc>>2]=c[Zc>>2];c[c[pc>>2]>>2]=(c[uc>>2]|0)-(c[Yc>>2]|0)+2;c[(c[pc>>2]|0)+4>>2]=c[Zc>>2];c[Pc>>2]=1;if(!(((c[Zc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Zc>>2]|0)|0)==(c[lc>>2]|0))|0))break;c[(c[ic>>2]|0)+24>>2]=(c[uc>>2]|0)+1;c[hc>>2]=1;break e;}}while(0);c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2]=c[uc>>2];while(1){Uh=c[Qc>>2]|0;c[Qc>>2]=Uh+-1;if(!Uh)break;if((c[zc>>2]|0)>>>0<=(c[Kc>>2]|0)>>>0)break;c[ad>>2]=(c[Ac>>2]|0)+((c[zc>>2]&c[Cc>>2])<<1<<2);c[bd>>2]=(c[Dc>>2]|0)>>>0<(c[Ec>>2]|0)>>>0?c[Dc>>2]|0:c[Ec>>2]|0;do{if(c[mc>>2]|0){if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=302;break;}c[cd>>2]=(c[Fc>>2]|0)+(c[zc>>2]|0);Uh=Uj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0<(c[Gc>>2]|0)>>>0)break;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);}else dj=302;}while(0);if((dj|0)==302){dj=0;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);Uh=Tj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;}if((c[bd>>2]|0)>>>0>(c[Rc>>2]|0)>>>0){if((c[bd>>2]|0)>>>0>((c[Nc>>2]|0)-(c[zc>>2]|0)|0)>>>0)c[Nc>>2]=(c[zc>>2]|0)+(c[bd>>2]|0);c[Rc>>2]=c[bd>>2];c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[uc>>2]|0)-(c[zc>>2]|0)+2;c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[bd>>2];c[Pc>>2]=(c[Pc>>2]|0)+1;if((c[bd>>2]|0)>>>0>4096)break;if(((c[kc>>2]|0)+(c[bd>>2]|0)|0)==(c[lc>>2]|0))break;}Uh=c[zc>>2]|0;if((d[(c[cd>>2]|0)+(c[bd>>2]|0)>>0]|0|0)<(d[(c[kc>>2]|0)+(c[bd>>2]|0)>>0]|0|0)){c[c[Lc>>2]>>2]=Uh;c[Dc>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=312;break;}c[Lc>>2]=(c[ad>>2]|0)+4;c[zc>>2]=c[(c[ad>>2]|0)+4>>2];}else{c[c[Mc>>2]>>2]=Uh;c[Ec>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=315;break;}c[Mc>>2]=c[ad>>2];c[zc>>2]=c[c[ad>>2]>>2];}}if((dj|0)==312){dj=0;c[Lc>>2]=Oc;}else if((dj|0)==315){dj=0;c[Mc>>2]=Oc;}c[c[Mc>>2]>>2]=0;c[c[Lc>>2]>>2]=0;c[(c[ic>>2]|0)+24>>2]=(c[Nc>>2]|0)-8;c[hc>>2]=c[Pc>>2];}}while(0);c[md>>2]=c[hc>>2];break d;break;}case 7:case 6:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[u>>2]=c[nd>>2];c[v>>2]=Uh;c[w>>2]=aj;c[x>>2]=_i;c[y>>2]=_h;c[z>>2]=Qh;c[A>>2]=Ph;c[B>>2]=Zi;c[C>>2]=Zh;c[D>>2]=6;if((c[(c[v>>2]|0)+20>>2]|0)>>>0<4095)uj=c[(c[v>>2]|0)+20>>2]|0;else uj=4095;c[E>>2]=uj;c[F>>2]=c[(c[u>>2]|0)+4>>2];c[G>>2]=(c[w>>2]|0)-(c[F>>2]|0);c[H>>2]=c[(c[v>>2]|0)+8>>2];c[I>>2]=(c[D>>2]|0)==3?3:4;c[J>>2]=c[(c[u>>2]|0)+36>>2];c[K>>2]=Sj(c[w>>2]|0,c[H>>2]|0,c[D>>2]|0)|0;c[L>>2]=c[(c[J>>2]|0)+(c[K>>2]<<2)>>2];c[M>>2]=c[(c[u>>2]|0)+44>>2];c[N>>2]=(c[(c[v>>2]|0)+4>>2]|0)-1;c[O>>2]=(1<<c[N>>2])-1;c[P>>2]=0;c[Q>>2]=0;c[R>>2]=c[(c[u>>2]|0)+8>>2];c[S>>2]=c[(c[u>>2]|0)+12>>2];c[T>>2]=(c[R>>2]|0)+(c[S>>2]|0);c[U>>2]=(c[F>>2]|0)+(c[S>>2]|0);if((c[O>>2]|0)>>>0>=(c[G>>2]|0)>>>0)vj=0;else vj=(c[G>>2]|0)-(c[O>>2]|0)|0;c[V>>2]=vj;c[W>>2]=c[(c[u>>2]|0)+16>>2];c[X>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2);c[Y>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2)+4;c[Z>>2]=(c[G>>2]|0)+8+1;c[$>>2]=0;c[aa>>2]=1<<c[(c[v>>2]|0)+12>>2];c[ba>>2]=(c[C>>2]|0)-1;c[ca>>2]=3+(c[A>>2]|0);c[da>>2]=c[A>>2];while(1){if((c[da>>2]|0)>>>0>=(c[ca>>2]|0)>>>0){dj=446;break;}Zh=c[z>>2]|0;if((c[da>>2]|0)==3)wj=(c[Zh>>2]|0)-1|0;else wj=c[Zh+(c[da>>2]<<2)>>2]|0;c[ea>>2]=wj;c[fa>>2]=(c[G>>2]|0)-(c[ea>>2]|0);c[ga>>2]=0;do{if(((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[S>>2]|0)|0)>>>0){Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm((c[w>>2]|0)+(0-(c[ea>>2]|0))|0,c[I>>2]|0)|0))break;Zh=Tj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[w>>2]|0)+(c[I>>2]|0)+(0-(c[ea>>2]|0))|0,c[x>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}else{c[ha>>2]=(c[R>>2]|0)+(c[fa>>2]|0);if(!(c[y>>2]|0))break;if(!((((c[S>>2]|0)-1-(c[fa>>2]|0)|0)>>>0>=3?((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[W>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm(c[ha>>2]|0,c[I>>2]|0)|0))break;Zh=Uj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[ha>>2]|0)+(c[I>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}}while(0);if((c[ga>>2]|0)>>>0>(c[ba>>2]|0)>>>0?(c[ba>>2]=c[ga>>2],c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[da>>2]|0)-(c[A>>2]|0),c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[ga>>2],c[$>>2]=(c[$>>2]|0)+1,((c[ga>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ga>>2]|0)|0)==(c[x>>2]|0))|0):0){dj=444;break;}c[da>>2]=(c[da>>2]|0)+1;}f:do{if((dj|0)==444){dj=0;c[t>>2]=c[$>>2];}else if((dj|0)==446){dj=0;do{if((c[D>>2]|0)==3){if((c[ba>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break;c[ia>>2]=nm(c[u>>2]|0,c[w>>2]|0)|0;if(!(((c[ia>>2]|0)>>>0>(c[W>>2]|0)>>>0?((c[G>>2]|0)-(c[ia>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[y>>2]|0){if((c[ia>>2]|0)>>>0>=(c[S>>2]|0)>>>0){dj=451;break;}c[la>>2]=(c[R>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Uj(c[w>>2]|0,c[la>>2]|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;}else dj=451;}while(0);if((dj|0)==451){dj=0;c[ka>>2]=(c[F>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Tj(c[w>>2]|0,c[ka>>2]|0,c[x>>2]|0)|0;}if((c[ja>>2]|0)>>>0<(c[D>>2]|0)>>>0)break;c[ba>>2]=c[ja>>2];c[c[B>>2]>>2]=(c[G>>2]|0)-(c[ia>>2]|0)+2;c[(c[B>>2]|0)+4>>2]=c[ja>>2];c[$>>2]=1;if(!(((c[ja>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ja>>2]|0)|0)==(c[x>>2]|0))|0))break;c[(c[u>>2]|0)+24>>2]=(c[G>>2]|0)+1;c[t>>2]=1;break f;}}while(0);c[(c[J>>2]|0)+(c[K>>2]<<2)>>2]=c[G>>2];while(1){Zh=c[aa>>2]|0;c[aa>>2]=Zh+-1;if(!Zh)break;if((c[L>>2]|0)>>>0<=(c[W>>2]|0)>>>0)break;c[ma>>2]=(c[M>>2]|0)+((c[L>>2]&c[O>>2])<<1<<2);c[na>>2]=(c[P>>2]|0)>>>0<(c[Q>>2]|0)>>>0?c[P>>2]|0:c[Q>>2]|0;do{if(c[y>>2]|0){if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0>=(c[S>>2]|0)>>>0){dj=461;break;}c[oa>>2]=(c[R>>2]|0)+(c[L>>2]|0);Zh=Uj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0<(c[S>>2]|0)>>>0)break;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);}else dj=461;}while(0);if((dj|0)==461){dj=0;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);Zh=Tj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;}if((c[na>>2]|0)>>>0>(c[ba>>2]|0)>>>0){if((c[na>>2]|0)>>>0>((c[Z>>2]|0)-(c[L>>2]|0)|0)>>>0)c[Z>>2]=(c[L>>2]|0)+(c[na>>2]|0);c[ba>>2]=c[na>>2];c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[G>>2]|0)-(c[L>>2]|0)+2;c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[na>>2];c[$>>2]=(c[$>>2]|0)+1;if((c[na>>2]|0)>>>0>4096)break;if(((c[w>>2]|0)+(c[na>>2]|0)|0)==(c[x>>2]|0))break;}Zh=c[L>>2]|0;if((d[(c[oa>>2]|0)+(c[na>>2]|0)>>0]|0|0)<(d[(c[w>>2]|0)+(c[na>>2]|0)>>0]|0|0)){c[c[X>>2]>>2]=Zh;c[P>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=471;break;}c[X>>2]=(c[ma>>2]|0)+4;c[L>>2]=c[(c[ma>>2]|0)+4>>2];}else{c[c[Y>>2]>>2]=Zh;c[Q>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=474;break;}c[Y>>2]=c[ma>>2];c[L>>2]=c[c[ma>>2]>>2];}}if((dj|0)==471){dj=0;c[X>>2]=_;}else if((dj|0)==474){dj=0;c[Y>>2]=_;}c[c[Y>>2]>>2]=0;c[c[X>>2]>>2]=0;c[(c[u>>2]|0)+24>>2]=(c[Z>>2]|0)-8;c[t>>2]=c[$>>2];}}while(0);c[md>>2]=c[t>>2];break d;break;}case 5:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[qa>>2]=c[nd>>2];c[ra>>2]=Zh;c[sa>>2]=Zi;c[ta>>2]=Ph;c[ua>>2]=Qh;c[va>>2]=_h;c[wa>>2]=_i;c[xa>>2]=aj;c[ya>>2]=Uh;c[za>>2]=5;if((c[(c[ra>>2]|0)+20>>2]|0)>>>0<4095)xj=c[(c[ra>>2]|0)+20>>2]|0;else xj=4095;c[Aa>>2]=xj;c[Ba>>2]=c[(c[qa>>2]|0)+4>>2];c[Ca>>2]=(c[sa>>2]|0)-(c[Ba>>2]|0);c[Da>>2]=c[(c[ra>>2]|0)+8>>2];c[Ea>>2]=(c[za>>2]|0)==3?3:4;c[Fa>>2]=c[(c[qa>>2]|0)+36>>2];c[Ga>>2]=Sj(c[sa>>2]|0,c[Da>>2]|0,c[za>>2]|0)|0;c[Ha>>2]=c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2];c[Ia>>2]=c[(c[qa>>2]|0)+44>>2];c[Ja>>2]=(c[(c[ra>>2]|0)+4>>2]|0)-1;c[Ka>>2]=(1<<c[Ja>>2])-1;c[La>>2]=0;c[Ma>>2]=0;c[Na>>2]=c[(c[qa>>2]|0)+8>>2];c[Oa>>2]=c[(c[qa>>2]|0)+12>>2];c[Pa>>2]=(c[Na>>2]|0)+(c[Oa>>2]|0);c[Qa>>2]=(c[Ba>>2]|0)+(c[Oa>>2]|0);if((c[Ka>>2]|0)>>>0>=(c[Ca>>2]|0)>>>0)yj=0;else yj=(c[Ca>>2]|0)-(c[Ka>>2]|0)|0;c[Ra>>2]=yj;c[Sa>>2]=c[(c[qa>>2]|0)+16>>2];c[Ta>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2);c[Ua>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2)+4;c[Va>>2]=(c[Ca>>2]|0)+8+1;c[Xa>>2]=0;c[Ya>>2]=1<<c[(c[ra>>2]|0)+12>>2];c[Za>>2]=(c[ya>>2]|0)-1;c[_a>>2]=3+(c[wa>>2]|0);c[$a>>2]=c[wa>>2];while(1){if((c[$a>>2]|0)>>>0>=(c[_a>>2]|0)>>>0){dj=393;break;}Uh=c[va>>2]|0;if((c[$a>>2]|0)==3)zj=(c[Uh>>2]|0)-1|0;else zj=c[Uh+(c[$a>>2]<<2)>>2]|0;c[ab>>2]=zj;c[bb>>2]=(c[Ca>>2]|0)-(c[ab>>2]|0);c[cb>>2]=0;do{if(((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Oa>>2]|0)|0)>>>0){Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm((c[sa>>2]|0)+(0-(c[ab>>2]|0))|0,c[Ea>>2]|0)|0))break;Uh=Tj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[sa>>2]|0)+(c[Ea>>2]|0)+(0-(c[ab>>2]|0))|0,c[ta>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}else{c[db>>2]=(c[Na>>2]|0)+(c[bb>>2]|0);if(!(c[ua>>2]|0))break;if(!((((c[Oa>>2]|0)-1-(c[bb>>2]|0)|0)>>>0>=3?((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Sa>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm(c[db>>2]|0,c[Ea>>2]|0)|0))break;Uh=Uj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[db>>2]|0)+(c[Ea>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}}while(0);if((c[cb>>2]|0)>>>0>(c[Za>>2]|0)>>>0?(c[Za>>2]=c[cb>>2],c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[$a>>2]|0)-(c[wa>>2]|0),c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[cb>>2],c[Xa>>2]=(c[Xa>>2]|0)+1,((c[cb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[cb>>2]|0)|0)==(c[ta>>2]|0))|0):0){dj=391;break;}c[$a>>2]=(c[$a>>2]|0)+1;}g:do{if((dj|0)==391){dj=0;c[pa>>2]=c[Xa>>2];}else if((dj|0)==393){dj=0;do{if((c[za>>2]|0)==3){if((c[Za>>2]|0)>>>0>=(c[za>>2]|0)>>>0)break;c[eb>>2]=nm(c[qa>>2]|0,c[sa>>2]|0)|0;if(!(((c[eb>>2]|0)>>>0>(c[Sa>>2]|0)>>>0?((c[Ca>>2]|0)-(c[eb>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[ua>>2]|0){if((c[eb>>2]|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=398;break;}c[hb>>2]=(c[Na>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Uj(c[sa>>2]|0,c[hb>>2]|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;}else dj=398;}while(0);if((dj|0)==398){dj=0;c[gb>>2]=(c[Ba>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Tj(c[sa>>2]|0,c[gb>>2]|0,c[ta>>2]|0)|0;}if((c[fb>>2]|0)>>>0<(c[za>>2]|0)>>>0)break;c[Za>>2]=c[fb>>2];c[c[xa>>2]>>2]=(c[Ca>>2]|0)-(c[eb>>2]|0)+2;c[(c[xa>>2]|0)+4>>2]=c[fb>>2];c[Xa>>2]=1;if(!(((c[fb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[fb>>2]|0)|0)==(c[ta>>2]|0))|0))break;c[(c[qa>>2]|0)+24>>2]=(c[Ca>>2]|0)+1;c[pa>>2]=1;break g;}}while(0);c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2]=c[Ca>>2];while(1){Uh=c[Ya>>2]|0;c[Ya>>2]=Uh+-1;if(!Uh)break;if((c[Ha>>2]|0)>>>0<=(c[Sa>>2]|0)>>>0)break;c[ib>>2]=(c[Ia>>2]|0)+((c[Ha>>2]&c[Ka>>2])<<1<<2);c[jb>>2]=(c[La>>2]|0)>>>0<(c[Ma>>2]|0)>>>0?c[La>>2]|0:c[Ma>>2]|0;do{if(c[ua>>2]|0){if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=408;break;}c[kb>>2]=(c[Na>>2]|0)+(c[Ha>>2]|0);Uh=Uj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0<(c[Oa>>2]|0)>>>0)break;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);}else dj=408;}while(0);if((dj|0)==408){dj=0;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);Uh=Tj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;}if((c[jb>>2]|0)>>>0>(c[Za>>2]|0)>>>0){if((c[jb>>2]|0)>>>0>((c[Va>>2]|0)-(c[Ha>>2]|0)|0)>>>0)c[Va>>2]=(c[Ha>>2]|0)+(c[jb>>2]|0);c[Za>>2]=c[jb>>2];c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[Ca>>2]|0)-(c[Ha>>2]|0)+2;c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[jb>>2];c[Xa>>2]=(c[Xa>>2]|0)+1;if((c[jb>>2]|0)>>>0>4096)break;if(((c[sa>>2]|0)+(c[jb>>2]|0)|0)==(c[ta>>2]|0))break;}Uh=c[Ha>>2]|0;if((d[(c[kb>>2]|0)+(c[jb>>2]|0)>>0]|0|0)<(d[(c[sa>>2]|0)+(c[jb>>2]|0)>>0]|0|0)){c[c[Ta>>2]>>2]=Uh;c[La>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=418;break;}c[Ta>>2]=(c[ib>>2]|0)+4;c[Ha>>2]=c[(c[ib>>2]|0)+4>>2];}else{c[c[Ua>>2]>>2]=Uh;c[Ma>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=421;break;}c[Ua>>2]=c[ib>>2];c[Ha>>2]=c[c[ib>>2]>>2];}}if((dj|0)==418){dj=0;c[Ta>>2]=Wa;}else if((dj|0)==421){dj=0;c[Ua>>2]=Wa;}c[c[Ua>>2]>>2]=0;c[c[Ta>>2]>>2]=0;c[(c[qa>>2]|0)+24>>2]=(c[Va>>2]|0)-8;c[pa>>2]=c[Xa>>2];}}while(0);c[md>>2]=c[pa>>2];break d;break;}default:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[mb>>2]=c[nd>>2];c[nb>>2]=Uh;c[ob>>2]=aj;c[pb>>2]=_i;c[qb>>2]=_h;c[rb>>2]=Qh;c[sb>>2]=Ph;c[tb>>2]=Zi;c[ub>>2]=Zh;c[vb>>2]=4;if((c[(c[nb>>2]|0)+20>>2]|0)>>>0<4095)Aj=c[(c[nb>>2]|0)+20>>2]|0;else Aj=4095;c[wb>>2]=Aj;c[xb>>2]=c[(c[mb>>2]|0)+4>>2];c[yb>>2]=(c[ob>>2]|0)-(c[xb>>2]|0);c[zb>>2]=c[(c[nb>>2]|0)+8>>2];c[Ab>>2]=(c[vb>>2]|0)==3?3:4;c[Bb>>2]=c[(c[mb>>2]|0)+36>>2];c[Cb>>2]=Sj(c[ob>>2]|0,c[zb>>2]|0,c[vb>>2]|0)|0;c[Db>>2]=c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2];c[Eb>>2]=c[(c[mb>>2]|0)+44>>2];c[Fb>>2]=(c[(c[nb>>2]|0)+4>>2]|0)-1;c[Gb>>2]=(1<<c[Fb>>2])-1;c[Hb>>2]=0;c[Ib>>2]=0;c[Jb>>2]=c[(c[mb>>2]|0)+8>>2];c[Kb>>2]=c[(c[mb>>2]|0)+12>>2];c[Lb>>2]=(c[Jb>>2]|0)+(c[Kb>>2]|0);c[Mb>>2]=(c[xb>>2]|0)+(c[Kb>>2]|0);if((c[Gb>>2]|0)>>>0>=(c[yb>>2]|0)>>>0)Bj=0;else Bj=(c[yb>>2]|0)-(c[Gb>>2]|0)|0;c[Nb>>2]=Bj;c[Ob>>2]=c[(c[mb>>2]|0)+16>>2];c[Pb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2);c[Qb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2)+4;c[Rb>>2]=(c[yb>>2]|0)+8+1;c[Tb>>2]=0;c[Ub>>2]=1<<c[(c[nb>>2]|0)+12>>2];c[Vb>>2]=(c[ub>>2]|0)-1;c[Wb>>2]=3+(c[sb>>2]|0);c[Xb>>2]=c[sb>>2];while(1){if((c[Xb>>2]|0)>>>0>=(c[Wb>>2]|0)>>>0){dj=340;break;}Zh=c[rb>>2]|0;if((c[Xb>>2]|0)==3)Cj=(c[Zh>>2]|0)-1|0;else Cj=c[Zh+(c[Xb>>2]<<2)>>2]|0;c[Yb>>2]=Cj;c[Zb>>2]=(c[yb>>2]|0)-(c[Yb>>2]|0);c[_b>>2]=0;do{if(((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Kb>>2]|0)|0)>>>0){Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm((c[ob>>2]|0)+(0-(c[Yb>>2]|0))|0,c[Ab>>2]|0)|0))break;Zh=Tj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[ob>>2]|0)+(c[Ab>>2]|0)+(0-(c[Yb>>2]|0))|0,c[pb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}else{c[$b>>2]=(c[Jb>>2]|0)+(c[Zb>>2]|0);if(!(c[qb>>2]|0))break;if(!((((c[Kb>>2]|0)-1-(c[Zb>>2]|0)|0)>>>0>=3?((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Ob>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm(c[$b>>2]|0,c[Ab>>2]|0)|0))break;Zh=Uj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[$b>>2]|0)+(c[Ab>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}}while(0);if((c[_b>>2]|0)>>>0>(c[Vb>>2]|0)>>>0?(c[Vb>>2]=c[_b>>2],c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[Xb>>2]|0)-(c[sb>>2]|0),c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[_b>>2],c[Tb>>2]=(c[Tb>>2]|0)+1,((c[_b>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[_b>>2]|0)|0)==(c[pb>>2]|0))|0):0){dj=338;break;}c[Xb>>2]=(c[Xb>>2]|0)+1;}h:do{if((dj|0)==338){dj=0;c[lb>>2]=c[Tb>>2];}else if((dj|0)==340){dj=0;do{if((c[vb>>2]|0)==3){if((c[Vb>>2]|0)>>>0>=(c[vb>>2]|0)>>>0)break;c[ac>>2]=nm(c[mb>>2]|0,c[ob>>2]|0)|0;if(!(((c[ac>>2]|0)>>>0>(c[Ob>>2]|0)>>>0?((c[yb>>2]|0)-(c[ac>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[qb>>2]|0){if((c[ac>>2]|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=345;break;}c[dc>>2]=(c[Jb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Uj(c[ob>>2]|0,c[dc>>2]|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;}else dj=345;}while(0);if((dj|0)==345){dj=0;c[cc>>2]=(c[xb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Tj(c[ob>>2]|0,c[cc>>2]|0,c[pb>>2]|0)|0;}if((c[bc>>2]|0)>>>0<(c[vb>>2]|0)>>>0)break;c[Vb>>2]=c[bc>>2];c[c[tb>>2]>>2]=(c[yb>>2]|0)-(c[ac>>2]|0)+2;c[(c[tb>>2]|0)+4>>2]=c[bc>>2];c[Tb>>2]=1;if(!(((c[bc>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[bc>>2]|0)|0)==(c[pb>>2]|0))|0))break;c[(c[mb>>2]|0)+24>>2]=(c[yb>>2]|0)+1;c[lb>>2]=1;break h;}}while(0);c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2]=c[yb>>2];while(1){Zh=c[Ub>>2]|0;c[Ub>>2]=Zh+-1;if(!Zh)break;if((c[Db>>2]|0)>>>0<=(c[Ob>>2]|0)>>>0)break;c[ec>>2]=(c[Eb>>2]|0)+((c[Db>>2]&c[Gb>>2])<<1<<2);c[fc>>2]=(c[Hb>>2]|0)>>>0<(c[Ib>>2]|0)>>>0?c[Hb>>2]|0:c[Ib>>2]|0;do{if(c[qb>>2]|0){if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=355;break;}c[gc>>2]=(c[Jb>>2]|0)+(c[Db>>2]|0);Zh=Uj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0<(c[Kb>>2]|0)>>>0)break;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);}else dj=355;}while(0);if((dj|0)==355){dj=0;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);Zh=Tj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;}if((c[fc>>2]|0)>>>0>(c[Vb>>2]|0)>>>0){if((c[fc>>2]|0)>>>0>((c[Rb>>2]|0)-(c[Db>>2]|0)|0)>>>0)c[Rb>>2]=(c[Db>>2]|0)+(c[fc>>2]|0);c[Vb>>2]=c[fc>>2];c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[yb>>2]|0)-(c[Db>>2]|0)+2;c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[fc>>2];c[Tb>>2]=(c[Tb>>2]|0)+1;if((c[fc>>2]|0)>>>0>4096)break;if(((c[ob>>2]|0)+(c[fc>>2]|0)|0)==(c[pb>>2]|0))break;}Zh=c[Db>>2]|0;if((d[(c[gc>>2]|0)+(c[fc>>2]|0)>>0]|0|0)<(d[(c[ob>>2]|0)+(c[fc>>2]|0)>>0]|0|0)){c[c[Pb>>2]>>2]=Zh;c[Hb>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=365;break;}c[Pb>>2]=(c[ec>>2]|0)+4;c[Db>>2]=c[(c[ec>>2]|0)+4>>2];}else{c[c[Qb>>2]>>2]=Zh;c[Ib>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=368;break;}c[Qb>>2]=c[ec>>2];c[Db>>2]=c[c[ec>>2]>>2];}}if((dj|0)==365){dj=0;c[Pb>>2]=Sb;}else if((dj|0)==368){dj=0;c[Qb>>2]=Sb;}c[c[Qb>>2]>>2]=0;c[c[Pb>>2]>>2]=0;c[(c[mb>>2]|0)+24>>2]=(c[Rb>>2]|0)-8;c[lb>>2]=c[Tb>>2];}}while(0);c[md>>2]=c[lb>>2];break d;}}}}while(0);c[Bi>>2]=c[md>>2];if(c[Bi>>2]|0){c[Di>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)+4>>2];if(((c[Di>>2]|0)>>>0>(c[$h>>2]|0)>>>0?1:((c[ei>>2]|0)+(c[Di>>2]|0)|0)>>>0>=4096)|0){dj=481;break b;}c[Ci>>2]=0;while(1){if((c[Ci>>2]|0)>>>0>=(c[Bi>>2]|0)>>>0)break c;c[Ei>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)>>2];pm(Fi,(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0,c[Ei>>2]|0,c[xi>>2]|0);c[Gi>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)+4>>2];if((c[Ci>>2]|0)>>>0>0)Dj=(c[(c[ci>>2]|0)+((c[Ci>>2]|0)-1<<3)+4>>2]|0)+1|0;else Dj=c[ai>>2]|0;c[Hi>>2]=Dj;c[Ii>>2]=c[Gi>>2];i:while(1){if((c[Ii>>2]|0)>>>0<(c[Hi>>2]|0)>>>0)break;c[Ji>>2]=(c[ei>>2]|0)+(c[Ii>>2]|0);Zh=c[Ai>>2]|0;Zi=c[Ii>>2]|0;Ph=c[Th>>2]|0;Qh=c[Rh>>2]|0;c[k>>2]=c[Ei>>2];c[m>>2]=Zi;c[n>>2]=Ph;c[o>>2]=Qh;c[q>>2]=qm((c[k>>2]|0)+1|0)|0;c[r>>2]=(c[m>>2]|0)-3;if(c[(c[n>>2]|0)+56>>2]|0){Qh=(qm((c[r>>2]|0)+1|0)|0)+16|0;c[j>>2]=Qh+(c[q>>2]|0);}else{Qh=(c[q>>2]|0)+(c[(c[n>>2]|0)+52>>2]|0)|0;c[p>>2]=Qh-(qm((c[(c[(c[n>>2]|0)+12>>2]|0)+(c[q>>2]<<2)>>2]|0)+1|0)|0);if((c[o>>2]|0)<2&(c[q>>2]|0)>>>0>=20)c[p>>2]=(c[p>>2]|0)+((c[q>>2]|0)-19<<1);c[s>>2]=rm(c[r>>2]|0)|0;Qh=(c[5840+(c[s>>2]<<2)>>2]|0)+(c[(c[n>>2]|0)+48>>2]|0)|0;Ph=Qh-(qm((c[(c[(c[n>>2]|0)+8>>2]|0)+(c[s>>2]<<2)>>2]|0)+1|0)|0)|0;c[p>>2]=(c[p>>2]|0)+Ph;c[j>>2]=c[p>>2];}c[Ki>>2]=Zh+(c[j>>2]|0);do{if((c[Ji>>2]|0)>>>0<=(c[fi>>2]|0)>>>0){if((c[Ki>>2]|0)<(c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]|0)){dj=496;break;}if(!(c[Rh>>2]|0))break i;}else dj=496;}while(0);if((dj|0)==496){dj=0;while(1){if((c[fi>>2]|0)>>>0>=(c[Ji>>2]|0)>>>0)break;c[(c[bi>>2]|0)+(((c[fi>>2]|0)+1|0)*28|0)>>2]=1073741824;c[fi>>2]=(c[fi>>2]|0)+1;}c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+8>>2]=c[Ii>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+4>>2]=c[Ei>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+12>>2]=c[yi>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]=c[Ki>>2];Zh=(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+16|0;c[Zh>>2]=c[Fi>>2];c[Zh+4>>2]=c[Fi+4>>2];c[Zh+8>>2]=c[Fi+8>>2];}c[Ii>>2]=(c[Ii>>2]|0)+-1;}c[Ci>>2]=(c[Ci>>2]|0)+1;}}}}while(0);c[ei>>2]=(c[ei>>2]|0)+1;}if((dj|0)==481){dj=0;c[gi>>2]=c[Di>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)>>2];c[fi>>2]=(c[ei>>2]|0)+1;break;}else if((dj|0)==504){dj=0;c[gi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+8>>2];c[hi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+4>>2];c[ei>>2]=(c[fi>>2]|0)-(c[gi>>2]|0);break;}}else{c[gi>>2]=c[mi>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)>>2];c[ei>>2]=0;c[fi>>2]=1;}}while(0);c[Li>>2]=c[gi>>2];c[Mi>>2]=c[hi>>2];c[Ni>>2]=c[ei>>2];while(1){c[Oi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2];c[Pi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2]=c[Li>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2]=c[Mi>>2];c[Li>>2]=c[Oi>>2];c[Mi>>2]=c[Pi>>2];if((c[Oi>>2]|0)>>>0>(c[Ni>>2]|0)>>>0)break;c[Ni>>2]=(c[Ni>>2]|0)-(c[Oi>>2]|0);}c[Qi>>2]=0;while(1){if((c[Qi>>2]|0)>>>0>=(c[fi>>2]|0)>>>0)break;c[Ri>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[Si>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+8>>2];c[Ti>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+4>>2];if((c[Si>>2]|0)==1){c[Vh>>2]=(c[Vh>>2]|0)+1;c[Qi>>2]=(c[Qi>>2]|0)+1;continue;}c[Qi>>2]=(c[Qi>>2]|0)+(c[Si>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+(c[Si>>2]|0);if((c[Ti>>2]|0)>>>0<3){c[Ui>>2]=(c[Ti>>2]|0)+((c[Ri>>2]|0)==0&1);if(c[Ui>>2]|0){Zh=c[Nh>>2]|0;if((c[Ui>>2]|0)==3)Ej=(c[Zh>>2]|0)-1|0;else Ej=c[Zh+(c[Ui>>2]<<2)>>2]|0;c[Vi>>2]=Ej;if((c[Ui>>2]|0)>>>0>=2)c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=c[Vi>>2];}}else{c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=(c[Ti>>2]|0)-2;}vm(c[Th>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,c[Si>>2]|0);wm(c[Mh>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,(c[Si>>2]|0)-3|0);c[Wh>>2]=c[Vh>>2];}xm(c[Th>>2]|0);}l=i;return(c[Xh>>2]|0)-(c[Wh>>2]|0)|0;}function cm(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,gg=0,hg=0,ig=0,jg=0,kg=0,lg=0,mg=0,ng=0,og=0,pg=0,qg=0,rg=0,sg=0,tg=0,ug=0,vg=0,wg=0,xg=0,yg=0,zg=0,Ag=0,Bg=0,Cg=0,Dg=0,Eg=0,Fg=0,Gg=0,Hg=0,Ig=0,Jg=0,Kg=0,Lg=0,Mg=0,Ng=0,Og=0,Pg=0,Qg=0,Rg=0,Sg=0,Tg=0,Ug=0,Vg=0,Wg=0,Xg=0,Yg=0,Zg=0,_g=0,$g=0,ah=0,bh=0,ch=0,dh=0,eh=0,fh=0,gh=0,hh=0,ih=0,jh=0,kh=0,lh=0,mh=0,nh=0,oh=0,ph=0,qh=0,rh=0,sh=0,th=0,uh=0,vh=0,wh=0,xh=0,yh=0,zh=0,Ah=0,Bh=0,Ch=0,Dh=0,Eh=0,Fh=0,Gh=0,Hh=0,Ih=0,Jh=0,Kh=0,Lh=0,Mh=0,Nh=0,Oh=0,Ph=0,Qh=0,Rh=0,Sh=0,Th=0,Uh=0,Vh=0,Wh=0,Xh=0,Yh=0,Zh=0,_h=0,$h=0,ai=0,bi=0,ci=0,di=0,ei=0,fi=0,gi=0,hi=0,ii=0,ji=0,ki=0,li=0,mi=0,ni=0,oi=0,pi=0,qi=0,ri=0,si=0,ti=0,ui=0,vi=0,wi=0,xi=0,yi=0,zi=0,Ai=0,Bi=0,Ci=0,Di=0,Ei=0,Fi=0,Gi=0,Hi=0,Ii=0,Ji=0,Ki=0,Li=0,Mi=0,Ni=0,Oi=0,Pi=0,Qi=0,Ri=0,Si=0,Ti=0,Ui=0,Vi=0,Wi=0,Xi=0,Yi=0,Zi=0,_i=0,$i=0,aj=0,bj=0,cj=0,dj=0,ej=0,fj=0,gj=0,hj=0,ij=0,jj=0,kj=0,lj=0,mj=0,nj=0,oj=0,pj=0,qj=0,rj=0,sj=0,tj=0,uj=0,vj=0,wj=0,xj=0,yj=0,zj=0,Aj=0,Bj=0,Cj=0,Dj=0,Ej=0;i=l;l=l+2144|0;j=i+2136|0;k=i+2132|0;m=i+2128|0;n=i+2124|0;o=i+2120|0;p=i+2116|0;q=i+2112|0;r=i+2108|0;s=i+2104|0;t=i+2100|0;u=i+2096|0;v=i+2092|0;w=i+2088|0;x=i+2084|0;y=i+2080|0;z=i+2076|0;A=i+2072|0;B=i+2068|0;C=i+2064|0;D=i+2060|0;E=i+2056|0;F=i+2052|0;G=i+2048|0;H=i+2044|0;I=i+2040|0;J=i+2036|0;K=i+2032|0;L=i+2028|0;M=i+2024|0;N=i+2020|0;O=i+2016|0;P=i+2012|0;Q=i+2008|0;R=i+2004|0;S=i+2e3|0;T=i+1996|0;U=i+1992|0;V=i+1988|0;W=i+1984|0;X=i+1980|0;Y=i+1976|0;Z=i+1972|0;_=i+1968|0;$=i+1964|0;aa=i+1960|0;ba=i+1956|0;ca=i+1952|0;da=i+1948|0;ea=i+1944|0;fa=i+1940|0;ga=i+1936|0;ha=i+1932|0;ia=i+1928|0;ja=i+1924|0;ka=i+1920|0;la=i+1916|0;ma=i+1912|0;na=i+1908|0;oa=i+1904|0;pa=i+1900|0;qa=i+1896|0;ra=i+1892|0;sa=i+1888|0;ta=i+1884|0;ua=i+1880|0;va=i+1876|0;wa=i+1872|0;xa=i+1868|0;ya=i+1864|0;za=i+1860|0;Aa=i+1856|0;Ba=i+1852|0;Ca=i+1848|0;Da=i+1844|0;Ea=i+1840|0;Fa=i+1836|0;Ga=i+1832|0;Ha=i+1828|0;Ia=i+1824|0;Ja=i+1820|0;Ka=i+1816|0;La=i+1812|0;Ma=i+1808|0;Na=i+1804|0;Oa=i+1800|0;Pa=i+1796|0;Qa=i+1792|0;Ra=i+1788|0;Sa=i+1784|0;Ta=i+1780|0;Ua=i+1776|0;Va=i+1772|0;Wa=i+1768|0;Xa=i+1764|0;Ya=i+1760|0;Za=i+1756|0;_a=i+1752|0;$a=i+1748|0;ab=i+1744|0;bb=i+1740|0;cb=i+1736|0;db=i+1732|0;eb=i+1728|0;fb=i+1724|0;gb=i+1720|0;hb=i+1716|0;ib=i+1712|0;jb=i+1708|0;kb=i+1704|0;lb=i+1700|0;mb=i+1696|0;nb=i+1692|0;ob=i+1688|0;pb=i+1684|0;qb=i+1680|0;rb=i+1676|0;sb=i+1672|0;tb=i+1668|0;ub=i+1664|0;vb=i+1660|0;wb=i+1656|0;xb=i+1652|0;yb=i+1648|0;zb=i+1644|0;Ab=i+1640|0;Bb=i+1636|0;Cb=i+1632|0;Db=i+1628|0;Eb=i+1624|0;Fb=i+1620|0;Gb=i+1616|0;Hb=i+1612|0;Ib=i+1608|0;Jb=i+1604|0;Kb=i+1600|0;Lb=i+1596|0;Mb=i+1592|0;Nb=i+1588|0;Ob=i+1584|0;Pb=i+1580|0;Qb=i+1576|0;Rb=i+1572|0;Sb=i+1568|0;Tb=i+1564|0;Ub=i+1560|0;Vb=i+1556|0;Wb=i+1552|0;Xb=i+1548|0;Yb=i+1544|0;Zb=i+1540|0;_b=i+1536|0;$b=i+1532|0;ac=i+1528|0;bc=i+1524|0;cc=i+1520|0;dc=i+1516|0;ec=i+1512|0;fc=i+1508|0;gc=i+1504|0;hc=i+1500|0;ic=i+1496|0;jc=i+1492|0;kc=i+1488|0;lc=i+1484|0;mc=i+1480|0;nc=i+1476|0;oc=i+1472|0;pc=i+1468|0;qc=i+1464|0;rc=i+1460|0;sc=i+1456|0;tc=i+1452|0;uc=i+1448|0;vc=i+1444|0;wc=i+1440|0;xc=i+1436|0;yc=i+1432|0;zc=i+1428|0;Ac=i+1424|0;Bc=i+1420|0;Cc=i+1416|0;Dc=i+1412|0;Ec=i+1408|0;Fc=i+1404|0;Gc=i+1400|0;Hc=i+1396|0;Ic=i+1392|0;Jc=i+1388|0;Kc=i+1384|0;Lc=i+1380|0;Mc=i+1376|0;Nc=i+1372|0;Oc=i+1368|0;Pc=i+1364|0;Qc=i+1360|0;Rc=i+1356|0;Sc=i+1352|0;Tc=i+1348|0;Uc=i+1344|0;Vc=i+1340|0;Wc=i+1336|0;Xc=i+1332|0;Yc=i+1328|0;Zc=i+1324|0;_c=i+1320|0;$c=i+1316|0;ad=i+1312|0;bd=i+1308|0;cd=i+1304|0;dd=i+1300|0;ed=i+1296|0;fd=i+1292|0;gd=i+1288|0;hd=i+1284|0;id=i+1280|0;jd=i+1276|0;kd=i+1272|0;ld=i+1268|0;md=i+1264|0;nd=i+1260|0;od=i+1256|0;pd=i+1252|0;qd=i+1248|0;rd=i+1244|0;sd=i+1240|0;td=i+1236|0;ud=i+1232|0;vd=i+1228|0;wd=i+1224|0;xd=i+1220|0;yd=i+1216|0;zd=i+1212|0;Ad=i+1208|0;Bd=i+1204|0;Cd=i+1200|0;Dd=i+1196|0;Ed=i+1192|0;Fd=i+1188|0;Gd=i+1184|0;Hd=i+1180|0;Id=i+1176|0;Jd=i+1172|0;Kd=i+1168|0;Ld=i+1164|0;Md=i+1160|0;Nd=i+1156|0;Od=i+1152|0;Pd=i+1148|0;Qd=i+1144|0;Rd=i+1140|0;Sd=i+1136|0;Td=i+1132|0;Ud=i+1128|0;Vd=i+1124|0;Wd=i+1120|0;Xd=i+1116|0;Yd=i+1112|0;Zd=i+1108|0;_d=i+1104|0;$d=i+1100|0;ae=i+1096|0;be=i+1092|0;ce=i+1088|0;de=i+1084|0;ee=i+1080|0;fe=i+1076|0;ge=i+1072|0;he=i+1068|0;ie=i+1064|0;je=i+1060|0;ke=i+1056|0;le=i+1052|0;me=i+1048|0;ne=i+1044|0;oe=i+1040|0;pe=i+1036|0;qe=i+1032|0;re=i+1028|0;se=i+1024|0;te=i+1020|0;ue=i+1016|0;ve=i+1012|0;we=i+1008|0;xe=i+1004|0;ye=i+1e3|0;ze=i+996|0;Ae=i+992|0;Be=i+988|0;Ce=i+984|0;De=i+980|0;Ee=i+976|0;Fe=i+972|0;Ge=i+968|0;He=i+964|0;Ie=i+960|0;Je=i+956|0;Ke=i+952|0;Le=i+948|0;Me=i+944|0;Ne=i+940|0;Oe=i+936|0;Pe=i+932|0;Qe=i+928|0;Re=i+924|0;Se=i+920|0;Te=i+916|0;Ue=i+912|0;Ve=i+908|0;We=i+904|0;Xe=i+900|0;Ye=i+896|0;Ze=i+892|0;_e=i+888|0;$e=i+884|0;af=i+880|0;bf=i+876|0;cf=i+872|0;df=i+868|0;ef=i+864|0;ff=i+860|0;gf=i+856|0;hf=i+852|0;jf=i+848|0;kf=i+844|0;lf=i+840|0;mf=i+836|0;nf=i+832|0;of=i+828|0;pf=i+824|0;qf=i+820|0;rf=i+816|0;sf=i+812|0;tf=i+808|0;uf=i+804|0;vf=i+800|0;wf=i+796|0;xf=i+792|0;yf=i+788|0;zf=i+784|0;Af=i+780|0;Bf=i+776|0;Cf=i+772|0;Df=i+768|0;Ef=i+764|0;Ff=i+760|0;Gf=i+756|0;Hf=i+752|0;If=i+748|0;Jf=i+744|0;Kf=i+740|0;Lf=i+736|0;Mf=i+732|0;Nf=i+728|0;Of=i+724|0;Pf=i+720|0;Qf=i+716|0;Rf=i+712|0;Sf=i+708|0;Tf=i+704|0;Uf=i+700|0;Vf=i+696|0;Wf=i+692|0;Xf=i+688|0;Yf=i+684|0;Zf=i+680|0;_f=i+676|0;$f=i+672|0;ag=i+668|0;bg=i+664|0;cg=i+660|0;dg=i+656|0;eg=i+652|0;fg=i+648|0;gg=i+644|0;hg=i+640|0;ig=i+636|0;jg=i+632|0;kg=i+628|0;lg=i+624|0;mg=i+620|0;ng=i+616|0;og=i+612|0;pg=i+608|0;qg=i+604|0;rg=i+600|0;sg=i+596|0;tg=i+592|0;ug=i+588|0;vg=i+584|0;wg=i+580|0;xg=i+576|0;yg=i+572|0;zg=i+568|0;Ag=i+564|0;Bg=i+560|0;Cg=i+556|0;Dg=i+552|0;Eg=i+548|0;Fg=i+544|0;Gg=i+540|0;Hg=i+536|0;Ig=i+532|0;Jg=i+528|0;Kg=i+524|0;Lg=i+520|0;Mg=i+516|0;Ng=i+512|0;Og=i+508|0;Pg=i+504|0;Qg=i+500|0;Rg=i+496|0;Sg=i+492|0;Tg=i+488|0;Ug=i+484|0;Vg=i+480|0;Wg=i+476|0;Xg=i+472|0;Yg=i+468|0;Zg=i+464|0;_g=i+460|0;$g=i+456|0;ah=i+452|0;bh=i+448|0;ch=i+444|0;dh=i+440|0;eh=i+436|0;fh=i+432|0;gh=i+428|0;hh=i+424|0;ih=i+420|0;jh=i+416|0;kh=i+412|0;lh=i+408|0;mh=i+404|0;nh=i+400|0;oh=i+396|0;ph=i+392|0;qh=i+388|0;rh=i+384|0;sh=i+380|0;th=i+376|0;uh=i+372|0;vh=i+368|0;wh=i+364|0;xh=i+360|0;yh=i+356|0;zh=i+352|0;Ah=i+348|0;Bh=i+344|0;Ch=i+340|0;Dh=i+336|0;Eh=i+332|0;Fh=i+328|0;Gh=i+324|0;Hh=i+320|0;Ih=i+316|0;Jh=i+312|0;Kh=i+308|0;Lh=i+304|0;Mh=i+300|0;Nh=i+296|0;Oh=i+292|0;Ph=i+288|0;Qh=i+284|0;Rh=i+280|0;Sh=i+276|0;Th=i+272|0;Uh=i+268|0;Vh=i+264|0;Wh=i+260|0;Xh=i+256|0;Yh=i+252|0;Zh=i+248|0;_h=i+244|0;$h=i+240|0;ai=i+236|0;bi=i+232|0;ci=i+228|0;di=i+216|0;ei=i+212|0;fi=i+208|0;gi=i+204|0;hi=i+200|0;ii=i+196|0;ji=i+192|0;ki=i+188|0;li=i+184|0;mi=i+180|0;ni=i+176|0;oi=i+172|0;pi=i+168|0;qi=i+164|0;ri=i+160|0;si=i+148|0;ti=i+144|0;ui=i+140|0;vi=i+136|0;wi=i+132|0;xi=i+128|0;yi=i+124|0;zi=i+120|0;Ai=i+116|0;Bi=i+112|0;Ci=i+108|0;Di=i+104|0;Ei=i+100|0;Fi=i+88|0;Gi=i+84|0;Hi=i+80|0;Ii=i+76|0;Ji=i+72|0;Ki=i+68|0;Li=i+64|0;Mi=i+60|0;Ni=i+56|0;Oi=i+52|0;Pi=i+48|0;Qi=i+44|0;Ri=i+40|0;Si=i+36|0;Ti=i+32|0;Ui=i+28|0;Vi=i+24|0;Wi=i+20|0;Xi=i+16|0;Yi=i+12|0;Zi=i+8|0;_i=i+4|0;$i=i;c[Wi>>2]=a;c[Xi>>2]=b;c[Yi>>2]=e;c[Zi>>2]=f;c[_i>>2]=g;c[$i>>2]=h;h=c[Xi>>2]|0;Xi=c[Yi>>2]|0;Yi=c[Zi>>2]|0;Zi=c[_i>>2]|0;_i=c[$i>>2]|0;c[Lh>>2]=c[Wi>>2];c[Mh>>2]=h;c[Nh>>2]=Xi;c[Oh>>2]=Yi;c[Ph>>2]=Zi;c[Qh>>2]=_i;c[Rh>>2]=2;c[Sh>>2]=0;c[Th>>2]=(c[Lh>>2]|0)+48;c[Uh>>2]=c[Ph>>2];c[Vh>>2]=c[Uh>>2];c[Wh>>2]=c[Uh>>2];c[Xh>>2]=(c[Uh>>2]|0)+(c[Qh>>2]|0);c[Yh>>2]=(c[Xh>>2]|0)+-8;c[Zh>>2]=c[(c[Lh>>2]|0)+4>>2];c[_h>>2]=(c[Zh>>2]|0)+(c[(c[Lh>>2]|0)+12>>2]|0);if((c[(c[Oh>>2]|0)+20>>2]|0)>>>0<4095)aj=c[(c[Oh>>2]|0)+20>>2]|0;else aj=4095;c[$h>>2]=aj;c[ai>>2]=(c[(c[Oh>>2]|0)+16>>2]|0)==3?3:4;c[bi>>2]=c[(c[Th>>2]|0)+20>>2];c[ci>>2]=c[(c[Th>>2]|0)+16>>2];c[(c[Lh>>2]|0)+28>>2]=c[(c[Lh>>2]|0)+24>>2];lm(c[Th>>2]|0,c[Ph>>2]|0,c[Qh>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+((c[Vh>>2]|0)==(c[_h>>2]|0)&1);c[di>>2]=0;c[di+4>>2]=0;c[di+8>>2]=0;while(1){if((c[Vh>>2]|0)>>>0>=(c[Yh>>2]|0)>>>0)break;c[fi>>2]=0;c[ii>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[ji>>2]=((c[ii>>2]|0)!=0^1)&1;_h=c[Oh>>2]|0;Qh=c[Vh>>2]|0;Ph=c[Xh>>2]|0;aj=c[Sh>>2]|0;Zh=c[Nh>>2]|0;Uh=c[ji>>2]|0;_i=c[ci>>2]|0;Zi=c[ai>>2]|0;c[Bh>>2]=c[Lh>>2];c[Ch>>2]=_h;c[Dh>>2]=Qh;c[Eh>>2]=Ph;c[Fh>>2]=aj;c[Gh>>2]=Zh;c[Hh>>2]=Uh;c[Ih>>2]=_i;c[Jh>>2]=Zi;c[Kh>>2]=c[(c[Ch>>2]|0)+16>>2];a:do{if((c[Dh>>2]|0)>>>0<((c[(c[Bh>>2]|0)+4>>2]|0)+(c[(c[Bh>>2]|0)+24>>2]|0)|0)>>>0)c[Ah>>2]=0;else{Zi=c[Ch>>2]|0;_i=c[Dh>>2]|0;Uh=c[Eh>>2]|0;Zh=c[Kh>>2]|0;aj=c[Fh>>2]|0;c[rh>>2]=c[Bh>>2];c[sh>>2]=Zi;c[th>>2]=_i;c[uh>>2]=Uh;c[vh>>2]=Zh;c[wh>>2]=aj;c[xh>>2]=c[(c[rh>>2]|0)+4>>2];c[yh>>2]=(c[th>>2]|0)-(c[xh>>2]|0);c[zh>>2]=c[(c[rh>>2]|0)+24>>2];while(1){if((c[zh>>2]|0)>>>0>=(c[yh>>2]|0)>>>0)break;aj=Rj(c[rh>>2]|0,c[sh>>2]|0,(c[xh>>2]|0)+(c[zh>>2]|0)|0,c[uh>>2]|0,c[vh>>2]|0,c[wh>>2]|0)|0;c[zh>>2]=(c[zh>>2]|0)+aj;}c[(c[rh>>2]|0)+24>>2]=c[yh>>2];switch(c[Kh>>2]|0){case 3:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[wg>>2]=c[Bh>>2];c[xg>>2]=aj;c[yg>>2]=Zh;c[zg>>2]=Uh;c[Ag>>2]=_i;c[Bg>>2]=Zi;c[Cg>>2]=Ph;c[Dg>>2]=Qh;c[Eg>>2]=_h;c[Fg>>2]=3;if((c[(c[xg>>2]|0)+20>>2]|0)>>>0<4095)bj=c[(c[xg>>2]|0)+20>>2]|0;else bj=4095;c[Gg>>2]=bj;c[Hg>>2]=c[(c[wg>>2]|0)+4>>2];c[Ig>>2]=(c[yg>>2]|0)-(c[Hg>>2]|0);c[Jg>>2]=c[(c[xg>>2]|0)+8>>2];c[Kg>>2]=(c[Fg>>2]|0)==3?3:4;c[Lg>>2]=c[(c[wg>>2]|0)+36>>2];c[Mg>>2]=Sj(c[yg>>2]|0,c[Jg>>2]|0,c[Fg>>2]|0)|0;c[Ng>>2]=c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2];c[Og>>2]=c[(c[wg>>2]|0)+44>>2];c[Pg>>2]=(c[(c[xg>>2]|0)+4>>2]|0)-1;c[Qg>>2]=(1<<c[Pg>>2])-1;c[Rg>>2]=0;c[Sg>>2]=0;c[Tg>>2]=c[(c[wg>>2]|0)+8>>2];c[Ug>>2]=c[(c[wg>>2]|0)+12>>2];c[Vg>>2]=(c[Tg>>2]|0)+(c[Ug>>2]|0);c[Wg>>2]=(c[Hg>>2]|0)+(c[Ug>>2]|0);if((c[Qg>>2]|0)>>>0>=(c[Ig>>2]|0)>>>0)cj=0;else cj=(c[Ig>>2]|0)-(c[Qg>>2]|0)|0;c[Xg>>2]=cj;c[Yg>>2]=c[(c[wg>>2]|0)+16>>2];c[Zg>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2);c[_g>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2)+4;c[$g>>2]=(c[Ig>>2]|0)+8+1;c[bh>>2]=0;c[ch>>2]=1<<c[(c[xg>>2]|0)+12>>2];c[dh>>2]=(c[Eg>>2]|0)-1;c[eh>>2]=3+(c[Cg>>2]|0);c[fh>>2]=c[Cg>>2];while(1){if((c[fh>>2]|0)>>>0>=(c[eh>>2]|0)>>>0){dj=31;break;}_h=c[Bg>>2]|0;if((c[fh>>2]|0)==3)ej=(c[_h>>2]|0)-1|0;else ej=c[_h+(c[fh>>2]<<2)>>2]|0;c[gh>>2]=ej;c[hh>>2]=(c[Ig>>2]|0)-(c[gh>>2]|0);c[ih>>2]=0;if(((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Ug>>2]|0)|0)>>>0){_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0;if((_h|0)==(mm((c[yg>>2]|0)+(0-(c[gh>>2]|0))|0,c[Kg>>2]|0)|0)){_h=Tj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[yg>>2]|0)+(c[Kg>>2]|0)+(0-(c[gh>>2]|0))|0,c[zg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}else{c[jh>>2]=(c[Tg>>2]|0)+(c[hh>>2]|0);if((c[Ag>>2]|0?(((c[Ug>>2]|0)-1-(c[hh>>2]|0)|0)>>>0>=3?((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Yg>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0,(_h|0)==(mm(c[jh>>2]|0,c[Kg>>2]|0)|0)):0){_h=Uj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[jh>>2]|0)+(c[Kg>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}if((c[ih>>2]|0)>>>0>(c[dh>>2]|0)>>>0?(c[dh>>2]=c[ih>>2],c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[fh>>2]|0)-(c[Cg>>2]|0),c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ih>>2],c[bh>>2]=(c[bh>>2]|0)+1,((c[ih>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[ih>>2]|0)|0)==(c[zg>>2]|0))|0):0){dj=29;break;}c[fh>>2]=(c[fh>>2]|0)+1;}do{if((dj|0)==29){dj=0;c[vg>>2]=c[bh>>2];}else if((dj|0)==31){dj=0;if(((c[Fg>>2]|0)==3?(c[dh>>2]|0)>>>0<(c[Fg>>2]|0)>>>0:0)?(c[kh>>2]=nm(c[wg>>2]|0,c[yg>>2]|0)|0,((c[kh>>2]|0)>>>0>(c[Yg>>2]|0)>>>0?((c[Ig>>2]|0)-(c[kh>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ag>>2]|0?(c[kh>>2]|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[nh>>2]=(c[Tg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Uj(c[yg>>2]|0,c[nh>>2]|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;}else{c[mh>>2]=(c[Hg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Tj(c[yg>>2]|0,c[mh>>2]|0,c[zg>>2]|0)|0;}if((c[lh>>2]|0)>>>0>=(c[Fg>>2]|0)>>>0?(c[dh>>2]=c[lh>>2],c[c[Dg>>2]>>2]=(c[Ig>>2]|0)-(c[kh>>2]|0)+2,c[(c[Dg>>2]|0)+4>>2]=c[lh>>2],c[bh>>2]=1,((c[lh>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[lh>>2]|0)|0)==(c[zg>>2]|0))|0):0){c[(c[wg>>2]|0)+24>>2]=(c[Ig>>2]|0)+1;c[vg>>2]=1;break;}}c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2]=c[Ig>>2];while(1){_h=c[ch>>2]|0;c[ch>>2]=_h+-1;if(!_h)break;if((c[Ng>>2]|0)>>>0<=(c[Yg>>2]|0)>>>0)break;c[oh>>2]=(c[Og>>2]|0)+((c[Ng>>2]&c[Qg>>2])<<1<<2);c[ph>>2]=(c[Rg>>2]|0)>>>0<(c[Sg>>2]|0)>>>0?c[Rg>>2]|0:c[Sg>>2]|0;if(c[Ag>>2]|0?((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[qh>>2]=(c[Tg>>2]|0)+(c[Ng>>2]|0);_h=Uj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;if(((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0>=(c[Ug>>2]|0)>>>0)c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);}else{c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);_h=Tj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;}if((c[ph>>2]|0)>>>0>(c[dh>>2]|0)>>>0){if((c[ph>>2]|0)>>>0>((c[$g>>2]|0)-(c[Ng>>2]|0)|0)>>>0)c[$g>>2]=(c[Ng>>2]|0)+(c[ph>>2]|0);c[dh>>2]=c[ph>>2];c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[Ig>>2]|0)-(c[Ng>>2]|0)+2;c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ph>>2];c[bh>>2]=(c[bh>>2]|0)+1;if((c[ph>>2]|0)>>>0>4096)break;if(((c[yg>>2]|0)+(c[ph>>2]|0)|0)==(c[zg>>2]|0))break;}_h=c[Ng>>2]|0;if((d[(c[qh>>2]|0)+(c[ph>>2]|0)>>0]|0|0)<(d[(c[yg>>2]|0)+(c[ph>>2]|0)>>0]|0|0)){c[c[Zg>>2]>>2]=_h;c[Rg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=56;break;}c[Zg>>2]=(c[oh>>2]|0)+4;c[Ng>>2]=c[(c[oh>>2]|0)+4>>2];}else{c[c[_g>>2]>>2]=_h;c[Sg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=59;break;}c[_g>>2]=c[oh>>2];c[Ng>>2]=c[c[oh>>2]>>2];}}if((dj|0)==56){dj=0;c[Zg>>2]=ah;}else if((dj|0)==59){dj=0;c[_g>>2]=ah;}c[c[_g>>2]>>2]=0;c[c[Zg>>2]>>2]=0;c[(c[wg>>2]|0)+24>>2]=(c[$g>>2]|0)-8;c[vg>>2]=c[bh>>2];}}while(0);c[Ah>>2]=c[vg>>2];break a;break;}case 7:case 6:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Hd>>2]=c[Bh>>2];c[Id>>2]=_h;c[Jd>>2]=Qh;c[Kd>>2]=Ph;c[Ld>>2]=Zi;c[Md>>2]=_i;c[Nd>>2]=Uh;c[Od>>2]=Zh;c[Pd>>2]=aj;c[Qd>>2]=6;if((c[(c[Id>>2]|0)+20>>2]|0)>>>0<4095)fj=c[(c[Id>>2]|0)+20>>2]|0;else fj=4095;c[Rd>>2]=fj;c[Sd>>2]=c[(c[Hd>>2]|0)+4>>2];c[Td>>2]=(c[Jd>>2]|0)-(c[Sd>>2]|0);c[Ud>>2]=c[(c[Id>>2]|0)+8>>2];c[Vd>>2]=(c[Qd>>2]|0)==3?3:4;c[Wd>>2]=c[(c[Hd>>2]|0)+36>>2];c[Xd>>2]=Sj(c[Jd>>2]|0,c[Ud>>2]|0,c[Qd>>2]|0)|0;c[Yd>>2]=c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2];c[Zd>>2]=c[(c[Hd>>2]|0)+44>>2];c[_d>>2]=(c[(c[Id>>2]|0)+4>>2]|0)-1;c[$d>>2]=(1<<c[_d>>2])-1;c[ae>>2]=0;c[be>>2]=0;c[ce>>2]=c[(c[Hd>>2]|0)+8>>2];c[de>>2]=c[(c[Hd>>2]|0)+12>>2];c[ee>>2]=(c[ce>>2]|0)+(c[de>>2]|0);c[fe>>2]=(c[Sd>>2]|0)+(c[de>>2]|0);if((c[$d>>2]|0)>>>0>=(c[Td>>2]|0)>>>0)gj=0;else gj=(c[Td>>2]|0)-(c[$d>>2]|0)|0;c[ge>>2]=gj;c[he>>2]=c[(c[Hd>>2]|0)+16>>2];c[ie>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2);c[je>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2)+4;c[ke>>2]=(c[Td>>2]|0)+8+1;c[me>>2]=0;c[ne>>2]=1<<c[(c[Id>>2]|0)+12>>2];c[oe>>2]=(c[Pd>>2]|0)-1;c[pe>>2]=3+(c[Nd>>2]|0);c[qe>>2]=c[Nd>>2];while(1){if((c[qe>>2]|0)>>>0>=(c[pe>>2]|0)>>>0){dj=190;break;}aj=c[Md>>2]|0;if((c[qe>>2]|0)==3)hj=(c[aj>>2]|0)-1|0;else hj=c[aj+(c[qe>>2]<<2)>>2]|0;c[re>>2]=hj;c[se>>2]=(c[Td>>2]|0)-(c[re>>2]|0);c[te>>2]=0;if(((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[de>>2]|0)|0)>>>0){aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0;if((aj|0)==(mm((c[Jd>>2]|0)+(0-(c[re>>2]|0))|0,c[Vd>>2]|0)|0)){aj=Tj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[Jd>>2]|0)+(c[Vd>>2]|0)+(0-(c[re>>2]|0))|0,c[Kd>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}else{c[ue>>2]=(c[ce>>2]|0)+(c[se>>2]|0);if((c[Ld>>2]|0?(((c[de>>2]|0)-1-(c[se>>2]|0)|0)>>>0>=3?((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[he>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0,(aj|0)==(mm(c[ue>>2]|0,c[Vd>>2]|0)|0)):0){aj=Uj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[ue>>2]|0)+(c[Vd>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}if((c[te>>2]|0)>>>0>(c[oe>>2]|0)>>>0?(c[oe>>2]=c[te>>2],c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[qe>>2]|0)-(c[Nd>>2]|0),c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[te>>2],c[me>>2]=(c[me>>2]|0)+1,((c[te>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[te>>2]|0)|0)==(c[Kd>>2]|0))|0):0){dj=188;break;}c[qe>>2]=(c[qe>>2]|0)+1;}do{if((dj|0)==188){dj=0;c[Gd>>2]=c[me>>2];}else if((dj|0)==190){dj=0;if(((c[Qd>>2]|0)==3?(c[oe>>2]|0)>>>0<(c[Qd>>2]|0)>>>0:0)?(c[ve>>2]=nm(c[Hd>>2]|0,c[Jd>>2]|0)|0,((c[ve>>2]|0)>>>0>(c[he>>2]|0)>>>0?((c[Td>>2]|0)-(c[ve>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ld>>2]|0?(c[ve>>2]|0)>>>0<(c[de>>2]|0)>>>0:0){c[ye>>2]=(c[ce>>2]|0)+(c[ve>>2]|0);c[we>>2]=Uj(c[Jd>>2]|0,c[ye>>2]|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;}else{c[xe>>2]=(c[Sd>>2]|0)+(c[ve>>2]|0);c[we>>2]=Tj(c[Jd>>2]|0,c[xe>>2]|0,c[Kd>>2]|0)|0;}if((c[we>>2]|0)>>>0>=(c[Qd>>2]|0)>>>0?(c[oe>>2]=c[we>>2],c[c[Od>>2]>>2]=(c[Td>>2]|0)-(c[ve>>2]|0)+2,c[(c[Od>>2]|0)+4>>2]=c[we>>2],c[me>>2]=1,((c[we>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[we>>2]|0)|0)==(c[Kd>>2]|0))|0):0){c[(c[Hd>>2]|0)+24>>2]=(c[Td>>2]|0)+1;c[Gd>>2]=1;break;}}c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2]=c[Td>>2];while(1){aj=c[ne>>2]|0;c[ne>>2]=aj+-1;if(!aj)break;if((c[Yd>>2]|0)>>>0<=(c[he>>2]|0)>>>0)break;c[ze>>2]=(c[Zd>>2]|0)+((c[Yd>>2]&c[$d>>2])<<1<<2);c[Ae>>2]=(c[ae>>2]|0)>>>0<(c[be>>2]|0)>>>0?c[ae>>2]|0:c[be>>2]|0;if(c[Ld>>2]|0?((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0<(c[de>>2]|0)>>>0:0){c[Be>>2]=(c[ce>>2]|0)+(c[Yd>>2]|0);aj=Uj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;if(((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0>=(c[de>>2]|0)>>>0)c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);}else{c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);aj=Tj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;}if((c[Ae>>2]|0)>>>0>(c[oe>>2]|0)>>>0){if((c[Ae>>2]|0)>>>0>((c[ke>>2]|0)-(c[Yd>>2]|0)|0)>>>0)c[ke>>2]=(c[Yd>>2]|0)+(c[Ae>>2]|0);c[oe>>2]=c[Ae>>2];c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[Td>>2]|0)-(c[Yd>>2]|0)+2;c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[Ae>>2];c[me>>2]=(c[me>>2]|0)+1;if((c[Ae>>2]|0)>>>0>4096)break;if(((c[Jd>>2]|0)+(c[Ae>>2]|0)|0)==(c[Kd>>2]|0))break;}aj=c[Yd>>2]|0;if((d[(c[Be>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)<(d[(c[Jd>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)){c[c[ie>>2]>>2]=aj;c[ae>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=215;break;}c[ie>>2]=(c[ze>>2]|0)+4;c[Yd>>2]=c[(c[ze>>2]|0)+4>>2];}else{c[c[je>>2]>>2]=aj;c[be>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=218;break;}c[je>>2]=c[ze>>2];c[Yd>>2]=c[c[ze>>2]>>2];}}if((dj|0)==215){dj=0;c[ie>>2]=le;}else if((dj|0)==218){dj=0;c[je>>2]=le;}c[c[je>>2]>>2]=0;c[c[ie>>2]>>2]=0;c[(c[Hd>>2]|0)+24>>2]=(c[ke>>2]|0)-8;c[Gd>>2]=c[me>>2];}}while(0);c[Ah>>2]=c[Gd>>2];break a;break;}case 5:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[De>>2]=c[Bh>>2];c[Ee>>2]=aj;c[Fe>>2]=Zh;c[Ge>>2]=Uh;c[He>>2]=_i;c[Ie>>2]=Zi;c[Je>>2]=Ph;c[Ke>>2]=Qh;c[Le>>2]=_h;c[Me>>2]=5;if((c[(c[Ee>>2]|0)+20>>2]|0)>>>0<4095)ij=c[(c[Ee>>2]|0)+20>>2]|0;else ij=4095;c[Ne>>2]=ij;c[Oe>>2]=c[(c[De>>2]|0)+4>>2];c[Pe>>2]=(c[Fe>>2]|0)-(c[Oe>>2]|0);c[Qe>>2]=c[(c[Ee>>2]|0)+8>>2];c[Re>>2]=(c[Me>>2]|0)==3?3:4;c[Se>>2]=c[(c[De>>2]|0)+36>>2];c[Te>>2]=Sj(c[Fe>>2]|0,c[Qe>>2]|0,c[Me>>2]|0)|0;c[Ue>>2]=c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2];c[Ve>>2]=c[(c[De>>2]|0)+44>>2];c[We>>2]=(c[(c[Ee>>2]|0)+4>>2]|0)-1;c[Xe>>2]=(1<<c[We>>2])-1;c[Ye>>2]=0;c[Ze>>2]=0;c[_e>>2]=c[(c[De>>2]|0)+8>>2];c[$e>>2]=c[(c[De>>2]|0)+12>>2];c[af>>2]=(c[_e>>2]|0)+(c[$e>>2]|0);c[bf>>2]=(c[Oe>>2]|0)+(c[$e>>2]|0);if((c[Xe>>2]|0)>>>0>=(c[Pe>>2]|0)>>>0)jj=0;else jj=(c[Pe>>2]|0)-(c[Xe>>2]|0)|0;c[cf>>2]=jj;c[df>>2]=c[(c[De>>2]|0)+16>>2];c[ef>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2);c[ff>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2)+4;c[gf>>2]=(c[Pe>>2]|0)+8+1;c[jf>>2]=0;c[kf>>2]=1<<c[(c[Ee>>2]|0)+12>>2];c[lf>>2]=(c[Le>>2]|0)-1;c[mf>>2]=3+(c[Je>>2]|0);c[nf>>2]=c[Je>>2];while(1){if((c[nf>>2]|0)>>>0>=(c[mf>>2]|0)>>>0){dj=137;break;}_h=c[Ie>>2]|0;if((c[nf>>2]|0)==3)kj=(c[_h>>2]|0)-1|0;else kj=c[_h+(c[nf>>2]<<2)>>2]|0;c[of>>2]=kj;c[pf>>2]=(c[Pe>>2]|0)-(c[of>>2]|0);c[qf>>2]=0;if(((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[$e>>2]|0)|0)>>>0){_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0;if((_h|0)==(mm((c[Fe>>2]|0)+(0-(c[of>>2]|0))|0,c[Re>>2]|0)|0)){_h=Tj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[Fe>>2]|0)+(c[Re>>2]|0)+(0-(c[of>>2]|0))|0,c[Ge>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}else{c[rf>>2]=(c[_e>>2]|0)+(c[pf>>2]|0);if((c[He>>2]|0?(((c[$e>>2]|0)-1-(c[pf>>2]|0)|0)>>>0>=3?((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[df>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0,(_h|0)==(mm(c[rf>>2]|0,c[Re>>2]|0)|0)):0){_h=Uj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[rf>>2]|0)+(c[Re>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}if((c[qf>>2]|0)>>>0>(c[lf>>2]|0)>>>0?(c[lf>>2]=c[qf>>2],c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[nf>>2]|0)-(c[Je>>2]|0),c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[qf>>2],c[jf>>2]=(c[jf>>2]|0)+1,((c[qf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[qf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){dj=135;break;}c[nf>>2]=(c[nf>>2]|0)+1;}do{if((dj|0)==135){dj=0;c[Ce>>2]=c[jf>>2];}else if((dj|0)==137){dj=0;if(((c[Me>>2]|0)==3?(c[lf>>2]|0)>>>0<(c[Me>>2]|0)>>>0:0)?(c[sf>>2]=nm(c[De>>2]|0,c[Fe>>2]|0)|0,((c[sf>>2]|0)>>>0>(c[df>>2]|0)>>>0?((c[Pe>>2]|0)-(c[sf>>2]|0)|0)>>>0<262144:0)|0):0){if(c[He>>2]|0?(c[sf>>2]|0)>>>0<(c[$e>>2]|0)>>>0:0){c[vf>>2]=(c[_e>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Uj(c[Fe>>2]|0,c[vf>>2]|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;}else{c[uf>>2]=(c[Oe>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Tj(c[Fe>>2]|0,c[uf>>2]|0,c[Ge>>2]|0)|0;}if((c[tf>>2]|0)>>>0>=(c[Me>>2]|0)>>>0?(c[lf>>2]=c[tf>>2],c[c[Ke>>2]>>2]=(c[Pe>>2]|0)-(c[sf>>2]|0)+2,c[(c[Ke>>2]|0)+4>>2]=c[tf>>2],c[jf>>2]=1,((c[tf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[tf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){c[(c[De>>2]|0)+24>>2]=(c[Pe>>2]|0)+1;c[Ce>>2]=1;break;}}c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2]=c[Pe>>2];while(1){_h=c[kf>>2]|0;c[kf>>2]=_h+-1;if(!_h)break;if((c[Ue>>2]|0)>>>0<=(c[df>>2]|0)>>>0)break;c[wf>>2]=(c[Ve>>2]|0)+((c[Ue>>2]&c[Xe>>2])<<1<<2);c[xf>>2]=(c[Ye>>2]|0)>>>0<(c[Ze>>2]|0)>>>0?c[Ye>>2]|0:c[Ze>>2]|0;if(c[He>>2]|0?((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0<(c[$e>>2]|0)>>>0:0){c[yf>>2]=(c[_e>>2]|0)+(c[Ue>>2]|0);_h=Uj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;if(((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0>=(c[$e>>2]|0)>>>0)c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);}else{c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);_h=Tj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;}if((c[xf>>2]|0)>>>0>(c[lf>>2]|0)>>>0){if((c[xf>>2]|0)>>>0>((c[gf>>2]|0)-(c[Ue>>2]|0)|0)>>>0)c[gf>>2]=(c[Ue>>2]|0)+(c[xf>>2]|0);c[lf>>2]=c[xf>>2];c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[Pe>>2]|0)-(c[Ue>>2]|0)+2;c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[xf>>2];c[jf>>2]=(c[jf>>2]|0)+1;if((c[xf>>2]|0)>>>0>4096)break;if(((c[Fe>>2]|0)+(c[xf>>2]|0)|0)==(c[Ge>>2]|0))break;}_h=c[Ue>>2]|0;if((d[(c[yf>>2]|0)+(c[xf>>2]|0)>>0]|0|0)<(d[(c[Fe>>2]|0)+(c[xf>>2]|0)>>0]|0|0)){c[c[ef>>2]>>2]=_h;c[Ye>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=162;break;}c[ef>>2]=(c[wf>>2]|0)+4;c[Ue>>2]=c[(c[wf>>2]|0)+4>>2];}else{c[c[ff>>2]>>2]=_h;c[Ze>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=165;break;}c[ff>>2]=c[wf>>2];c[Ue>>2]=c[c[wf>>2]>>2];}}if((dj|0)==162){dj=0;c[ef>>2]=hf;}else if((dj|0)==165){dj=0;c[ff>>2]=hf;}c[c[ff>>2]>>2]=0;c[c[ef>>2]>>2]=0;c[(c[De>>2]|0)+24>>2]=(c[gf>>2]|0)-8;c[Ce>>2]=c[jf>>2];}}while(0);c[Ah>>2]=c[Ce>>2];break a;break;}default:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Af>>2]=c[Bh>>2];c[Bf>>2]=_h;c[Cf>>2]=Qh;c[Df>>2]=Ph;c[Ef>>2]=Zi;c[Ff>>2]=_i;c[Gf>>2]=Uh;c[Hf>>2]=Zh;c[If>>2]=aj;c[Jf>>2]=4;if((c[(c[Bf>>2]|0)+20>>2]|0)>>>0<4095)lj=c[(c[Bf>>2]|0)+20>>2]|0;else lj=4095;c[Kf>>2]=lj;c[Lf>>2]=c[(c[Af>>2]|0)+4>>2];c[Mf>>2]=(c[Cf>>2]|0)-(c[Lf>>2]|0);c[Nf>>2]=c[(c[Bf>>2]|0)+8>>2];c[Of>>2]=(c[Jf>>2]|0)==3?3:4;c[Pf>>2]=c[(c[Af>>2]|0)+36>>2];c[Qf>>2]=Sj(c[Cf>>2]|0,c[Nf>>2]|0,c[Jf>>2]|0)|0;c[Rf>>2]=c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2];c[Sf>>2]=c[(c[Af>>2]|0)+44>>2];c[Tf>>2]=(c[(c[Bf>>2]|0)+4>>2]|0)-1;c[Uf>>2]=(1<<c[Tf>>2])-1;c[Vf>>2]=0;c[Wf>>2]=0;c[Xf>>2]=c[(c[Af>>2]|0)+8>>2];c[Yf>>2]=c[(c[Af>>2]|0)+12>>2];c[Zf>>2]=(c[Xf>>2]|0)+(c[Yf>>2]|0);c[_f>>2]=(c[Lf>>2]|0)+(c[Yf>>2]|0);if((c[Uf>>2]|0)>>>0>=(c[Mf>>2]|0)>>>0)mj=0;else mj=(c[Mf>>2]|0)-(c[Uf>>2]|0)|0;c[$f>>2]=mj;c[ag>>2]=c[(c[Af>>2]|0)+16>>2];c[bg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2);c[cg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2)+4;c[dg>>2]=(c[Mf>>2]|0)+8+1;c[fg>>2]=0;c[gg>>2]=1<<c[(c[Bf>>2]|0)+12>>2];c[hg>>2]=(c[If>>2]|0)-1;c[ig>>2]=3+(c[Gf>>2]|0);c[jg>>2]=c[Gf>>2];while(1){if((c[jg>>2]|0)>>>0>=(c[ig>>2]|0)>>>0){dj=84;break;}aj=c[Ff>>2]|0;if((c[jg>>2]|0)==3)nj=(c[aj>>2]|0)-1|0;else nj=c[aj+(c[jg>>2]<<2)>>2]|0;c[kg>>2]=nj;c[lg>>2]=(c[Mf>>2]|0)-(c[kg>>2]|0);c[mg>>2]=0;if(((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[Yf>>2]|0)|0)>>>0){aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0;if((aj|0)==(mm((c[Cf>>2]|0)+(0-(c[kg>>2]|0))|0,c[Of>>2]|0)|0)){aj=Tj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[Cf>>2]|0)+(c[Of>>2]|0)+(0-(c[kg>>2]|0))|0,c[Df>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}else{c[ng>>2]=(c[Xf>>2]|0)+(c[lg>>2]|0);if((c[Ef>>2]|0?(((c[Yf>>2]|0)-1-(c[lg>>2]|0)|0)>>>0>=3?((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[ag>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0,(aj|0)==(mm(c[ng>>2]|0,c[Of>>2]|0)|0)):0){aj=Uj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[ng>>2]|0)+(c[Of>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}if((c[mg>>2]|0)>>>0>(c[hg>>2]|0)>>>0?(c[hg>>2]=c[mg>>2],c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[jg>>2]|0)-(c[Gf>>2]|0),c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[mg>>2],c[fg>>2]=(c[fg>>2]|0)+1,((c[mg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[mg>>2]|0)|0)==(c[Df>>2]|0))|0):0){dj=82;break;}c[jg>>2]=(c[jg>>2]|0)+1;}do{if((dj|0)==82){dj=0;c[zf>>2]=c[fg>>2];}else if((dj|0)==84){dj=0;if(((c[Jf>>2]|0)==3?(c[hg>>2]|0)>>>0<(c[Jf>>2]|0)>>>0:0)?(c[og>>2]=nm(c[Af>>2]|0,c[Cf>>2]|0)|0,((c[og>>2]|0)>>>0>(c[ag>>2]|0)>>>0?((c[Mf>>2]|0)-(c[og>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ef>>2]|0?(c[og>>2]|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[rg>>2]=(c[Xf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Uj(c[Cf>>2]|0,c[rg>>2]|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;}else{c[qg>>2]=(c[Lf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Tj(c[Cf>>2]|0,c[qg>>2]|0,c[Df>>2]|0)|0;}if((c[pg>>2]|0)>>>0>=(c[Jf>>2]|0)>>>0?(c[hg>>2]=c[pg>>2],c[c[Hf>>2]>>2]=(c[Mf>>2]|0)-(c[og>>2]|0)+2,c[(c[Hf>>2]|0)+4>>2]=c[pg>>2],c[fg>>2]=1,((c[pg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[pg>>2]|0)|0)==(c[Df>>2]|0))|0):0){c[(c[Af>>2]|0)+24>>2]=(c[Mf>>2]|0)+1;c[zf>>2]=1;break;}}c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2]=c[Mf>>2];while(1){aj=c[gg>>2]|0;c[gg>>2]=aj+-1;if(!aj)break;if((c[Rf>>2]|0)>>>0<=(c[ag>>2]|0)>>>0)break;c[sg>>2]=(c[Sf>>2]|0)+((c[Rf>>2]&c[Uf>>2])<<1<<2);c[tg>>2]=(c[Vf>>2]|0)>>>0<(c[Wf>>2]|0)>>>0?c[Vf>>2]|0:c[Wf>>2]|0;if(c[Ef>>2]|0?((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[ug>>2]=(c[Xf>>2]|0)+(c[Rf>>2]|0);aj=Uj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;if(((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0>=(c[Yf>>2]|0)>>>0)c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);}else{c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);aj=Tj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;}if((c[tg>>2]|0)>>>0>(c[hg>>2]|0)>>>0){if((c[tg>>2]|0)>>>0>((c[dg>>2]|0)-(c[Rf>>2]|0)|0)>>>0)c[dg>>2]=(c[Rf>>2]|0)+(c[tg>>2]|0);c[hg>>2]=c[tg>>2];c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[Mf>>2]|0)-(c[Rf>>2]|0)+2;c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[tg>>2];c[fg>>2]=(c[fg>>2]|0)+1;if((c[tg>>2]|0)>>>0>4096)break;if(((c[Cf>>2]|0)+(c[tg>>2]|0)|0)==(c[Df>>2]|0))break;}aj=c[Rf>>2]|0;if((d[(c[ug>>2]|0)+(c[tg>>2]|0)>>0]|0|0)<(d[(c[Cf>>2]|0)+(c[tg>>2]|0)>>0]|0|0)){c[c[bg>>2]>>2]=aj;c[Vf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=109;break;}c[bg>>2]=(c[sg>>2]|0)+4;c[Rf>>2]=c[(c[sg>>2]|0)+4>>2];}else{c[c[cg>>2]>>2]=aj;c[Wf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=112;break;}c[cg>>2]=c[sg>>2];c[Rf>>2]=c[c[sg>>2]>>2];}}if((dj|0)==109){dj=0;c[bg>>2]=eg;}else if((dj|0)==112){dj=0;c[cg>>2]=eg;}c[c[cg>>2]>>2]=0;c[c[bg>>2]>>2]=0;c[(c[Af>>2]|0)+24>>2]=(c[dg>>2]|0)-8;c[zf>>2]=c[fg>>2];}}while(0);c[Ah>>2]=c[zf>>2];break a;}}}}while(0);c[ki>>2]=c[Ah>>2];if(!(c[ki>>2]|0)){c[Vh>>2]=(c[Vh>>2]|0)+1;continue;}c[li>>2]=0;while(1){if((c[li>>2]|0)>>>0>=3)break;c[(c[bi>>2]|0)+16+(c[li>>2]<<2)>>2]=c[(c[Nh>>2]|0)+(c[li>>2]<<2)>>2];c[li>>2]=(c[li>>2]|0)+1;}c[(c[bi>>2]|0)+8>>2]=1;c[(c[bi>>2]|0)+12>>2]=c[ii>>2];c[mi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)+4>>2];do{if((c[mi>>2]|0)>>>0<=(c[$h>>2]|0)>>>0){c[ni>>2]=om(di,c[Wh>>2]|0,c[ii>>2]|0,c[Th>>2]|0)|0;c[oi>>2]=0;while(1){if((c[oi>>2]|0)>>>0>=(c[ai>>2]|0)>>>0)break;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=1073741824;c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=0;while(1){if((c[pi>>2]|0)>>>0>=(c[ki>>2]|0)>>>0)break;c[qi>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)>>2];c[ri>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)+4>>2];pm(si,c[Nh>>2]|0,c[qi>>2]|0,c[ji>>2]|0);while(1){if((c[oi>>2]|0)>>>0>(c[ri>>2]|0)>>>0)break;aj=c[ni>>2]|0;Zh=c[oi>>2]|0;Uh=c[Th>>2]|0;_i=c[Rh>>2]|0;c[yd>>2]=c[qi>>2];c[zd>>2]=Zh;c[Ad>>2]=Uh;c[Bd>>2]=_i;c[Dd>>2]=qm((c[yd>>2]|0)+1|0)|0;c[Ed>>2]=(c[zd>>2]|0)-3;if(c[(c[Ad>>2]|0)+56>>2]|0){_i=(qm((c[Ed>>2]|0)+1|0)|0)+16|0;c[xd>>2]=_i+(c[Dd>>2]|0);}else{_i=(c[Dd>>2]|0)+(c[(c[Ad>>2]|0)+52>>2]|0)|0;c[Cd>>2]=_i-(qm((c[(c[(c[Ad>>2]|0)+12>>2]|0)+(c[Dd>>2]<<2)>>2]|0)+1|0)|0);if((c[Bd>>2]|0)<2&(c[Dd>>2]|0)>>>0>=20)c[Cd>>2]=(c[Cd>>2]|0)+((c[Dd>>2]|0)-19<<1);c[Fd>>2]=rm(c[Ed>>2]|0)|0;_i=(c[5840+(c[Fd>>2]<<2)>>2]|0)+(c[(c[Ad>>2]|0)+48>>2]|0)|0;Uh=_i-(qm((c[(c[(c[Ad>>2]|0)+8>>2]|0)+(c[Fd>>2]<<2)>>2]|0)+1|0)|0)|0;c[Cd>>2]=(c[Cd>>2]|0)+Uh;c[xd>>2]=c[Cd>>2];}c[ti>>2]=aj+(c[xd>>2]|0);c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=c[oi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+4>>2]=c[qi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+12>>2]=c[ii>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=c[ti>>2];aj=(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+16|0;c[aj>>2]=c[si>>2];c[aj+4>>2]=c[si+4>>2];c[aj+8>>2]=c[si+8>>2];c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=(c[pi>>2]|0)+1;}c[fi>>2]=(c[oi>>2]|0)-1;c[ei>>2]=1;b:while(1){if((c[ei>>2]|0)>>>0>(c[fi>>2]|0)>>>0){dj=504;break;}c[ui>>2]=(c[Vh>>2]|0)+(c[ei>>2]|0);if((c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+8>>2]|0)==1)oj=(c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+12>>2]|0)+1|0;else oj=1;c[vi>>2]=oj;if((c[ei>>2]|0)>>>0>(c[vi>>2]|0)>>>0){aj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[vi>>2]|0)|0)*28|0)>>2]|0;c[wi>>2]=aj+(sm((c[ui>>2]|0)+(0-(c[vi>>2]|0))|0,c[vi>>2]|0,c[Th>>2]|0)|0);}else c[wi>>2]=tm(di,c[Wh>>2]|0,c[vi>>2]|0,c[Th>>2]|0)|0;if((c[wi>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0)){c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+4>>2]=0;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]=c[vi>>2];c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]=c[wi>>2];aj=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Uh=(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+16|0;c[aj>>2]=c[Uh>>2];c[aj+4>>2]=c[Uh+4>>2];c[aj+8>>2]=c[Uh+8>>2];}c:do{if((c[ui>>2]|0)>>>0<=(c[Yh>>2]|0)>>>0){if((c[ei>>2]|0)==(c[fi>>2]|0)){dj=504;break b;}if((c[Rh>>2]|0)==0?(c[(c[bi>>2]|0)+(((c[ei>>2]|0)+1|0)*28|0)>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0):0)break;c[xi>>2]=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)!=1&1;if((c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)==1)pj=c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]|0;else pj=0;c[yi>>2]=pj;if((c[ei>>2]|0)>>>0>(c[yi>>2]|0)>>>0)qj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[yi>>2]|0)|0)*28|0)>>2]|0;else qj=0;c[zi>>2]=qj;Uh=c[zi>>2]|0;c[Ai>>2]=Uh+(um((c[ui>>2]|0)+(0-(c[yi>>2]|0))|0,c[yi>>2]|0,c[Th>>2]|0)|0);Uh=c[Oh>>2]|0;aj=c[ui>>2]|0;_i=c[Xh>>2]|0;Zh=c[Sh>>2]|0;Zi=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Ph=c[xi>>2]|0;Qh=c[ci>>2]|0;_h=c[ai>>2]|0;c[nd>>2]=c[Lh>>2];c[od>>2]=Uh;c[pd>>2]=aj;c[qd>>2]=_i;c[rd>>2]=Zh;c[sd>>2]=Zi;c[td>>2]=Ph;c[ud>>2]=Qh;c[vd>>2]=_h;c[wd>>2]=c[(c[od>>2]|0)+16>>2];d:do{if((c[pd>>2]|0)>>>0<((c[(c[nd>>2]|0)+4>>2]|0)+(c[(c[nd>>2]|0)+24>>2]|0)|0)>>>0)c[md>>2]=0;else{_h=c[od>>2]|0;Qh=c[pd>>2]|0;Ph=c[qd>>2]|0;Zi=c[wd>>2]|0;Zh=c[rd>>2]|0;c[dd>>2]=c[nd>>2];c[ed>>2]=_h;c[fd>>2]=Qh;c[gd>>2]=Ph;c[hd>>2]=Zi;c[id>>2]=Zh;c[jd>>2]=c[(c[dd>>2]|0)+4>>2];c[kd>>2]=(c[fd>>2]|0)-(c[jd>>2]|0);c[ld>>2]=c[(c[dd>>2]|0)+24>>2];while(1){if((c[ld>>2]|0)>>>0>=(c[kd>>2]|0)>>>0)break;Zh=Rj(c[dd>>2]|0,c[ed>>2]|0,(c[jd>>2]|0)+(c[ld>>2]|0)|0,c[gd>>2]|0,c[hd>>2]|0,c[id>>2]|0)|0;c[ld>>2]=(c[ld>>2]|0)+Zh;}c[(c[dd>>2]|0)+24>>2]=c[kd>>2];switch(c[wd>>2]|0){case 3:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[ic>>2]=c[nd>>2];c[jc>>2]=Zh;c[kc>>2]=Zi;c[lc>>2]=Ph;c[mc>>2]=Qh;c[nc>>2]=_h;c[oc>>2]=_i;c[pc>>2]=aj;c[qc>>2]=Uh;c[rc>>2]=3;if((c[(c[jc>>2]|0)+20>>2]|0)>>>0<4095)rj=c[(c[jc>>2]|0)+20>>2]|0;else rj=4095;c[sc>>2]=rj;c[tc>>2]=c[(c[ic>>2]|0)+4>>2];c[uc>>2]=(c[kc>>2]|0)-(c[tc>>2]|0);c[vc>>2]=c[(c[jc>>2]|0)+8>>2];c[wc>>2]=(c[rc>>2]|0)==3?3:4;c[xc>>2]=c[(c[ic>>2]|0)+36>>2];c[yc>>2]=Sj(c[kc>>2]|0,c[vc>>2]|0,c[rc>>2]|0)|0;c[zc>>2]=c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2];c[Ac>>2]=c[(c[ic>>2]|0)+44>>2];c[Bc>>2]=(c[(c[jc>>2]|0)+4>>2]|0)-1;c[Cc>>2]=(1<<c[Bc>>2])-1;c[Dc>>2]=0;c[Ec>>2]=0;c[Fc>>2]=c[(c[ic>>2]|0)+8>>2];c[Gc>>2]=c[(c[ic>>2]|0)+12>>2];c[Hc>>2]=(c[Fc>>2]|0)+(c[Gc>>2]|0);c[Ic>>2]=(c[tc>>2]|0)+(c[Gc>>2]|0);if((c[Cc>>2]|0)>>>0>=(c[uc>>2]|0)>>>0)sj=0;else sj=(c[uc>>2]|0)-(c[Cc>>2]|0)|0;c[Jc>>2]=sj;c[Kc>>2]=c[(c[ic>>2]|0)+16>>2];c[Lc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2);c[Mc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2)+4;c[Nc>>2]=(c[uc>>2]|0)+8+1;c[Pc>>2]=0;c[Qc>>2]=1<<c[(c[jc>>2]|0)+12>>2];c[Rc>>2]=(c[qc>>2]|0)-1;c[Sc>>2]=3+(c[oc>>2]|0);c[Tc>>2]=c[oc>>2];while(1){if((c[Tc>>2]|0)>>>0>=(c[Sc>>2]|0)>>>0){dj=287;break;}Uh=c[nc>>2]|0;if((c[Tc>>2]|0)==3)tj=(c[Uh>>2]|0)-1|0;else tj=c[Uh+(c[Tc>>2]<<2)>>2]|0;c[Uc>>2]=tj;c[Vc>>2]=(c[uc>>2]|0)-(c[Uc>>2]|0);c[Wc>>2]=0;do{if(((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Gc>>2]|0)|0)>>>0){Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm((c[kc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[wc>>2]|0)|0))break;Uh=Tj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[kc>>2]|0)+(c[wc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[lc>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}else{c[Xc>>2]=(c[Fc>>2]|0)+(c[Vc>>2]|0);if(!(c[mc>>2]|0))break;if(!((((c[Gc>>2]|0)-1-(c[Vc>>2]|0)|0)>>>0>=3?((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Kc>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm(c[Xc>>2]|0,c[wc>>2]|0)|0))break;Uh=Uj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[Xc>>2]|0)+(c[wc>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}}while(0);if((c[Wc>>2]|0)>>>0>(c[Rc>>2]|0)>>>0?(c[Rc>>2]=c[Wc>>2],c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[Tc>>2]|0)-(c[oc>>2]|0),c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[Wc>>2],c[Pc>>2]=(c[Pc>>2]|0)+1,((c[Wc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Wc>>2]|0)|0)==(c[lc>>2]|0))|0):0){dj=285;break;}c[Tc>>2]=(c[Tc>>2]|0)+1;}e:do{if((dj|0)==285){dj=0;c[hc>>2]=c[Pc>>2];}else if((dj|0)==287){dj=0;do{if((c[rc>>2]|0)==3){if((c[Rc>>2]|0)>>>0>=(c[rc>>2]|0)>>>0)break;c[Yc>>2]=nm(c[ic>>2]|0,c[kc>>2]|0)|0;if(!(((c[Yc>>2]|0)>>>0>(c[Kc>>2]|0)>>>0?((c[uc>>2]|0)-(c[Yc>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[mc>>2]|0){if((c[Yc>>2]|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=292;break;}c[$c>>2]=(c[Fc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Uj(c[kc>>2]|0,c[$c>>2]|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;}else dj=292;}while(0);if((dj|0)==292){dj=0;c[_c>>2]=(c[tc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Tj(c[kc>>2]|0,c[_c>>2]|0,c[lc>>2]|0)|0;}if((c[Zc>>2]|0)>>>0<(c[rc>>2]|0)>>>0)break;c[Rc>>2]=c[Zc>>2];c[c[pc>>2]>>2]=(c[uc>>2]|0)-(c[Yc>>2]|0)+2;c[(c[pc>>2]|0)+4>>2]=c[Zc>>2];c[Pc>>2]=1;if(!(((c[Zc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Zc>>2]|0)|0)==(c[lc>>2]|0))|0))break;c[(c[ic>>2]|0)+24>>2]=(c[uc>>2]|0)+1;c[hc>>2]=1;break e;}}while(0);c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2]=c[uc>>2];while(1){Uh=c[Qc>>2]|0;c[Qc>>2]=Uh+-1;if(!Uh)break;if((c[zc>>2]|0)>>>0<=(c[Kc>>2]|0)>>>0)break;c[ad>>2]=(c[Ac>>2]|0)+((c[zc>>2]&c[Cc>>2])<<1<<2);c[bd>>2]=(c[Dc>>2]|0)>>>0<(c[Ec>>2]|0)>>>0?c[Dc>>2]|0:c[Ec>>2]|0;do{if(c[mc>>2]|0){if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=302;break;}c[cd>>2]=(c[Fc>>2]|0)+(c[zc>>2]|0);Uh=Uj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0<(c[Gc>>2]|0)>>>0)break;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);}else dj=302;}while(0);if((dj|0)==302){dj=0;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);Uh=Tj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;}if((c[bd>>2]|0)>>>0>(c[Rc>>2]|0)>>>0){if((c[bd>>2]|0)>>>0>((c[Nc>>2]|0)-(c[zc>>2]|0)|0)>>>0)c[Nc>>2]=(c[zc>>2]|0)+(c[bd>>2]|0);c[Rc>>2]=c[bd>>2];c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[uc>>2]|0)-(c[zc>>2]|0)+2;c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[bd>>2];c[Pc>>2]=(c[Pc>>2]|0)+1;if((c[bd>>2]|0)>>>0>4096)break;if(((c[kc>>2]|0)+(c[bd>>2]|0)|0)==(c[lc>>2]|0))break;}Uh=c[zc>>2]|0;if((d[(c[cd>>2]|0)+(c[bd>>2]|0)>>0]|0|0)<(d[(c[kc>>2]|0)+(c[bd>>2]|0)>>0]|0|0)){c[c[Lc>>2]>>2]=Uh;c[Dc>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=312;break;}c[Lc>>2]=(c[ad>>2]|0)+4;c[zc>>2]=c[(c[ad>>2]|0)+4>>2];}else{c[c[Mc>>2]>>2]=Uh;c[Ec>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=315;break;}c[Mc>>2]=c[ad>>2];c[zc>>2]=c[c[ad>>2]>>2];}}if((dj|0)==312){dj=0;c[Lc>>2]=Oc;}else if((dj|0)==315){dj=0;c[Mc>>2]=Oc;}c[c[Mc>>2]>>2]=0;c[c[Lc>>2]>>2]=0;c[(c[ic>>2]|0)+24>>2]=(c[Nc>>2]|0)-8;c[hc>>2]=c[Pc>>2];}}while(0);c[md>>2]=c[hc>>2];break d;break;}case 7:case 6:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[u>>2]=c[nd>>2];c[v>>2]=Uh;c[w>>2]=aj;c[x>>2]=_i;c[y>>2]=_h;c[z>>2]=Qh;c[A>>2]=Ph;c[B>>2]=Zi;c[C>>2]=Zh;c[D>>2]=6;if((c[(c[v>>2]|0)+20>>2]|0)>>>0<4095)uj=c[(c[v>>2]|0)+20>>2]|0;else uj=4095;c[E>>2]=uj;c[F>>2]=c[(c[u>>2]|0)+4>>2];c[G>>2]=(c[w>>2]|0)-(c[F>>2]|0);c[H>>2]=c[(c[v>>2]|0)+8>>2];c[I>>2]=(c[D>>2]|0)==3?3:4;c[J>>2]=c[(c[u>>2]|0)+36>>2];c[K>>2]=Sj(c[w>>2]|0,c[H>>2]|0,c[D>>2]|0)|0;c[L>>2]=c[(c[J>>2]|0)+(c[K>>2]<<2)>>2];c[M>>2]=c[(c[u>>2]|0)+44>>2];c[N>>2]=(c[(c[v>>2]|0)+4>>2]|0)-1;c[O>>2]=(1<<c[N>>2])-1;c[P>>2]=0;c[Q>>2]=0;c[R>>2]=c[(c[u>>2]|0)+8>>2];c[S>>2]=c[(c[u>>2]|0)+12>>2];c[T>>2]=(c[R>>2]|0)+(c[S>>2]|0);c[U>>2]=(c[F>>2]|0)+(c[S>>2]|0);if((c[O>>2]|0)>>>0>=(c[G>>2]|0)>>>0)vj=0;else vj=(c[G>>2]|0)-(c[O>>2]|0)|0;c[V>>2]=vj;c[W>>2]=c[(c[u>>2]|0)+16>>2];c[X>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2);c[Y>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2)+4;c[Z>>2]=(c[G>>2]|0)+8+1;c[$>>2]=0;c[aa>>2]=1<<c[(c[v>>2]|0)+12>>2];c[ba>>2]=(c[C>>2]|0)-1;c[ca>>2]=3+(c[A>>2]|0);c[da>>2]=c[A>>2];while(1){if((c[da>>2]|0)>>>0>=(c[ca>>2]|0)>>>0){dj=446;break;}Zh=c[z>>2]|0;if((c[da>>2]|0)==3)wj=(c[Zh>>2]|0)-1|0;else wj=c[Zh+(c[da>>2]<<2)>>2]|0;c[ea>>2]=wj;c[fa>>2]=(c[G>>2]|0)-(c[ea>>2]|0);c[ga>>2]=0;do{if(((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[S>>2]|0)|0)>>>0){Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm((c[w>>2]|0)+(0-(c[ea>>2]|0))|0,c[I>>2]|0)|0))break;Zh=Tj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[w>>2]|0)+(c[I>>2]|0)+(0-(c[ea>>2]|0))|0,c[x>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}else{c[ha>>2]=(c[R>>2]|0)+(c[fa>>2]|0);if(!(c[y>>2]|0))break;if(!((((c[S>>2]|0)-1-(c[fa>>2]|0)|0)>>>0>=3?((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[W>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm(c[ha>>2]|0,c[I>>2]|0)|0))break;Zh=Uj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[ha>>2]|0)+(c[I>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}}while(0);if((c[ga>>2]|0)>>>0>(c[ba>>2]|0)>>>0?(c[ba>>2]=c[ga>>2],c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[da>>2]|0)-(c[A>>2]|0),c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[ga>>2],c[$>>2]=(c[$>>2]|0)+1,((c[ga>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ga>>2]|0)|0)==(c[x>>2]|0))|0):0){dj=444;break;}c[da>>2]=(c[da>>2]|0)+1;}f:do{if((dj|0)==444){dj=0;c[t>>2]=c[$>>2];}else if((dj|0)==446){dj=0;do{if((c[D>>2]|0)==3){if((c[ba>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break;c[ia>>2]=nm(c[u>>2]|0,c[w>>2]|0)|0;if(!(((c[ia>>2]|0)>>>0>(c[W>>2]|0)>>>0?((c[G>>2]|0)-(c[ia>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[y>>2]|0){if((c[ia>>2]|0)>>>0>=(c[S>>2]|0)>>>0){dj=451;break;}c[la>>2]=(c[R>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Uj(c[w>>2]|0,c[la>>2]|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;}else dj=451;}while(0);if((dj|0)==451){dj=0;c[ka>>2]=(c[F>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Tj(c[w>>2]|0,c[ka>>2]|0,c[x>>2]|0)|0;}if((c[ja>>2]|0)>>>0<(c[D>>2]|0)>>>0)break;c[ba>>2]=c[ja>>2];c[c[B>>2]>>2]=(c[G>>2]|0)-(c[ia>>2]|0)+2;c[(c[B>>2]|0)+4>>2]=c[ja>>2];c[$>>2]=1;if(!(((c[ja>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ja>>2]|0)|0)==(c[x>>2]|0))|0))break;c[(c[u>>2]|0)+24>>2]=(c[G>>2]|0)+1;c[t>>2]=1;break f;}}while(0);c[(c[J>>2]|0)+(c[K>>2]<<2)>>2]=c[G>>2];while(1){Zh=c[aa>>2]|0;c[aa>>2]=Zh+-1;if(!Zh)break;if((c[L>>2]|0)>>>0<=(c[W>>2]|0)>>>0)break;c[ma>>2]=(c[M>>2]|0)+((c[L>>2]&c[O>>2])<<1<<2);c[na>>2]=(c[P>>2]|0)>>>0<(c[Q>>2]|0)>>>0?c[P>>2]|0:c[Q>>2]|0;do{if(c[y>>2]|0){if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0>=(c[S>>2]|0)>>>0){dj=461;break;}c[oa>>2]=(c[R>>2]|0)+(c[L>>2]|0);Zh=Uj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0<(c[S>>2]|0)>>>0)break;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);}else dj=461;}while(0);if((dj|0)==461){dj=0;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);Zh=Tj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;}if((c[na>>2]|0)>>>0>(c[ba>>2]|0)>>>0){if((c[na>>2]|0)>>>0>((c[Z>>2]|0)-(c[L>>2]|0)|0)>>>0)c[Z>>2]=(c[L>>2]|0)+(c[na>>2]|0);c[ba>>2]=c[na>>2];c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[G>>2]|0)-(c[L>>2]|0)+2;c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[na>>2];c[$>>2]=(c[$>>2]|0)+1;if((c[na>>2]|0)>>>0>4096)break;if(((c[w>>2]|0)+(c[na>>2]|0)|0)==(c[x>>2]|0))break;}Zh=c[L>>2]|0;if((d[(c[oa>>2]|0)+(c[na>>2]|0)>>0]|0|0)<(d[(c[w>>2]|0)+(c[na>>2]|0)>>0]|0|0)){c[c[X>>2]>>2]=Zh;c[P>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=471;break;}c[X>>2]=(c[ma>>2]|0)+4;c[L>>2]=c[(c[ma>>2]|0)+4>>2];}else{c[c[Y>>2]>>2]=Zh;c[Q>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=474;break;}c[Y>>2]=c[ma>>2];c[L>>2]=c[c[ma>>2]>>2];}}if((dj|0)==471){dj=0;c[X>>2]=_;}else if((dj|0)==474){dj=0;c[Y>>2]=_;}c[c[Y>>2]>>2]=0;c[c[X>>2]>>2]=0;c[(c[u>>2]|0)+24>>2]=(c[Z>>2]|0)-8;c[t>>2]=c[$>>2];}}while(0);c[md>>2]=c[t>>2];break d;break;}case 5:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[qa>>2]=c[nd>>2];c[ra>>2]=Zh;c[sa>>2]=Zi;c[ta>>2]=Ph;c[ua>>2]=Qh;c[va>>2]=_h;c[wa>>2]=_i;c[xa>>2]=aj;c[ya>>2]=Uh;c[za>>2]=5;if((c[(c[ra>>2]|0)+20>>2]|0)>>>0<4095)xj=c[(c[ra>>2]|0)+20>>2]|0;else xj=4095;c[Aa>>2]=xj;c[Ba>>2]=c[(c[qa>>2]|0)+4>>2];c[Ca>>2]=(c[sa>>2]|0)-(c[Ba>>2]|0);c[Da>>2]=c[(c[ra>>2]|0)+8>>2];c[Ea>>2]=(c[za>>2]|0)==3?3:4;c[Fa>>2]=c[(c[qa>>2]|0)+36>>2];c[Ga>>2]=Sj(c[sa>>2]|0,c[Da>>2]|0,c[za>>2]|0)|0;c[Ha>>2]=c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2];c[Ia>>2]=c[(c[qa>>2]|0)+44>>2];c[Ja>>2]=(c[(c[ra>>2]|0)+4>>2]|0)-1;c[Ka>>2]=(1<<c[Ja>>2])-1;c[La>>2]=0;c[Ma>>2]=0;c[Na>>2]=c[(c[qa>>2]|0)+8>>2];c[Oa>>2]=c[(c[qa>>2]|0)+12>>2];c[Pa>>2]=(c[Na>>2]|0)+(c[Oa>>2]|0);c[Qa>>2]=(c[Ba>>2]|0)+(c[Oa>>2]|0);if((c[Ka>>2]|0)>>>0>=(c[Ca>>2]|0)>>>0)yj=0;else yj=(c[Ca>>2]|0)-(c[Ka>>2]|0)|0;c[Ra>>2]=yj;c[Sa>>2]=c[(c[qa>>2]|0)+16>>2];c[Ta>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2);c[Ua>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2)+4;c[Va>>2]=(c[Ca>>2]|0)+8+1;c[Xa>>2]=0;c[Ya>>2]=1<<c[(c[ra>>2]|0)+12>>2];c[Za>>2]=(c[ya>>2]|0)-1;c[_a>>2]=3+(c[wa>>2]|0);c[$a>>2]=c[wa>>2];while(1){if((c[$a>>2]|0)>>>0>=(c[_a>>2]|0)>>>0){dj=393;break;}Uh=c[va>>2]|0;if((c[$a>>2]|0)==3)zj=(c[Uh>>2]|0)-1|0;else zj=c[Uh+(c[$a>>2]<<2)>>2]|0;c[ab>>2]=zj;c[bb>>2]=(c[Ca>>2]|0)-(c[ab>>2]|0);c[cb>>2]=0;do{if(((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Oa>>2]|0)|0)>>>0){Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm((c[sa>>2]|0)+(0-(c[ab>>2]|0))|0,c[Ea>>2]|0)|0))break;Uh=Tj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[sa>>2]|0)+(c[Ea>>2]|0)+(0-(c[ab>>2]|0))|0,c[ta>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}else{c[db>>2]=(c[Na>>2]|0)+(c[bb>>2]|0);if(!(c[ua>>2]|0))break;if(!((((c[Oa>>2]|0)-1-(c[bb>>2]|0)|0)>>>0>=3?((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Sa>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm(c[db>>2]|0,c[Ea>>2]|0)|0))break;Uh=Uj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[db>>2]|0)+(c[Ea>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}}while(0);if((c[cb>>2]|0)>>>0>(c[Za>>2]|0)>>>0?(c[Za>>2]=c[cb>>2],c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[$a>>2]|0)-(c[wa>>2]|0),c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[cb>>2],c[Xa>>2]=(c[Xa>>2]|0)+1,((c[cb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[cb>>2]|0)|0)==(c[ta>>2]|0))|0):0){dj=391;break;}c[$a>>2]=(c[$a>>2]|0)+1;}g:do{if((dj|0)==391){dj=0;c[pa>>2]=c[Xa>>2];}else if((dj|0)==393){dj=0;do{if((c[za>>2]|0)==3){if((c[Za>>2]|0)>>>0>=(c[za>>2]|0)>>>0)break;c[eb>>2]=nm(c[qa>>2]|0,c[sa>>2]|0)|0;if(!(((c[eb>>2]|0)>>>0>(c[Sa>>2]|0)>>>0?((c[Ca>>2]|0)-(c[eb>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[ua>>2]|0){if((c[eb>>2]|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=398;break;}c[hb>>2]=(c[Na>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Uj(c[sa>>2]|0,c[hb>>2]|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;}else dj=398;}while(0);if((dj|0)==398){dj=0;c[gb>>2]=(c[Ba>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Tj(c[sa>>2]|0,c[gb>>2]|0,c[ta>>2]|0)|0;}if((c[fb>>2]|0)>>>0<(c[za>>2]|0)>>>0)break;c[Za>>2]=c[fb>>2];c[c[xa>>2]>>2]=(c[Ca>>2]|0)-(c[eb>>2]|0)+2;c[(c[xa>>2]|0)+4>>2]=c[fb>>2];c[Xa>>2]=1;if(!(((c[fb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[fb>>2]|0)|0)==(c[ta>>2]|0))|0))break;c[(c[qa>>2]|0)+24>>2]=(c[Ca>>2]|0)+1;c[pa>>2]=1;break g;}}while(0);c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2]=c[Ca>>2];while(1){Uh=c[Ya>>2]|0;c[Ya>>2]=Uh+-1;if(!Uh)break;if((c[Ha>>2]|0)>>>0<=(c[Sa>>2]|0)>>>0)break;c[ib>>2]=(c[Ia>>2]|0)+((c[Ha>>2]&c[Ka>>2])<<1<<2);c[jb>>2]=(c[La>>2]|0)>>>0<(c[Ma>>2]|0)>>>0?c[La>>2]|0:c[Ma>>2]|0;do{if(c[ua>>2]|0){if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=408;break;}c[kb>>2]=(c[Na>>2]|0)+(c[Ha>>2]|0);Uh=Uj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0<(c[Oa>>2]|0)>>>0)break;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);}else dj=408;}while(0);if((dj|0)==408){dj=0;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);Uh=Tj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;}if((c[jb>>2]|0)>>>0>(c[Za>>2]|0)>>>0){if((c[jb>>2]|0)>>>0>((c[Va>>2]|0)-(c[Ha>>2]|0)|0)>>>0)c[Va>>2]=(c[Ha>>2]|0)+(c[jb>>2]|0);c[Za>>2]=c[jb>>2];c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[Ca>>2]|0)-(c[Ha>>2]|0)+2;c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[jb>>2];c[Xa>>2]=(c[Xa>>2]|0)+1;if((c[jb>>2]|0)>>>0>4096)break;if(((c[sa>>2]|0)+(c[jb>>2]|0)|0)==(c[ta>>2]|0))break;}Uh=c[Ha>>2]|0;if((d[(c[kb>>2]|0)+(c[jb>>2]|0)>>0]|0|0)<(d[(c[sa>>2]|0)+(c[jb>>2]|0)>>0]|0|0)){c[c[Ta>>2]>>2]=Uh;c[La>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=418;break;}c[Ta>>2]=(c[ib>>2]|0)+4;c[Ha>>2]=c[(c[ib>>2]|0)+4>>2];}else{c[c[Ua>>2]>>2]=Uh;c[Ma>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=421;break;}c[Ua>>2]=c[ib>>2];c[Ha>>2]=c[c[ib>>2]>>2];}}if((dj|0)==418){dj=0;c[Ta>>2]=Wa;}else if((dj|0)==421){dj=0;c[Ua>>2]=Wa;}c[c[Ua>>2]>>2]=0;c[c[Ta>>2]>>2]=0;c[(c[qa>>2]|0)+24>>2]=(c[Va>>2]|0)-8;c[pa>>2]=c[Xa>>2];}}while(0);c[md>>2]=c[pa>>2];break d;break;}default:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[mb>>2]=c[nd>>2];c[nb>>2]=Uh;c[ob>>2]=aj;c[pb>>2]=_i;c[qb>>2]=_h;c[rb>>2]=Qh;c[sb>>2]=Ph;c[tb>>2]=Zi;c[ub>>2]=Zh;c[vb>>2]=4;if((c[(c[nb>>2]|0)+20>>2]|0)>>>0<4095)Aj=c[(c[nb>>2]|0)+20>>2]|0;else Aj=4095;c[wb>>2]=Aj;c[xb>>2]=c[(c[mb>>2]|0)+4>>2];c[yb>>2]=(c[ob>>2]|0)-(c[xb>>2]|0);c[zb>>2]=c[(c[nb>>2]|0)+8>>2];c[Ab>>2]=(c[vb>>2]|0)==3?3:4;c[Bb>>2]=c[(c[mb>>2]|0)+36>>2];c[Cb>>2]=Sj(c[ob>>2]|0,c[zb>>2]|0,c[vb>>2]|0)|0;c[Db>>2]=c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2];c[Eb>>2]=c[(c[mb>>2]|0)+44>>2];c[Fb>>2]=(c[(c[nb>>2]|0)+4>>2]|0)-1;c[Gb>>2]=(1<<c[Fb>>2])-1;c[Hb>>2]=0;c[Ib>>2]=0;c[Jb>>2]=c[(c[mb>>2]|0)+8>>2];c[Kb>>2]=c[(c[mb>>2]|0)+12>>2];c[Lb>>2]=(c[Jb>>2]|0)+(c[Kb>>2]|0);c[Mb>>2]=(c[xb>>2]|0)+(c[Kb>>2]|0);if((c[Gb>>2]|0)>>>0>=(c[yb>>2]|0)>>>0)Bj=0;else Bj=(c[yb>>2]|0)-(c[Gb>>2]|0)|0;c[Nb>>2]=Bj;c[Ob>>2]=c[(c[mb>>2]|0)+16>>2];c[Pb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2);c[Qb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2)+4;c[Rb>>2]=(c[yb>>2]|0)+8+1;c[Tb>>2]=0;c[Ub>>2]=1<<c[(c[nb>>2]|0)+12>>2];c[Vb>>2]=(c[ub>>2]|0)-1;c[Wb>>2]=3+(c[sb>>2]|0);c[Xb>>2]=c[sb>>2];while(1){if((c[Xb>>2]|0)>>>0>=(c[Wb>>2]|0)>>>0){dj=340;break;}Zh=c[rb>>2]|0;if((c[Xb>>2]|0)==3)Cj=(c[Zh>>2]|0)-1|0;else Cj=c[Zh+(c[Xb>>2]<<2)>>2]|0;c[Yb>>2]=Cj;c[Zb>>2]=(c[yb>>2]|0)-(c[Yb>>2]|0);c[_b>>2]=0;do{if(((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Kb>>2]|0)|0)>>>0){Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm((c[ob>>2]|0)+(0-(c[Yb>>2]|0))|0,c[Ab>>2]|0)|0))break;Zh=Tj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[ob>>2]|0)+(c[Ab>>2]|0)+(0-(c[Yb>>2]|0))|0,c[pb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}else{c[$b>>2]=(c[Jb>>2]|0)+(c[Zb>>2]|0);if(!(c[qb>>2]|0))break;if(!((((c[Kb>>2]|0)-1-(c[Zb>>2]|0)|0)>>>0>=3?((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Ob>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm(c[$b>>2]|0,c[Ab>>2]|0)|0))break;Zh=Uj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[$b>>2]|0)+(c[Ab>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}}while(0);if((c[_b>>2]|0)>>>0>(c[Vb>>2]|0)>>>0?(c[Vb>>2]=c[_b>>2],c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[Xb>>2]|0)-(c[sb>>2]|0),c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[_b>>2],c[Tb>>2]=(c[Tb>>2]|0)+1,((c[_b>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[_b>>2]|0)|0)==(c[pb>>2]|0))|0):0){dj=338;break;}c[Xb>>2]=(c[Xb>>2]|0)+1;}h:do{if((dj|0)==338){dj=0;c[lb>>2]=c[Tb>>2];}else if((dj|0)==340){dj=0;do{if((c[vb>>2]|0)==3){if((c[Vb>>2]|0)>>>0>=(c[vb>>2]|0)>>>0)break;c[ac>>2]=nm(c[mb>>2]|0,c[ob>>2]|0)|0;if(!(((c[ac>>2]|0)>>>0>(c[Ob>>2]|0)>>>0?((c[yb>>2]|0)-(c[ac>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[qb>>2]|0){if((c[ac>>2]|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=345;break;}c[dc>>2]=(c[Jb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Uj(c[ob>>2]|0,c[dc>>2]|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;}else dj=345;}while(0);if((dj|0)==345){dj=0;c[cc>>2]=(c[xb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Tj(c[ob>>2]|0,c[cc>>2]|0,c[pb>>2]|0)|0;}if((c[bc>>2]|0)>>>0<(c[vb>>2]|0)>>>0)break;c[Vb>>2]=c[bc>>2];c[c[tb>>2]>>2]=(c[yb>>2]|0)-(c[ac>>2]|0)+2;c[(c[tb>>2]|0)+4>>2]=c[bc>>2];c[Tb>>2]=1;if(!(((c[bc>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[bc>>2]|0)|0)==(c[pb>>2]|0))|0))break;c[(c[mb>>2]|0)+24>>2]=(c[yb>>2]|0)+1;c[lb>>2]=1;break h;}}while(0);c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2]=c[yb>>2];while(1){Zh=c[Ub>>2]|0;c[Ub>>2]=Zh+-1;if(!Zh)break;if((c[Db>>2]|0)>>>0<=(c[Ob>>2]|0)>>>0)break;c[ec>>2]=(c[Eb>>2]|0)+((c[Db>>2]&c[Gb>>2])<<1<<2);c[fc>>2]=(c[Hb>>2]|0)>>>0<(c[Ib>>2]|0)>>>0?c[Hb>>2]|0:c[Ib>>2]|0;do{if(c[qb>>2]|0){if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=355;break;}c[gc>>2]=(c[Jb>>2]|0)+(c[Db>>2]|0);Zh=Uj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0<(c[Kb>>2]|0)>>>0)break;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);}else dj=355;}while(0);if((dj|0)==355){dj=0;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);Zh=Tj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;}if((c[fc>>2]|0)>>>0>(c[Vb>>2]|0)>>>0){if((c[fc>>2]|0)>>>0>((c[Rb>>2]|0)-(c[Db>>2]|0)|0)>>>0)c[Rb>>2]=(c[Db>>2]|0)+(c[fc>>2]|0);c[Vb>>2]=c[fc>>2];c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[yb>>2]|0)-(c[Db>>2]|0)+2;c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[fc>>2];c[Tb>>2]=(c[Tb>>2]|0)+1;if((c[fc>>2]|0)>>>0>4096)break;if(((c[ob>>2]|0)+(c[fc>>2]|0)|0)==(c[pb>>2]|0))break;}Zh=c[Db>>2]|0;if((d[(c[gc>>2]|0)+(c[fc>>2]|0)>>0]|0|0)<(d[(c[ob>>2]|0)+(c[fc>>2]|0)>>0]|0|0)){c[c[Pb>>2]>>2]=Zh;c[Hb>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=365;break;}c[Pb>>2]=(c[ec>>2]|0)+4;c[Db>>2]=c[(c[ec>>2]|0)+4>>2];}else{c[c[Qb>>2]>>2]=Zh;c[Ib>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=368;break;}c[Qb>>2]=c[ec>>2];c[Db>>2]=c[c[ec>>2]>>2];}}if((dj|0)==365){dj=0;c[Pb>>2]=Sb;}else if((dj|0)==368){dj=0;c[Qb>>2]=Sb;}c[c[Qb>>2]>>2]=0;c[c[Pb>>2]>>2]=0;c[(c[mb>>2]|0)+24>>2]=(c[Rb>>2]|0)-8;c[lb>>2]=c[Tb>>2];}}while(0);c[md>>2]=c[lb>>2];break d;}}}}while(0);c[Bi>>2]=c[md>>2];if(c[Bi>>2]|0){c[Di>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)+4>>2];if(((c[Di>>2]|0)>>>0>(c[$h>>2]|0)>>>0?1:((c[ei>>2]|0)+(c[Di>>2]|0)|0)>>>0>=4096)|0){dj=481;break b;}c[Ci>>2]=0;while(1){if((c[Ci>>2]|0)>>>0>=(c[Bi>>2]|0)>>>0)break c;c[Ei>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)>>2];pm(Fi,(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0,c[Ei>>2]|0,c[xi>>2]|0);c[Gi>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)+4>>2];if((c[Ci>>2]|0)>>>0>0)Dj=(c[(c[ci>>2]|0)+((c[Ci>>2]|0)-1<<3)+4>>2]|0)+1|0;else Dj=c[ai>>2]|0;c[Hi>>2]=Dj;c[Ii>>2]=c[Gi>>2];i:while(1){if((c[Ii>>2]|0)>>>0<(c[Hi>>2]|0)>>>0)break;c[Ji>>2]=(c[ei>>2]|0)+(c[Ii>>2]|0);Zh=c[Ai>>2]|0;Zi=c[Ii>>2]|0;Ph=c[Th>>2]|0;Qh=c[Rh>>2]|0;c[k>>2]=c[Ei>>2];c[m>>2]=Zi;c[n>>2]=Ph;c[o>>2]=Qh;c[q>>2]=qm((c[k>>2]|0)+1|0)|0;c[r>>2]=(c[m>>2]|0)-3;if(c[(c[n>>2]|0)+56>>2]|0){Qh=(qm((c[r>>2]|0)+1|0)|0)+16|0;c[j>>2]=Qh+(c[q>>2]|0);}else{Qh=(c[q>>2]|0)+(c[(c[n>>2]|0)+52>>2]|0)|0;c[p>>2]=Qh-(qm((c[(c[(c[n>>2]|0)+12>>2]|0)+(c[q>>2]<<2)>>2]|0)+1|0)|0);if((c[o>>2]|0)<2&(c[q>>2]|0)>>>0>=20)c[p>>2]=(c[p>>2]|0)+((c[q>>2]|0)-19<<1);c[s>>2]=rm(c[r>>2]|0)|0;Qh=(c[5840+(c[s>>2]<<2)>>2]|0)+(c[(c[n>>2]|0)+48>>2]|0)|0;Ph=Qh-(qm((c[(c[(c[n>>2]|0)+8>>2]|0)+(c[s>>2]<<2)>>2]|0)+1|0)|0)|0;c[p>>2]=(c[p>>2]|0)+Ph;c[j>>2]=c[p>>2];}c[Ki>>2]=Zh+(c[j>>2]|0);do{if((c[Ji>>2]|0)>>>0<=(c[fi>>2]|0)>>>0){if((c[Ki>>2]|0)<(c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]|0)){dj=496;break;}if(!(c[Rh>>2]|0))break i;}else dj=496;}while(0);if((dj|0)==496){dj=0;while(1){if((c[fi>>2]|0)>>>0>=(c[Ji>>2]|0)>>>0)break;c[(c[bi>>2]|0)+(((c[fi>>2]|0)+1|0)*28|0)>>2]=1073741824;c[fi>>2]=(c[fi>>2]|0)+1;}c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+8>>2]=c[Ii>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+4>>2]=c[Ei>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+12>>2]=c[yi>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]=c[Ki>>2];Zh=(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+16|0;c[Zh>>2]=c[Fi>>2];c[Zh+4>>2]=c[Fi+4>>2];c[Zh+8>>2]=c[Fi+8>>2];}c[Ii>>2]=(c[Ii>>2]|0)+-1;}c[Ci>>2]=(c[Ci>>2]|0)+1;}}}}while(0);c[ei>>2]=(c[ei>>2]|0)+1;}if((dj|0)==481){dj=0;c[gi>>2]=c[Di>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)>>2];c[fi>>2]=(c[ei>>2]|0)+1;break;}else if((dj|0)==504){dj=0;c[gi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+8>>2];c[hi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+4>>2];c[ei>>2]=(c[fi>>2]|0)-(c[gi>>2]|0);break;}}else{c[gi>>2]=c[mi>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)>>2];c[ei>>2]=0;c[fi>>2]=1;}}while(0);c[Li>>2]=c[gi>>2];c[Mi>>2]=c[hi>>2];c[Ni>>2]=c[ei>>2];while(1){c[Oi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2];c[Pi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2]=c[Li>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2]=c[Mi>>2];c[Li>>2]=c[Oi>>2];c[Mi>>2]=c[Pi>>2];if((c[Oi>>2]|0)>>>0>(c[Ni>>2]|0)>>>0)break;c[Ni>>2]=(c[Ni>>2]|0)-(c[Oi>>2]|0);}c[Qi>>2]=0;while(1){if((c[Qi>>2]|0)>>>0>=(c[fi>>2]|0)>>>0)break;c[Ri>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[Si>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+8>>2];c[Ti>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+4>>2];if((c[Si>>2]|0)==1){c[Vh>>2]=(c[Vh>>2]|0)+1;c[Qi>>2]=(c[Qi>>2]|0)+1;continue;}c[Qi>>2]=(c[Qi>>2]|0)+(c[Si>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+(c[Si>>2]|0);if((c[Ti>>2]|0)>>>0<3){c[Ui>>2]=(c[Ti>>2]|0)+((c[Ri>>2]|0)==0&1);if(c[Ui>>2]|0){Zh=c[Nh>>2]|0;if((c[Ui>>2]|0)==3)Ej=(c[Zh>>2]|0)-1|0;else Ej=c[Zh+(c[Ui>>2]<<2)>>2]|0;c[Vi>>2]=Ej;if((c[Ui>>2]|0)>>>0>=2)c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=c[Vi>>2];}}else{c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=(c[Ti>>2]|0)-2;}vm(c[Th>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,c[Si>>2]|0);wm(c[Mh>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,(c[Si>>2]|0)-3|0);c[Wh>>2]=c[Vh>>2];}xm(c[Th>>2]|0);}l=i;return(c[Xh>>2]|0)-(c[Wh>>2]|0)|0;}function dm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=l;l=l+48|0;i=h+36|0;j=h+32|0;k=h+28|0;m=h+24|0;n=h+20|0;o=h+16|0;p=h+12|0;q=h+8|0;r=h+4|0;s=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=c[(c[n>>2]|0)+8>>2];c[r>>2]=c[(c[n>>2]|0)+16>>2];c[s>>2]=c[(c[n>>2]|0)+20>>2];switch(c[r>>2]|0){case 7:{c[i>>2]=hn(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[s>>2]|0,7)|0;t=c[i>>2]|0;l=h;return t|0;}case 5:{c[i>>2]=hn(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[s>>2]|0,5)|0;t=c[i>>2]|0;l=h;return t|0;}case 6:{c[i>>2]=hn(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[s>>2]|0,6)|0;t=c[i>>2]|0;l=h;return t|0;}default:{c[i>>2]=hn(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[s>>2]|0,4)|0;t=c[i>>2]|0;l=h;return t|0;}}return 0;}function em(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;h=l;l=l+32|0;i=h+28|0;j=h+24|0;k=h+20|0;m=h+16|0;n=h+12|0;o=h+8|0;p=h+4|0;q=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=c[(c[n>>2]|0)+16>>2];switch(c[q>>2]|0){case 7:{c[i>>2]=Zm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,7)|0;r=c[i>>2]|0;l=h;return r|0;}case 5:{c[i>>2]=Zm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,5)|0;r=c[i>>2]|0;l=h;return r|0;}case 6:{c[i>>2]=Zm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,6)|0;r=c[i>>2]|0;l=h;return r|0;}default:{c[i>>2]=Zm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,4)|0;r=c[i>>2]|0;l=h;return r|0;}}return 0;}function fm(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;i=l;l=l+288|0;j=i+272|0;k=i+268|0;m=i+264|0;n=i+260|0;o=i+256|0;p=i+252|0;q=i+248|0;r=i+244|0;s=i+240|0;t=i+236|0;u=i+232|0;v=i+228|0;w=i+224|0;x=i+220|0;y=i+216|0;z=i+212|0;A=i+208|0;B=i+204|0;C=i+200|0;D=i+196|0;E=i+192|0;F=i+188|0;G=i+184|0;H=i+180|0;I=i+176|0;J=i+172|0;K=i+168|0;L=i+164|0;M=i+160|0;N=i+156|0;O=i+152|0;P=i+148|0;Q=i+144|0;R=i+140|0;S=i+136|0;T=i+132|0;U=i+128|0;V=i+124|0;W=i+120|0;X=i+116|0;Y=i+112|0;Z=i+108|0;_=i+104|0;$=i+100|0;aa=i+96|0;ba=i+92|0;ca=i+88|0;da=i+84|0;ea=i+80|0;fa=i+76|0;ga=i+72|0;ha=i+68|0;ia=i+64|0;ja=i+60|0;ka=i+56|0;la=i+52|0;ma=i+48|0;na=i+44|0;oa=i+40|0;pa=i+36|0;qa=i+32|0;ra=i+28|0;sa=i+24|0;ta=i+20|0;ua=i+16|0;va=i+12|0;wa=i+8|0;xa=i+4|0;ya=i;c[ta>>2]=a;c[ua>>2]=b;c[va>>2]=e;c[wa>>2]=f;c[xa>>2]=g;c[ya>>2]=h;h=c[ua>>2]|0;ua=c[va>>2]|0;va=c[wa>>2]|0;wa=c[xa>>2]|0;xa=c[ya>>2]|0;c[j>>2]=c[ta>>2];c[k>>2]=h;c[m>>2]=ua;c[n>>2]=va;c[o>>2]=wa;c[p>>2]=xa;c[q>>2]=0;c[r>>2]=0;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=c[(c[j>>2]|0)+4>>2];c[y>>2]=c[(c[j>>2]|0)+12>>2];c[z>>2]=c[(c[j>>2]|0)+16>>2];c[A>>2]=(c[x>>2]|0)+(c[y>>2]|0);c[B>>2]=c[(c[j>>2]|0)+8>>2];c[C>>2]=(c[B>>2]|0)+(c[y>>2]|0);c[D>>2]=(c[B>>2]|0)+(c[z>>2]|0);c[E>>2]=c[q>>2]|0?7:6;c[F>>2]=c[c[m>>2]>>2];c[G>>2]=c[(c[m>>2]|0)+4>>2];c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[A>>2]|0)&1);while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[H>>2]=0;c[I>>2]=0;c[J>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[t>>2]|0)-(c[x>>2]|0);c[L>>2]=(c[K>>2]|0)+1-(c[F>>2]|0);c[M>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[N>>2]=(c[M>>2]|0)+(c[L>>2]|0);if(!((((c[L>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[L>>2]|0)|0)>>>0>=3:0)|0?(q=Bk((c[t>>2]|0)+1|0)|0,(q|0)==(Bk(c[N>>2]|0)|0)):0)?(c[O>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[H>>2]=(Lm((c[t>>2]|0)+1+4|0,(c[N>>2]|0)+4|0,c[v>>2]|0,c[O>>2]|0,c[A>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[P>>2]=99999999;c[Q>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,P)|0;if((c[Q>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[H>>2]=c[Q>>2];c[J>>2]=c[t>>2];c[I>>2]=c[P>>2];}if((c[H>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[R>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[S>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[T>>2]=(c[S>>2]|0)+(c[R>>2]|0),((c[R>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[R>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[T>>2]|0)|0)):0)?(c[U>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[V>>2]=(Lm((c[t>>2]|0)+4|0,(c[T>>2]|0)+4|0,c[v>>2]|0,c[U>>2]|0,c[A>>2]|0)|0)+4,c[W>>2]=(c[V>>2]|0)*3,q=(c[H>>2]|0)*3|0,c[X>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[V>>2]|0)>>>0>=4):0)?(c[W>>2]|0)>(c[X>>2]|0):0){c[H>>2]=c[V>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[Y>>2]=99999999;c[Z>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,Y)|0;q=c[Z>>2]<<2;c[_>>2]=q-(Mm((c[Y>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[$>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+4;if((c[Z>>2]|0)>>>0>=4?(c[_>>2]|0)>(c[$>>2]|0):0){c[H>>2]=c[Z>>2];c[I>>2]=c[Y>>2];c[J>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[aa>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[ba>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[ca>>2]=(c[ba>>2]|0)+(c[aa>>2]|0),((c[aa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[aa>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[ca>>2]|0)|0)):0)?(c[da>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[ea>>2]=(Lm((c[t>>2]|0)+4|0,(c[ca>>2]|0)+4|0,c[v>>2]|0,c[da>>2]|0,c[A>>2]|0)|0)+4,c[fa>>2]=c[ea>>2]<<2,q=c[H>>2]<<2,c[ga>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[ea>>2]|0)>>>0>=4):0)?(c[fa>>2]|0)>(c[ga>>2]|0):0){c[H>>2]=c[ea>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[ha>>2]=99999999;c[ia>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,ha)|0;q=c[ia>>2]<<2;c[ja>>2]=q-(Mm((c[ha>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[ka>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+7;if((c[ia>>2]|0)>>>0<4)break a;if((c[ja>>2]|0)<=(c[ka>>2]|0))break a;c[H>>2]=c[ia>>2];c[I>>2]=c[ha>>2];c[J>>2]=c[t>>2];}}while(0);if(c[I>>2]|0){c[la>>2]=(c[J>>2]|0)-(c[x>>2]|0)-((c[I>>2]|0)-2);c[ma>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?(c[B>>2]|0)+(c[la>>2]|0)|0:(c[x>>2]|0)+(c[la>>2]|0)|0;c[na>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[D>>2]|0:c[A>>2]|0;while(1){if((c[J>>2]|0)>>>0<=(c[u>>2]|0)>>>0)break;if((c[ma>>2]|0)>>>0<=(c[na>>2]|0)>>>0)break;if((d[(c[J>>2]|0)+-1>>0]|0|0)!=(d[(c[ma>>2]|0)+-1>>0]|0|0))break;c[J>>2]=(c[J>>2]|0)+-1;c[ma>>2]=(c[ma>>2]|0)+-1;c[H>>2]=(c[H>>2]|0)+1;}c[G>>2]=c[F>>2];c[F>>2]=(c[I>>2]|0)-2;}}c[oa>>2]=(c[J>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[oa>>2]|0,c[u>>2]|0,c[I>>2]|0,(c[H>>2]|0)-3|0);q=(c[J>>2]|0)+(c[H>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if((c[t>>2]|0)>>>0>(c[w>>2]|0)>>>0)break;c[pa>>2]=(c[t>>2]|0)-(c[x>>2]|0)-(c[G>>2]|0);c[qa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[ra>>2]=(c[qa>>2]|0)+(c[pa>>2]|0);if(!(((c[pa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[pa>>2]|0)|0)>>>0>=3:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk(c[ra>>2]|0)|0))break;c[sa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0;c[H>>2]=(Lm((c[t>>2]|0)+4|0,(c[ra>>2]|0)+4|0,c[v>>2]|0,c[sa>>2]|0,c[A>>2]|0)|0)+4;c[I>>2]=c[G>>2];c[G>>2]=c[F>>2];c[F>>2]=c[I>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[H>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[H>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[F>>2];c[(c[m>>2]|0)+4>>2]=c[G>>2];l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function gm(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;i=l;l=l+288|0;j=i+272|0;k=i+268|0;m=i+264|0;n=i+260|0;o=i+256|0;p=i+252|0;q=i+248|0;r=i+244|0;s=i+240|0;t=i+236|0;u=i+232|0;v=i+228|0;w=i+224|0;x=i+220|0;y=i+216|0;z=i+212|0;A=i+208|0;B=i+204|0;C=i+200|0;D=i+196|0;E=i+192|0;F=i+188|0;G=i+184|0;H=i+180|0;I=i+176|0;J=i+172|0;K=i+168|0;L=i+164|0;M=i+160|0;N=i+156|0;O=i+152|0;P=i+148|0;Q=i+144|0;R=i+140|0;S=i+136|0;T=i+132|0;U=i+128|0;V=i+124|0;W=i+120|0;X=i+116|0;Y=i+112|0;Z=i+108|0;_=i+104|0;$=i+100|0;aa=i+96|0;ba=i+92|0;ca=i+88|0;da=i+84|0;ea=i+80|0;fa=i+76|0;ga=i+72|0;ha=i+68|0;ia=i+64|0;ja=i+60|0;ka=i+56|0;la=i+52|0;ma=i+48|0;na=i+44|0;oa=i+40|0;pa=i+36|0;qa=i+32|0;ra=i+28|0;sa=i+24|0;ta=i+20|0;ua=i+16|0;va=i+12|0;wa=i+8|0;xa=i+4|0;ya=i;c[ta>>2]=a;c[ua>>2]=b;c[va>>2]=e;c[wa>>2]=f;c[xa>>2]=g;c[ya>>2]=h;h=c[ua>>2]|0;ua=c[va>>2]|0;va=c[wa>>2]|0;wa=c[xa>>2]|0;xa=c[ya>>2]|0;c[j>>2]=c[ta>>2];c[k>>2]=h;c[m>>2]=ua;c[n>>2]=va;c[o>>2]=wa;c[p>>2]=xa;c[q>>2]=0;c[r>>2]=1;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=c[(c[j>>2]|0)+4>>2];c[y>>2]=c[(c[j>>2]|0)+12>>2];c[z>>2]=c[(c[j>>2]|0)+16>>2];c[A>>2]=(c[x>>2]|0)+(c[y>>2]|0);c[B>>2]=c[(c[j>>2]|0)+8>>2];c[C>>2]=(c[B>>2]|0)+(c[y>>2]|0);c[D>>2]=(c[B>>2]|0)+(c[z>>2]|0);c[E>>2]=c[q>>2]|0?7:6;c[F>>2]=c[c[m>>2]>>2];c[G>>2]=c[(c[m>>2]|0)+4>>2];c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[A>>2]|0)&1);while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[H>>2]=0;c[I>>2]=0;c[J>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[t>>2]|0)-(c[x>>2]|0);c[L>>2]=(c[K>>2]|0)+1-(c[F>>2]|0);c[M>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[N>>2]=(c[M>>2]|0)+(c[L>>2]|0);if(!((((c[L>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[L>>2]|0)|0)>>>0>=3:0)|0?(q=Bk((c[t>>2]|0)+1|0)|0,(q|0)==(Bk(c[N>>2]|0)|0)):0)?(c[O>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[H>>2]=(Lm((c[t>>2]|0)+1+4|0,(c[N>>2]|0)+4|0,c[v>>2]|0,c[O>>2]|0,c[A>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[P>>2]=99999999;c[Q>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,P)|0;if((c[Q>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[H>>2]=c[Q>>2];c[J>>2]=c[t>>2];c[I>>2]=c[P>>2];}if((c[H>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[R>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[S>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[T>>2]=(c[S>>2]|0)+(c[R>>2]|0),((c[R>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[R>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[T>>2]|0)|0)):0)?(c[U>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[V>>2]=(Lm((c[t>>2]|0)+4|0,(c[T>>2]|0)+4|0,c[v>>2]|0,c[U>>2]|0,c[A>>2]|0)|0)+4,c[W>>2]=(c[V>>2]|0)*3,q=(c[H>>2]|0)*3|0,c[X>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[V>>2]|0)>>>0>=4):0)?(c[W>>2]|0)>(c[X>>2]|0):0){c[H>>2]=c[V>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[Y>>2]=99999999;c[Z>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,Y)|0;q=c[Z>>2]<<2;c[_>>2]=q-(Mm((c[Y>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[$>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+4;if((c[Z>>2]|0)>>>0>=4?(c[_>>2]|0)>(c[$>>2]|0):0){c[H>>2]=c[Z>>2];c[I>>2]=c[Y>>2];c[J>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[aa>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[ba>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[ca>>2]=(c[ba>>2]|0)+(c[aa>>2]|0),((c[aa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[aa>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[ca>>2]|0)|0)):0)?(c[da>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[ea>>2]=(Lm((c[t>>2]|0)+4|0,(c[ca>>2]|0)+4|0,c[v>>2]|0,c[da>>2]|0,c[A>>2]|0)|0)+4,c[fa>>2]=c[ea>>2]<<2,q=c[H>>2]<<2,c[ga>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[ea>>2]|0)>>>0>=4):0)?(c[fa>>2]|0)>(c[ga>>2]|0):0){c[H>>2]=c[ea>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[ha>>2]=99999999;c[ia>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,ha)|0;q=c[ia>>2]<<2;c[ja>>2]=q-(Mm((c[ha>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[ka>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+7;if((c[ia>>2]|0)>>>0<4)break a;if((c[ja>>2]|0)<=(c[ka>>2]|0))break a;c[H>>2]=c[ia>>2];c[I>>2]=c[ha>>2];c[J>>2]=c[t>>2];}}while(0);if(c[I>>2]|0){c[la>>2]=(c[J>>2]|0)-(c[x>>2]|0)-((c[I>>2]|0)-2);c[ma>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?(c[B>>2]|0)+(c[la>>2]|0)|0:(c[x>>2]|0)+(c[la>>2]|0)|0;c[na>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[D>>2]|0:c[A>>2]|0;while(1){if((c[J>>2]|0)>>>0<=(c[u>>2]|0)>>>0)break;if((c[ma>>2]|0)>>>0<=(c[na>>2]|0)>>>0)break;if((d[(c[J>>2]|0)+-1>>0]|0|0)!=(d[(c[ma>>2]|0)+-1>>0]|0|0))break;c[J>>2]=(c[J>>2]|0)+-1;c[ma>>2]=(c[ma>>2]|0)+-1;c[H>>2]=(c[H>>2]|0)+1;}c[G>>2]=c[F>>2];c[F>>2]=(c[I>>2]|0)-2;}}c[oa>>2]=(c[J>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[oa>>2]|0,c[u>>2]|0,c[I>>2]|0,(c[H>>2]|0)-3|0);q=(c[J>>2]|0)+(c[H>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if((c[t>>2]|0)>>>0>(c[w>>2]|0)>>>0)break;c[pa>>2]=(c[t>>2]|0)-(c[x>>2]|0)-(c[G>>2]|0);c[qa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[ra>>2]=(c[qa>>2]|0)+(c[pa>>2]|0);if(!(((c[pa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[pa>>2]|0)|0)>>>0>=3:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk(c[ra>>2]|0)|0))break;c[sa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0;c[H>>2]=(Lm((c[t>>2]|0)+4|0,(c[ra>>2]|0)+4|0,c[v>>2]|0,c[sa>>2]|0,c[A>>2]|0)|0)+4;c[I>>2]=c[G>>2];c[G>>2]=c[F>>2];c[F>>2]=c[I>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[H>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[H>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[F>>2];c[(c[m>>2]|0)+4>>2]=c[G>>2];l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function hm(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;i=l;l=l+288|0;j=i+272|0;k=i+268|0;m=i+264|0;n=i+260|0;o=i+256|0;p=i+252|0;q=i+248|0;r=i+244|0;s=i+240|0;t=i+236|0;u=i+232|0;v=i+228|0;w=i+224|0;x=i+220|0;y=i+216|0;z=i+212|0;A=i+208|0;B=i+204|0;C=i+200|0;D=i+196|0;E=i+192|0;F=i+188|0;G=i+184|0;H=i+180|0;I=i+176|0;J=i+172|0;K=i+168|0;L=i+164|0;M=i+160|0;N=i+156|0;O=i+152|0;P=i+148|0;Q=i+144|0;R=i+140|0;S=i+136|0;T=i+132|0;U=i+128|0;V=i+124|0;W=i+120|0;X=i+116|0;Y=i+112|0;Z=i+108|0;_=i+104|0;$=i+100|0;aa=i+96|0;ba=i+92|0;ca=i+88|0;da=i+84|0;ea=i+80|0;fa=i+76|0;ga=i+72|0;ha=i+68|0;ia=i+64|0;ja=i+60|0;ka=i+56|0;la=i+52|0;ma=i+48|0;na=i+44|0;oa=i+40|0;pa=i+36|0;qa=i+32|0;ra=i+28|0;sa=i+24|0;ta=i+20|0;ua=i+16|0;va=i+12|0;wa=i+8|0;xa=i+4|0;ya=i;c[ta>>2]=a;c[ua>>2]=b;c[va>>2]=e;c[wa>>2]=f;c[xa>>2]=g;c[ya>>2]=h;h=c[ua>>2]|0;ua=c[va>>2]|0;va=c[wa>>2]|0;wa=c[xa>>2]|0;xa=c[ya>>2]|0;c[j>>2]=c[ta>>2];c[k>>2]=h;c[m>>2]=ua;c[n>>2]=va;c[o>>2]=wa;c[p>>2]=xa;c[q>>2]=0;c[r>>2]=2;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=c[(c[j>>2]|0)+4>>2];c[y>>2]=c[(c[j>>2]|0)+12>>2];c[z>>2]=c[(c[j>>2]|0)+16>>2];c[A>>2]=(c[x>>2]|0)+(c[y>>2]|0);c[B>>2]=c[(c[j>>2]|0)+8>>2];c[C>>2]=(c[B>>2]|0)+(c[y>>2]|0);c[D>>2]=(c[B>>2]|0)+(c[z>>2]|0);c[E>>2]=c[q>>2]|0?7:6;c[F>>2]=c[c[m>>2]>>2];c[G>>2]=c[(c[m>>2]|0)+4>>2];c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[A>>2]|0)&1);while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[H>>2]=0;c[I>>2]=0;c[J>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[t>>2]|0)-(c[x>>2]|0);c[L>>2]=(c[K>>2]|0)+1-(c[F>>2]|0);c[M>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[N>>2]=(c[M>>2]|0)+(c[L>>2]|0);if(!((((c[L>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[L>>2]|0)|0)>>>0>=3:0)|0?(q=Bk((c[t>>2]|0)+1|0)|0,(q|0)==(Bk(c[N>>2]|0)|0)):0)?(c[O>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[H>>2]=(Lm((c[t>>2]|0)+1+4|0,(c[N>>2]|0)+4|0,c[v>>2]|0,c[O>>2]|0,c[A>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[P>>2]=99999999;c[Q>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,P)|0;if((c[Q>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[H>>2]=c[Q>>2];c[J>>2]=c[t>>2];c[I>>2]=c[P>>2];}if((c[H>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[R>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[S>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[T>>2]=(c[S>>2]|0)+(c[R>>2]|0),((c[R>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[R>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[T>>2]|0)|0)):0)?(c[U>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[V>>2]=(Lm((c[t>>2]|0)+4|0,(c[T>>2]|0)+4|0,c[v>>2]|0,c[U>>2]|0,c[A>>2]|0)|0)+4,c[W>>2]=(c[V>>2]|0)*3,q=(c[H>>2]|0)*3|0,c[X>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[V>>2]|0)>>>0>=4):0)?(c[W>>2]|0)>(c[X>>2]|0):0){c[H>>2]=c[V>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[Y>>2]=99999999;c[Z>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,Y)|0;q=c[Z>>2]<<2;c[_>>2]=q-(Mm((c[Y>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[$>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+4;if((c[Z>>2]|0)>>>0>=4?(c[_>>2]|0)>(c[$>>2]|0):0){c[H>>2]=c[Z>>2];c[I>>2]=c[Y>>2];c[J>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[aa>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[ba>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[ca>>2]=(c[ba>>2]|0)+(c[aa>>2]|0),((c[aa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[aa>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[ca>>2]|0)|0)):0)?(c[da>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[ea>>2]=(Lm((c[t>>2]|0)+4|0,(c[ca>>2]|0)+4|0,c[v>>2]|0,c[da>>2]|0,c[A>>2]|0)|0)+4,c[fa>>2]=c[ea>>2]<<2,q=c[H>>2]<<2,c[ga>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[ea>>2]|0)>>>0>=4):0)?(c[fa>>2]|0)>(c[ga>>2]|0):0){c[H>>2]=c[ea>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[ha>>2]=99999999;c[ia>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,ha)|0;q=c[ia>>2]<<2;c[ja>>2]=q-(Mm((c[ha>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[ka>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+7;if((c[ia>>2]|0)>>>0<4)break a;if((c[ja>>2]|0)<=(c[ka>>2]|0))break a;c[H>>2]=c[ia>>2];c[I>>2]=c[ha>>2];c[J>>2]=c[t>>2];}}while(0);if(c[I>>2]|0){c[la>>2]=(c[J>>2]|0)-(c[x>>2]|0)-((c[I>>2]|0)-2);c[ma>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?(c[B>>2]|0)+(c[la>>2]|0)|0:(c[x>>2]|0)+(c[la>>2]|0)|0;c[na>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[D>>2]|0:c[A>>2]|0;while(1){if((c[J>>2]|0)>>>0<=(c[u>>2]|0)>>>0)break;if((c[ma>>2]|0)>>>0<=(c[na>>2]|0)>>>0)break;if((d[(c[J>>2]|0)+-1>>0]|0|0)!=(d[(c[ma>>2]|0)+-1>>0]|0|0))break;c[J>>2]=(c[J>>2]|0)+-1;c[ma>>2]=(c[ma>>2]|0)+-1;c[H>>2]=(c[H>>2]|0)+1;}c[G>>2]=c[F>>2];c[F>>2]=(c[I>>2]|0)-2;}}c[oa>>2]=(c[J>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[oa>>2]|0,c[u>>2]|0,c[I>>2]|0,(c[H>>2]|0)-3|0);q=(c[J>>2]|0)+(c[H>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if((c[t>>2]|0)>>>0>(c[w>>2]|0)>>>0)break;c[pa>>2]=(c[t>>2]|0)-(c[x>>2]|0)-(c[G>>2]|0);c[qa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[ra>>2]=(c[qa>>2]|0)+(c[pa>>2]|0);if(!(((c[pa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[pa>>2]|0)|0)>>>0>=3:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk(c[ra>>2]|0)|0))break;c[sa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0;c[H>>2]=(Lm((c[t>>2]|0)+4|0,(c[ra>>2]|0)+4|0,c[v>>2]|0,c[sa>>2]|0,c[A>>2]|0)|0)+4;c[I>>2]=c[G>>2];c[G>>2]=c[F>>2];c[F>>2]=c[I>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[H>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[H>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[F>>2];c[(c[m>>2]|0)+4>>2]=c[G>>2];l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function im(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;i=l;l=l+288|0;j=i+272|0;k=i+268|0;m=i+264|0;n=i+260|0;o=i+256|0;p=i+252|0;q=i+248|0;r=i+244|0;s=i+240|0;t=i+236|0;u=i+232|0;v=i+228|0;w=i+224|0;x=i+220|0;y=i+216|0;z=i+212|0;A=i+208|0;B=i+204|0;C=i+200|0;D=i+196|0;E=i+192|0;F=i+188|0;G=i+184|0;H=i+180|0;I=i+176|0;J=i+172|0;K=i+168|0;L=i+164|0;M=i+160|0;N=i+156|0;O=i+152|0;P=i+148|0;Q=i+144|0;R=i+140|0;S=i+136|0;T=i+132|0;U=i+128|0;V=i+124|0;W=i+120|0;X=i+116|0;Y=i+112|0;Z=i+108|0;_=i+104|0;$=i+100|0;aa=i+96|0;ba=i+92|0;ca=i+88|0;da=i+84|0;ea=i+80|0;fa=i+76|0;ga=i+72|0;ha=i+68|0;ia=i+64|0;ja=i+60|0;ka=i+56|0;la=i+52|0;ma=i+48|0;na=i+44|0;oa=i+40|0;pa=i+36|0;qa=i+32|0;ra=i+28|0;sa=i+24|0;ta=i+20|0;ua=i+16|0;va=i+12|0;wa=i+8|0;xa=i+4|0;ya=i;c[ta>>2]=a;c[ua>>2]=b;c[va>>2]=e;c[wa>>2]=f;c[xa>>2]=g;c[ya>>2]=h;h=c[ua>>2]|0;ua=c[va>>2]|0;va=c[wa>>2]|0;wa=c[xa>>2]|0;xa=c[ya>>2]|0;c[j>>2]=c[ta>>2];c[k>>2]=h;c[m>>2]=ua;c[n>>2]=va;c[o>>2]=wa;c[p>>2]=xa;c[q>>2]=1;c[r>>2]=2;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=c[(c[j>>2]|0)+4>>2];c[y>>2]=c[(c[j>>2]|0)+12>>2];c[z>>2]=c[(c[j>>2]|0)+16>>2];c[A>>2]=(c[x>>2]|0)+(c[y>>2]|0);c[B>>2]=c[(c[j>>2]|0)+8>>2];c[C>>2]=(c[B>>2]|0)+(c[y>>2]|0);c[D>>2]=(c[B>>2]|0)+(c[z>>2]|0);c[E>>2]=c[q>>2]|0?7:6;c[F>>2]=c[c[m>>2]>>2];c[G>>2]=c[(c[m>>2]|0)+4>>2];c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[A>>2]|0)&1);while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[H>>2]=0;c[I>>2]=0;c[J>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[t>>2]|0)-(c[x>>2]|0);c[L>>2]=(c[K>>2]|0)+1-(c[F>>2]|0);c[M>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[N>>2]=(c[M>>2]|0)+(c[L>>2]|0);if(!((((c[L>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[L>>2]|0)|0)>>>0>=3:0)|0?(q=Bk((c[t>>2]|0)+1|0)|0,(q|0)==(Bk(c[N>>2]|0)|0)):0)?(c[O>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[H>>2]=(Lm((c[t>>2]|0)+1+4|0,(c[N>>2]|0)+4|0,c[v>>2]|0,c[O>>2]|0,c[A>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[P>>2]=99999999;c[Q>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,P)|0;if((c[Q>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[H>>2]=c[Q>>2];c[J>>2]=c[t>>2];c[I>>2]=c[P>>2];}if((c[H>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[R>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[S>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[T>>2]=(c[S>>2]|0)+(c[R>>2]|0),((c[R>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[R>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[T>>2]|0)|0)):0)?(c[U>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[V>>2]=(Lm((c[t>>2]|0)+4|0,(c[T>>2]|0)+4|0,c[v>>2]|0,c[U>>2]|0,c[A>>2]|0)|0)+4,c[W>>2]=(c[V>>2]|0)*3,q=(c[H>>2]|0)*3|0,c[X>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[V>>2]|0)>>>0>=4):0)?(c[W>>2]|0)>(c[X>>2]|0):0){c[H>>2]=c[V>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[Y>>2]=99999999;c[Z>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,Y)|0;q=c[Z>>2]<<2;c[_>>2]=q-(Mm((c[Y>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[$>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+4;if((c[Z>>2]|0)>>>0>=4?(c[_>>2]|0)>(c[$>>2]|0):0){c[H>>2]=c[Z>>2];c[I>>2]=c[Y>>2];c[J>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[aa>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[ba>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[ca>>2]=(c[ba>>2]|0)+(c[aa>>2]|0),((c[aa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[aa>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[ca>>2]|0)|0)):0)?(c[da>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[ea>>2]=(Lm((c[t>>2]|0)+4|0,(c[ca>>2]|0)+4|0,c[v>>2]|0,c[da>>2]|0,c[A>>2]|0)|0)+4,c[fa>>2]=c[ea>>2]<<2,q=c[H>>2]<<2,c[ga>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[ea>>2]|0)>>>0>=4):0)?(c[fa>>2]|0)>(c[ga>>2]|0):0){c[H>>2]=c[ea>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[ha>>2]=99999999;c[ia>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,ha)|0;q=c[ia>>2]<<2;c[ja>>2]=q-(Mm((c[ha>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[ka>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+7;if((c[ia>>2]|0)>>>0<4)break a;if((c[ja>>2]|0)<=(c[ka>>2]|0))break a;c[H>>2]=c[ia>>2];c[I>>2]=c[ha>>2];c[J>>2]=c[t>>2];}}while(0);if(c[I>>2]|0){c[la>>2]=(c[J>>2]|0)-(c[x>>2]|0)-((c[I>>2]|0)-2);c[ma>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?(c[B>>2]|0)+(c[la>>2]|0)|0:(c[x>>2]|0)+(c[la>>2]|0)|0;c[na>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[D>>2]|0:c[A>>2]|0;while(1){if((c[J>>2]|0)>>>0<=(c[u>>2]|0)>>>0)break;if((c[ma>>2]|0)>>>0<=(c[na>>2]|0)>>>0)break;if((d[(c[J>>2]|0)+-1>>0]|0|0)!=(d[(c[ma>>2]|0)+-1>>0]|0|0))break;c[J>>2]=(c[J>>2]|0)+-1;c[ma>>2]=(c[ma>>2]|0)+-1;c[H>>2]=(c[H>>2]|0)+1;}c[G>>2]=c[F>>2];c[F>>2]=(c[I>>2]|0)-2;}}c[oa>>2]=(c[J>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[oa>>2]|0,c[u>>2]|0,c[I>>2]|0,(c[H>>2]|0)-3|0);q=(c[J>>2]|0)+(c[H>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if((c[t>>2]|0)>>>0>(c[w>>2]|0)>>>0)break;c[pa>>2]=(c[t>>2]|0)-(c[x>>2]|0)-(c[G>>2]|0);c[qa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[ra>>2]=(c[qa>>2]|0)+(c[pa>>2]|0);if(!(((c[pa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[pa>>2]|0)|0)>>>0>=3:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk(c[ra>>2]|0)|0))break;c[sa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0;c[H>>2]=(Lm((c[t>>2]|0)+4|0,(c[ra>>2]|0)+4|0,c[v>>2]|0,c[sa>>2]|0,c[A>>2]|0)|0)+4;c[I>>2]=c[G>>2];c[G>>2]=c[F>>2];c[F>>2]=c[I>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[H>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[H>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[F>>2];c[(c[m>>2]|0)+4>>2]=c[G>>2];l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function DC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;f=l;l=l+80|0;g=f+56|0;h=f+40|0;i=f+28|0;j=f+12|0;k=f;m=f+24|0;a:do{if((d-b|0)>2?(a[b>>0]|0)==85:0){switch(a[b+1>>0]|0){case 116:{c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;RB(h,19476,AB(19476)|0);IB(g,h);n=e+4|0;o=c[n>>2]|0;if(o>>>0<(c[e+8>>2]|0)>>>0){KB(o,g);c[n>>2]=(c[n>>2]|0)+24;}else LB(e,g);QA(g);iB(h);o=b+2|0;if((o|0)==(d|0)){p=c[n>>2]|0;q=0;while(1){if((q|0)==-1)break;r=q+-1|0;QA(p+(r*24|0)|0);q=r;}c[n>>2]=p+-24;s=b;break a;}if(((a[o>>0]|0)+-48|0)>>>0<10){q=b+3|0;while(1){if((q|0)==(d|0)){t=d;break;}if(((a[q>>0]|0)+-48|0)>>>0>=10){t=q;break;}q=q+1|0;}MC((c[n>>2]|0)+-24|0,o,t);u=t;}else u=o;NC((c[n>>2]|0)+-24|0,39);if((u|0)!=(d|0)?(a[u>>0]|0)==95:0){s=u+1|0;break a;}q=c[n>>2]|0;p=0;while(1){if((p|0)==-1)break;r=p+-1|0;QA(q+(r*24|0)|0);p=r;}c[n>>2]=q+-24;s=b;break a;break;}case 108:break;default:{s=b;break a;}}c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;RB(i,19485,AB(19485)|0);IB(g,i);p=e+4|0;o=c[p>>2]|0;if(o>>>0<(c[e+8>>2]|0)>>>0){KB(o,g);c[p>>2]=(c[p>>2]|0)+24;}else LB(e,g);QA(g);iB(i);o=b+2|0;do{if((a[o>>0]|0)!=118){r=mB(o,d,e)|0;if((r|0)==(o|0)){v=c[p>>2]|0;w=0;while(1){if((w|0)==-1)break;x=w+-1|0;QA(v+(x*24|0)|0);w=x;}c[p>>2]=v+-24;s=b;break a;}w=c[p>>2]|0;if(((w-(c[e>>2]|0)|0)/24|0)>>>0<2){s=b;break a;}FB(j,w+-24|0);w=c[p>>2]|0;x=0;while(1){if((x|0)==-1)break;y=x+-1|0;QA(w+(y*24|0)|0);x=y;}c[p>>2]=w+-24;x=j+11|0;v=a[x>>0]|0;y=v<<24>>24<0;z=j+4|0;TA(w+-48|0,y?c[j>>2]|0:j,y?c[z>>2]|0:v&255)|0;v=r;while(1){y=mB(v,d,e)|0;if((y|0)==(v|0)){A=54;break;}B=c[p>>2]|0;if(((B-(c[e>>2]|0)|0)/24|0)>>>0<2){A=82;break;}FB(k,B+-24|0);if((a[x>>0]|0)<0){B=c[j>>2]|0;a[g>>0]=0;cB(B,g);c[z>>2]=0;}else{a[g>>0]=0;cB(j,g);a[x>>0]=0;}TB(j);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];B=0;while(1){if((B|0)==3)break;c[k+(B<<2)>>2]=0;B=B+1|0;}iB(k);B=c[p>>2]|0;C=0;while(1){if((C|0)==-1)break;D=C+-1|0;QA(B+(D*24|0)|0);C=D;}c[p>>2]=B+-24;C=a[x>>0]|0;if((C<<24>>24<0?c[z>>2]|0:C&255)|0){qB(B+-48|0,18897)|0;C=a[x>>0]|0;D=C<<24>>24<0;TA((c[p>>2]|0)+-24|0,D?c[j>>2]|0:j,D?c[z>>2]|0:C&255)|0;}v=y;}if((A|0)==54){qB((c[p>>2]|0)+-24|0,18673)|0;iB(j);E=v;break;}else if((A|0)==82){iB(j);s=b;break a;}}else{NC((c[p>>2]|0)+-24|0,41);E=b+3|0;}}while(0);if((E|0)!=(d|0)?(a[E>>0]|0)==69:0){o=E+1|0;if((o|0)==(d|0)){q=c[p>>2]|0;n=0;while(1){if((n|0)==-1)break;z=n+-1|0;QA(q+(z*24|0)|0);n=z;}c[p>>2]=q+-24;s=b;break;}if(((a[o>>0]|0)+-48|0)>>>0<10){n=E+2|0;while(1){if((n|0)==(d|0)){F=d;break;}if(((a[n>>0]|0)+-48|0)>>>0>=10){F=n;break;}n=n+1|0;}n=(c[p>>2]|0)+-24|0;if((a[n+11>>0]|0)<0)G=c[n>>2]|0;else G=n;c[m>>2]=G+7;c[g>>2]=c[m>>2];OC(n,g,o,F)|0;H=F;}else H=o;if((H|0)!=(d|0)?(a[H>>0]|0)==95:0){s=H+1|0;break;}n=c[p>>2]|0;q=0;while(1){if((q|0)==-1)break;z=q+-1|0;QA(n+(z*24|0)|0);q=z;}c[p>>2]=n+-24;s=b;break;}q=c[p>>2]|0;o=0;while(1){if((o|0)==-1)break;z=o+-1|0;QA(q+(z*24|0)|0);o=z;}c[p>>2]=q+-24;s=b;}else s=b;}while(0);l=f;return s|0;}function EC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f;a:do{if((d-b|0)>1)do{switch(a[b>>0]|0){case 97:{switch(a[b+1>>0]|0){case 97:{FC(g,18975);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 110:case 100:{GC(g,18986);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 78:{FC(g,18996);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 83:{GC(g,19007);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 99:{switch(a[b+1>>0]|0){case 108:{FC(g,19017);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 109:{GC(g,19028);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 111:{GC(g,19038);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 118:{h=e+63|0;i=a[h>>0]|0;a[h>>0]=0;k=b+2|0;m=mB(k,d,e)|0;a[h>>0]=i;if((m|0)==(k|0)){j=b;break a;}k=c[e+4>>2]|0;if((c[e>>2]|0)==(k|0)){j=b;break a;}pB(k+-24|0,0,19048)|0;a[e+60>>0]=1;j=m;break a;break;}default:{j=b;break a;}}break;}case 100:{switch(a[b+1>>0]|0){case 97:{HC(g,19058);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 101:{GC(g,19076);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 108:{IC(g);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 118:{GC(g,19086);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 86:{FC(g,19096);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 101:{switch(a[b+1>>0]|0){case 111:{GC(g,19107);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 79:{FC(g,19117);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 113:{FC(g,19128);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 103:{switch(a[b+1>>0]|0){case 101:{FC(g,19139);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 116:{GC(g,19150);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 105:{if((a[b+1>>0]|0)!=120){j=b;break a;}FC(g,19160);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 108:{switch(a[b+1>>0]|0){case 101:{FC(g,19171);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 105:{m=b+2|0;k=GB(m,d,e)|0;if((k|0)==(m|0)){j=b;break a;}m=c[e+4>>2]|0;if((c[e>>2]|0)==(m|0)){j=b;break a;}pB(m+-24|0,0,19182)|0;j=k;break a;break;}case 115:{FC(g,19194);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 83:{JC(g,19205);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 116:{GC(g,19217);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 109:{switch(a[b+1>>0]|0){case 105:{GC(g,19227);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 73:{FC(g,19237);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 108:{GC(g,19076);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 76:{FC(g,19248);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 109:{FC(g,19259);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 110:{switch(a[b+1>>0]|0){case 97:{KC(g,19270);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 101:{FC(g,19285);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 103:{GC(g,19227);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 116:{GC(g,19296);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 119:{LC(g,19306);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 111:{switch(a[b+1>>0]|0){case 111:{FC(g,19319);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 114:{GC(g,19330);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 82:{FC(g,19340);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 112:{switch(a[b+1>>0]|0){case 109:{JC(g,19351);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 108:{GC(g,19363);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 76:{FC(g,19373);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 112:{FC(g,19384);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 115:{GC(g,19363);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 116:{FC(g,19395);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 113:{if((a[b+1>>0]|0)!=117){j=b;break a;}GC(g,19406);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 114:{switch(a[b+1>>0]|0){case 109:{GC(g,19416);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 77:{FC(g,19426);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 115:{FC(g,19437);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 83:{JC(g,19448);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 118:{if(((a[b+1>>0]|0)+-48|0)>>>0>=10){j=b;break a;}k=b+2|0;m=GB(k,d,e)|0;if((m|0)==(k|0)){j=b;break a;}k=c[e+4>>2]|0;if((c[e>>2]|0)==(k|0)){j=b;break a;}pB(k+-24|0,0,19048)|0;j=m;break a;break;}default:{j=b;break a;}}}while(0);else j=b;}while(0);l=f;return j|0;}function FC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,10);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function GC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,9);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function HC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,17);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function IC(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,19460,15);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function JC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,11);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function KC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,14);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function LC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,12);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function MC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+16|0;g=d;h=f;i=b+11|0;j=a[i>>0]|0;k=j<<24>>24<0;if(k){m=c[b+4>>2]|0;n=(c[b+8>>2]&2147483647)+-1|0;}else{m=j&255;n=10;}o=e-g|0;do{if(o|0){if(k){p=c[b>>2]|0;q=c[b+4>>2]|0;}else{p=b;q=j&255;}if(PC(d,p,p+q|0)|0){c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;QC(h,d,e);r=a[h+11>>0]|0;s=r<<24>>24<0;TA(b,s?c[h>>2]|0:h,s?c[h+4>>2]|0:r&255)|0;iB(h);break;}if((n-m|0)>>>0<o>>>0)RC(b,n,m+o-n|0,m,m,0);if((a[i>>0]|0)<0)t=c[b>>2]|0;else t=b;r=e+(m-g)|0;s=t+m|0;u=d;while(1){if((u|0)==(e|0))break;cB(s,u);s=s+1|0;u=u+1|0;}a[h>>0]=0;cB(t+r|0,h);u=m+o|0;if((a[i>>0]|0)<0){c[b+4>>2]=u;break;}else{a[i>>0]=u;break;}}}while(0);l=f;return;}function NC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;e=l;l=l+16|0;f=e;g=e+1|0;a[f>>0]=d;d=b+11|0;h=a[d>>0]|0;i=h<<24>>24<0;if(i){j=c[b+4>>2]|0;k=(c[b+8>>2]&2147483647)+-1|0;}else{j=h&255;k=10;}if((j|0)==(k|0)){RC(b,k,1,k,k,0);if((a[d>>0]|0)<0)m=8;else m=7;}else if(i)m=8;else m=7;if((m|0)==7){a[d>>0]=j+1;n=b;}else if((m|0)==8){m=c[b>>2]|0;c[b+4>>2]=j+1;n=m;}m=n+j|0;cB(m,f);a[g>>0]=0;cB(m+1|0,g);l=e;return;}function OC(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;g=l;l=l+32|0;h=g+16|0;i=g+4|0;j=g;k=b+11|0;m=a[k>>0]|0;n=m<<24>>24<0;if(n)o=c[b>>2]|0;else o=b;p=c[d>>2]|0;d=p-o|0;o=f-e|0;do{if(!o){q=m;r=27;}else{if(n){s=c[b>>2]|0;t=c[b+4>>2]|0;}else{s=b;t=m&255;}if(PC(e,s,s+t|0)|0){c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;QC(i,e,f);c[j>>2]=p;u=a[i+11>>0]|0;v=u<<24>>24<0;w=v?c[i>>2]|0:i;x=w+(v?c[i+4>>2]|0:u&255)|0;c[h>>2]=c[j>>2];u=OC(b,h,w,x)|0;iB(i);y=u;break;}u=a[k>>0]|0;x=u<<24>>24<0;if(x){z=c[b+4>>2]|0;A=(c[b+8>>2]&2147483647)+-1|0;}else{z=u&255;A=10;}if((A-z|0)>>>0>=o>>>0){if(x)B=c[b>>2]|0;else B=b;x=z-d|0;if(!x)C=B;else{u=B+d|0;wC(u+o|0,u,x)|0;C=B;}}else{RC(b,A,z+o-A|0,z,d,o);C=c[b>>2]|0;}x=z+o|0;if((a[k>>0]|0)<0)c[b+4>>2]=x;else a[k>>0]=x;a[h>>0]=0;cB(C+x|0,h);x=e;u=C+d|0;while(1){if((x|0)==(f|0))break;cB(u,x);x=x+1|0;u=u+1|0;}q=a[k>>0]|0;r=27;}}while(0);if((r|0)==27){if(q<<24>>24<0)D=c[b>>2]|0;else D=b;y=D+d|0;}l=g;return y|0;}function PC(a,b,c){a=a|0;b=b|0;c=c|0;return b>>>0<=a>>>0&a>>>0<c>>>0|0;}function QC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+16|0;g=d;h=f;i=e-g|0;if(i>>>0>4294967279)eB(b);if(i>>>0<11){a[b+11>>0]=i;j=b;}else{k=i+16&-16;m=fB(k)|0;c[b>>2]=m;c[b+8>>2]=k|-2147483648;c[b+4>>2]=i;j=m;}m=e-g|0;g=d;d=j;while(1){if((g|0)==(e|0))break;cB(d,g);g=g+1|0;d=d+1|0;}a[h>>0]=0;cB(j+m|0,h);l=f;return;}function RC(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;if((-17-d|0)>>>0<e>>>0)eB(b);if((a[b+11>>0]|0)<0)i=c[b>>2]|0;else i=b;if(d>>>0<2147483623){j=e+d|0;e=d<<1;k=j>>>0<e>>>0?e:j;l=k>>>0<11?11:k+16&-16;}else l=-17;k=fB(l)|0;if(g|0)bB(k,i,g)|0;j=f-g|0;if(j|0)bB(k+g+h|0,i+g|0,j)|0;if((d|0)!=10)gB(i);c[b>>2]=k;c[b+8>>2]=l|-2147483648;return;}function SC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=d+11|0;f=a[e>>0]|0;g=d+4|0;a:do{if(!((f<<24>>24<0?c[g>>2]|0:f&255)|0))TC(b,d);else{h=AB(19495)|0;i=a[e>>0]|0;if((h|0)==((i<<24>>24<0?c[g>>2]|0:i&255)|0)?(BB(d,19495,h)|0)==0:0){uC(d,19507);c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;RB(b,19578,AB(19578)|0);break;}h=AB(19591)|0;i=a[e>>0]|0;if((h|0)==((i<<24>>24<0?c[g>>2]|0:i&255)|0)?(BB(d,19591,h)|0)==0:0){uC(d,19604);c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;RB(b,19654,AB(19654)|0);break;}h=AB(19668)|0;i=a[e>>0]|0;if((h|0)==((i<<24>>24<0?c[g>>2]|0:i&255)|0)?(BB(d,19668,h)|0)==0:0){uC(d,19681);c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;RB(b,19731,AB(19731)|0);break;}h=AB(19745)|0;i=a[e>>0]|0;j=c[g>>2]|0;k=i&255;do{if((h|0)==((i<<24>>24<0?j:k)|0)){if(!(BB(d,19745,h)|0)){uC(d,19759);c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;RB(b,19810,AB(19810)|0);break a;}else{l=a[e>>0]|0;m=l&255;n=l;o=c[g>>2]|0;break;}}else{m=k;n=i;o=j;}}while(0);j=n<<24>>24<0;i=j?c[d>>2]|0:d;k=i+(j?o:m)|0;do{if((a[k+-1>>0]|0)==62){j=1;h=k;b:while(1){p=h;c:while(1){q=p+-1|0;if((q|0)==(i|0))break b;switch(a[p+-2>>0]|0){case 60:{r=24;break c;break;}case 62:{r=25;break c;break;}default:p=q;}}if((r|0)==24){r=0;l=j+-1|0;if(!l){r=27;break;}else s=l;}else if((r|0)==25){r=0;s=j+1|0;}j=s;h=q;}if((r|0)==27){t=p+-2|0;break;};c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;h=0;while(1){if((h|0)==3)break a;c[b+(h<<2)>>2]=0;h=h+1|0;}}else t=k;}while(0);k=t;while(1){h=k+-1|0;if((h|0)==(i|0)){u=i;break;}if((a[h>>0]|0)==58){u=k;break;}else k=h;}c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;QC(b,u,t);}}while(0);return;}function TC(b,d){b=b|0;d=d|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;if((a[d+11>>0]|0)<0)RB(b,c[d>>2]|0,c[d+4>>2]|0);else{c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];}return;}function UC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if((a|0)!=(b|0)){e=yC(a,b,d)|0;if((e|0)==(a|0))f=AC(a,b,d)|0;else f=e;if((f|0)!=(a|0)?(e=c[d+4>>2]|0,(c[d>>2]|0)!=(e|0)):0){pB(e+-24|0,0,18745)|0;g=f;}else g=a;}else g=a;return g|0;}function VC(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0;}b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function WC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b;e=a+4|0;f=(((c[e>>2]|0)-(c[a>>2]|0)|0)/24|0)+1|0;g=XC(a)|0;if(g>>>0<f>>>0)Wz(a);else{h=c[a>>2]|0;i=((c[a+8>>2]|0)-h|0)/24|0;j=i<<1;YC(d,i>>>0<g>>>1>>>0?j>>>0<f>>>0?f:j:g,((c[e>>2]|0)-h|0)/24|0,a+12|0);h=d+8|0;e=c[h>>2]|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;VC(e);c[h>>2]=e+24;ZC(a,d);_C(d);l=b;return;}}function XC(a){a=a|0;return 178956970;}function YC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;if(!b)g=0;else g=$C(e,b)|0;c[a>>2]=g;e=g+(d*24|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[f>>2]=g+(b*24|0);return;}function ZC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a>>2]|0;e=a+4|0;f=b+4|0;g=c[e>>2]|0;while(1){if((g|0)==(d|0))break;h=g+-24|0;KB((c[f>>2]|0)+-24|0,h);c[f>>2]=(c[f>>2]|0)+-24;g=h;}g=c[a>>2]|0;c[a>>2]=c[f>>2];c[f>>2]=g;g=b+8|0;d=c[e>>2]|0;c[e>>2]=c[g>>2];c[g>>2]=d;d=a+8|0;a=b+12|0;g=c[d>>2]|0;c[d>>2]=c[a>>2];c[a>>2]=g;c[b>>2]=c[f>>2];return;}function _C(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;f=e+-24|0;c[d>>2]=f;QA(f);}d=c[a>>2]|0;if(d|0)hB(c[a+16>>2]|0,d,((c[a+12>>2]|0)-d|0)/24|0);return;}function $C(a,b){a=a|0;b=b|0;return aD(c[a>>2]|0,b*24|0)|0;}function aD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=$A(b)|0;b=a+4096|0;e=c[b>>2]|0;if((a+4096-e|0)>>>0<d>>>0)f=Cy(d)|0;else{c[b>>2]=e+d;f=e;}return f|0;}function bD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+48|0;h=g+24|0;i=g;j=g+12|0;k=QB(b,d)|0;if(!((k|0)==(b|0)|(k|0)==(d|0))?(a[k>>0]|0)==69:0){d=e+11|0;m=a[d>>0]|0;n=e+4|0;do{if((m<<24>>24<0?c[n>>2]|0:m&255)>>>0<=3){o=f+4|0;p=c[o>>2]|0;if(p>>>0<(c[f+8>>2]|0)>>>0){c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;c[p+20>>2]=0;VC(p);c[o>>2]=(c[o>>2]|0)+24;break;}else{WC(f);break;}}else{UB(j,18675,e);qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];o=0;while(1){if((o|0)==3)break;c[j+(o<<2)>>2]=0;o=o+1|0;}IB(h,i);o=f+4|0;p=c[o>>2]|0;if(p>>>0<(c[f+8>>2]|0)>>>0){KB(p,h);c[o>>2]=(c[o>>2]|0)+24;}else LB(f,h);QA(h);iB(i);iB(j);}}while(0);j=f+4|0;if((a[b>>0]|0)==110){NC((c[j>>2]|0)+-24|0,45);q=b+1|0;}else q=b;MC((c[j>>2]|0)+-24|0,q,k);q=a[d>>0]|0;d=q<<24>>24<0;f=d?c[n>>2]|0:q&255;if(f>>>0<4)TA((c[j>>2]|0)+-24|0,d?c[e>>2]|0:e,f)|0;r=k+1|0;}else r=b;l=g;return r|0;}function cD(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,4);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function dD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;f=l;l=l+64|0;i=f+24|0;j=f+60|0;k=f;m=f+48|0;a:do{if((d-b|0)>>>0>8){n=0;o=j;while(1){p=a[b+n>>0]|0;q=p<<24>>24;if((n|0)==8){r=6;break;}if(!(Qz(q)|0))break;s=a[b+(n|1)>>0]|0;a[o>>0]=(((q+-48|0)>>>0<10?0:9)+q<<4)+s+((s+-48|0)>>>0<10?208:169);n=n+2|0;o=o+1|0;}do{if((r|0)==6){if(p<<24>>24==69){b:do{if((o|0)!=(j|0)){n=o;s=j;while(1){q=n+-1|0;if(s>>>0>=q>>>0)break b;t=a[s>>0]|0;a[s>>0]=a[q>>0]|0;a[q>>0]=t;n=q;s=s+1|0;}}}while(0);c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;h[i>>3]=+g[j>>2];s=bz(k,24,19987,i)|0;if(s>>>0>23)break;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;RB(m,k,s);IB(i,m);s=e+4|0;n=c[s>>2]|0;if(n>>>0<(c[e+8>>2]|0)>>>0){KB(n,i);c[s>>2]=(c[s>>2]|0)+24;}else LB(e,i);QA(i);iB(m);u=b+9|0;}else u=b;v=u;break a;}}while(0);v=b;}else v=b;}while(0);l=f;return v|0;}function eD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+80|0;g=f+40|0;i=f+32|0;j=f;k=f+64|0;a:do{if((d-b|0)>>>0>16){m=0;n=i;while(1){o=a[b+m>>0]|0;p=o<<24>>24;if((m|0)==16){q=6;break;}if(!(Qz(p)|0))break;r=a[b+(m|1)>>0]|0;a[n>>0]=(((p+-48|0)>>>0<10?0:9)+p<<4)+r+((r+-48|0)>>>0<10?208:169);m=m+2|0;n=n+1|0;}do{if((q|0)==6){if(o<<24>>24==69){b:do{if((n|0)!=(i|0)){m=n;r=i;while(1){p=m+-1|0;if(r>>>0>=p>>>0)break b;s=a[r>>0]|0;a[r>>0]=a[p>>0]|0;a[p>>0]=s;m=p;r=r+1|0;}}}while(0);c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0;c[j+20>>2]=0;c[j+24>>2]=0;c[j+28>>2]=0;h[g>>3]=+h[i>>3];r=bz(j,32,19984,g)|0;if(r>>>0>31)break;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;RB(k,j,r);IB(g,k);r=e+4|0;m=c[r>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[r>>2]=(c[r>>2]|0)+24;}else LB(e,g);QA(g);iB(k);t=b+17|0;}else t=b;u=t;break a;}}while(0);u=b;}else u=b;}while(0);l=f;return u|0;}function fD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+96|0;g=f+48|0;i=f+40|0;j=f;k=f+72|0;a:do{if((d-b|0)>>>0>20){m=0;n=i;while(1){o=a[b+m>>0]|0;p=o<<24>>24;if((m|0)==20){q=6;break;}if(!(Qz(p)|0))break;r=a[b+(m|1)>>0]|0;a[n>>0]=(((p+-48|0)>>>0<10?0:9)+p<<4)+r+((r+-48|0)>>>0<10?208:169);m=m+2|0;n=n+1|0;}do{if((q|0)==6){if(o<<24>>24==69){b:do{if((n|0)!=(i|0)){m=n;r=i;while(1){p=m+-1|0;if(r>>>0>=p>>>0)break b;s=a[r>>0]|0;a[r>>0]=a[p>>0]|0;a[p>>0]=s;m=p;r=r+1|0;}}}while(0);r=j;m=r+40|0;do{c[r>>2]=0;r=r+4|0;}while((r|0)<(m|0));h[g>>3]=+h[i>>3];r=bz(j,40,19979,g)|0;if(r>>>0>39)break;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;RB(k,j,r);IB(g,k);r=e+4|0;m=c[r>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[r>>2]=(c[r>>2]|0)+24;}else LB(e,g);QA(g);iB(k);t=b+21|0;}else t=b;u=t;break a;}}while(0);u=b;}else u=b;}while(0);l=f;return u|0;}function gD(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,13);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function hD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;f=l;l=l+48|0;g=f+36|0;h=f+24|0;i=f+8|0;j=f;a:do{if((b|0)!=(d|0)?(a[b>>0]|0)==78:0){k=nB(b+1|0,d,g)|0;b:do{if((k|0)!=(d|0)){m=e+52|0;c[m>>2]=0;switch(a[k>>0]|0){case 82:{n=1;o=6;break;}case 79:{n=2;o=6;break;}default:p=k;}if((o|0)==6){c[m>>2]=n;p=k+1|0;}m=e+4|0;q=c[m>>2]|0;if(q>>>0<(c[e+8>>2]|0)>>>0){c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;VC(q);c[m>>2]=(c[m>>2]|0)+24;}else WC(e);if(((d-p|0)>1?(a[p>>0]|0)==83:0)?(a[p+1>>0]|0)==116:0){uC((c[m>>2]|0)+-24|0,20051);r=p+2|0;}else r=p;if((r|0)==(d|0)){q=c[m>>2]|0;s=0;while(1){if((s|0)==-1)break;t=s+-1|0;QA(q+(t*24|0)|0);s=t;}c[m>>2]=q+-24;break;}s=h+11|0;t=h+4|0;u=e+12|0;v=e+20|0;w=e+24|0;x=i+11|0;y=i+4|0;z=i+11|0;A=i+4|0;B=i+12|0;C=i+4|0;D=i+8|0;E=e+16|0;F=i+12|0;G=i+4|0;H=i+8|0;I=i+11|0;J=i+4|0;K=i+12|0;L=i+4|0;M=i+8|0;N=i+11|0;O=i+4|0;P=i+12|0;Q=i+4|0;R=i+8|0;S=i+12|0;T=i+4|0;U=i+8|0;V=0;W=r;c:while(1){X=W;d:while(1){Y=a[X>>0]|0;if(Y<<24>>24==69)break c;switch(Y<<24>>24|0){case 83:{o=23;break d;break;}case 84:{o=39;break d;break;}case 68:{o=53;break d;break;}case 73:{Y=EB(X,d,e)|0;if((Y|0)==(X|0)|(Y|0)==(d|0))break b;FB(h,(c[m>>2]|0)+-24|0);Z=c[m>>2]|0;_=0;while(1){if((_|0)==-1)break;$=_+-1|0;QA(Z+($*24|0)|0);_=$;}c[m>>2]=Z+-24;_=a[s>>0]|0;$=_<<24>>24<0;TA(Z+-48|0,$?c[h>>2]|0:h,$?c[t>>2]|0:_&255)|0;_=(c[m>>2]|0)+-24|0;c[j>>2]=c[u>>2];vB(i,_,j);_=c[v>>2]|0;if(_>>>0<(c[w>>2]|0)>>>0){c[_>>2]=0;$=_+4|0;c[$>>2]=0;aa=_+8|0;c[aa>>2]=0;c[_+12>>2]=c[B>>2];c[_>>2]=c[i>>2];c[$>>2]=c[C>>2];c[aa>>2]=c[D>>2];c[D>>2]=0;c[C>>2]=0;c[i>>2]=0;c[v>>2]=(c[v>>2]|0)+16;}else wB(E,i);RA(i);iB(h);ba=Y;break;}case 76:{aa=X+1|0;if((aa|0)==(d|0))break b;else ba=aa;break;}default:{o=79;break d;}}X=ba;}e:do{if((o|0)==23){o=0;aa=X+1|0;if((aa|0)!=(d|0)?(a[aa>>0]|0)==116:0){o=79;break;}aa=NB(X,d,e)|0;if((aa|0)==(X|0)|(aa|0)==(d|0))break b;FB(h,(c[m>>2]|0)+-24|0);$=c[m>>2]|0;_=0;while(1){if((_|0)==-1)break;ca=_+-1|0;QA($+(ca*24|0)|0);_=ca;}c[m>>2]=$+-24;_=$+-48|0;Y=a[_+11>>0]|0;if(Y<<24>>24<0)da=c[$+-44>>2]|0;else da=Y&255;if(!da)lD(_,h);else{UB(i,18747,h);_=a[I>>0]|0;Y=_<<24>>24<0;TA((c[m>>2]|0)+-24|0,Y?c[i>>2]|0:i,Y?c[J>>2]|0:_&255)|0;iB(i);_=(c[m>>2]|0)+-24|0;c[j>>2]=c[u>>2];vB(i,_,j);_=c[v>>2]|0;if(_>>>0<(c[w>>2]|0)>>>0){c[_>>2]=0;Y=_+4|0;c[Y>>2]=0;Z=_+8|0;c[Z>>2]=0;c[_+12>>2]=c[S>>2];c[_>>2]=c[i>>2];c[Y>>2]=c[T>>2];c[Z>>2]=c[U>>2];c[U>>2]=0;c[T>>2]=0;c[i>>2]=0;c[v>>2]=(c[v>>2]|0)+16;}else wB(E,i);RA(i);}iB(h);ea=aa;}else if((o|0)==39){o=0;Z=DB(X,d,e)|0;if((Z|0)==(X|0)|(Z|0)==(d|0))break b;FB(h,(c[m>>2]|0)+-24|0);Y=c[m>>2]|0;_=0;while(1){if((_|0)==-1)break;ca=_+-1|0;QA(Y+(ca*24|0)|0);_=ca;}c[m>>2]=Y+-24;_=Y+-48|0;aa=a[_+11>>0]|0;if(aa<<24>>24<0)fa=c[Y+-44>>2]|0;else fa=aa&255;if(!fa)lD(_,h);else{UB(i,18747,h);_=a[z>>0]|0;aa=_<<24>>24<0;TA((c[m>>2]|0)+-24|0,aa?c[i>>2]|0:i,aa?c[A>>2]|0:_&255)|0;iB(i);}_=(c[m>>2]|0)+-24|0;c[j>>2]=c[u>>2];vB(i,_,j);_=c[v>>2]|0;if(_>>>0<(c[w>>2]|0)>>>0){c[_>>2]=0;aa=_+4|0;c[aa>>2]=0;$=_+8|0;c[$>>2]=0;c[_+12>>2]=c[K>>2];c[_>>2]=c[i>>2];c[aa>>2]=c[L>>2];c[$>>2]=c[M>>2];c[M>>2]=0;c[L>>2]=0;c[i>>2]=0;c[v>>2]=(c[v>>2]|0)+16;}else wB(E,i);RA(i);iB(h);ea=Z;}else if((o|0)==53){o=0;$=X+1|0;if(($|0)!=(d|0))switch(a[$>>0]|0){case 84:case 116:break;default:{o=79;break e;}}$=OB(X,d,e)|0;if(($|0)==(X|0)|($|0)==(d|0))break b;FB(h,(c[m>>2]|0)+-24|0);aa=c[m>>2]|0;_=0;while(1){if((_|0)==-1)break;ca=_+-1|0;QA(aa+(ca*24|0)|0);_=ca;}c[m>>2]=aa+-24;_=aa+-48|0;Z=a[_+11>>0]|0;if(Z<<24>>24<0)ga=c[aa+-44>>2]|0;else ga=Z&255;if(!ga)lD(_,h);else{UB(i,18747,h);_=a[N>>0]|0;Z=_<<24>>24<0;TA((c[m>>2]|0)+-24|0,Z?c[i>>2]|0:i,Z?c[O>>2]|0:_&255)|0;iB(i);}_=(c[m>>2]|0)+-24|0;c[j>>2]=c[u>>2];vB(i,_,j);_=c[v>>2]|0;if(_>>>0<(c[w>>2]|0)>>>0){c[_>>2]=0;Z=_+4|0;c[Z>>2]=0;Y=_+8|0;c[Y>>2]=0;c[_+12>>2]=c[P>>2];c[_>>2]=c[i>>2];c[Z>>2]=c[Q>>2];c[Y>>2]=c[R>>2];c[R>>2]=0;c[Q>>2]=0;c[i>>2]=0;c[v>>2]=(c[v>>2]|0)+16;}else wB(E,i);RA(i);iB(h);ea=$;}}while(0);if((o|0)==79){o=0;Y=BC(X,d,e)|0;if((Y|0)==(X|0)|(Y|0)==(d|0))break b;FB(h,(c[m>>2]|0)+-24|0);Z=c[m>>2]|0;_=0;while(1){if((_|0)==-1)break;ca=_+-1|0;QA(Z+(ca*24|0)|0);_=ca;}c[m>>2]=Z+-24;_=Z+-48|0;ca=a[_+11>>0]|0;if(ca<<24>>24<0)ha=c[Z+-44>>2]|0;else ha=ca&255;if(!ha)lD(_,h);else{UB(i,18747,h);_=a[x>>0]|0;ca=_<<24>>24<0;TA((c[m>>2]|0)+-24|0,ca?c[i>>2]|0:i,ca?c[y>>2]|0:_&255)|0;iB(i);}_=(c[m>>2]|0)+-24|0;c[j>>2]=c[u>>2];vB(i,_,j);_=c[v>>2]|0;if(_>>>0<(c[w>>2]|0)>>>0){c[_>>2]=0;ca=_+4|0;c[ca>>2]=0;ia=_+8|0;c[ia>>2]=0;c[_+12>>2]=c[F>>2];c[_>>2]=c[i>>2];c[ca>>2]=c[G>>2];c[ia>>2]=c[H>>2];c[H>>2]=0;c[G>>2]=0;c[i>>2]=0;c[v>>2]=(c[v>>2]|0)+16;}else wB(E,i);RA(i);iB(h);ea=Y;}V=1;W=ea;}W=X+1|0;c[e+48>>2]=c[g>>2];if(V?(E=c[v>>2]|0,(c[e+16>>2]|0)!=(E|0)):0){G=0;while(1){if((G|0)==-1)break;H=G+-1|0;RA(E+(H<<4)|0);G=H;}c[v>>2]=E+-16;}ja=W;break a;}}while(0);ja=b;}else ja=b;}while(0);l=f;return ja|0;}function iD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+16|0;g=f;a:do{if(((((b|0)!=(d|0)?(a[b>>0]|0)==90:0)?(h=b+1|0,i=jB(h,d,e)|0,!((i|0)==(h|0)|(i|0)==(d|0))):0)?(a[i>>0]|0)==69:0)?(h=i+1|0,(h|0)!=(d|0)):0)switch(a[h>>0]|0){case 115:{j=kD(i+2|0,d)|0;k=c[e+4>>2]|0;if((c[e>>2]|0)==(k|0)){m=j;break a;}qB(k+-24|0,20034)|0;m=j;break a;break;}case 100:{j=i+2|0;if((j|0)==(d|0)){m=b;break a;}i=QB(j,d)|0;if((i|0)==(d|0)){m=b;break a;}if((a[i>>0]|0)!=95){m=b;break a;}j=i+1|0;i=MB(j,d,e)|0;k=e+4|0;if((i|0)==(j|0)){j=c[k>>2]|0;n=0;while(1){if((n|0)==-1)break;o=n+-1|0;QA(j+(o*24|0)|0);n=o;}c[k>>2]=j+-24;m=b;break a;}n=c[k>>2]|0;if(((n-(c[e>>2]|0)|0)/24|0)>>>0<2){m=b;break a;}FB(g,n+-24|0);n=c[k>>2]|0;o=0;while(1){if((o|0)==-1)break;p=o+-1|0;QA(n+(p*24|0)|0);o=p;}c[k>>2]=n+-24;qB(n+-48|0,18747)|0;o=a[g+11>>0]|0;j=o<<24>>24<0;TA((c[k>>2]|0)+-24|0,j?c[g>>2]|0:g,j?c[g+4>>2]|0:o&255)|0;iB(g);m=i;break a;break;}default:{o=MB(h,d,e)|0;if((o|0)==(h|0)){j=e+4|0;p=c[j>>2]|0;q=0;while(1){if((q|0)==-1)break;r=q+-1|0;QA(p+(r*24|0)|0);q=r;}c[j>>2]=p+-24;m=b;break a;}q=kD(o,d)|0;h=e+4|0;i=c[h>>2]|0;if(((i-(c[e>>2]|0)|0)/24|0)>>>0<2){m=q;break a;}FB(g,i+-24|0);i=c[h>>2]|0;k=0;while(1){if((k|0)==-1)break;n=k+-1|0;QA(i+(n*24|0)|0);k=n;}c[h>>2]=i+-24;qB(i+-48|0,18747)|0;k=a[g+11>>0]|0;o=k<<24>>24<0;TA((c[h>>2]|0)+-24|0,o?c[g>>2]|0:g,o?c[g+4>>2]|0:k&255)|0;iB(g);m=q;break a;}}else m=b;}while(0);l=f;return m|0;}function jD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((d-b|0)>1){if((a[b>>0]|0)==83?(a[b+1>>0]|0)==116:0){f=b+2|0;if((f|0)==(d|0)){g=0;h=d;}else{g=0;h=(a[f>>0]|0)==76?b+3|0:f;}}else{g=1;h=b;}f=BC(h,d,e)|0;d=(f|0)==(h|0);if(!(g|d)){g=c[e+4>>2]|0;if((c[e>>2]|0)==(g|0))i=b;else{pB(g+-24|0,0,18969)|0;i=f;}}else i=d?b:f;}else i=b;return i|0;}function kD(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a:do{if((b|0)!=(c|0)){d=a[b>>0]|0;if(d<<24>>24!=95){if(((d<<24>>24)+-48|0)>>>0>=10){e=b;break;}d=b;while(1){f=d+1|0;if((f|0)==(c|0)){e=c;break a;}if(((a[f>>0]|0)+-48|0)>>>0<10)d=f;else{e=f;break a;}}}d=b+1|0;if((d|0)!=(c|0)){f=a[d>>0]|0;if(((f<<24>>24)+-48|0)>>>0<10){e=b+2|0;break;}if(f<<24>>24==95){f=b+2|0;while(1){if((f|0)==(c|0)){e=b;break a;}g=a[f>>0]|0;if(((g<<24>>24)+-48|0)>>>0>=10)break;f=f+1|0;}return(g<<24>>24==95?f+1|0:b)|0;}else e=b;}else e=b;}else e=b;}while(0);return e|0;}function lD(b,d){b=b|0;d=d|0;var e=0,f=0;if((b|0)!=(d|0)){e=a[d+11>>0]|0;f=e<<24>>24<0;vC(b,f?c[d>>2]|0:d,f?c[d+4>>2]|0:e&255);}return;}function mD(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,20066,21);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function nD(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];return;}function oD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;d=l;l=l+32|0;e=d+20|0;f=d;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>4)+1|0;i=qD(a)|0;if(i>>>0<h>>>0)Wz(a);else{j=c[a>>2]|0;k=(c[a+8>>2]|0)-j|0;m=k>>3;rD(f,k>>4>>>0<i>>>1>>>0?m>>>0<h>>>0?h:m:i,(c[g>>2]|0)-j>>4,a+12|0);j=f+8|0;g=c[j>>2]|0;nD(e,b);c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=c[e>>2];c[j>>2]=g+16;sD(a,f);tD(f);l=d;return;}}function pD(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;a:do{if((b|0)==(c|0))e=b;else switch(a[b>>0]|0){case 88:{f=b+1|0;g=SB(f,c,d)|0;if((g|0)==(f|0)|(g|0)==(c|0)){e=b;break a;}e=(a[g>>0]|0)==69?g+1|0:b;break a;break;}case 74:{g=b+1|0;if((g|0)==(c|0)){e=b;break a;}f=g;while(1){if((a[f>>0]|0)==69)break;g=pD(f,c,d)|0;if((g|0)==(f|0)){e=b;break a;}else f=g;}e=f+1|0;break a;break;}case 76:{g=b+1|0;if((g|0)!=(c|0)?(a[g>>0]|0)==90:0){g=b+2|0;h=jB(g,c,d)|0;if((h|0)==(g|0)|(h|0)==(c|0)){e=b;break a;}e=(a[h>>0]|0)==69?h+1|0:b;break a;}e=WB(b,c,d)|0;break a;break;}default:{e=mB(b,c,d)|0;break a;}}}while(0);return e|0;}function qD(a){a=a|0;return 268435455;}function rD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;if(!b)g=0;else g=uD(e,b)|0;c[a>>2]=g;e=g+(d<<4)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[f>>2]=g+(b<<4);return;}function sD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=c[a>>2]|0;e=a+4|0;f=b+4|0;g=c[e>>2]|0;while(1){if((g|0)==(d|0))break;h=c[f>>2]|0;i=h+-16|0;j=g+-16|0;c[i>>2]=0;k=h+-12|0;c[k>>2]=0;l=h+-8|0;c[l>>2]=0;c[h+-4>>2]=c[g+-4>>2];c[i>>2]=c[j>>2];i=g+-12|0;c[k>>2]=c[i>>2];k=g+-8|0;c[l>>2]=c[k>>2];c[k>>2]=0;c[i>>2]=0;c[j>>2]=0;c[f>>2]=(c[f>>2]|0)+-16;g=j;}g=c[a>>2]|0;c[a>>2]=c[f>>2];c[f>>2]=g;g=b+8|0;d=c[e>>2]|0;c[e>>2]=c[g>>2];c[g>>2]=d;d=a+8|0;a=b+12|0;g=c[d>>2]|0;c[d>>2]=c[a>>2];c[a>>2]=g;c[b>>2]=c[f>>2];return;}function tD(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;f=e+-16|0;c[d>>2]=f;XA(f);}d=c[a>>2]|0;if(d|0)aB(c[a+16>>2]|0,d,(c[a+12>>2]|0)-d>>4);return;}function uD(a,b){a=a|0;b=b|0;return aD(c[a>>2]|0,b<<4)|0;}function vD(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,20091,2);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function wD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=l;l=l+16|0;f=e;g=b+11|0;h=a[g>>0]|0;i=h<<24>>24<0;if(i){j=c[b+4>>2]|0;k=j>>>0<11?j:11;m=j;n=(c[b+8>>2]&2147483647)+-1|0;}else{j=h&255;k=j>>>0<11?j:11;m=j;n=10;}if((k-m+n|0)>>>0<d>>>0)dB(b,n,d-k+m-n|0,m,0,k,d,20094);else{if(i)o=c[b>>2]|0;else o=b;do{if((k|0)!=(d|0)){i=m-k|0;if(!i){p=k;q=0;r=20094;s=d;t=17;}else{if(k>>>0>d>>>0){wC(o,20094,d)|0;wC(o+d|0,o+k|0,i)|0;u=k;v=d;break;}do{if(o>>>0<20094>>>0&(o+m|0)>>>0>20094>>>0){if((o+k|0)>>>0>20094>>>0){wC(o,20094,k)|0;w=0;x=k;y=20094+d|0;z=d-k|0;break;}else{w=k;x=0;y=20094+(d-k)|0;z=d;break;}}else{w=k;x=0;y=20094;z=d;}}while(0);n=o+x|0;wC(n+z|0,n+w|0,i)|0;p=w;q=x;r=y;s=z;t=17;}}else{p=d;q=0;r=20094;s=d;t=17;}}while(0);if((t|0)==17){wC(o+q|0,r,s)|0;u=p;v=s;}s=v-u+m|0;if((a[g>>0]|0)<0)c[b+4>>2]=s;else a[g>>0]=s;a[f>>0]=0;cB(o+s|0,f);}l=e;return;}function xD(a){a=a|0;lb();}function yD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!c)d=0;else d=Qy(a,b,c)|0;return d|0;}function zD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+16|0;h=g;i=b+11|0;j=a[i>>0]|0;k=j<<24>>24<0;if(k)m=c[b+4>>2]|0;else m=j&255;if(m>>>0<d>>>0)xD(b);if(k)n=(c[b+8>>2]&2147483647)+-1|0;else n=10;if((n-m|0)>>>0>=f>>>0){if(f|0){if(k)o=c[b>>2]|0;else o=b;k=m-d|0;j=o+d|0;if(!k)p=e;else{wC(j+f|0,j,k)|0;p=j>>>0<=e>>>0&(o+m|0)>>>0>e>>>0?e+f|0:e;}wC(j,p,f)|0;p=m+f|0;if((a[i>>0]|0)<0)c[b+4>>2]=p;else a[i>>0]=p;a[h>>0]=0;cB(o+p|0,h);}}else dB(b,n,m+f-n|0,m,d,0,f,e);l=g;return b|0;}function AD(a){a=a|0;return 268435455;}function BD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;if(!b)g=0;else g=ED(e,b)|0;c[a>>2]=g;e=g+(d<<4)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[f>>2]=g+(b<<4);return;}function CD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=c[a>>2]|0;e=a+4|0;f=b+4|0;g=c[e>>2]|0;while(1){if((g|0)==(d|0))break;h=c[f>>2]|0;i=h+-16|0;j=g+-16|0;c[i>>2]=0;k=h+-12|0;c[k>>2]=0;l=h+-8|0;c[l>>2]=0;c[h+-4>>2]=c[g+-4>>2];c[i>>2]=c[j>>2];i=g+-12|0;c[k>>2]=c[i>>2];k=g+-8|0;c[l>>2]=c[k>>2];c[k>>2]=0;c[i>>2]=0;c[j>>2]=0;c[f>>2]=(c[f>>2]|0)+-16;g=j;}g=c[a>>2]|0;c[a>>2]=c[f>>2];c[f>>2]=g;g=b+8|0;d=c[e>>2]|0;c[e>>2]=c[g>>2];c[g>>2]=d;d=a+8|0;a=b+12|0;g=c[d>>2]|0;c[d>>2]=c[a>>2];c[a>>2]=g;c[b>>2]=c[f>>2];return;}function DD(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;f=e+-16|0;c[d>>2]=f;RA(f);}d=c[a>>2]|0;if(d|0)YA(c[a+16>>2]|0,d,(c[a+12>>2]|0)-d>>4);return;}function ED(a,b){a=a|0;b=b|0;return aD(c[a>>2]|0,b<<4)|0;}function FD(a){a=a|0;var b=0;if(!(XC(a)|0))Wz(a);else{b=$C(a+12|0,1)|0;c[a+4>>2]=b;c[a>>2]=b;c[a+8>>2]=b+24;return;}}function GD(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;d=l;l=l+16|0;e=d;f=b+11|0;g=a[f>>0]|0;if(g<<24>>24<0){h=c[b>>2]|0;i=c[b+4>>2]|0;}else{h=b;i=g&255;}j=(i|0)!=0&1;k=i-j|0;if(!k)m=g;else{wC(h,h+j|0,k)|0;m=a[f>>0]|0;}if(m<<24>>24<0)c[b+4>>2]=k;else a[f>>0]=k;a[e>>0]=0;cB(h+k|0,e);l=d;return;}function HD(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,19867,7);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function ID(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,3);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function JD(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,20287,18);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function KD(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,8);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function LD(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,20280,6);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function MD(a,b){a=a|0;b=b|0;c[a>>2]=b;c[a+4>>2]=c[b>>2];return;}function ND(b,d){b=b|0;d=d|0;c[b>>2]=d;a[b+4>>0]=a[d>>0]|0;return;}function OD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;f=l;l=l+64|0;g=f+60|0;h=f+48|0;i=f+36|0;j=f+24|0;k=f+12|0;m=f;a:do{if((d-b|0)>2){switch(a[b>>0]|0){case 84:break;case 71:{switch(a[b+1>>0]|0){case 86:{n=b+2|0;o=MB(n,d,e)|0;if((o|0)==(n|0)){p=b;q=60;break a;}n=c[e+4>>2]|0;if((c[e>>2]|0)==(n|0)){r=b;break a;}pB(n+-24|0,0,20505)|0;p=o;q=60;break a;break;}case 82:{o=b+2|0;n=MB(o,d,e)|0;if((n|0)==(o|0)){p=b;q=60;break a;}o=c[e+4>>2]|0;if((c[e>>2]|0)==(o|0)){r=b;break a;}pB(o+-24|0,0,20525)|0;p=n;q=60;break a;break;}default:{p=b;q=60;break a;}}break;}default:{p=b;q=60;break a;}}n=b+1|0;switch(a[n>>0]|0){case 86:{o=b+2|0;s=mB(o,d,e)|0;if((s|0)==(o|0)){p=b;q=60;break a;}o=c[e+4>>2]|0;if((c[e>>2]|0)==(o|0)){r=b;break a;}pB(o+-24|0,0,20354)|0;p=s;q=60;break a;break;}case 84:{s=b+2|0;o=mB(s,d,e)|0;if((o|0)==(s|0)){p=b;q=60;break a;}s=c[e+4>>2]|0;if((c[e>>2]|0)==(s|0)){r=b;break a;}pB(s+-24|0,0,20366)|0;p=o;q=60;break a;break;}case 73:{o=b+2|0;s=mB(o,d,e)|0;if((s|0)==(o|0)){p=b;q=60;break a;}o=c[e+4>>2]|0;if((c[e>>2]|0)==(o|0)){r=b;break a;}pB(o+-24|0,0,20375)|0;p=s;q=60;break a;break;}case 83:{s=b+2|0;o=mB(s,d,e)|0;if((o|0)==(s|0)){p=b;q=60;break a;}s=c[e+4>>2]|0;if((c[e>>2]|0)==(s|0)){r=b;break a;}pB(s+-24|0,0,20389)|0;p=o;q=60;break a;break;}case 99:{o=b+2|0;s=RD(o,d)|0;if((s|0)==(o|0)){p=b;q=60;break a;}o=RD(s,d)|0;if((o|0)==(s|0)){p=b;q=60;break a;}s=jB(o,d,e)|0;if((s|0)==(o|0)){p=b;q=60;break a;}o=c[e+4>>2]|0;if((c[e>>2]|0)==(o|0)){r=b;break a;}pB(o+-24|0,0,20408)|0;p=s;q=60;break a;break;}case 67:{s=b+2|0;o=mB(s,d,e)|0;if((o|0)==(s|0)){p=b;q=60;break a;}s=QB(o,d)|0;if((s|0)==(o|0)|(s|0)==(d|0)){p=b;q=60;break a;}if((a[s>>0]|0)!=95){p=b;q=60;break a;}o=s+1|0;s=mB(o,d,e)|0;if((s|0)==(o|0)){p=b;q=60;break a;}o=e+4|0;t=c[o>>2]|0;if(((t-(c[e>>2]|0)|0)/24|0)>>>0<2){r=b;break a;}FB(h,t+-24|0);t=c[o>>2]|0;u=0;while(1){if((u|0)==-1)break;v=u+-1|0;QA(t+(v*24|0)|0);u=v;}c[o>>2]=t+-24;pB(h,0,20435)|0;c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];u=0;while(1){if((u|0)==3)break;c[h+(u<<2)>>2]=0;u=u+1|0;}qB(k,20460)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];u=0;while(1){if((u|0)==3)break;c[k+(u<<2)>>2]=0;u=u+1|0;}FB(m,(c[o>>2]|0)+-24|0);u=a[m+11>>0]|0;t=u<<24>>24<0;TA(j,t?c[m>>2]|0:m,t?c[m+4>>2]|0:u&255)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];u=0;while(1){if((u|0)==3)break;c[j+(u<<2)>>2]=0;u=u+1|0;}u=c[o>>2]|0;t=u+-24|0;v=t+11|0;if((a[v>>0]|0)<0){w=c[t>>2]|0;a[g>>0]=0;cB(w,g);c[u+-20>>2]=0;}else{a[g>>0]=0;cB(t,g);a[v>>0]=0;}TB(t);c[t>>2]=c[i>>2];c[t+4>>2]=c[i+4>>2];c[t+8>>2]=c[i+8>>2];t=0;while(1){if((t|0)==3)break;c[i+(t<<2)>>2]=0;t=t+1|0;}iB(i);iB(m);iB(j);iB(k);iB(h);p=s;q=60;break a;break;}default:{t=RD(n,d)|0;do{if((t|0)!=(n|0)){o=jB(t,d,e)|0;if((o|0)!=(t|0)){v=c[e+4>>2]|0;if((c[e>>2]|0)!=(v|0)){u=v+-24|0;if((a[b+2>>0]|0)==118){pB(u,0,20465)|0;x=0;y=o;break;}else{pB(u,0,20483)|0;x=0;y=o;break;}}else{x=1;y=b;}}else{x=0;y=b;}}else{x=3;y=b;}}while(0);switch(x&3){case 3:case 0:{p=y;q=60;break a;break;}default:{}}if(!x){p=y;q=60;break a;}else{r=b;break a;}}}}else{p=b;q=60;}}while(0);if((q|0)==60)r=p;l=f;return r|0;}function PD(b){b=b|0;a[c[b>>2]>>0]=a[b+4>>0]|0;return;}function QD(a){a=a|0;c[c[a>>2]>>2]=c[a+4>>2];return;}function RD(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;a:do{if((b|0)!=(c|0)){switch(a[b>>0]|0){case 104:{d=b+1|0;e=QB(d,c)|0;if((e|0)==(d|0)|(e|0)==(c|0)){f=b;break a;}return((a[e>>0]|0)==95?e+1|0:b)|0;}case 118:break;default:{f=b;break a;}}e=b+1|0;d=QB(e,c)|0;if((!((d|0)==(e|0)|(d|0)==(c|0))?(a[d>>0]|0)==95:0)?(e=d+1|0,d=QB(e,c)|0,!((d|0)==(e|0)|(d|0)==(c|0))):0)f=(a[d>>0]|0)==95?d+1|0:b;else f=b;}else f=b;}while(0);return f|0;}function SD(a,b){a=a|0;b=b|0;c[a>>2]=b;return;}function TD(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=c[b>>2];return;}function UD(a,b){a=a|0;b=b|0;c[a>>2]=b;return;}function VD(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=c[b>>2];return;}function WD(b){b=b|0;var c=0;if((a[b>>0]|0)==1)c=0;else{a[b>>0]=1;c=1;}return c|0;}function XD(a){a=a|0;return;}function YD(a){a=a|0;return;}function ZD(){var a=0;a=c[5564]|0;c[5564]=a+0;return a|0;}function _D(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;c[f>>2]=c[d>>2];g=rc[c[(c[a>>2]|0)+16>>2]&31](a,b,f)|0;if(g)c[d>>2]=c[f>>2];l=e;return g&1|0;}function $D(a){a=a|0;var b=0;if(!a)b=0;else b=(kA(a,10840,10896,0)|0)!=0&1;return b|0;}function aE(){}function bE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a&65535;d=b&65535;e=N(d,c)|0;f=a>>>16;a=(e>>>16)+(N(d,f)|0)|0;d=b>>>16;b=N(d,c)|0;return(y=(a>>>16)+(N(d,f)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|e&65535|0)|0;}function cE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;a=c;c=bE(e,a)|0;f=y;return(y=(N(b,a)|0)+(N(d,e)|0)+f|f&0,c|0|0)|0;}function dE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+c>>>0;return(y=b+d+(e>>>0<a>>>0|0)>>>0,e|0)|0;}function eE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=b-d>>>0;e=b-d-(c>>>0>a>>>0|0)>>>0;return(y=e,a-c>>>0|0)|0;}function fE(a){a=a|0;return(a?31-(Q(a^a-1)|0)|0:32)|0;}function gE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;g=a;h=b;i=h;j=d;k=e;l=k;if(!i){m=(f|0)!=0;if(!l){if(m){c[f>>2]=(g>>>0)%(j>>>0);c[f+4>>2]=0;}n=0;o=(g>>>0)/(j>>>0)>>>0;return(y=n,o)|0;}else{if(!m){n=0;o=0;return(y=n,o)|0;}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;o=0;return(y=n,o)|0;}}m=(l|0)==0;do{if(j){if(!m){p=(Q(l|0)|0)-(Q(i|0)|0)|0;if(p>>>0<=31){q=p+1|0;r=31-p|0;s=p-31>>31;t=q;u=g>>>(q>>>0)&s|i<<r;v=i>>>(q>>>0)&s;w=0;x=g<<r;break;}if(!f){n=0;o=0;return(y=n,o)|0;}c[f>>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return(y=n,o)|0;}r=j-1|0;if(r&j|0){s=(Q(j|0)|0)+33-(Q(i|0)|0)|0;q=64-s|0;p=32-s|0;z=p>>31;A=s-32|0;B=A>>31;t=s;u=p-1>>31&i>>>(A>>>0)|(i<<p|g>>>(s>>>0))&B;v=B&i>>>(s>>>0);w=g<<q&z;x=(i<<q|g>>>(A>>>0))&z|g<<p&s-33>>31;break;}if(f|0){c[f>>2]=r&g;c[f+4>>2]=0;}if((j|0)==1){n=h|b&0;o=a|0|0;return(y=n,o)|0;}else{r=fE(j|0)|0;n=i>>>(r>>>0)|0;o=i<<32-r|g>>>(r>>>0)|0;return(y=n,o)|0;}}else{if(m){if(f|0){c[f>>2]=(i>>>0)%(j>>>0);c[f+4>>2]=0;}n=0;o=(i>>>0)/(j>>>0)>>>0;return(y=n,o)|0;}if(!g){if(f|0){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(l>>>0);}n=0;o=(i>>>0)/(l>>>0)>>>0;return(y=n,o)|0;}r=l-1|0;if(!(r&l)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=r&i|b&0;}n=0;o=i>>>((fE(l|0)|0)>>>0);return(y=n,o)|0;}r=(Q(l|0)|0)-(Q(i|0)|0)|0;if(r>>>0<=30){s=r+1|0;p=31-r|0;t=s;u=i<<p|g>>>(s>>>0);v=i>>>(s>>>0);w=0;x=g<<p;break;}if(!f){n=0;o=0;return(y=n,o)|0;}c[f>>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return(y=n,o)|0;}}while(0);if(!t){C=x;D=w;E=v;F=u;G=0;H=0;}else{b=d|0|0;d=k|e&0;e=dE(b|0,d|0,-1,-1)|0;k=y;h=x;x=w;w=v;v=u;u=t;t=0;do{a=h;h=x>>>31|h<<1;x=t|x<<1;g=v<<1|a>>>31|0;a=v>>>31|w<<1|0;eE(e|0,k|0,g|0,a|0)|0;i=y;l=i>>31|((i|0)<0?-1:0)<<1;t=l&1;v=eE(g|0,a|0,l&b|0,(((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1)&d|0)|0;w=y;u=u-1|0;}while((u|0)!=0);C=h;D=x;E=w;F=v;G=0;H=t;}t=D;D=0;if(f|0){c[f>>2]=F;c[f+4>>2]=E;}n=(t|0)>>>31|(C|D)<<1|(D<<1|t>>>31)&0|G;o=(t<<1|0>>>31)&-2|H;return(y=n,o)|0;}function hE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return gE(a,b,c,d,0)|0;}function iE(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){y=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c;}y=0;return b>>>c-32|0;}function jE(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){y=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c;}y=a<<c-32;return 0;}function kE(a){a=a|0;return(a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0;}function lE(a,b,c){a=a|0;b=b|0;c=c|0;c=Q(b)|0;if((c|0)==32)c=c+(Q(a)|0)|0;y=0;return c|0;}function mE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192)return nb(b|0,d|0,e|0)|0;f=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0;}h=g&-4|0;e=h-64|0;while((b|0)<=(e|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0;}while((b|0)<(h|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;}}else{h=g-4|0;while((b|0)<(h|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0;}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;}return f|0;}function nE(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0;}b=e;}else mE(b,c,d)|0;return b|0;}function oE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0;}g=f&-4|0;h=g-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(h|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0;}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0;}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0;}return f-e|0;}function pE(a){a=a|0;var b=0,d=0;b=c[i>>2]|0;d=b+a|0;if((a|0)>0&(d|0)<(b|0)|(d|0)<0){V()|0;Ca(12);return-1;}c[i>>2]=d;if((d|0)>(U()|0)?(T()|0)==0:0){c[i>>2]=b;Ca(12);return-1;}return b|0;}function qE(a){a=a|0;return oc[a&7]()|0;}function rE(a,b){a=a|0;b=b|0;return pc[a&63](b|0)|0;}function sE(a,b,c){a=a|0;b=b|0;c=c|0;return qc[a&63](b|0,c|0)|0;}function tE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return rc[a&31](b|0,c|0,d|0)|0;}function uE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return sc[a&15](b|0,c|0,d|0,e|0)|0;}function vE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return tc[a&7](b|0,c|0,d|0,e|0,f|0)|0;}function wE(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return uc[a&31](b|0,c|0,d|0,e|0,f|0,g|0)|0;}function xE(a){a=a|0;vc[a&3]();}function yE(a,b){a=a|0;b=b|0;wc[a&127](b|0);}function zE(a,b,c){a=a|0;b=b|0;c=c|0;xc[a&31](b|0,c|0);}function AE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;yc[a&7](b|0,c|0,d|0);}function BE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;zc[a&7](b|0,c|0,d|0,e|0);}function CE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Ac[a&3](b|0,c|0,d|0,e|0,f|0);}function DE(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Bc[a&3](b|0,c|0,d|0,e|0,f|0,g|0);}function EE(){R(0);return 0;}function FE(a){a=a|0;R(1);return 0;}function GE(a,b){a=a|0;b=b|0;R(2);return 0;}function HE(a,b,c){a=a|0;b=b|0;c=c|0;R(3);return 0;}function IE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;R(4);return 0;}function JE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;R(5);return 0;}function KE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;R(6);return 0;}function LE(){R(7);}function ME(a){a=a|0;R(8);}function NE(a,b){a=a|0;b=b|0;R(9);}function OE(a,b,c){a=a|0;b=b|0;c=c|0;R(10);}function PE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;R(11);}function QE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;R(12);}function RE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;R(13);}// EMSCRIPTEN_END_FUNCS
  27. var oc=[EE,Ce,Me,Ue,ge,EE,EE,EE];var pc=[FE,fd,ld,nd,td,vd,Bd,Ed,Kd,Md,Sd,Ud,_d,kf,qf,xf,Df,If,Of,Tf,Zf,fg,lg,og,ug,Fg,Lg,Og,Ug,Iy,Tz,qe,ve,Qc,Ae,De,Ke,Ne,Se,Ve,Wc,ee,he,Mc,Oo,Gx,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE];var qc=[GE,kd,sd,Ad,Jd,Rd,Zd,pf,Cf,Nf,Yf,jg,kg,sg,tg,Jg,Kg,Sg,Tg,Ht,pe,Oc,ze,$e,af,Rc,Sc,Uc,Vc,We,Xc,Zc,_c,ke,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE];var rc=[HE,Jy,Ky,Ny,zz,cA,xA,zA,CA,ue,Ee,Fe,cf,Oe,Pe,Tc,Re,Xe,Yc,Ze,le,ce,Py,HE,HE,HE,HE,HE,HE,HE,HE,HE];var sc=[IE,vu,wu,Kv,Lv,Xw,Yw,bf,He,df,rf,Qe,Ye,me,IE,IE];var tc=[JE,Ge,Ie,Je,tn,sn,Km,Jm];var uc=[KE,Xl,Yl,Zl,_l,$l,am,bm,cm,dm,em,fm,gm,hm,im,jm,km,KE,KE,KE,KE,KE,KE,KE,KE,KE,KE,KE,KE,KE,KE,KE];var vc=[LE,Xz,Jc,qA];var wc=[ME,Cd,ed,hd,id,md,pd,qd,ud,xd,yd,Dd,Gd,Hd,Ld,Od,Pd,Td,Wd,Xd,hf,jf,mf,nf,vf,wf,zf,Af,Gf,Hf,Kf,Lf,Rf,Sf,Vf,Wf,dg,eg,hg,ig,ng,qg,rg,Dg,Eg,Hg,Ig,Ng,Qg,Rg,Rz,Sz,_z,$z,aA,bA,lA,wA,yA,BA,DA,ne,re,we,Be,Le,Te,fe,ef,sf,Ff,Qf,rA,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME];var xc=[NE,gd,jd,od,rd,wd,zd,Fd,Id,Nd,Qd,Vd,Yd,lf,of,yf,Bf,Jf,Mf,Uf,Xf,gg,pg,Gg,Pg,It,Kc,Lc,Nc,$d,NE,NE];var yc=[OE,oe,ie,ae,be,OE,OE,OE];var zc=[PE,fA,oA,GA,je,PE,PE,PE];var Ac=[QE,eA,nA,FA];var Bc=[RE,dA,mA,EA];return{__GLOBAL__sub_I_bind_cpp:zy,__GLOBAL__sub_I_zstd_binding_cc:_e,___cxa_can_catch:_D,___cxa_demangle:KA,___cxa_is_pointer_type:$D,___errno_location:My,___getTypeName:By,___muldi3:cE,___udivdi3:hE,_bitshift64Lshr:iE,_bitshift64Shl:jE,_free:Dy,_i64Add:dE,_i64Subtract:eE,_llvm_bswap_i32:kE,_llvm_ctlz_i64:lE,_llvm_cttz_i32:fE,_malloc:Cy,_memcpy:mE,_memmove:nE,_memset:oE,_sbrk:pE,dynCall_i:qE,dynCall_ii:rE,dynCall_iii:sE,dynCall_iiii:tE,dynCall_iiiii:uE,dynCall_iiiiii:vE,dynCall_iiiiiii:wE,dynCall_v:xE,dynCall_vi:yE,dynCall_vii:zE,dynCall_viii:AE,dynCall_viiii:BE,dynCall_viiiii:CE,dynCall_viiiiii:DE,establishStackSpace:Fc,getTempRet0:Ic,runPostSets:aE,setTempRet0:Hc,setThrew:Gc,stackAlloc:Cc,stackRestore:Ec,stackSave:Dc};}(// EMSCRIPTEN_END_ASM
  28. Module.asmGlobalArg,Module.asmLibraryArg,buffer);var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var __GLOBAL__sub_I_zstd_binding_cc=Module["__GLOBAL__sub_I_zstd_binding_cc"]=asm["__GLOBAL__sub_I_zstd_binding_cc"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var ___cxa_demangle=Module["___cxa_demangle"]=asm["___cxa_demangle"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _free=Module["_free"]=asm["_free"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _llvm_ctlz_i64=Module["_llvm_ctlz_i64"]=asm["_llvm_ctlz_i64"];var _llvm_cttz_i32=Module["_llvm_cttz_i32"]=asm["_llvm_cttz_i32"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memmove=Module["_memmove"]=asm["_memmove"];var _memset=Module["_memset"]=asm["_memset"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var setThrew=Module["setThrew"]=asm["setThrew"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var _stackRestore=Module["stackRestore"]=asm["stackRestore"];var _stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];Module["asm"]=asm;Module["FS"]=FS;if(memoryInitializer){if(!isDataURI(memoryInitializer)){memoryInitializer=locateFile(memoryInitializer);}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,GLOBAL_BASE);}else{var doBrowserLoad=function doBrowserLoad(){Module["readAsync"](memoryInitializer,applyMemoryInitializer,function(){throw"could not load memory initializer "+memoryInitializer;});};addRunDependency("memory initializer");var applyMemoryInitializer=function applyMemoryInitializer(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer");};var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer);}else if(Module["memoryInitializerRequest"]){var useRequest=function useRequest(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer;}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return;}}applyMemoryInitializer(response);};if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0);}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest);}}else{doBrowserLoad();}}}Module["then"]=function(func){if(Module["calledRun"]){func(Module);}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=function(){if(old)old();func(Module);};}return Module;};function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status;}ExitStatus.prototype=new Error();ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller;};function run(args){args=args||Module["arguments"];if(runDependencies>0){return;}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun();}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("");},1);doRun();},1);}else{doRun();}}Module["run"]=run;function abort(what){if(Module["onAbort"]){Module["onAbort"](what);}if(what!==undefined){out(what);err(what);what=JSON.stringify(what);}else{what="";}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info.";}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()();}}Module["noExitRuntime"]=true;run();return Module;};}();if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof(module))==='object')module.exports=Module;else if(typeof define==='function'&&define['amd'])define([],function(){return Module;});else if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object')exports["Module"]=Module;
  29. }).call(this,require('_process'),require("buffer").Buffer,"/lib")
  30. },{"_process":126,"buffer":54,"crypto":63,"fs":9,"path":119}],7:[function(require,module,exports){
  31. 'use strict';var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var ArrayBufferHelper=require('./helpers.js').ArrayBufferHelper;var constants=require('./constants.js');var onReady=function onReady(binding){var codec=new binding.ZstdCodec();var withBindingInstance=function withBindingInstance(instance,callback){try{return callback(instance);}finally{instance.delete();}};var withCppVector=function withCppVector(callback){var vector=new binding.VectorU8();return withBindingInstance(vector,callback);};var correctCompressionLevel=function correctCompressionLevel(compression_level){return compression_level||constants.DEFAULT_COMPRESSION_LEVEL;};var compressBoundImpl=function compressBoundImpl(content_size){var rc=codec.compressBound(content_size);return rc>=0?rc:null;};var contentSizeImpl=function contentSizeImpl(src_vec){var rc=codec.contentSize(src_vec);return rc>=0?rc:null;};var ArrayBufferSink=function(){function ArrayBufferSink(initial_size){_classCallCheck(this,ArrayBufferSink);this._buffer=new ArrayBuffer(initial_size);this._array=new Uint8Array(this._buffer);this._offset=0;}_createClass(ArrayBufferSink,[{key:'concat',value:function concat(array){if(array.length+this._offset>this._array.length){this._grow(Math.max(this._array.length,array.length)*2);}this._array.set(array,this._offset);this._offset+=array.length;}},{key:'array',value:function array(){// NOTE: clone buffer to shrink to fit
  32. var buffer=ArrayBufferHelper.transfer(this._buffer,this._offset);return new Uint8Array(buffer);}},{key:'_grow',value:function _grow(new_size){this._buffer=ArrayBufferHelper.transfer(this._buffer,new_size);this._array=new Uint8Array(this._buffer);}}]);return ArrayBufferSink;}();var Generic=function(){function Generic(){_classCallCheck(this,Generic);}_createClass(Generic,[{key:'compressBound',value:function compressBound(content_bytes){return compressBoundImpl(content_bytes.length);}},{key:'contentSize',value:function contentSize(compressed_bytes){return withCppVector(function(src){binding.cloneToVector(src,compressed_bytes);return contentSizeImpl(src);});}}]);return Generic;}();var Simple=function(){function Simple(){_classCallCheck(this,Simple);}_createClass(Simple,[{key:'compress',value:function compress(content_bytes,compression_level){// use basic-api `compress`, to embed `frameContentSize`.
  33. var compressBound=compressBoundImpl(content_bytes.length);if(!compressBound)return null;compression_level=correctCompressionLevel(compression_level);return withCppVector(function(src){return withCppVector(function(dest){binding.cloneToVector(src,content_bytes);dest.resize(compressBound,0);var rc=codec.compress(dest,src,compression_level);if(rc<0)return null;// `rc` is compressed size
  34. dest.resize(rc,0);return binding.cloneAsTypedArray(dest);});});}},{key:'decompress',value:function decompress(compressed_bytes){// use streaming-api, to support data without `frameContentSize`.
  35. return withCppVector(function(src){return withCppVector(function(dest){binding.cloneToVector(src,compressed_bytes);var contentSize=contentSizeImpl(src);if(!contentSize)return null;dest.resize(contentSize,0);var rc=codec.decompress(dest,src);if(rc<0||rc!=contentSize)return null;// `rc` is compressed size
  36. return binding.cloneAsTypedArray(dest);});});}},{key:'compressUsingDict',value:function compressUsingDict(content_bytes,cdict){// use basic-api `compress`, to embed `frameContentSize`.
  37. var compressBound=compressBoundImpl(content_bytes.length);if(!compressBound)return null;return withCppVector(function(src){return withCppVector(function(dest){binding.cloneToVector(src,content_bytes);dest.resize(compressBound,0);var rc=codec.compressUsingDict(dest,src,cdict.get());if(rc<0)return null;// `rc` is original content size
  38. dest.resize(rc,0);return binding.cloneAsTypedArray(dest);});});}},{key:'decompressUsingDict',value:function decompressUsingDict(compressed_bytes,ddict){// use streaming-api, to support data without `frameContentSize`.
  39. return withCppVector(function(src){return withCppVector(function(dest){binding.cloneToVector(src,compressed_bytes);var contentSize=contentSizeImpl(src);if(!contentSize)return null;dest.resize(contentSize,0);var rc=codec.decompressUsingDict(dest,src,ddict.get());if(rc<0||rc!=contentSize)return null;// `rc` is compressed size
  40. return binding.cloneAsTypedArray(dest);});});}}]);return Simple;}();var Streaming=function(){function Streaming(){_classCallCheck(this,Streaming);}_createClass(Streaming,[{key:'compress',value:function compress(content_bytes,compression_level){return withBindingInstance(new binding.ZstdCompressStreamBinding(),function(stream){var initial_size=compressBoundImpl(content_bytes.length);var sink=new ArrayBufferSink(initial_size);var callback=function callback(compressed){sink.concat(compressed);};var level=correctCompressionLevel(compression_level);if(!stream.begin(level))return null;if(!stream.transform(content_bytes,callback))return null;if(!stream.end(callback))return null;return sink.array();});}},{key:'compressChunks',value:function compressChunks(chunks,size_hint,compression_level){return withBindingInstance(new binding.ZstdCompressStreamBinding(),function(stream){var initial_size=size_hint||constants.STREAMING_DEFAULT_BUFFER_SIZE;var sink=new ArrayBufferSink(initial_size);var callback=function callback(compressed){sink.concat(compressed);};var level=correctCompressionLevel(compression_level);if(!stream.begin(level))return null;var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=chunks[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var chunk=_step.value;if(!stream.transform(chunk,callback))return null;}}catch(err){_didIteratorError=true;_iteratorError=err;}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return();}}finally{if(_didIteratorError){throw _iteratorError;}}}if(!stream.end(callback))return null;return sink.array();});}},{key:'compressUsingDict',value:function compressUsingDict(content_bytes,cdict){return withBindingInstance(new binding.ZstdCompressStreamBinding(),function(stream){var initial_size=compressBoundImpl(content_bytes.length);var sink=new ArrayBufferSink(initial_size);var callback=function callback(compressed){sink.concat(compressed);};if(!stream.beginUsingDict(cdict.get()))return null;if(!stream.transform(content_bytes,callback))return null;if(!stream.end(callback))return null;return sink.array();});}},{key:'compressChunksUsingDict',value:function compressChunksUsingDict(chunks,size_hint,cdict){return withBindingInstance(new binding.ZstdCompressStreamBinding(),function(stream){var initial_size=size_hint||constants.STREAMING_DEFAULT_BUFFER_SIZE;var sink=new ArrayBufferSink(initial_size);var callback=function callback(compressed){sink.concat(compressed);};if(!stream.beginUsingDict(cdict.get()))return null;var _iteratorNormalCompletion2=true;var _didIteratorError2=false;var _iteratorError2=undefined;try{for(var _iterator2=chunks[Symbol.iterator](),_step2;!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){var chunk=_step2.value;if(!stream.transform(chunk,callback))return null;}}catch(err){_didIteratorError2=true;_iteratorError2=err;}finally{try{if(!_iteratorNormalCompletion2&&_iterator2.return){_iterator2.return();}}finally{if(_didIteratorError2){throw _iteratorError2;}}}if(!stream.end(callback))return null;return sink.array();});}},{key:'decompress',value:function decompress(compressed_bytes,size_hint){var _this=this;return withBindingInstance(new binding.ZstdDecompressStreamBinding(),function(stream){var initial_size=size_hint||_this._estimateContentSize(compressed_bytes);var sink=new ArrayBufferSink(initial_size);var callback=function callback(decompressed){sink.concat(decompressed);};if(!stream.begin())return null;if(!stream.transform(compressed_bytes,callback))return null;if(!stream.end(callback))return null;return sink.array();});}},{key:'decompressChunks',value:function decompressChunks(chunks,size_hint){return withBindingInstance(new binding.ZstdDecompressStreamBinding(),function(stream){var initial_size=size_hint||constants.STREAMING_DEFAULT_BUFFER_SIZE;var sink=new ArrayBufferSink(initial_size);var callback=function callback(decompressed){sink.concat(decompressed);};if(!stream.begin())return null;var _iteratorNormalCompletion3=true;var _didIteratorError3=false;var _iteratorError3=undefined;try{for(var _iterator3=chunks[Symbol.iterator](),_step3;!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=true){var chunk=_step3.value;if(!stream.transform(chunk,callback))return null;}}catch(err){_didIteratorError3=true;_iteratorError3=err;}finally{try{if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return();}}finally{if(_didIteratorError3){throw _iteratorError3;}}}if(!stream.end(callback))return null;return sink.array();});}},{key:'decompressUsingDict',value:function decompressUsingDict(compressed_bytes,size_hint,ddict){var _this2=this;return withBindingInstance(new binding.ZstdDecompressStreamBinding(),function(stream){var initial_size=size_hint||_this2._estimateContentSize(compressed_bytes);var sink=new ArrayBufferSink(initial_size);var callback=function callback(decompressed){sink.concat(decompressed);};if(!stream.beginUsingDict(ddict.get()))return null;if(!stream.transform(compressed_bytes,callback))return null;if(!stream.end(callback))return null;return sink.array();});}},{key:'decompressChunksUsingDict',value:function decompressChunksUsingDict(chunks,size_hint,ddict){return withBindingInstance(new binding.ZstdDecompressStreamBinding(),function(stream){var initial_size=size_hint||constants.STREAMING_DEFAULT_BUFFER_SIZE;var sink=new ArrayBufferSink(initial_size);var callback=function callback(decompressed){sink.concat(decompressed);};if(!stream.beginUsingDict(ddict.get()))return null;var _iteratorNormalCompletion4=true;var _didIteratorError4=false;var _iteratorError4=undefined;try{for(var _iterator4=chunks[Symbol.iterator](),_step4;!(_iteratorNormalCompletion4=(_step4=_iterator4.next()).done);_iteratorNormalCompletion4=true){var chunk=_step4.value;if(!stream.transform(chunk,callback))return null;}}catch(err){_didIteratorError4=true;_iteratorError4=err;}finally{try{if(!_iteratorNormalCompletion4&&_iterator4.return){_iterator4.return();}}finally{if(_didIteratorError4){throw _iteratorError4;}}}if(!stream.end(callback))return null;return sink.array();});}},{key:'_estimateContentSize',value:function _estimateContentSize(compressed_bytes){// REF: https://code.facebook.com/posts/1658392934479273/smaller-and-faster-data-compression-with-zstandard/
  41. // with lzbench, ratio=3.11 .. 3.14. round up to integer
  42. return compressed_bytes.length*4;}}]);return Streaming;}();var ZstdCompressionDict=function(){function ZstdCompressionDict(dict_bytes,compression_level){_classCallCheck(this,ZstdCompressionDict);this.binding=binding.createCompressionDict(dict_bytes,compression_level);}_createClass(ZstdCompressionDict,[{key:'get',value:function get(){return this.binding;}},{key:'close',value:function close(){if(this.binding){this.binding.delete();}}},{key:'delete',value:function _delete(){this.close();}}]);return ZstdCompressionDict;}();var ZstdDecompressionDict=function(){function ZstdDecompressionDict(dict_bytes){_classCallCheck(this,ZstdDecompressionDict);this.binding=new binding.createDecompressionDict(dict_bytes);}_createClass(ZstdDecompressionDict,[{key:'get',value:function get(){return this.binding;}},{key:'close',value:function close(){if(this.binding){this.binding.delete();}}},{key:'delete',value:function _delete(){this.close();}}]);return ZstdDecompressionDict;}();var zstd={};zstd.Generic=Generic;zstd.Simple=Simple;zstd.Streaming=Streaming;zstd.Dict={};zstd.Dict.Compress=ZstdCompressionDict;zstd.Dict.Decompress=ZstdDecompressionDict;return zstd;};exports.run=function(f){return require('./module.js').run(function(binding){var zstd=onReady(binding);f(zstd);});};
  43. },{"./constants.js":2,"./helpers.js":3,"./module.js":4}],8:[function(require,module,exports){
  44. 'use strict';var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}var stream=require('stream');var binding=require('./module.js').Binding;var constants=require('./constants.js');var helpers=require('./helpers.js');var getClassName=helpers.getClassName;var toTypedArray=helpers.toTypedArray;var fromTypedArrayToBuffer=helpers.fromTypedArrayToBuffer;var onReady=function onReady(binding){var ZstdCompressTransform=function(_stream$Transform){_inherits(ZstdCompressTransform,_stream$Transform);function ZstdCompressTransform(compression_level,string_decoder,option){_classCallCheck(this,ZstdCompressTransform);var _this=_possibleConstructorReturn(this,(ZstdCompressTransform.__proto__||Object.getPrototypeOf(ZstdCompressTransform)).call(this,option||{}));_this.string_decoder=string_decoder;_this.binding=new binding.ZstdCompressStreamBinding();_this.binding.begin(compression_level||constants.DEFAULT_COMPRESSION_LEVEL);_this.callback=function(compressed){_this.push(fromTypedArrayToBuffer(compressed),'buffer');};return _this;}_createClass(ZstdCompressTransform,[{key:'_transform',value:function _transform(chunk,encoding,callback){var chunkBytes=toTypedArray(chunk,encoding,this.string_decoder);if(!chunkBytes){var type_name=getClassName(chunk)||(typeof chunk==='undefined'?'undefined':_typeof(chunk));callback(new Error('unsupported chunk type: '+type_name));return;}if(this.binding.transform(chunkBytes,this.callback)){callback();}else{callback(new Error('ZstdDecompressTransform: Error on _transform'));}}},{key:'_flush',value:function _flush(callback){if(this.binding.flush(this.callback)){callback();}else{callback(new Error('ZstdDecompressTransform: Error on _flush'));}}},{key:'_final',value:function _final(callback){if(this.binding.end(this.callback)){callback();}else{callback(new Error('ZstdDecompressTransform: Error on _final'));}}}]);return ZstdCompressTransform;}(stream.Transform);var ZstdDecompressTransform=function(_stream$Transform2){_inherits(ZstdDecompressTransform,_stream$Transform2);function ZstdDecompressTransform(option){_classCallCheck(this,ZstdDecompressTransform);var _this2=_possibleConstructorReturn(this,(ZstdDecompressTransform.__proto__||Object.getPrototypeOf(ZstdDecompressTransform)).call(this,option||{}));_this2.binding=new binding.ZstdDecompressStreamBinding();_this2.binding.begin();_this2.callback=function(decompressed){_this2.push(fromTypedArrayToBuffer(decompressed),'buffer');};return _this2;}_createClass(ZstdDecompressTransform,[{key:'_transform',value:function _transform(chunk,encoding,callback){var chunkBytes=toTypedArray(chunk,encoding,this.string_decoder);if(!chunkBytes){var type_name=getClassName(chunk)||(typeof chunk==='undefined'?'undefined':_typeof(chunk));callback(new Error('unsupported chunk type: '+type_name));return;}if(this.binding.transform(chunk,this.callback)){callback();}else{callback(new Error('ZstdDecompressTransform: Error on _transform'));}}},{key:'_flush',value:function _flush(callback){if(this.binding.flush(this.callback)){callback();}else{callback(new Error('ZstdDecompressTransform: Error on _flush'));}}},{key:'_final',value:function _final(callback){if(this.binding.end(this.callback)){callback();}else{callback(new Error('ZstdDecompressTransform: Error on _final'));}}}]);return ZstdDecompressTransform;}(stream.Transform);var streams={};streams.ZstdCompressTransform=ZstdCompressTransform;streams.ZstdDecompressTransform=ZstdDecompressTransform;return streams;};exports=function exports(f){return require('./module.js').then(function(binding){var streams=onReady(binding);f(streams);});};
  45. },{"./constants.js":2,"./helpers.js":3,"./module.js":4,"stream":157}],9:[function(require,module,exports){
  46. },{}],10:[function(require,module,exports){
  47. var asn1 = exports;
  48. asn1.bignum = require('bn.js');
  49. asn1.define = require('./asn1/api').define;
  50. asn1.base = require('./asn1/base');
  51. asn1.constants = require('./asn1/constants');
  52. asn1.decoders = require('./asn1/decoders');
  53. asn1.encoders = require('./asn1/encoders');
  54. },{"./asn1/api":11,"./asn1/base":13,"./asn1/constants":17,"./asn1/decoders":19,"./asn1/encoders":22,"bn.js":25}],11:[function(require,module,exports){
  55. var asn1 = require('../asn1');
  56. var inherits = require('inherits');
  57. var api = exports;
  58. api.define = function define(name, body) {
  59. return new Entity(name, body);
  60. };
  61. function Entity(name, body) {
  62. this.name = name;
  63. this.body = body;
  64. this.decoders = {};
  65. this.encoders = {};
  66. };
  67. Entity.prototype._createNamed = function createNamed(base) {
  68. var named;
  69. try {
  70. named = require('vm').runInThisContext(
  71. '(function ' + this.name + '(entity) {\n' +
  72. ' this._initNamed(entity);\n' +
  73. '})'
  74. );
  75. } catch (e) {
  76. named = function (entity) {
  77. this._initNamed(entity);
  78. };
  79. }
  80. inherits(named, base);
  81. named.prototype._initNamed = function initnamed(entity) {
  82. base.call(this, entity);
  83. };
  84. return new named(this);
  85. };
  86. Entity.prototype._getDecoder = function _getDecoder(enc) {
  87. enc = enc || 'der';
  88. // Lazily create decoder
  89. if (!this.decoders.hasOwnProperty(enc))
  90. this.decoders[enc] = this._createNamed(asn1.decoders[enc]);
  91. return this.decoders[enc];
  92. };
  93. Entity.prototype.decode = function decode(data, enc, options) {
  94. return this._getDecoder(enc).decode(data, options);
  95. };
  96. Entity.prototype._getEncoder = function _getEncoder(enc) {
  97. enc = enc || 'der';
  98. // Lazily create encoder
  99. if (!this.encoders.hasOwnProperty(enc))
  100. this.encoders[enc] = this._createNamed(asn1.encoders[enc]);
  101. return this.encoders[enc];
  102. };
  103. Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) {
  104. return this._getEncoder(enc).encode(data, reporter);
  105. };
  106. },{"../asn1":10,"inherits":108,"vm":160}],12:[function(require,module,exports){
  107. var inherits = require('inherits');
  108. var Reporter = require('../base').Reporter;
  109. var Buffer = require('buffer').Buffer;
  110. function DecoderBuffer(base, options) {
  111. Reporter.call(this, options);
  112. if (!Buffer.isBuffer(base)) {
  113. this.error('Input not Buffer');
  114. return;
  115. }
  116. this.base = base;
  117. this.offset = 0;
  118. this.length = base.length;
  119. }
  120. inherits(DecoderBuffer, Reporter);
  121. exports.DecoderBuffer = DecoderBuffer;
  122. DecoderBuffer.prototype.save = function save() {
  123. return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };
  124. };
  125. DecoderBuffer.prototype.restore = function restore(save) {
  126. // Return skipped data
  127. var res = new DecoderBuffer(this.base);
  128. res.offset = save.offset;
  129. res.length = this.offset;
  130. this.offset = save.offset;
  131. Reporter.prototype.restore.call(this, save.reporter);
  132. return res;
  133. };
  134. DecoderBuffer.prototype.isEmpty = function isEmpty() {
  135. return this.offset === this.length;
  136. };
  137. DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {
  138. if (this.offset + 1 <= this.length)
  139. return this.base.readUInt8(this.offset++, true);
  140. else
  141. return this.error(fail || 'DecoderBuffer overrun');
  142. }
  143. DecoderBuffer.prototype.skip = function skip(bytes, fail) {
  144. if (!(this.offset + bytes <= this.length))
  145. return this.error(fail || 'DecoderBuffer overrun');
  146. var res = new DecoderBuffer(this.base);
  147. // Share reporter state
  148. res._reporterState = this._reporterState;
  149. res.offset = this.offset;
  150. res.length = this.offset + bytes;
  151. this.offset += bytes;
  152. return res;
  153. }
  154. DecoderBuffer.prototype.raw = function raw(save) {
  155. return this.base.slice(save ? save.offset : this.offset, this.length);
  156. }
  157. function EncoderBuffer(value, reporter) {
  158. if (Array.isArray(value)) {
  159. this.length = 0;
  160. this.value = value.map(function(item) {
  161. if (!(item instanceof EncoderBuffer))
  162. item = new EncoderBuffer(item, reporter);
  163. this.length += item.length;
  164. return item;
  165. }, this);
  166. } else if (typeof value === 'number') {
  167. if (!(0 <= value && value <= 0xff))
  168. return reporter.error('non-byte EncoderBuffer value');
  169. this.value = value;
  170. this.length = 1;
  171. } else if (typeof value === 'string') {
  172. this.value = value;
  173. this.length = Buffer.byteLength(value);
  174. } else if (Buffer.isBuffer(value)) {
  175. this.value = value;
  176. this.length = value.length;
  177. } else {
  178. return reporter.error('Unsupported type: ' + typeof value);
  179. }
  180. }
  181. exports.EncoderBuffer = EncoderBuffer;
  182. EncoderBuffer.prototype.join = function join(out, offset) {
  183. if (!out)
  184. out = new Buffer(this.length);
  185. if (!offset)
  186. offset = 0;
  187. if (this.length === 0)
  188. return out;
  189. if (Array.isArray(this.value)) {
  190. this.value.forEach(function(item) {
  191. item.join(out, offset);
  192. offset += item.length;
  193. });
  194. } else {
  195. if (typeof this.value === 'number')
  196. out[offset] = this.value;
  197. else if (typeof this.value === 'string')
  198. out.write(this.value, offset);
  199. else if (Buffer.isBuffer(this.value))
  200. this.value.copy(out, offset);
  201. offset += this.length;
  202. }
  203. return out;
  204. };
  205. },{"../base":13,"buffer":54,"inherits":108}],13:[function(require,module,exports){
  206. var base = exports;
  207. base.Reporter = require('./reporter').Reporter;
  208. base.DecoderBuffer = require('./buffer').DecoderBuffer;
  209. base.EncoderBuffer = require('./buffer').EncoderBuffer;
  210. base.Node = require('./node');
  211. },{"./buffer":12,"./node":14,"./reporter":15}],14:[function(require,module,exports){
  212. var Reporter = require('../base').Reporter;
  213. var EncoderBuffer = require('../base').EncoderBuffer;
  214. var DecoderBuffer = require('../base').DecoderBuffer;
  215. var assert = require('minimalistic-assert');
  216. // Supported tags
  217. var tags = [
  218. 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',
  219. 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',
  220. 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',
  221. 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'
  222. ];
  223. // Public methods list
  224. var methods = [
  225. 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',
  226. 'any', 'contains'
  227. ].concat(tags);
  228. // Overrided methods list
  229. var overrided = [
  230. '_peekTag', '_decodeTag', '_use',
  231. '_decodeStr', '_decodeObjid', '_decodeTime',
  232. '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',
  233. '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',
  234. '_encodeNull', '_encodeInt', '_encodeBool'
  235. ];
  236. function Node(enc, parent) {
  237. var state = {};
  238. this._baseState = state;
  239. state.enc = enc;
  240. state.parent = parent || null;
  241. state.children = null;
  242. // State
  243. state.tag = null;
  244. state.args = null;
  245. state.reverseArgs = null;
  246. state.choice = null;
  247. state.optional = false;
  248. state.any = false;
  249. state.obj = false;
  250. state.use = null;
  251. state.useDecoder = null;
  252. state.key = null;
  253. state['default'] = null;
  254. state.explicit = null;
  255. state.implicit = null;
  256. state.contains = null;
  257. // Should create new instance on each method
  258. if (!state.parent) {
  259. state.children = [];
  260. this._wrap();
  261. }
  262. }
  263. module.exports = Node;
  264. var stateProps = [
  265. 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',
  266. 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',
  267. 'implicit', 'contains'
  268. ];
  269. Node.prototype.clone = function clone() {
  270. var state = this._baseState;
  271. var cstate = {};
  272. stateProps.forEach(function(prop) {
  273. cstate[prop] = state[prop];
  274. });
  275. var res = new this.constructor(cstate.parent);
  276. res._baseState = cstate;
  277. return res;
  278. };
  279. Node.prototype._wrap = function wrap() {
  280. var state = this._baseState;
  281. methods.forEach(function(method) {
  282. this[method] = function _wrappedMethod() {
  283. var clone = new this.constructor(this);
  284. state.children.push(clone);
  285. return clone[method].apply(clone, arguments);
  286. };
  287. }, this);
  288. };
  289. Node.prototype._init = function init(body) {
  290. var state = this._baseState;
  291. assert(state.parent === null);
  292. body.call(this);
  293. // Filter children
  294. state.children = state.children.filter(function(child) {
  295. return child._baseState.parent === this;
  296. }, this);
  297. assert.equal(state.children.length, 1, 'Root node can have only one child');
  298. };
  299. Node.prototype._useArgs = function useArgs(args) {
  300. var state = this._baseState;
  301. // Filter children and args
  302. var children = args.filter(function(arg) {
  303. return arg instanceof this.constructor;
  304. }, this);
  305. args = args.filter(function(arg) {
  306. return !(arg instanceof this.constructor);
  307. }, this);
  308. if (children.length !== 0) {
  309. assert(state.children === null);
  310. state.children = children;
  311. // Replace parent to maintain backward link
  312. children.forEach(function(child) {
  313. child._baseState.parent = this;
  314. }, this);
  315. }
  316. if (args.length !== 0) {
  317. assert(state.args === null);
  318. state.args = args;
  319. state.reverseArgs = args.map(function(arg) {
  320. if (typeof arg !== 'object' || arg.constructor !== Object)
  321. return arg;
  322. var res = {};
  323. Object.keys(arg).forEach(function(key) {
  324. if (key == (key | 0))
  325. key |= 0;
  326. var value = arg[key];
  327. res[value] = key;
  328. });
  329. return res;
  330. });
  331. }
  332. };
  333. //
  334. // Overrided methods
  335. //
  336. overrided.forEach(function(method) {
  337. Node.prototype[method] = function _overrided() {
  338. var state = this._baseState;
  339. throw new Error(method + ' not implemented for encoding: ' + state.enc);
  340. };
  341. });
  342. //
  343. // Public methods
  344. //
  345. tags.forEach(function(tag) {
  346. Node.prototype[tag] = function _tagMethod() {
  347. var state = this._baseState;
  348. var args = Array.prototype.slice.call(arguments);
  349. assert(state.tag === null);
  350. state.tag = tag;
  351. this._useArgs(args);
  352. return this;
  353. };
  354. });
  355. Node.prototype.use = function use(item) {
  356. assert(item);
  357. var state = this._baseState;
  358. assert(state.use === null);
  359. state.use = item;
  360. return this;
  361. };
  362. Node.prototype.optional = function optional() {
  363. var state = this._baseState;
  364. state.optional = true;
  365. return this;
  366. };
  367. Node.prototype.def = function def(val) {
  368. var state = this._baseState;
  369. assert(state['default'] === null);
  370. state['default'] = val;
  371. state.optional = true;
  372. return this;
  373. };
  374. Node.prototype.explicit = function explicit(num) {
  375. var state = this._baseState;
  376. assert(state.explicit === null && state.implicit === null);
  377. state.explicit = num;
  378. return this;
  379. };
  380. Node.prototype.implicit = function implicit(num) {
  381. var state = this._baseState;
  382. assert(state.explicit === null && state.implicit === null);
  383. state.implicit = num;
  384. return this;
  385. };
  386. Node.prototype.obj = function obj() {
  387. var state = this._baseState;
  388. var args = Array.prototype.slice.call(arguments);
  389. state.obj = true;
  390. if (args.length !== 0)
  391. this._useArgs(args);
  392. return this;
  393. };
  394. Node.prototype.key = function key(newKey) {
  395. var state = this._baseState;
  396. assert(state.key === null);
  397. state.key = newKey;
  398. return this;
  399. };
  400. Node.prototype.any = function any() {
  401. var state = this._baseState;
  402. state.any = true;
  403. return this;
  404. };
  405. Node.prototype.choice = function choice(obj) {
  406. var state = this._baseState;
  407. assert(state.choice === null);
  408. state.choice = obj;
  409. this._useArgs(Object.keys(obj).map(function(key) {
  410. return obj[key];
  411. }));
  412. return this;
  413. };
  414. Node.prototype.contains = function contains(item) {
  415. var state = this._baseState;
  416. assert(state.use === null);
  417. state.contains = item;
  418. return this;
  419. };
  420. //
  421. // Decoding
  422. //
  423. Node.prototype._decode = function decode(input, options) {
  424. var state = this._baseState;
  425. // Decode root node
  426. if (state.parent === null)
  427. return input.wrapResult(state.children[0]._decode(input, options));
  428. var result = state['default'];
  429. var present = true;
  430. var prevKey = null;
  431. if (state.key !== null)
  432. prevKey = input.enterKey(state.key);
  433. // Check if tag is there
  434. if (state.optional) {
  435. var tag = null;
  436. if (state.explicit !== null)
  437. tag = state.explicit;
  438. else if (state.implicit !== null)
  439. tag = state.implicit;
  440. else if (state.tag !== null)
  441. tag = state.tag;
  442. if (tag === null && !state.any) {
  443. // Trial and Error
  444. var save = input.save();
  445. try {
  446. if (state.choice === null)
  447. this._decodeGeneric(state.tag, input, options);
  448. else
  449. this._decodeChoice(input, options);
  450. present = true;
  451. } catch (e) {
  452. present = false;
  453. }
  454. input.restore(save);
  455. } else {
  456. present = this._peekTag(input, tag, state.any);
  457. if (input.isError(present))
  458. return present;
  459. }
  460. }
  461. // Push object on stack
  462. var prevObj;
  463. if (state.obj && present)
  464. prevObj = input.enterObject();
  465. if (present) {
  466. // Unwrap explicit values
  467. if (state.explicit !== null) {
  468. var explicit = this._decodeTag(input, state.explicit);
  469. if (input.isError(explicit))
  470. return explicit;
  471. input = explicit;
  472. }
  473. var start = input.offset;
  474. // Unwrap implicit and normal values
  475. if (state.use === null && state.choice === null) {
  476. if (state.any)
  477. var save = input.save();
  478. var body = this._decodeTag(
  479. input,
  480. state.implicit !== null ? state.implicit : state.tag,
  481. state.any
  482. );
  483. if (input.isError(body))
  484. return body;
  485. if (state.any)
  486. result = input.raw(save);
  487. else
  488. input = body;
  489. }
  490. if (options && options.track && state.tag !== null)
  491. options.track(input.path(), start, input.length, 'tagged');
  492. if (options && options.track && state.tag !== null)
  493. options.track(input.path(), input.offset, input.length, 'content');
  494. // Select proper method for tag
  495. if (state.any)
  496. result = result;
  497. else if (state.choice === null)
  498. result = this._decodeGeneric(state.tag, input, options);
  499. else
  500. result = this._decodeChoice(input, options);
  501. if (input.isError(result))
  502. return result;
  503. // Decode children
  504. if (!state.any && state.choice === null && state.children !== null) {
  505. state.children.forEach(function decodeChildren(child) {
  506. // NOTE: We are ignoring errors here, to let parser continue with other
  507. // parts of encoded data
  508. child._decode(input, options);
  509. });
  510. }
  511. // Decode contained/encoded by schema, only in bit or octet strings
  512. if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {
  513. var data = new DecoderBuffer(result);
  514. result = this._getUse(state.contains, input._reporterState.obj)
  515. ._decode(data, options);
  516. }
  517. }
  518. // Pop object
  519. if (state.obj && present)
  520. result = input.leaveObject(prevObj);
  521. // Set key
  522. if (state.key !== null && (result !== null || present === true))
  523. input.leaveKey(prevKey, state.key, result);
  524. else if (prevKey !== null)
  525. input.exitKey(prevKey);
  526. return result;
  527. };
  528. Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {
  529. var state = this._baseState;
  530. if (tag === 'seq' || tag === 'set')
  531. return null;
  532. if (tag === 'seqof' || tag === 'setof')
  533. return this._decodeList(input, tag, state.args[0], options);
  534. else if (/str$/.test(tag))
  535. return this._decodeStr(input, tag, options);
  536. else if (tag === 'objid' && state.args)
  537. return this._decodeObjid(input, state.args[0], state.args[1], options);
  538. else if (tag === 'objid')
  539. return this._decodeObjid(input, null, null, options);
  540. else if (tag === 'gentime' || tag === 'utctime')
  541. return this._decodeTime(input, tag, options);
  542. else if (tag === 'null_')
  543. return this._decodeNull(input, options);
  544. else if (tag === 'bool')
  545. return this._decodeBool(input, options);
  546. else if (tag === 'objDesc')
  547. return this._decodeStr(input, tag, options);
  548. else if (tag === 'int' || tag === 'enum')
  549. return this._decodeInt(input, state.args && state.args[0], options);
  550. if (state.use !== null) {
  551. return this._getUse(state.use, input._reporterState.obj)
  552. ._decode(input, options);
  553. } else {
  554. return input.error('unknown tag: ' + tag);
  555. }
  556. };
  557. Node.prototype._getUse = function _getUse(entity, obj) {
  558. var state = this._baseState;
  559. // Create altered use decoder if implicit is set
  560. state.useDecoder = this._use(entity, obj);
  561. assert(state.useDecoder._baseState.parent === null);
  562. state.useDecoder = state.useDecoder._baseState.children[0];
  563. if (state.implicit !== state.useDecoder._baseState.implicit) {
  564. state.useDecoder = state.useDecoder.clone();
  565. state.useDecoder._baseState.implicit = state.implicit;
  566. }
  567. return state.useDecoder;
  568. };
  569. Node.prototype._decodeChoice = function decodeChoice(input, options) {
  570. var state = this._baseState;
  571. var result = null;
  572. var match = false;
  573. Object.keys(state.choice).some(function(key) {
  574. var save = input.save();
  575. var node = state.choice[key];
  576. try {
  577. var value = node._decode(input, options);
  578. if (input.isError(value))
  579. return false;
  580. result = { type: key, value: value };
  581. match = true;
  582. } catch (e) {
  583. input.restore(save);
  584. return false;
  585. }
  586. return true;
  587. }, this);
  588. if (!match)
  589. return input.error('Choice not matched');
  590. return result;
  591. };
  592. //
  593. // Encoding
  594. //
  595. Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) {
  596. return new EncoderBuffer(data, this.reporter);
  597. };
  598. Node.prototype._encode = function encode(data, reporter, parent) {
  599. var state = this._baseState;
  600. if (state['default'] !== null && state['default'] === data)
  601. return;
  602. var result = this._encodeValue(data, reporter, parent);
  603. if (result === undefined)
  604. return;
  605. if (this._skipDefault(result, reporter, parent))
  606. return;
  607. return result;
  608. };
  609. Node.prototype._encodeValue = function encode(data, reporter, parent) {
  610. var state = this._baseState;
  611. // Decode root node
  612. if (state.parent === null)
  613. return state.children[0]._encode(data, reporter || new Reporter());
  614. var result = null;
  615. // Set reporter to share it with a child class
  616. this.reporter = reporter;
  617. // Check if data is there
  618. if (state.optional && data === undefined) {
  619. if (state['default'] !== null)
  620. data = state['default']
  621. else
  622. return;
  623. }
  624. // Encode children first
  625. var content = null;
  626. var primitive = false;
  627. if (state.any) {
  628. // Anything that was given is translated to buffer
  629. result = this._createEncoderBuffer(data);
  630. } else if (state.choice) {
  631. result = this._encodeChoice(data, reporter);
  632. } else if (state.contains) {
  633. content = this._getUse(state.contains, parent)._encode(data, reporter);
  634. primitive = true;
  635. } else if (state.children) {
  636. content = state.children.map(function(child) {
  637. if (child._baseState.tag === 'null_')
  638. return child._encode(null, reporter, data);
  639. if (child._baseState.key === null)
  640. return reporter.error('Child should have a key');
  641. var prevKey = reporter.enterKey(child._baseState.key);
  642. if (typeof data !== 'object')
  643. return reporter.error('Child expected, but input is not object');
  644. var res = child._encode(data[child._baseState.key], reporter, data);
  645. reporter.leaveKey(prevKey);
  646. return res;
  647. }, this).filter(function(child) {
  648. return child;
  649. });
  650. content = this._createEncoderBuffer(content);
  651. } else {
  652. if (state.tag === 'seqof' || state.tag === 'setof') {
  653. // TODO(indutny): this should be thrown on DSL level
  654. if (!(state.args && state.args.length === 1))
  655. return reporter.error('Too many args for : ' + state.tag);
  656. if (!Array.isArray(data))
  657. return reporter.error('seqof/setof, but data is not Array');
  658. var child = this.clone();
  659. child._baseState.implicit = null;
  660. content = this._createEncoderBuffer(data.map(function(item) {
  661. var state = this._baseState;
  662. return this._getUse(state.args[0], data)._encode(item, reporter);
  663. }, child));
  664. } else if (state.use !== null) {
  665. result = this._getUse(state.use, parent)._encode(data, reporter);
  666. } else {
  667. content = this._encodePrimitive(state.tag, data);
  668. primitive = true;
  669. }
  670. }
  671. // Encode data itself
  672. var result;
  673. if (!state.any && state.choice === null) {
  674. var tag = state.implicit !== null ? state.implicit : state.tag;
  675. var cls = state.implicit === null ? 'universal' : 'context';
  676. if (tag === null) {
  677. if (state.use === null)
  678. reporter.error('Tag could be ommited only for .use()');
  679. } else {
  680. if (state.use === null)
  681. result = this._encodeComposite(tag, primitive, cls, content);
  682. }
  683. }
  684. // Wrap in explicit
  685. if (state.explicit !== null)
  686. result = this._encodeComposite(state.explicit, false, 'context', result);
  687. return result;
  688. };
  689. Node.prototype._encodeChoice = function encodeChoice(data, reporter) {
  690. var state = this._baseState;
  691. var node = state.choice[data.type];
  692. if (!node) {
  693. assert(
  694. false,
  695. data.type + ' not found in ' +
  696. JSON.stringify(Object.keys(state.choice)));
  697. }
  698. return node._encode(data.value, reporter);
  699. };
  700. Node.prototype._encodePrimitive = function encodePrimitive(tag, data) {
  701. var state = this._baseState;
  702. if (/str$/.test(tag))
  703. return this._encodeStr(data, tag);
  704. else if (tag === 'objid' && state.args)
  705. return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);
  706. else if (tag === 'objid')
  707. return this._encodeObjid(data, null, null);
  708. else if (tag === 'gentime' || tag === 'utctime')
  709. return this._encodeTime(data, tag);
  710. else if (tag === 'null_')
  711. return this._encodeNull();
  712. else if (tag === 'int' || tag === 'enum')
  713. return this._encodeInt(data, state.args && state.reverseArgs[0]);
  714. else if (tag === 'bool')
  715. return this._encodeBool(data);
  716. else if (tag === 'objDesc')
  717. return this._encodeStr(data, tag);
  718. else
  719. throw new Error('Unsupported tag: ' + tag);
  720. };
  721. Node.prototype._isNumstr = function isNumstr(str) {
  722. return /^[0-9 ]*$/.test(str);
  723. };
  724. Node.prototype._isPrintstr = function isPrintstr(str) {
  725. return /^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(str);
  726. };
  727. },{"../base":13,"minimalistic-assert":112}],15:[function(require,module,exports){
  728. var inherits = require('inherits');
  729. function Reporter(options) {
  730. this._reporterState = {
  731. obj: null,
  732. path: [],
  733. options: options || {},
  734. errors: []
  735. };
  736. }
  737. exports.Reporter = Reporter;
  738. Reporter.prototype.isError = function isError(obj) {
  739. return obj instanceof ReporterError;
  740. };
  741. Reporter.prototype.save = function save() {
  742. var state = this._reporterState;
  743. return { obj: state.obj, pathLen: state.path.length };
  744. };
  745. Reporter.prototype.restore = function restore(data) {
  746. var state = this._reporterState;
  747. state.obj = data.obj;
  748. state.path = state.path.slice(0, data.pathLen);
  749. };
  750. Reporter.prototype.enterKey = function enterKey(key) {
  751. return this._reporterState.path.push(key);
  752. };
  753. Reporter.prototype.exitKey = function exitKey(index) {
  754. var state = this._reporterState;
  755. state.path = state.path.slice(0, index - 1);
  756. };
  757. Reporter.prototype.leaveKey = function leaveKey(index, key, value) {
  758. var state = this._reporterState;
  759. this.exitKey(index);
  760. if (state.obj !== null)
  761. state.obj[key] = value;
  762. };
  763. Reporter.prototype.path = function path() {
  764. return this._reporterState.path.join('/');
  765. };
  766. Reporter.prototype.enterObject = function enterObject() {
  767. var state = this._reporterState;
  768. var prev = state.obj;
  769. state.obj = {};
  770. return prev;
  771. };
  772. Reporter.prototype.leaveObject = function leaveObject(prev) {
  773. var state = this._reporterState;
  774. var now = state.obj;
  775. state.obj = prev;
  776. return now;
  777. };
  778. Reporter.prototype.error = function error(msg) {
  779. var err;
  780. var state = this._reporterState;
  781. var inherited = msg instanceof ReporterError;
  782. if (inherited) {
  783. err = msg;
  784. } else {
  785. err = new ReporterError(state.path.map(function(elem) {
  786. return '[' + JSON.stringify(elem) + ']';
  787. }).join(''), msg.message || msg, msg.stack);
  788. }
  789. if (!state.options.partial)
  790. throw err;
  791. if (!inherited)
  792. state.errors.push(err);
  793. return err;
  794. };
  795. Reporter.prototype.wrapResult = function wrapResult(result) {
  796. var state = this._reporterState;
  797. if (!state.options.partial)
  798. return result;
  799. return {
  800. result: this.isError(result) ? null : result,
  801. errors: state.errors
  802. };
  803. };
  804. function ReporterError(path, msg) {
  805. this.path = path;
  806. this.rethrow(msg);
  807. };
  808. inherits(ReporterError, Error);
  809. ReporterError.prototype.rethrow = function rethrow(msg) {
  810. this.message = msg + ' at: ' + (this.path || '(shallow)');
  811. if (Error.captureStackTrace)
  812. Error.captureStackTrace(this, ReporterError);
  813. if (!this.stack) {
  814. try {
  815. // IE only adds stack when thrown
  816. throw new Error(this.message);
  817. } catch (e) {
  818. this.stack = e.stack;
  819. }
  820. }
  821. return this;
  822. };
  823. },{"inherits":108}],16:[function(require,module,exports){
  824. var constants = require('../constants');
  825. exports.tagClass = {
  826. 0: 'universal',
  827. 1: 'application',
  828. 2: 'context',
  829. 3: 'private'
  830. };
  831. exports.tagClassByName = constants._reverse(exports.tagClass);
  832. exports.tag = {
  833. 0x00: 'end',
  834. 0x01: 'bool',
  835. 0x02: 'int',
  836. 0x03: 'bitstr',
  837. 0x04: 'octstr',
  838. 0x05: 'null_',
  839. 0x06: 'objid',
  840. 0x07: 'objDesc',
  841. 0x08: 'external',
  842. 0x09: 'real',
  843. 0x0a: 'enum',
  844. 0x0b: 'embed',
  845. 0x0c: 'utf8str',
  846. 0x0d: 'relativeOid',
  847. 0x10: 'seq',
  848. 0x11: 'set',
  849. 0x12: 'numstr',
  850. 0x13: 'printstr',
  851. 0x14: 't61str',
  852. 0x15: 'videostr',
  853. 0x16: 'ia5str',
  854. 0x17: 'utctime',
  855. 0x18: 'gentime',
  856. 0x19: 'graphstr',
  857. 0x1a: 'iso646str',
  858. 0x1b: 'genstr',
  859. 0x1c: 'unistr',
  860. 0x1d: 'charstr',
  861. 0x1e: 'bmpstr'
  862. };
  863. exports.tagByName = constants._reverse(exports.tag);
  864. },{"../constants":17}],17:[function(require,module,exports){
  865. var constants = exports;
  866. // Helper
  867. constants._reverse = function reverse(map) {
  868. var res = {};
  869. Object.keys(map).forEach(function(key) {
  870. // Convert key to integer if it is stringified
  871. if ((key | 0) == key)
  872. key = key | 0;
  873. var value = map[key];
  874. res[value] = key;
  875. });
  876. return res;
  877. };
  878. constants.der = require('./der');
  879. },{"./der":16}],18:[function(require,module,exports){
  880. var inherits = require('inherits');
  881. var asn1 = require('../../asn1');
  882. var base = asn1.base;
  883. var bignum = asn1.bignum;
  884. // Import DER constants
  885. var der = asn1.constants.der;
  886. function DERDecoder(entity) {
  887. this.enc = 'der';
  888. this.name = entity.name;
  889. this.entity = entity;
  890. // Construct base tree
  891. this.tree = new DERNode();
  892. this.tree._init(entity.body);
  893. };
  894. module.exports = DERDecoder;
  895. DERDecoder.prototype.decode = function decode(data, options) {
  896. if (!(data instanceof base.DecoderBuffer))
  897. data = new base.DecoderBuffer(data, options);
  898. return this.tree._decode(data, options);
  899. };
  900. // Tree methods
  901. function DERNode(parent) {
  902. base.Node.call(this, 'der', parent);
  903. }
  904. inherits(DERNode, base.Node);
  905. DERNode.prototype._peekTag = function peekTag(buffer, tag, any) {
  906. if (buffer.isEmpty())
  907. return false;
  908. var state = buffer.save();
  909. var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"');
  910. if (buffer.isError(decodedTag))
  911. return decodedTag;
  912. buffer.restore(state);
  913. return decodedTag.tag === tag || decodedTag.tagStr === tag ||
  914. (decodedTag.tagStr + 'of') === tag || any;
  915. };
  916. DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {
  917. var decodedTag = derDecodeTag(buffer,
  918. 'Failed to decode tag of "' + tag + '"');
  919. if (buffer.isError(decodedTag))
  920. return decodedTag;
  921. var len = derDecodeLen(buffer,
  922. decodedTag.primitive,
  923. 'Failed to get length of "' + tag + '"');
  924. // Failure
  925. if (buffer.isError(len))
  926. return len;
  927. if (!any &&
  928. decodedTag.tag !== tag &&
  929. decodedTag.tagStr !== tag &&
  930. decodedTag.tagStr + 'of' !== tag) {
  931. return buffer.error('Failed to match tag: "' + tag + '"');
  932. }
  933. if (decodedTag.primitive || len !== null)
  934. return buffer.skip(len, 'Failed to match body of: "' + tag + '"');
  935. // Indefinite length... find END tag
  936. var state = buffer.save();
  937. var res = this._skipUntilEnd(
  938. buffer,
  939. 'Failed to skip indefinite length body: "' + this.tag + '"');
  940. if (buffer.isError(res))
  941. return res;
  942. len = buffer.offset - state.offset;
  943. buffer.restore(state);
  944. return buffer.skip(len, 'Failed to match body of: "' + tag + '"');
  945. };
  946. DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {
  947. while (true) {
  948. var tag = derDecodeTag(buffer, fail);
  949. if (buffer.isError(tag))
  950. return tag;
  951. var len = derDecodeLen(buffer, tag.primitive, fail);
  952. if (buffer.isError(len))
  953. return len;
  954. var res;
  955. if (tag.primitive || len !== null)
  956. res = buffer.skip(len)
  957. else
  958. res = this._skipUntilEnd(buffer, fail);
  959. // Failure
  960. if (buffer.isError(res))
  961. return res;
  962. if (tag.tagStr === 'end')
  963. break;
  964. }
  965. };
  966. DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,
  967. options) {
  968. var result = [];
  969. while (!buffer.isEmpty()) {
  970. var possibleEnd = this._peekTag(buffer, 'end');
  971. if (buffer.isError(possibleEnd))
  972. return possibleEnd;
  973. var res = decoder.decode(buffer, 'der', options);
  974. if (buffer.isError(res) && possibleEnd)
  975. break;
  976. result.push(res);
  977. }
  978. return result;
  979. };
  980. DERNode.prototype._decodeStr = function decodeStr(buffer, tag) {
  981. if (tag === 'bitstr') {
  982. var unused = buffer.readUInt8();
  983. if (buffer.isError(unused))
  984. return unused;
  985. return { unused: unused, data: buffer.raw() };
  986. } else if (tag === 'bmpstr') {
  987. var raw = buffer.raw();
  988. if (raw.length % 2 === 1)
  989. return buffer.error('Decoding of string type: bmpstr length mismatch');
  990. var str = '';
  991. for (var i = 0; i < raw.length / 2; i++) {
  992. str += String.fromCharCode(raw.readUInt16BE(i * 2));
  993. }
  994. return str;
  995. } else if (tag === 'numstr') {
  996. var numstr = buffer.raw().toString('ascii');
  997. if (!this._isNumstr(numstr)) {
  998. return buffer.error('Decoding of string type: ' +
  999. 'numstr unsupported characters');
  1000. }
  1001. return numstr;
  1002. } else if (tag === 'octstr') {
  1003. return buffer.raw();
  1004. } else if (tag === 'objDesc') {
  1005. return buffer.raw();
  1006. } else if (tag === 'printstr') {
  1007. var printstr = buffer.raw().toString('ascii');
  1008. if (!this._isPrintstr(printstr)) {
  1009. return buffer.error('Decoding of string type: ' +
  1010. 'printstr unsupported characters');
  1011. }
  1012. return printstr;
  1013. } else if (/str$/.test(tag)) {
  1014. return buffer.raw().toString();
  1015. } else {
  1016. return buffer.error('Decoding of string type: ' + tag + ' unsupported');
  1017. }
  1018. };
  1019. DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {
  1020. var result;
  1021. var identifiers = [];
  1022. var ident = 0;
  1023. while (!buffer.isEmpty()) {
  1024. var subident = buffer.readUInt8();
  1025. ident <<= 7;
  1026. ident |= subident & 0x7f;
  1027. if ((subident & 0x80) === 0) {
  1028. identifiers.push(ident);
  1029. ident = 0;
  1030. }
  1031. }
  1032. if (subident & 0x80)
  1033. identifiers.push(ident);
  1034. var first = (identifiers[0] / 40) | 0;
  1035. var second = identifiers[0] % 40;
  1036. if (relative)
  1037. result = identifiers;
  1038. else
  1039. result = [first, second].concat(identifiers.slice(1));
  1040. if (values) {
  1041. var tmp = values[result.join(' ')];
  1042. if (tmp === undefined)
  1043. tmp = values[result.join('.')];
  1044. if (tmp !== undefined)
  1045. result = tmp;
  1046. }
  1047. return result;
  1048. };
  1049. DERNode.prototype._decodeTime = function decodeTime(buffer, tag) {
  1050. var str = buffer.raw().toString();
  1051. if (tag === 'gentime') {
  1052. var year = str.slice(0, 4) | 0;
  1053. var mon = str.slice(4, 6) | 0;
  1054. var day = str.slice(6, 8) | 0;
  1055. var hour = str.slice(8, 10) | 0;
  1056. var min = str.slice(10, 12) | 0;
  1057. var sec = str.slice(12, 14) | 0;
  1058. } else if (tag === 'utctime') {
  1059. var year = str.slice(0, 2) | 0;
  1060. var mon = str.slice(2, 4) | 0;
  1061. var day = str.slice(4, 6) | 0;
  1062. var hour = str.slice(6, 8) | 0;
  1063. var min = str.slice(8, 10) | 0;
  1064. var sec = str.slice(10, 12) | 0;
  1065. if (year < 70)
  1066. year = 2000 + year;
  1067. else
  1068. year = 1900 + year;
  1069. } else {
  1070. return buffer.error('Decoding ' + tag + ' time is not supported yet');
  1071. }
  1072. return Date.UTC(year, mon - 1, day, hour, min, sec, 0);
  1073. };
  1074. DERNode.prototype._decodeNull = function decodeNull(buffer) {
  1075. return null;
  1076. };
  1077. DERNode.prototype._decodeBool = function decodeBool(buffer) {
  1078. var res = buffer.readUInt8();
  1079. if (buffer.isError(res))
  1080. return res;
  1081. else
  1082. return res !== 0;
  1083. };
  1084. DERNode.prototype._decodeInt = function decodeInt(buffer, values) {
  1085. // Bigint, return as it is (assume big endian)
  1086. var raw = buffer.raw();
  1087. var res = new bignum(raw);
  1088. if (values)
  1089. res = values[res.toString(10)] || res;
  1090. return res;
  1091. };
  1092. DERNode.prototype._use = function use(entity, obj) {
  1093. if (typeof entity === 'function')
  1094. entity = entity(obj);
  1095. return entity._getDecoder('der').tree;
  1096. };
  1097. // Utility methods
  1098. function derDecodeTag(buf, fail) {
  1099. var tag = buf.readUInt8(fail);
  1100. if (buf.isError(tag))
  1101. return tag;
  1102. var cls = der.tagClass[tag >> 6];
  1103. var primitive = (tag & 0x20) === 0;
  1104. // Multi-octet tag - load
  1105. if ((tag & 0x1f) === 0x1f) {
  1106. var oct = tag;
  1107. tag = 0;
  1108. while ((oct & 0x80) === 0x80) {
  1109. oct = buf.readUInt8(fail);
  1110. if (buf.isError(oct))
  1111. return oct;
  1112. tag <<= 7;
  1113. tag |= oct & 0x7f;
  1114. }
  1115. } else {
  1116. tag &= 0x1f;
  1117. }
  1118. var tagStr = der.tag[tag];
  1119. return {
  1120. cls: cls,
  1121. primitive: primitive,
  1122. tag: tag,
  1123. tagStr: tagStr
  1124. };
  1125. }
  1126. function derDecodeLen(buf, primitive, fail) {
  1127. var len = buf.readUInt8(fail);
  1128. if (buf.isError(len))
  1129. return len;
  1130. // Indefinite form
  1131. if (!primitive && len === 0x80)
  1132. return null;
  1133. // Definite form
  1134. if ((len & 0x80) === 0) {
  1135. // Short form
  1136. return len;
  1137. }
  1138. // Long form
  1139. var num = len & 0x7f;
  1140. if (num > 4)
  1141. return buf.error('length octect is too long');
  1142. len = 0;
  1143. for (var i = 0; i < num; i++) {
  1144. len <<= 8;
  1145. var j = buf.readUInt8(fail);
  1146. if (buf.isError(j))
  1147. return j;
  1148. len |= j;
  1149. }
  1150. return len;
  1151. }
  1152. },{"../../asn1":10,"inherits":108}],19:[function(require,module,exports){
  1153. var decoders = exports;
  1154. decoders.der = require('./der');
  1155. decoders.pem = require('./pem');
  1156. },{"./der":18,"./pem":20}],20:[function(require,module,exports){
  1157. var inherits = require('inherits');
  1158. var Buffer = require('buffer').Buffer;
  1159. var DERDecoder = require('./der');
  1160. function PEMDecoder(entity) {
  1161. DERDecoder.call(this, entity);
  1162. this.enc = 'pem';
  1163. };
  1164. inherits(PEMDecoder, DERDecoder);
  1165. module.exports = PEMDecoder;
  1166. PEMDecoder.prototype.decode = function decode(data, options) {
  1167. var lines = data.toString().split(/[\r\n]+/g);
  1168. var label = options.label.toUpperCase();
  1169. var re = /^-----(BEGIN|END) ([^-]+)-----$/;
  1170. var start = -1;
  1171. var end = -1;
  1172. for (var i = 0; i < lines.length; i++) {
  1173. var match = lines[i].match(re);
  1174. if (match === null)
  1175. continue;
  1176. if (match[2] !== label)
  1177. continue;
  1178. if (start === -1) {
  1179. if (match[1] !== 'BEGIN')
  1180. break;
  1181. start = i;
  1182. } else {
  1183. if (match[1] !== 'END')
  1184. break;
  1185. end = i;
  1186. break;
  1187. }
  1188. }
  1189. if (start === -1 || end === -1)
  1190. throw new Error('PEM section not found for: ' + label);
  1191. var base64 = lines.slice(start + 1, end).join('');
  1192. // Remove excessive symbols
  1193. base64.replace(/[^a-z0-9\+\/=]+/gi, '');
  1194. var input = new Buffer(base64, 'base64');
  1195. return DERDecoder.prototype.decode.call(this, input, options);
  1196. };
  1197. },{"./der":18,"buffer":54,"inherits":108}],21:[function(require,module,exports){
  1198. var inherits = require('inherits');
  1199. var Buffer = require('buffer').Buffer;
  1200. var asn1 = require('../../asn1');
  1201. var base = asn1.base;
  1202. // Import DER constants
  1203. var der = asn1.constants.der;
  1204. function DEREncoder(entity) {
  1205. this.enc = 'der';
  1206. this.name = entity.name;
  1207. this.entity = entity;
  1208. // Construct base tree
  1209. this.tree = new DERNode();
  1210. this.tree._init(entity.body);
  1211. };
  1212. module.exports = DEREncoder;
  1213. DEREncoder.prototype.encode = function encode(data, reporter) {
  1214. return this.tree._encode(data, reporter).join();
  1215. };
  1216. // Tree methods
  1217. function DERNode(parent) {
  1218. base.Node.call(this, 'der', parent);
  1219. }
  1220. inherits(DERNode, base.Node);
  1221. DERNode.prototype._encodeComposite = function encodeComposite(tag,
  1222. primitive,
  1223. cls,
  1224. content) {
  1225. var encodedTag = encodeTag(tag, primitive, cls, this.reporter);
  1226. // Short form
  1227. if (content.length < 0x80) {
  1228. var header = new Buffer(2);
  1229. header[0] = encodedTag;
  1230. header[1] = content.length;
  1231. return this._createEncoderBuffer([ header, content ]);
  1232. }
  1233. // Long form
  1234. // Count octets required to store length
  1235. var lenOctets = 1;
  1236. for (var i = content.length; i >= 0x100; i >>= 8)
  1237. lenOctets++;
  1238. var header = new Buffer(1 + 1 + lenOctets);
  1239. header[0] = encodedTag;
  1240. header[1] = 0x80 | lenOctets;
  1241. for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)
  1242. header[i] = j & 0xff;
  1243. return this._createEncoderBuffer([ header, content ]);
  1244. };
  1245. DERNode.prototype._encodeStr = function encodeStr(str, tag) {
  1246. if (tag === 'bitstr') {
  1247. return this._createEncoderBuffer([ str.unused | 0, str.data ]);
  1248. } else if (tag === 'bmpstr') {
  1249. var buf = new Buffer(str.length * 2);
  1250. for (var i = 0; i < str.length; i++) {
  1251. buf.writeUInt16BE(str.charCodeAt(i), i * 2);
  1252. }
  1253. return this._createEncoderBuffer(buf);
  1254. } else if (tag === 'numstr') {
  1255. if (!this._isNumstr(str)) {
  1256. return this.reporter.error('Encoding of string type: numstr supports ' +
  1257. 'only digits and space');
  1258. }
  1259. return this._createEncoderBuffer(str);
  1260. } else if (tag === 'printstr') {
  1261. if (!this._isPrintstr(str)) {
  1262. return this.reporter.error('Encoding of string type: printstr supports ' +
  1263. 'only latin upper and lower case letters, ' +
  1264. 'digits, space, apostrophe, left and rigth ' +
  1265. 'parenthesis, plus sign, comma, hyphen, ' +
  1266. 'dot, slash, colon, equal sign, ' +
  1267. 'question mark');
  1268. }
  1269. return this._createEncoderBuffer(str);
  1270. } else if (/str$/.test(tag)) {
  1271. return this._createEncoderBuffer(str);
  1272. } else if (tag === 'objDesc') {
  1273. return this._createEncoderBuffer(str);
  1274. } else {
  1275. return this.reporter.error('Encoding of string type: ' + tag +
  1276. ' unsupported');
  1277. }
  1278. };
  1279. DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {
  1280. if (typeof id === 'string') {
  1281. if (!values)
  1282. return this.reporter.error('string objid given, but no values map found');
  1283. if (!values.hasOwnProperty(id))
  1284. return this.reporter.error('objid not found in values map');
  1285. id = values[id].split(/[\s\.]+/g);
  1286. for (var i = 0; i < id.length; i++)
  1287. id[i] |= 0;
  1288. } else if (Array.isArray(id)) {
  1289. id = id.slice();
  1290. for (var i = 0; i < id.length; i++)
  1291. id[i] |= 0;
  1292. }
  1293. if (!Array.isArray(id)) {
  1294. return this.reporter.error('objid() should be either array or string, ' +
  1295. 'got: ' + JSON.stringify(id));
  1296. }
  1297. if (!relative) {
  1298. if (id[1] >= 40)
  1299. return this.reporter.error('Second objid identifier OOB');
  1300. id.splice(0, 2, id[0] * 40 + id[1]);
  1301. }
  1302. // Count number of octets
  1303. var size = 0;
  1304. for (var i = 0; i < id.length; i++) {
  1305. var ident = id[i];
  1306. for (size++; ident >= 0x80; ident >>= 7)
  1307. size++;
  1308. }
  1309. var objid = new Buffer(size);
  1310. var offset = objid.length - 1;
  1311. for (var i = id.length - 1; i >= 0; i--) {
  1312. var ident = id[i];
  1313. objid[offset--] = ident & 0x7f;
  1314. while ((ident >>= 7) > 0)
  1315. objid[offset--] = 0x80 | (ident & 0x7f);
  1316. }
  1317. return this._createEncoderBuffer(objid);
  1318. };
  1319. function two(num) {
  1320. if (num < 10)
  1321. return '0' + num;
  1322. else
  1323. return num;
  1324. }
  1325. DERNode.prototype._encodeTime = function encodeTime(time, tag) {
  1326. var str;
  1327. var date = new Date(time);
  1328. if (tag === 'gentime') {
  1329. str = [
  1330. two(date.getFullYear()),
  1331. two(date.getUTCMonth() + 1),
  1332. two(date.getUTCDate()),
  1333. two(date.getUTCHours()),
  1334. two(date.getUTCMinutes()),
  1335. two(date.getUTCSeconds()),
  1336. 'Z'
  1337. ].join('');
  1338. } else if (tag === 'utctime') {
  1339. str = [
  1340. two(date.getFullYear() % 100),
  1341. two(date.getUTCMonth() + 1),
  1342. two(date.getUTCDate()),
  1343. two(date.getUTCHours()),
  1344. two(date.getUTCMinutes()),
  1345. two(date.getUTCSeconds()),
  1346. 'Z'
  1347. ].join('');
  1348. } else {
  1349. this.reporter.error('Encoding ' + tag + ' time is not supported yet');
  1350. }
  1351. return this._encodeStr(str, 'octstr');
  1352. };
  1353. DERNode.prototype._encodeNull = function encodeNull() {
  1354. return this._createEncoderBuffer('');
  1355. };
  1356. DERNode.prototype._encodeInt = function encodeInt(num, values) {
  1357. if (typeof num === 'string') {
  1358. if (!values)
  1359. return this.reporter.error('String int or enum given, but no values map');
  1360. if (!values.hasOwnProperty(num)) {
  1361. return this.reporter.error('Values map doesn\'t contain: ' +
  1362. JSON.stringify(num));
  1363. }
  1364. num = values[num];
  1365. }
  1366. // Bignum, assume big endian
  1367. if (typeof num !== 'number' && !Buffer.isBuffer(num)) {
  1368. var numArray = num.toArray();
  1369. if (!num.sign && numArray[0] & 0x80) {
  1370. numArray.unshift(0);
  1371. }
  1372. num = new Buffer(numArray);
  1373. }
  1374. if (Buffer.isBuffer(num)) {
  1375. var size = num.length;
  1376. if (num.length === 0)
  1377. size++;
  1378. var out = new Buffer(size);
  1379. num.copy(out);
  1380. if (num.length === 0)
  1381. out[0] = 0
  1382. return this._createEncoderBuffer(out);
  1383. }
  1384. if (num < 0x80)
  1385. return this._createEncoderBuffer(num);
  1386. if (num < 0x100)
  1387. return this._createEncoderBuffer([0, num]);
  1388. var size = 1;
  1389. for (var i = num; i >= 0x100; i >>= 8)
  1390. size++;
  1391. var out = new Array(size);
  1392. for (var i = out.length - 1; i >= 0; i--) {
  1393. out[i] = num & 0xff;
  1394. num >>= 8;
  1395. }
  1396. if(out[0] & 0x80) {
  1397. out.unshift(0);
  1398. }
  1399. return this._createEncoderBuffer(new Buffer(out));
  1400. };
  1401. DERNode.prototype._encodeBool = function encodeBool(value) {
  1402. return this._createEncoderBuffer(value ? 0xff : 0);
  1403. };
  1404. DERNode.prototype._use = function use(entity, obj) {
  1405. if (typeof entity === 'function')
  1406. entity = entity(obj);
  1407. return entity._getEncoder('der').tree;
  1408. };
  1409. DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {
  1410. var state = this._baseState;
  1411. var i;
  1412. if (state['default'] === null)
  1413. return false;
  1414. var data = dataBuffer.join();
  1415. if (state.defaultBuffer === undefined)
  1416. state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();
  1417. if (data.length !== state.defaultBuffer.length)
  1418. return false;
  1419. for (i=0; i < data.length; i++)
  1420. if (data[i] !== state.defaultBuffer[i])
  1421. return false;
  1422. return true;
  1423. };
  1424. // Utility methods
  1425. function encodeTag(tag, primitive, cls, reporter) {
  1426. var res;
  1427. if (tag === 'seqof')
  1428. tag = 'seq';
  1429. else if (tag === 'setof')
  1430. tag = 'set';
  1431. if (der.tagByName.hasOwnProperty(tag))
  1432. res = der.tagByName[tag];
  1433. else if (typeof tag === 'number' && (tag | 0) === tag)
  1434. res = tag;
  1435. else
  1436. return reporter.error('Unknown tag: ' + tag);
  1437. if (res >= 0x1f)
  1438. return reporter.error('Multi-octet tag encoding unsupported');
  1439. if (!primitive)
  1440. res |= 0x20;
  1441. res |= (der.tagClassByName[cls || 'universal'] << 6);
  1442. return res;
  1443. }
  1444. },{"../../asn1":10,"buffer":54,"inherits":108}],22:[function(require,module,exports){
  1445. var encoders = exports;
  1446. encoders.der = require('./der');
  1447. encoders.pem = require('./pem');
  1448. },{"./der":21,"./pem":23}],23:[function(require,module,exports){
  1449. var inherits = require('inherits');
  1450. var DEREncoder = require('./der');
  1451. function PEMEncoder(entity) {
  1452. DEREncoder.call(this, entity);
  1453. this.enc = 'pem';
  1454. };
  1455. inherits(PEMEncoder, DEREncoder);
  1456. module.exports = PEMEncoder;
  1457. PEMEncoder.prototype.encode = function encode(data, options) {
  1458. var buf = DEREncoder.prototype.encode.call(this, data);
  1459. var p = buf.toString('base64');
  1460. var out = [ '-----BEGIN ' + options.label + '-----' ];
  1461. for (var i = 0; i < p.length; i += 64)
  1462. out.push(p.slice(i, i + 64));
  1463. out.push('-----END ' + options.label + '-----');
  1464. return out.join('\n');
  1465. };
  1466. },{"./der":21,"inherits":108}],24:[function(require,module,exports){
  1467. 'use strict'
  1468. exports.byteLength = byteLength
  1469. exports.toByteArray = toByteArray
  1470. exports.fromByteArray = fromByteArray
  1471. var lookup = []
  1472. var revLookup = []
  1473. var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
  1474. var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  1475. for (var i = 0, len = code.length; i < len; ++i) {
  1476. lookup[i] = code[i]
  1477. revLookup[code.charCodeAt(i)] = i
  1478. }
  1479. revLookup['-'.charCodeAt(0)] = 62
  1480. revLookup['_'.charCodeAt(0)] = 63
  1481. function placeHoldersCount (b64) {
  1482. var len = b64.length
  1483. if (len % 4 > 0) {
  1484. throw new Error('Invalid string. Length must be a multiple of 4')
  1485. }
  1486. // the number of equal signs (place holders)
  1487. // if there are two placeholders, than the two characters before it
  1488. // represent one byte
  1489. // if there is only one, then the three characters before it represent 2 bytes
  1490. // this is just a cheap hack to not do indexOf twice
  1491. return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
  1492. }
  1493. function byteLength (b64) {
  1494. // base64 is 4/3 + up to two characters of the original data
  1495. return (b64.length * 3 / 4) - placeHoldersCount(b64)
  1496. }
  1497. function toByteArray (b64) {
  1498. var i, l, tmp, placeHolders, arr
  1499. var len = b64.length
  1500. placeHolders = placeHoldersCount(b64)
  1501. arr = new Arr((len * 3 / 4) - placeHolders)
  1502. // if there are placeholders, only get up to the last complete 4 chars
  1503. l = placeHolders > 0 ? len - 4 : len
  1504. var L = 0
  1505. for (i = 0; i < l; i += 4) {
  1506. tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
  1507. arr[L++] = (tmp >> 16) & 0xFF
  1508. arr[L++] = (tmp >> 8) & 0xFF
  1509. arr[L++] = tmp & 0xFF
  1510. }
  1511. if (placeHolders === 2) {
  1512. tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
  1513. arr[L++] = tmp & 0xFF
  1514. } else if (placeHolders === 1) {
  1515. tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
  1516. arr[L++] = (tmp >> 8) & 0xFF
  1517. arr[L++] = tmp & 0xFF
  1518. }
  1519. return arr
  1520. }
  1521. function tripletToBase64 (num) {
  1522. return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
  1523. }
  1524. function encodeChunk (uint8, start, end) {
  1525. var tmp
  1526. var output = []
  1527. for (var i = start; i < end; i += 3) {
  1528. tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
  1529. output.push(tripletToBase64(tmp))
  1530. }
  1531. return output.join('')
  1532. }
  1533. function fromByteArray (uint8) {
  1534. var tmp
  1535. var len = uint8.length
  1536. var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
  1537. var output = ''
  1538. var parts = []
  1539. var maxChunkLength = 16383 // must be multiple of 3
  1540. // go through the array every three bytes, we'll deal with trailing stuff later
  1541. for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
  1542. parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
  1543. }
  1544. // pad the end with zeros, but make sure to not forget the extra bytes
  1545. if (extraBytes === 1) {
  1546. tmp = uint8[len - 1]
  1547. output += lookup[tmp >> 2]
  1548. output += lookup[(tmp << 4) & 0x3F]
  1549. output += '=='
  1550. } else if (extraBytes === 2) {
  1551. tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
  1552. output += lookup[tmp >> 10]
  1553. output += lookup[(tmp >> 4) & 0x3F]
  1554. output += lookup[(tmp << 2) & 0x3F]
  1555. output += '='
  1556. }
  1557. parts.push(output)
  1558. return parts.join('')
  1559. }
  1560. },{}],25:[function(require,module,exports){
  1561. (function (module, exports) {
  1562. 'use strict';
  1563. // Utils
  1564. function assert (val, msg) {
  1565. if (!val) throw new Error(msg || 'Assertion failed');
  1566. }
  1567. // Could use `inherits` module, but don't want to move from single file
  1568. // architecture yet.
  1569. function inherits (ctor, superCtor) {
  1570. ctor.super_ = superCtor;
  1571. var TempCtor = function () {};
  1572. TempCtor.prototype = superCtor.prototype;
  1573. ctor.prototype = new TempCtor();
  1574. ctor.prototype.constructor = ctor;
  1575. }
  1576. // BN
  1577. function BN (number, base, endian) {
  1578. if (BN.isBN(number)) {
  1579. return number;
  1580. }
  1581. this.negative = 0;
  1582. this.words = null;
  1583. this.length = 0;
  1584. // Reduction context
  1585. this.red = null;
  1586. if (number !== null) {
  1587. if (base === 'le' || base === 'be') {
  1588. endian = base;
  1589. base = 10;
  1590. }
  1591. this._init(number || 0, base || 10, endian || 'be');
  1592. }
  1593. }
  1594. if (typeof module === 'object') {
  1595. module.exports = BN;
  1596. } else {
  1597. exports.BN = BN;
  1598. }
  1599. BN.BN = BN;
  1600. BN.wordSize = 26;
  1601. var Buffer;
  1602. try {
  1603. Buffer = require('buffer').Buffer;
  1604. } catch (e) {
  1605. }
  1606. BN.isBN = function isBN (num) {
  1607. if (num instanceof BN) {
  1608. return true;
  1609. }
  1610. return num !== null && typeof num === 'object' &&
  1611. num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
  1612. };
  1613. BN.max = function max (left, right) {
  1614. if (left.cmp(right) > 0) return left;
  1615. return right;
  1616. };
  1617. BN.min = function min (left, right) {
  1618. if (left.cmp(right) < 0) return left;
  1619. return right;
  1620. };
  1621. BN.prototype._init = function init (number, base, endian) {
  1622. if (typeof number === 'number') {
  1623. return this._initNumber(number, base, endian);
  1624. }
  1625. if (typeof number === 'object') {
  1626. return this._initArray(number, base, endian);
  1627. }
  1628. if (base === 'hex') {
  1629. base = 16;
  1630. }
  1631. assert(base === (base | 0) && base >= 2 && base <= 36);
  1632. number = number.toString().replace(/\s+/g, '');
  1633. var start = 0;
  1634. if (number[0] === '-') {
  1635. start++;
  1636. }
  1637. if (base === 16) {
  1638. this._parseHex(number, start);
  1639. } else {
  1640. this._parseBase(number, base, start);
  1641. }
  1642. if (number[0] === '-') {
  1643. this.negative = 1;
  1644. }
  1645. this.strip();
  1646. if (endian !== 'le') return;
  1647. this._initArray(this.toArray(), base, endian);
  1648. };
  1649. BN.prototype._initNumber = function _initNumber (number, base, endian) {
  1650. if (number < 0) {
  1651. this.negative = 1;
  1652. number = -number;
  1653. }
  1654. if (number < 0x4000000) {
  1655. this.words = [ number & 0x3ffffff ];
  1656. this.length = 1;
  1657. } else if (number < 0x10000000000000) {
  1658. this.words = [
  1659. number & 0x3ffffff,
  1660. (number / 0x4000000) & 0x3ffffff
  1661. ];
  1662. this.length = 2;
  1663. } else {
  1664. assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
  1665. this.words = [
  1666. number & 0x3ffffff,
  1667. (number / 0x4000000) & 0x3ffffff,
  1668. 1
  1669. ];
  1670. this.length = 3;
  1671. }
  1672. if (endian !== 'le') return;
  1673. // Reverse the bytes
  1674. this._initArray(this.toArray(), base, endian);
  1675. };
  1676. BN.prototype._initArray = function _initArray (number, base, endian) {
  1677. // Perhaps a Uint8Array
  1678. assert(typeof number.length === 'number');
  1679. if (number.length <= 0) {
  1680. this.words = [ 0 ];
  1681. this.length = 1;
  1682. return this;
  1683. }
  1684. this.length = Math.ceil(number.length / 3);
  1685. this.words = new Array(this.length);
  1686. for (var i = 0; i < this.length; i++) {
  1687. this.words[i] = 0;
  1688. }
  1689. var j, w;
  1690. var off = 0;
  1691. if (endian === 'be') {
  1692. for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
  1693. w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
  1694. this.words[j] |= (w << off) & 0x3ffffff;
  1695. this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
  1696. off += 24;
  1697. if (off >= 26) {
  1698. off -= 26;
  1699. j++;
  1700. }
  1701. }
  1702. } else if (endian === 'le') {
  1703. for (i = 0, j = 0; i < number.length; i += 3) {
  1704. w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
  1705. this.words[j] |= (w << off) & 0x3ffffff;
  1706. this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
  1707. off += 24;
  1708. if (off >= 26) {
  1709. off -= 26;
  1710. j++;
  1711. }
  1712. }
  1713. }
  1714. return this.strip();
  1715. };
  1716. function parseHex (str, start, end) {
  1717. var r = 0;
  1718. var len = Math.min(str.length, end);
  1719. for (var i = start; i < len; i++) {
  1720. var c = str.charCodeAt(i) - 48;
  1721. r <<= 4;
  1722. // 'a' - 'f'
  1723. if (c >= 49 && c <= 54) {
  1724. r |= c - 49 + 0xa;
  1725. // 'A' - 'F'
  1726. } else if (c >= 17 && c <= 22) {
  1727. r |= c - 17 + 0xa;
  1728. // '0' - '9'
  1729. } else {
  1730. r |= c & 0xf;
  1731. }
  1732. }
  1733. return r;
  1734. }
  1735. BN.prototype._parseHex = function _parseHex (number, start) {
  1736. // Create possibly bigger array to ensure that it fits the number
  1737. this.length = Math.ceil((number.length - start) / 6);
  1738. this.words = new Array(this.length);
  1739. for (var i = 0; i < this.length; i++) {
  1740. this.words[i] = 0;
  1741. }
  1742. var j, w;
  1743. // Scan 24-bit chunks and add them to the number
  1744. var off = 0;
  1745. for (i = number.length - 6, j = 0; i >= start; i -= 6) {
  1746. w = parseHex(number, i, i + 6);
  1747. this.words[j] |= (w << off) & 0x3ffffff;
  1748. // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
  1749. this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
  1750. off += 24;
  1751. if (off >= 26) {
  1752. off -= 26;
  1753. j++;
  1754. }
  1755. }
  1756. if (i + 6 !== start) {
  1757. w = parseHex(number, start, i + 6);
  1758. this.words[j] |= (w << off) & 0x3ffffff;
  1759. this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
  1760. }
  1761. this.strip();
  1762. };
  1763. function parseBase (str, start, end, mul) {
  1764. var r = 0;
  1765. var len = Math.min(str.length, end);
  1766. for (var i = start; i < len; i++) {
  1767. var c = str.charCodeAt(i) - 48;
  1768. r *= mul;
  1769. // 'a'
  1770. if (c >= 49) {
  1771. r += c - 49 + 0xa;
  1772. // 'A'
  1773. } else if (c >= 17) {
  1774. r += c - 17 + 0xa;
  1775. // '0' - '9'
  1776. } else {
  1777. r += c;
  1778. }
  1779. }
  1780. return r;
  1781. }
  1782. BN.prototype._parseBase = function _parseBase (number, base, start) {
  1783. // Initialize as zero
  1784. this.words = [ 0 ];
  1785. this.length = 1;
  1786. // Find length of limb in base
  1787. for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
  1788. limbLen++;
  1789. }
  1790. limbLen--;
  1791. limbPow = (limbPow / base) | 0;
  1792. var total = number.length - start;
  1793. var mod = total % limbLen;
  1794. var end = Math.min(total, total - mod) + start;
  1795. var word = 0;
  1796. for (var i = start; i < end; i += limbLen) {
  1797. word = parseBase(number, i, i + limbLen, base);
  1798. this.imuln(limbPow);
  1799. if (this.words[0] + word < 0x4000000) {
  1800. this.words[0] += word;
  1801. } else {
  1802. this._iaddn(word);
  1803. }
  1804. }
  1805. if (mod !== 0) {
  1806. var pow = 1;
  1807. word = parseBase(number, i, number.length, base);
  1808. for (i = 0; i < mod; i++) {
  1809. pow *= base;
  1810. }
  1811. this.imuln(pow);
  1812. if (this.words[0] + word < 0x4000000) {
  1813. this.words[0] += word;
  1814. } else {
  1815. this._iaddn(word);
  1816. }
  1817. }
  1818. };
  1819. BN.prototype.copy = function copy (dest) {
  1820. dest.words = new Array(this.length);
  1821. for (var i = 0; i < this.length; i++) {
  1822. dest.words[i] = this.words[i];
  1823. }
  1824. dest.length = this.length;
  1825. dest.negative = this.negative;
  1826. dest.red = this.red;
  1827. };
  1828. BN.prototype.clone = function clone () {
  1829. var r = new BN(null);
  1830. this.copy(r);
  1831. return r;
  1832. };
  1833. BN.prototype._expand = function _expand (size) {
  1834. while (this.length < size) {
  1835. this.words[this.length++] = 0;
  1836. }
  1837. return this;
  1838. };
  1839. // Remove leading `0` from `this`
  1840. BN.prototype.strip = function strip () {
  1841. while (this.length > 1 && this.words[this.length - 1] === 0) {
  1842. this.length--;
  1843. }
  1844. return this._normSign();
  1845. };
  1846. BN.prototype._normSign = function _normSign () {
  1847. // -0 = 0
  1848. if (this.length === 1 && this.words[0] === 0) {
  1849. this.negative = 0;
  1850. }
  1851. return this;
  1852. };
  1853. BN.prototype.inspect = function inspect () {
  1854. return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
  1855. };
  1856. /*
  1857. var zeros = [];
  1858. var groupSizes = [];
  1859. var groupBases = [];
  1860. var s = '';
  1861. var i = -1;
  1862. while (++i < BN.wordSize) {
  1863. zeros[i] = s;
  1864. s += '0';
  1865. }
  1866. groupSizes[0] = 0;
  1867. groupSizes[1] = 0;
  1868. groupBases[0] = 0;
  1869. groupBases[1] = 0;
  1870. var base = 2 - 1;
  1871. while (++base < 36 + 1) {
  1872. var groupSize = 0;
  1873. var groupBase = 1;
  1874. while (groupBase < (1 << BN.wordSize) / base) {
  1875. groupBase *= base;
  1876. groupSize += 1;
  1877. }
  1878. groupSizes[base] = groupSize;
  1879. groupBases[base] = groupBase;
  1880. }
  1881. */
  1882. var zeros = [
  1883. '',
  1884. '0',
  1885. '00',
  1886. '000',
  1887. '0000',
  1888. '00000',
  1889. '000000',
  1890. '0000000',
  1891. '00000000',
  1892. '000000000',
  1893. '0000000000',
  1894. '00000000000',
  1895. '000000000000',
  1896. '0000000000000',
  1897. '00000000000000',
  1898. '000000000000000',
  1899. '0000000000000000',
  1900. '00000000000000000',
  1901. '000000000000000000',
  1902. '0000000000000000000',
  1903. '00000000000000000000',
  1904. '000000000000000000000',
  1905. '0000000000000000000000',
  1906. '00000000000000000000000',
  1907. '000000000000000000000000',
  1908. '0000000000000000000000000'
  1909. ];
  1910. var groupSizes = [
  1911. 0, 0,
  1912. 25, 16, 12, 11, 10, 9, 8,
  1913. 8, 7, 7, 7, 7, 6, 6,
  1914. 6, 6, 6, 6, 6, 5, 5,
  1915. 5, 5, 5, 5, 5, 5, 5,
  1916. 5, 5, 5, 5, 5, 5, 5
  1917. ];
  1918. var groupBases = [
  1919. 0, 0,
  1920. 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
  1921. 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
  1922. 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
  1923. 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
  1924. 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
  1925. ];
  1926. BN.prototype.toString = function toString (base, padding) {
  1927. base = base || 10;
  1928. padding = padding | 0 || 1;
  1929. var out;
  1930. if (base === 16 || base === 'hex') {
  1931. out = '';
  1932. var off = 0;
  1933. var carry = 0;
  1934. for (var i = 0; i < this.length; i++) {
  1935. var w = this.words[i];
  1936. var word = (((w << off) | carry) & 0xffffff).toString(16);
  1937. carry = (w >>> (24 - off)) & 0xffffff;
  1938. if (carry !== 0 || i !== this.length - 1) {
  1939. out = zeros[6 - word.length] + word + out;
  1940. } else {
  1941. out = word + out;
  1942. }
  1943. off += 2;
  1944. if (off >= 26) {
  1945. off -= 26;
  1946. i--;
  1947. }
  1948. }
  1949. if (carry !== 0) {
  1950. out = carry.toString(16) + out;
  1951. }
  1952. while (out.length % padding !== 0) {
  1953. out = '0' + out;
  1954. }
  1955. if (this.negative !== 0) {
  1956. out = '-' + out;
  1957. }
  1958. return out;
  1959. }
  1960. if (base === (base | 0) && base >= 2 && base <= 36) {
  1961. // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
  1962. var groupSize = groupSizes[base];
  1963. // var groupBase = Math.pow(base, groupSize);
  1964. var groupBase = groupBases[base];
  1965. out = '';
  1966. var c = this.clone();
  1967. c.negative = 0;
  1968. while (!c.isZero()) {
  1969. var r = c.modn(groupBase).toString(base);
  1970. c = c.idivn(groupBase);
  1971. if (!c.isZero()) {
  1972. out = zeros[groupSize - r.length] + r + out;
  1973. } else {
  1974. out = r + out;
  1975. }
  1976. }
  1977. if (this.isZero()) {
  1978. out = '0' + out;
  1979. }
  1980. while (out.length % padding !== 0) {
  1981. out = '0' + out;
  1982. }
  1983. if (this.negative !== 0) {
  1984. out = '-' + out;
  1985. }
  1986. return out;
  1987. }
  1988. assert(false, 'Base should be between 2 and 36');
  1989. };
  1990. BN.prototype.toNumber = function toNumber () {
  1991. var ret = this.words[0];
  1992. if (this.length === 2) {
  1993. ret += this.words[1] * 0x4000000;
  1994. } else if (this.length === 3 && this.words[2] === 0x01) {
  1995. // NOTE: at this stage it is known that the top bit is set
  1996. ret += 0x10000000000000 + (this.words[1] * 0x4000000);
  1997. } else if (this.length > 2) {
  1998. assert(false, 'Number can only safely store up to 53 bits');
  1999. }
  2000. return (this.negative !== 0) ? -ret : ret;
  2001. };
  2002. BN.prototype.toJSON = function toJSON () {
  2003. return this.toString(16);
  2004. };
  2005. BN.prototype.toBuffer = function toBuffer (endian, length) {
  2006. assert(typeof Buffer !== 'undefined');
  2007. return this.toArrayLike(Buffer, endian, length);
  2008. };
  2009. BN.prototype.toArray = function toArray (endian, length) {
  2010. return this.toArrayLike(Array, endian, length);
  2011. };
  2012. BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
  2013. var byteLength = this.byteLength();
  2014. var reqLength = length || Math.max(1, byteLength);
  2015. assert(byteLength <= reqLength, 'byte array longer than desired length');
  2016. assert(reqLength > 0, 'Requested array length <= 0');
  2017. this.strip();
  2018. var littleEndian = endian === 'le';
  2019. var res = new ArrayType(reqLength);
  2020. var b, i;
  2021. var q = this.clone();
  2022. if (!littleEndian) {
  2023. // Assume big-endian
  2024. for (i = 0; i < reqLength - byteLength; i++) {
  2025. res[i] = 0;
  2026. }
  2027. for (i = 0; !q.isZero(); i++) {
  2028. b = q.andln(0xff);
  2029. q.iushrn(8);
  2030. res[reqLength - i - 1] = b;
  2031. }
  2032. } else {
  2033. for (i = 0; !q.isZero(); i++) {
  2034. b = q.andln(0xff);
  2035. q.iushrn(8);
  2036. res[i] = b;
  2037. }
  2038. for (; i < reqLength; i++) {
  2039. res[i] = 0;
  2040. }
  2041. }
  2042. return res;
  2043. };
  2044. if (Math.clz32) {
  2045. BN.prototype._countBits = function _countBits (w) {
  2046. return 32 - Math.clz32(w);
  2047. };
  2048. } else {
  2049. BN.prototype._countBits = function _countBits (w) {
  2050. var t = w;
  2051. var r = 0;
  2052. if (t >= 0x1000) {
  2053. r += 13;
  2054. t >>>= 13;
  2055. }
  2056. if (t >= 0x40) {
  2057. r += 7;
  2058. t >>>= 7;
  2059. }
  2060. if (t >= 0x8) {
  2061. r += 4;
  2062. t >>>= 4;
  2063. }
  2064. if (t >= 0x02) {
  2065. r += 2;
  2066. t >>>= 2;
  2067. }
  2068. return r + t;
  2069. };
  2070. }
  2071. BN.prototype._zeroBits = function _zeroBits (w) {
  2072. // Short-cut
  2073. if (w === 0) return 26;
  2074. var t = w;
  2075. var r = 0;
  2076. if ((t & 0x1fff) === 0) {
  2077. r += 13;
  2078. t >>>= 13;
  2079. }
  2080. if ((t & 0x7f) === 0) {
  2081. r += 7;
  2082. t >>>= 7;
  2083. }
  2084. if ((t & 0xf) === 0) {
  2085. r += 4;
  2086. t >>>= 4;
  2087. }
  2088. if ((t & 0x3) === 0) {
  2089. r += 2;
  2090. t >>>= 2;
  2091. }
  2092. if ((t & 0x1) === 0) {
  2093. r++;
  2094. }
  2095. return r;
  2096. };
  2097. // Return number of used bits in a BN
  2098. BN.prototype.bitLength = function bitLength () {
  2099. var w = this.words[this.length - 1];
  2100. var hi = this._countBits(w);
  2101. return (this.length - 1) * 26 + hi;
  2102. };
  2103. function toBitArray (num) {
  2104. var w = new Array(num.bitLength());
  2105. for (var bit = 0; bit < w.length; bit++) {
  2106. var off = (bit / 26) | 0;
  2107. var wbit = bit % 26;
  2108. w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
  2109. }
  2110. return w;
  2111. }
  2112. // Number of trailing zero bits
  2113. BN.prototype.zeroBits = function zeroBits () {
  2114. if (this.isZero()) return 0;
  2115. var r = 0;
  2116. for (var i = 0; i < this.length; i++) {
  2117. var b = this._zeroBits(this.words[i]);
  2118. r += b;
  2119. if (b !== 26) break;
  2120. }
  2121. return r;
  2122. };
  2123. BN.prototype.byteLength = function byteLength () {
  2124. return Math.ceil(this.bitLength() / 8);
  2125. };
  2126. BN.prototype.toTwos = function toTwos (width) {
  2127. if (this.negative !== 0) {
  2128. return this.abs().inotn(width).iaddn(1);
  2129. }
  2130. return this.clone();
  2131. };
  2132. BN.prototype.fromTwos = function fromTwos (width) {
  2133. if (this.testn(width - 1)) {
  2134. return this.notn(width).iaddn(1).ineg();
  2135. }
  2136. return this.clone();
  2137. };
  2138. BN.prototype.isNeg = function isNeg () {
  2139. return this.negative !== 0;
  2140. };
  2141. // Return negative clone of `this`
  2142. BN.prototype.neg = function neg () {
  2143. return this.clone().ineg();
  2144. };
  2145. BN.prototype.ineg = function ineg () {
  2146. if (!this.isZero()) {
  2147. this.negative ^= 1;
  2148. }
  2149. return this;
  2150. };
  2151. // Or `num` with `this` in-place
  2152. BN.prototype.iuor = function iuor (num) {
  2153. while (this.length < num.length) {
  2154. this.words[this.length++] = 0;
  2155. }
  2156. for (var i = 0; i < num.length; i++) {
  2157. this.words[i] = this.words[i] | num.words[i];
  2158. }
  2159. return this.strip();
  2160. };
  2161. BN.prototype.ior = function ior (num) {
  2162. assert((this.negative | num.negative) === 0);
  2163. return this.iuor(num);
  2164. };
  2165. // Or `num` with `this`
  2166. BN.prototype.or = function or (num) {
  2167. if (this.length > num.length) return this.clone().ior(num);
  2168. return num.clone().ior(this);
  2169. };
  2170. BN.prototype.uor = function uor (num) {
  2171. if (this.length > num.length) return this.clone().iuor(num);
  2172. return num.clone().iuor(this);
  2173. };
  2174. // And `num` with `this` in-place
  2175. BN.prototype.iuand = function iuand (num) {
  2176. // b = min-length(num, this)
  2177. var b;
  2178. if (this.length > num.length) {
  2179. b = num;
  2180. } else {
  2181. b = this;
  2182. }
  2183. for (var i = 0; i < b.length; i++) {
  2184. this.words[i] = this.words[i] & num.words[i];
  2185. }
  2186. this.length = b.length;
  2187. return this.strip();
  2188. };
  2189. BN.prototype.iand = function iand (num) {
  2190. assert((this.negative | num.negative) === 0);
  2191. return this.iuand(num);
  2192. };
  2193. // And `num` with `this`
  2194. BN.prototype.and = function and (num) {
  2195. if (this.length > num.length) return this.clone().iand(num);
  2196. return num.clone().iand(this);
  2197. };
  2198. BN.prototype.uand = function uand (num) {
  2199. if (this.length > num.length) return this.clone().iuand(num);
  2200. return num.clone().iuand(this);
  2201. };
  2202. // Xor `num` with `this` in-place
  2203. BN.prototype.iuxor = function iuxor (num) {
  2204. // a.length > b.length
  2205. var a;
  2206. var b;
  2207. if (this.length > num.length) {
  2208. a = this;
  2209. b = num;
  2210. } else {
  2211. a = num;
  2212. b = this;
  2213. }
  2214. for (var i = 0; i < b.length; i++) {
  2215. this.words[i] = a.words[i] ^ b.words[i];
  2216. }
  2217. if (this !== a) {
  2218. for (; i < a.length; i++) {
  2219. this.words[i] = a.words[i];
  2220. }
  2221. }
  2222. this.length = a.length;
  2223. return this.strip();
  2224. };
  2225. BN.prototype.ixor = function ixor (num) {
  2226. assert((this.negative | num.negative) === 0);
  2227. return this.iuxor(num);
  2228. };
  2229. // Xor `num` with `this`
  2230. BN.prototype.xor = function xor (num) {
  2231. if (this.length > num.length) return this.clone().ixor(num);
  2232. return num.clone().ixor(this);
  2233. };
  2234. BN.prototype.uxor = function uxor (num) {
  2235. if (this.length > num.length) return this.clone().iuxor(num);
  2236. return num.clone().iuxor(this);
  2237. };
  2238. // Not ``this`` with ``width`` bitwidth
  2239. BN.prototype.inotn = function inotn (width) {
  2240. assert(typeof width === 'number' && width >= 0);
  2241. var bytesNeeded = Math.ceil(width / 26) | 0;
  2242. var bitsLeft = width % 26;
  2243. // Extend the buffer with leading zeroes
  2244. this._expand(bytesNeeded);
  2245. if (bitsLeft > 0) {
  2246. bytesNeeded--;
  2247. }
  2248. // Handle complete words
  2249. for (var i = 0; i < bytesNeeded; i++) {
  2250. this.words[i] = ~this.words[i] & 0x3ffffff;
  2251. }
  2252. // Handle the residue
  2253. if (bitsLeft > 0) {
  2254. this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
  2255. }
  2256. // And remove leading zeroes
  2257. return this.strip();
  2258. };
  2259. BN.prototype.notn = function notn (width) {
  2260. return this.clone().inotn(width);
  2261. };
  2262. // Set `bit` of `this`
  2263. BN.prototype.setn = function setn (bit, val) {
  2264. assert(typeof bit === 'number' && bit >= 0);
  2265. var off = (bit / 26) | 0;
  2266. var wbit = bit % 26;
  2267. this._expand(off + 1);
  2268. if (val) {
  2269. this.words[off] = this.words[off] | (1 << wbit);
  2270. } else {
  2271. this.words[off] = this.words[off] & ~(1 << wbit);
  2272. }
  2273. return this.strip();
  2274. };
  2275. // Add `num` to `this` in-place
  2276. BN.prototype.iadd = function iadd (num) {
  2277. var r;
  2278. // negative + positive
  2279. if (this.negative !== 0 && num.negative === 0) {
  2280. this.negative = 0;
  2281. r = this.isub(num);
  2282. this.negative ^= 1;
  2283. return this._normSign();
  2284. // positive + negative
  2285. } else if (this.negative === 0 && num.negative !== 0) {
  2286. num.negative = 0;
  2287. r = this.isub(num);
  2288. num.negative = 1;
  2289. return r._normSign();
  2290. }
  2291. // a.length > b.length
  2292. var a, b;
  2293. if (this.length > num.length) {
  2294. a = this;
  2295. b = num;
  2296. } else {
  2297. a = num;
  2298. b = this;
  2299. }
  2300. var carry = 0;
  2301. for (var i = 0; i < b.length; i++) {
  2302. r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
  2303. this.words[i] = r & 0x3ffffff;
  2304. carry = r >>> 26;
  2305. }
  2306. for (; carry !== 0 && i < a.length; i++) {
  2307. r = (a.words[i] | 0) + carry;
  2308. this.words[i] = r & 0x3ffffff;
  2309. carry = r >>> 26;
  2310. }
  2311. this.length = a.length;
  2312. if (carry !== 0) {
  2313. this.words[this.length] = carry;
  2314. this.length++;
  2315. // Copy the rest of the words
  2316. } else if (a !== this) {
  2317. for (; i < a.length; i++) {
  2318. this.words[i] = a.words[i];
  2319. }
  2320. }
  2321. return this;
  2322. };
  2323. // Add `num` to `this`
  2324. BN.prototype.add = function add (num) {
  2325. var res;
  2326. if (num.negative !== 0 && this.negative === 0) {
  2327. num.negative = 0;
  2328. res = this.sub(num);
  2329. num.negative ^= 1;
  2330. return res;
  2331. } else if (num.negative === 0 && this.negative !== 0) {
  2332. this.negative = 0;
  2333. res = num.sub(this);
  2334. this.negative = 1;
  2335. return res;
  2336. }
  2337. if (this.length > num.length) return this.clone().iadd(num);
  2338. return num.clone().iadd(this);
  2339. };
  2340. // Subtract `num` from `this` in-place
  2341. BN.prototype.isub = function isub (num) {
  2342. // this - (-num) = this + num
  2343. if (num.negative !== 0) {
  2344. num.negative = 0;
  2345. var r = this.iadd(num);
  2346. num.negative = 1;
  2347. return r._normSign();
  2348. // -this - num = -(this + num)
  2349. } else if (this.negative !== 0) {
  2350. this.negative = 0;
  2351. this.iadd(num);
  2352. this.negative = 1;
  2353. return this._normSign();
  2354. }
  2355. // At this point both numbers are positive
  2356. var cmp = this.cmp(num);
  2357. // Optimization - zeroify
  2358. if (cmp === 0) {
  2359. this.negative = 0;
  2360. this.length = 1;
  2361. this.words[0] = 0;
  2362. return this;
  2363. }
  2364. // a > b
  2365. var a, b;
  2366. if (cmp > 0) {
  2367. a = this;
  2368. b = num;
  2369. } else {
  2370. a = num;
  2371. b = this;
  2372. }
  2373. var carry = 0;
  2374. for (var i = 0; i < b.length; i++) {
  2375. r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
  2376. carry = r >> 26;
  2377. this.words[i] = r & 0x3ffffff;
  2378. }
  2379. for (; carry !== 0 && i < a.length; i++) {
  2380. r = (a.words[i] | 0) + carry;
  2381. carry = r >> 26;
  2382. this.words[i] = r & 0x3ffffff;
  2383. }
  2384. // Copy rest of the words
  2385. if (carry === 0 && i < a.length && a !== this) {
  2386. for (; i < a.length; i++) {
  2387. this.words[i] = a.words[i];
  2388. }
  2389. }
  2390. this.length = Math.max(this.length, i);
  2391. if (a !== this) {
  2392. this.negative = 1;
  2393. }
  2394. return this.strip();
  2395. };
  2396. // Subtract `num` from `this`
  2397. BN.prototype.sub = function sub (num) {
  2398. return this.clone().isub(num);
  2399. };
  2400. function smallMulTo (self, num, out) {
  2401. out.negative = num.negative ^ self.negative;
  2402. var len = (self.length + num.length) | 0;
  2403. out.length = len;
  2404. len = (len - 1) | 0;
  2405. // Peel one iteration (compiler can't do it, because of code complexity)
  2406. var a = self.words[0] | 0;
  2407. var b = num.words[0] | 0;
  2408. var r = a * b;
  2409. var lo = r & 0x3ffffff;
  2410. var carry = (r / 0x4000000) | 0;
  2411. out.words[0] = lo;
  2412. for (var k = 1; k < len; k++) {
  2413. // Sum all words with the same `i + j = k` and accumulate `ncarry`,
  2414. // note that ncarry could be >= 0x3ffffff
  2415. var ncarry = carry >>> 26;
  2416. var rword = carry & 0x3ffffff;
  2417. var maxJ = Math.min(k, num.length - 1);
  2418. for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
  2419. var i = (k - j) | 0;
  2420. a = self.words[i] | 0;
  2421. b = num.words[j] | 0;
  2422. r = a * b + rword;
  2423. ncarry += (r / 0x4000000) | 0;
  2424. rword = r & 0x3ffffff;
  2425. }
  2426. out.words[k] = rword | 0;
  2427. carry = ncarry | 0;
  2428. }
  2429. if (carry !== 0) {
  2430. out.words[k] = carry | 0;
  2431. } else {
  2432. out.length--;
  2433. }
  2434. return out.strip();
  2435. }
  2436. // TODO(indutny): it may be reasonable to omit it for users who don't need
  2437. // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
  2438. // multiplication (like elliptic secp256k1).
  2439. var comb10MulTo = function comb10MulTo (self, num, out) {
  2440. var a = self.words;
  2441. var b = num.words;
  2442. var o = out.words;
  2443. var c = 0;
  2444. var lo;
  2445. var mid;
  2446. var hi;
  2447. var a0 = a[0] | 0;
  2448. var al0 = a0 & 0x1fff;
  2449. var ah0 = a0 >>> 13;
  2450. var a1 = a[1] | 0;
  2451. var al1 = a1 & 0x1fff;
  2452. var ah1 = a1 >>> 13;
  2453. var a2 = a[2] | 0;
  2454. var al2 = a2 & 0x1fff;
  2455. var ah2 = a2 >>> 13;
  2456. var a3 = a[3] | 0;
  2457. var al3 = a3 & 0x1fff;
  2458. var ah3 = a3 >>> 13;
  2459. var a4 = a[4] | 0;
  2460. var al4 = a4 & 0x1fff;
  2461. var ah4 = a4 >>> 13;
  2462. var a5 = a[5] | 0;
  2463. var al5 = a5 & 0x1fff;
  2464. var ah5 = a5 >>> 13;
  2465. var a6 = a[6] | 0;
  2466. var al6 = a6 & 0x1fff;
  2467. var ah6 = a6 >>> 13;
  2468. var a7 = a[7] | 0;
  2469. var al7 = a7 & 0x1fff;
  2470. var ah7 = a7 >>> 13;
  2471. var a8 = a[8] | 0;
  2472. var al8 = a8 & 0x1fff;
  2473. var ah8 = a8 >>> 13;
  2474. var a9 = a[9] | 0;
  2475. var al9 = a9 & 0x1fff;
  2476. var ah9 = a9 >>> 13;
  2477. var b0 = b[0] | 0;
  2478. var bl0 = b0 & 0x1fff;
  2479. var bh0 = b0 >>> 13;
  2480. var b1 = b[1] | 0;
  2481. var bl1 = b1 & 0x1fff;
  2482. var bh1 = b1 >>> 13;
  2483. var b2 = b[2] | 0;
  2484. var bl2 = b2 & 0x1fff;
  2485. var bh2 = b2 >>> 13;
  2486. var b3 = b[3] | 0;
  2487. var bl3 = b3 & 0x1fff;
  2488. var bh3 = b3 >>> 13;
  2489. var b4 = b[4] | 0;
  2490. var bl4 = b4 & 0x1fff;
  2491. var bh4 = b4 >>> 13;
  2492. var b5 = b[5] | 0;
  2493. var bl5 = b5 & 0x1fff;
  2494. var bh5 = b5 >>> 13;
  2495. var b6 = b[6] | 0;
  2496. var bl6 = b6 & 0x1fff;
  2497. var bh6 = b6 >>> 13;
  2498. var b7 = b[7] | 0;
  2499. var bl7 = b7 & 0x1fff;
  2500. var bh7 = b7 >>> 13;
  2501. var b8 = b[8] | 0;
  2502. var bl8 = b8 & 0x1fff;
  2503. var bh8 = b8 >>> 13;
  2504. var b9 = b[9] | 0;
  2505. var bl9 = b9 & 0x1fff;
  2506. var bh9 = b9 >>> 13;
  2507. out.negative = self.negative ^ num.negative;
  2508. out.length = 19;
  2509. /* k = 0 */
  2510. lo = Math.imul(al0, bl0);
  2511. mid = Math.imul(al0, bh0);
  2512. mid = (mid + Math.imul(ah0, bl0)) | 0;
  2513. hi = Math.imul(ah0, bh0);
  2514. var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2515. c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
  2516. w0 &= 0x3ffffff;
  2517. /* k = 1 */
  2518. lo = Math.imul(al1, bl0);
  2519. mid = Math.imul(al1, bh0);
  2520. mid = (mid + Math.imul(ah1, bl0)) | 0;
  2521. hi = Math.imul(ah1, bh0);
  2522. lo = (lo + Math.imul(al0, bl1)) | 0;
  2523. mid = (mid + Math.imul(al0, bh1)) | 0;
  2524. mid = (mid + Math.imul(ah0, bl1)) | 0;
  2525. hi = (hi + Math.imul(ah0, bh1)) | 0;
  2526. var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2527. c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
  2528. w1 &= 0x3ffffff;
  2529. /* k = 2 */
  2530. lo = Math.imul(al2, bl0);
  2531. mid = Math.imul(al2, bh0);
  2532. mid = (mid + Math.imul(ah2, bl0)) | 0;
  2533. hi = Math.imul(ah2, bh0);
  2534. lo = (lo + Math.imul(al1, bl1)) | 0;
  2535. mid = (mid + Math.imul(al1, bh1)) | 0;
  2536. mid = (mid + Math.imul(ah1, bl1)) | 0;
  2537. hi = (hi + Math.imul(ah1, bh1)) | 0;
  2538. lo = (lo + Math.imul(al0, bl2)) | 0;
  2539. mid = (mid + Math.imul(al0, bh2)) | 0;
  2540. mid = (mid + Math.imul(ah0, bl2)) | 0;
  2541. hi = (hi + Math.imul(ah0, bh2)) | 0;
  2542. var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2543. c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
  2544. w2 &= 0x3ffffff;
  2545. /* k = 3 */
  2546. lo = Math.imul(al3, bl0);
  2547. mid = Math.imul(al3, bh0);
  2548. mid = (mid + Math.imul(ah3, bl0)) | 0;
  2549. hi = Math.imul(ah3, bh0);
  2550. lo = (lo + Math.imul(al2, bl1)) | 0;
  2551. mid = (mid + Math.imul(al2, bh1)) | 0;
  2552. mid = (mid + Math.imul(ah2, bl1)) | 0;
  2553. hi = (hi + Math.imul(ah2, bh1)) | 0;
  2554. lo = (lo + Math.imul(al1, bl2)) | 0;
  2555. mid = (mid + Math.imul(al1, bh2)) | 0;
  2556. mid = (mid + Math.imul(ah1, bl2)) | 0;
  2557. hi = (hi + Math.imul(ah1, bh2)) | 0;
  2558. lo = (lo + Math.imul(al0, bl3)) | 0;
  2559. mid = (mid + Math.imul(al0, bh3)) | 0;
  2560. mid = (mid + Math.imul(ah0, bl3)) | 0;
  2561. hi = (hi + Math.imul(ah0, bh3)) | 0;
  2562. var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2563. c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
  2564. w3 &= 0x3ffffff;
  2565. /* k = 4 */
  2566. lo = Math.imul(al4, bl0);
  2567. mid = Math.imul(al4, bh0);
  2568. mid = (mid + Math.imul(ah4, bl0)) | 0;
  2569. hi = Math.imul(ah4, bh0);
  2570. lo = (lo + Math.imul(al3, bl1)) | 0;
  2571. mid = (mid + Math.imul(al3, bh1)) | 0;
  2572. mid = (mid + Math.imul(ah3, bl1)) | 0;
  2573. hi = (hi + Math.imul(ah3, bh1)) | 0;
  2574. lo = (lo + Math.imul(al2, bl2)) | 0;
  2575. mid = (mid + Math.imul(al2, bh2)) | 0;
  2576. mid = (mid + Math.imul(ah2, bl2)) | 0;
  2577. hi = (hi + Math.imul(ah2, bh2)) | 0;
  2578. lo = (lo + Math.imul(al1, bl3)) | 0;
  2579. mid = (mid + Math.imul(al1, bh3)) | 0;
  2580. mid = (mid + Math.imul(ah1, bl3)) | 0;
  2581. hi = (hi + Math.imul(ah1, bh3)) | 0;
  2582. lo = (lo + Math.imul(al0, bl4)) | 0;
  2583. mid = (mid + Math.imul(al0, bh4)) | 0;
  2584. mid = (mid + Math.imul(ah0, bl4)) | 0;
  2585. hi = (hi + Math.imul(ah0, bh4)) | 0;
  2586. var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2587. c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
  2588. w4 &= 0x3ffffff;
  2589. /* k = 5 */
  2590. lo = Math.imul(al5, bl0);
  2591. mid = Math.imul(al5, bh0);
  2592. mid = (mid + Math.imul(ah5, bl0)) | 0;
  2593. hi = Math.imul(ah5, bh0);
  2594. lo = (lo + Math.imul(al4, bl1)) | 0;
  2595. mid = (mid + Math.imul(al4, bh1)) | 0;
  2596. mid = (mid + Math.imul(ah4, bl1)) | 0;
  2597. hi = (hi + Math.imul(ah4, bh1)) | 0;
  2598. lo = (lo + Math.imul(al3, bl2)) | 0;
  2599. mid = (mid + Math.imul(al3, bh2)) | 0;
  2600. mid = (mid + Math.imul(ah3, bl2)) | 0;
  2601. hi = (hi + Math.imul(ah3, bh2)) | 0;
  2602. lo = (lo + Math.imul(al2, bl3)) | 0;
  2603. mid = (mid + Math.imul(al2, bh3)) | 0;
  2604. mid = (mid + Math.imul(ah2, bl3)) | 0;
  2605. hi = (hi + Math.imul(ah2, bh3)) | 0;
  2606. lo = (lo + Math.imul(al1, bl4)) | 0;
  2607. mid = (mid + Math.imul(al1, bh4)) | 0;
  2608. mid = (mid + Math.imul(ah1, bl4)) | 0;
  2609. hi = (hi + Math.imul(ah1, bh4)) | 0;
  2610. lo = (lo + Math.imul(al0, bl5)) | 0;
  2611. mid = (mid + Math.imul(al0, bh5)) | 0;
  2612. mid = (mid + Math.imul(ah0, bl5)) | 0;
  2613. hi = (hi + Math.imul(ah0, bh5)) | 0;
  2614. var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2615. c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
  2616. w5 &= 0x3ffffff;
  2617. /* k = 6 */
  2618. lo = Math.imul(al6, bl0);
  2619. mid = Math.imul(al6, bh0);
  2620. mid = (mid + Math.imul(ah6, bl0)) | 0;
  2621. hi = Math.imul(ah6, bh0);
  2622. lo = (lo + Math.imul(al5, bl1)) | 0;
  2623. mid = (mid + Math.imul(al5, bh1)) | 0;
  2624. mid = (mid + Math.imul(ah5, bl1)) | 0;
  2625. hi = (hi + Math.imul(ah5, bh1)) | 0;
  2626. lo = (lo + Math.imul(al4, bl2)) | 0;
  2627. mid = (mid + Math.imul(al4, bh2)) | 0;
  2628. mid = (mid + Math.imul(ah4, bl2)) | 0;
  2629. hi = (hi + Math.imul(ah4, bh2)) | 0;
  2630. lo = (lo + Math.imul(al3, bl3)) | 0;
  2631. mid = (mid + Math.imul(al3, bh3)) | 0;
  2632. mid = (mid + Math.imul(ah3, bl3)) | 0;
  2633. hi = (hi + Math.imul(ah3, bh3)) | 0;
  2634. lo = (lo + Math.imul(al2, bl4)) | 0;
  2635. mid = (mid + Math.imul(al2, bh4)) | 0;
  2636. mid = (mid + Math.imul(ah2, bl4)) | 0;
  2637. hi = (hi + Math.imul(ah2, bh4)) | 0;
  2638. lo = (lo + Math.imul(al1, bl5)) | 0;
  2639. mid = (mid + Math.imul(al1, bh5)) | 0;
  2640. mid = (mid + Math.imul(ah1, bl5)) | 0;
  2641. hi = (hi + Math.imul(ah1, bh5)) | 0;
  2642. lo = (lo + Math.imul(al0, bl6)) | 0;
  2643. mid = (mid + Math.imul(al0, bh6)) | 0;
  2644. mid = (mid + Math.imul(ah0, bl6)) | 0;
  2645. hi = (hi + Math.imul(ah0, bh6)) | 0;
  2646. var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2647. c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
  2648. w6 &= 0x3ffffff;
  2649. /* k = 7 */
  2650. lo = Math.imul(al7, bl0);
  2651. mid = Math.imul(al7, bh0);
  2652. mid = (mid + Math.imul(ah7, bl0)) | 0;
  2653. hi = Math.imul(ah7, bh0);
  2654. lo = (lo + Math.imul(al6, bl1)) | 0;
  2655. mid = (mid + Math.imul(al6, bh1)) | 0;
  2656. mid = (mid + Math.imul(ah6, bl1)) | 0;
  2657. hi = (hi + Math.imul(ah6, bh1)) | 0;
  2658. lo = (lo + Math.imul(al5, bl2)) | 0;
  2659. mid = (mid + Math.imul(al5, bh2)) | 0;
  2660. mid = (mid + Math.imul(ah5, bl2)) | 0;
  2661. hi = (hi + Math.imul(ah5, bh2)) | 0;
  2662. lo = (lo + Math.imul(al4, bl3)) | 0;
  2663. mid = (mid + Math.imul(al4, bh3)) | 0;
  2664. mid = (mid + Math.imul(ah4, bl3)) | 0;
  2665. hi = (hi + Math.imul(ah4, bh3)) | 0;
  2666. lo = (lo + Math.imul(al3, bl4)) | 0;
  2667. mid = (mid + Math.imul(al3, bh4)) | 0;
  2668. mid = (mid + Math.imul(ah3, bl4)) | 0;
  2669. hi = (hi + Math.imul(ah3, bh4)) | 0;
  2670. lo = (lo + Math.imul(al2, bl5)) | 0;
  2671. mid = (mid + Math.imul(al2, bh5)) | 0;
  2672. mid = (mid + Math.imul(ah2, bl5)) | 0;
  2673. hi = (hi + Math.imul(ah2, bh5)) | 0;
  2674. lo = (lo + Math.imul(al1, bl6)) | 0;
  2675. mid = (mid + Math.imul(al1, bh6)) | 0;
  2676. mid = (mid + Math.imul(ah1, bl6)) | 0;
  2677. hi = (hi + Math.imul(ah1, bh6)) | 0;
  2678. lo = (lo + Math.imul(al0, bl7)) | 0;
  2679. mid = (mid + Math.imul(al0, bh7)) | 0;
  2680. mid = (mid + Math.imul(ah0, bl7)) | 0;
  2681. hi = (hi + Math.imul(ah0, bh7)) | 0;
  2682. var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2683. c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
  2684. w7 &= 0x3ffffff;
  2685. /* k = 8 */
  2686. lo = Math.imul(al8, bl0);
  2687. mid = Math.imul(al8, bh0);
  2688. mid = (mid + Math.imul(ah8, bl0)) | 0;
  2689. hi = Math.imul(ah8, bh0);
  2690. lo = (lo + Math.imul(al7, bl1)) | 0;
  2691. mid = (mid + Math.imul(al7, bh1)) | 0;
  2692. mid = (mid + Math.imul(ah7, bl1)) | 0;
  2693. hi = (hi + Math.imul(ah7, bh1)) | 0;
  2694. lo = (lo + Math.imul(al6, bl2)) | 0;
  2695. mid = (mid + Math.imul(al6, bh2)) | 0;
  2696. mid = (mid + Math.imul(ah6, bl2)) | 0;
  2697. hi = (hi + Math.imul(ah6, bh2)) | 0;
  2698. lo = (lo + Math.imul(al5, bl3)) | 0;
  2699. mid = (mid + Math.imul(al5, bh3)) | 0;
  2700. mid = (mid + Math.imul(ah5, bl3)) | 0;
  2701. hi = (hi + Math.imul(ah5, bh3)) | 0;
  2702. lo = (lo + Math.imul(al4, bl4)) | 0;
  2703. mid = (mid + Math.imul(al4, bh4)) | 0;
  2704. mid = (mid + Math.imul(ah4, bl4)) | 0;
  2705. hi = (hi + Math.imul(ah4, bh4)) | 0;
  2706. lo = (lo + Math.imul(al3, bl5)) | 0;
  2707. mid = (mid + Math.imul(al3, bh5)) | 0;
  2708. mid = (mid + Math.imul(ah3, bl5)) | 0;
  2709. hi = (hi + Math.imul(ah3, bh5)) | 0;
  2710. lo = (lo + Math.imul(al2, bl6)) | 0;
  2711. mid = (mid + Math.imul(al2, bh6)) | 0;
  2712. mid = (mid + Math.imul(ah2, bl6)) | 0;
  2713. hi = (hi + Math.imul(ah2, bh6)) | 0;
  2714. lo = (lo + Math.imul(al1, bl7)) | 0;
  2715. mid = (mid + Math.imul(al1, bh7)) | 0;
  2716. mid = (mid + Math.imul(ah1, bl7)) | 0;
  2717. hi = (hi + Math.imul(ah1, bh7)) | 0;
  2718. lo = (lo + Math.imul(al0, bl8)) | 0;
  2719. mid = (mid + Math.imul(al0, bh8)) | 0;
  2720. mid = (mid + Math.imul(ah0, bl8)) | 0;
  2721. hi = (hi + Math.imul(ah0, bh8)) | 0;
  2722. var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2723. c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
  2724. w8 &= 0x3ffffff;
  2725. /* k = 9 */
  2726. lo = Math.imul(al9, bl0);
  2727. mid = Math.imul(al9, bh0);
  2728. mid = (mid + Math.imul(ah9, bl0)) | 0;
  2729. hi = Math.imul(ah9, bh0);
  2730. lo = (lo + Math.imul(al8, bl1)) | 0;
  2731. mid = (mid + Math.imul(al8, bh1)) | 0;
  2732. mid = (mid + Math.imul(ah8, bl1)) | 0;
  2733. hi = (hi + Math.imul(ah8, bh1)) | 0;
  2734. lo = (lo + Math.imul(al7, bl2)) | 0;
  2735. mid = (mid + Math.imul(al7, bh2)) | 0;
  2736. mid = (mid + Math.imul(ah7, bl2)) | 0;
  2737. hi = (hi + Math.imul(ah7, bh2)) | 0;
  2738. lo = (lo + Math.imul(al6, bl3)) | 0;
  2739. mid = (mid + Math.imul(al6, bh3)) | 0;
  2740. mid = (mid + Math.imul(ah6, bl3)) | 0;
  2741. hi = (hi + Math.imul(ah6, bh3)) | 0;
  2742. lo = (lo + Math.imul(al5, bl4)) | 0;
  2743. mid = (mid + Math.imul(al5, bh4)) | 0;
  2744. mid = (mid + Math.imul(ah5, bl4)) | 0;
  2745. hi = (hi + Math.imul(ah5, bh4)) | 0;
  2746. lo = (lo + Math.imul(al4, bl5)) | 0;
  2747. mid = (mid + Math.imul(al4, bh5)) | 0;
  2748. mid = (mid + Math.imul(ah4, bl5)) | 0;
  2749. hi = (hi + Math.imul(ah4, bh5)) | 0;
  2750. lo = (lo + Math.imul(al3, bl6)) | 0;
  2751. mid = (mid + Math.imul(al3, bh6)) | 0;
  2752. mid = (mid + Math.imul(ah3, bl6)) | 0;
  2753. hi = (hi + Math.imul(ah3, bh6)) | 0;
  2754. lo = (lo + Math.imul(al2, bl7)) | 0;
  2755. mid = (mid + Math.imul(al2, bh7)) | 0;
  2756. mid = (mid + Math.imul(ah2, bl7)) | 0;
  2757. hi = (hi + Math.imul(ah2, bh7)) | 0;
  2758. lo = (lo + Math.imul(al1, bl8)) | 0;
  2759. mid = (mid + Math.imul(al1, bh8)) | 0;
  2760. mid = (mid + Math.imul(ah1, bl8)) | 0;
  2761. hi = (hi + Math.imul(ah1, bh8)) | 0;
  2762. lo = (lo + Math.imul(al0, bl9)) | 0;
  2763. mid = (mid + Math.imul(al0, bh9)) | 0;
  2764. mid = (mid + Math.imul(ah0, bl9)) | 0;
  2765. hi = (hi + Math.imul(ah0, bh9)) | 0;
  2766. var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2767. c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
  2768. w9 &= 0x3ffffff;
  2769. /* k = 10 */
  2770. lo = Math.imul(al9, bl1);
  2771. mid = Math.imul(al9, bh1);
  2772. mid = (mid + Math.imul(ah9, bl1)) | 0;
  2773. hi = Math.imul(ah9, bh1);
  2774. lo = (lo + Math.imul(al8, bl2)) | 0;
  2775. mid = (mid + Math.imul(al8, bh2)) | 0;
  2776. mid = (mid + Math.imul(ah8, bl2)) | 0;
  2777. hi = (hi + Math.imul(ah8, bh2)) | 0;
  2778. lo = (lo + Math.imul(al7, bl3)) | 0;
  2779. mid = (mid + Math.imul(al7, bh3)) | 0;
  2780. mid = (mid + Math.imul(ah7, bl3)) | 0;
  2781. hi = (hi + Math.imul(ah7, bh3)) | 0;
  2782. lo = (lo + Math.imul(al6, bl4)) | 0;
  2783. mid = (mid + Math.imul(al6, bh4)) | 0;
  2784. mid = (mid + Math.imul(ah6, bl4)) | 0;
  2785. hi = (hi + Math.imul(ah6, bh4)) | 0;
  2786. lo = (lo + Math.imul(al5, bl5)) | 0;
  2787. mid = (mid + Math.imul(al5, bh5)) | 0;
  2788. mid = (mid + Math.imul(ah5, bl5)) | 0;
  2789. hi = (hi + Math.imul(ah5, bh5)) | 0;
  2790. lo = (lo + Math.imul(al4, bl6)) | 0;
  2791. mid = (mid + Math.imul(al4, bh6)) | 0;
  2792. mid = (mid + Math.imul(ah4, bl6)) | 0;
  2793. hi = (hi + Math.imul(ah4, bh6)) | 0;
  2794. lo = (lo + Math.imul(al3, bl7)) | 0;
  2795. mid = (mid + Math.imul(al3, bh7)) | 0;
  2796. mid = (mid + Math.imul(ah3, bl7)) | 0;
  2797. hi = (hi + Math.imul(ah3, bh7)) | 0;
  2798. lo = (lo + Math.imul(al2, bl8)) | 0;
  2799. mid = (mid + Math.imul(al2, bh8)) | 0;
  2800. mid = (mid + Math.imul(ah2, bl8)) | 0;
  2801. hi = (hi + Math.imul(ah2, bh8)) | 0;
  2802. lo = (lo + Math.imul(al1, bl9)) | 0;
  2803. mid = (mid + Math.imul(al1, bh9)) | 0;
  2804. mid = (mid + Math.imul(ah1, bl9)) | 0;
  2805. hi = (hi + Math.imul(ah1, bh9)) | 0;
  2806. var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2807. c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
  2808. w10 &= 0x3ffffff;
  2809. /* k = 11 */
  2810. lo = Math.imul(al9, bl2);
  2811. mid = Math.imul(al9, bh2);
  2812. mid = (mid + Math.imul(ah9, bl2)) | 0;
  2813. hi = Math.imul(ah9, bh2);
  2814. lo = (lo + Math.imul(al8, bl3)) | 0;
  2815. mid = (mid + Math.imul(al8, bh3)) | 0;
  2816. mid = (mid + Math.imul(ah8, bl3)) | 0;
  2817. hi = (hi + Math.imul(ah8, bh3)) | 0;
  2818. lo = (lo + Math.imul(al7, bl4)) | 0;
  2819. mid = (mid + Math.imul(al7, bh4)) | 0;
  2820. mid = (mid + Math.imul(ah7, bl4)) | 0;
  2821. hi = (hi + Math.imul(ah7, bh4)) | 0;
  2822. lo = (lo + Math.imul(al6, bl5)) | 0;
  2823. mid = (mid + Math.imul(al6, bh5)) | 0;
  2824. mid = (mid + Math.imul(ah6, bl5)) | 0;
  2825. hi = (hi + Math.imul(ah6, bh5)) | 0;
  2826. lo = (lo + Math.imul(al5, bl6)) | 0;
  2827. mid = (mid + Math.imul(al5, bh6)) | 0;
  2828. mid = (mid + Math.imul(ah5, bl6)) | 0;
  2829. hi = (hi + Math.imul(ah5, bh6)) | 0;
  2830. lo = (lo + Math.imul(al4, bl7)) | 0;
  2831. mid = (mid + Math.imul(al4, bh7)) | 0;
  2832. mid = (mid + Math.imul(ah4, bl7)) | 0;
  2833. hi = (hi + Math.imul(ah4, bh7)) | 0;
  2834. lo = (lo + Math.imul(al3, bl8)) | 0;
  2835. mid = (mid + Math.imul(al3, bh8)) | 0;
  2836. mid = (mid + Math.imul(ah3, bl8)) | 0;
  2837. hi = (hi + Math.imul(ah3, bh8)) | 0;
  2838. lo = (lo + Math.imul(al2, bl9)) | 0;
  2839. mid = (mid + Math.imul(al2, bh9)) | 0;
  2840. mid = (mid + Math.imul(ah2, bl9)) | 0;
  2841. hi = (hi + Math.imul(ah2, bh9)) | 0;
  2842. var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2843. c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
  2844. w11 &= 0x3ffffff;
  2845. /* k = 12 */
  2846. lo = Math.imul(al9, bl3);
  2847. mid = Math.imul(al9, bh3);
  2848. mid = (mid + Math.imul(ah9, bl3)) | 0;
  2849. hi = Math.imul(ah9, bh3);
  2850. lo = (lo + Math.imul(al8, bl4)) | 0;
  2851. mid = (mid + Math.imul(al8, bh4)) | 0;
  2852. mid = (mid + Math.imul(ah8, bl4)) | 0;
  2853. hi = (hi + Math.imul(ah8, bh4)) | 0;
  2854. lo = (lo + Math.imul(al7, bl5)) | 0;
  2855. mid = (mid + Math.imul(al7, bh5)) | 0;
  2856. mid = (mid + Math.imul(ah7, bl5)) | 0;
  2857. hi = (hi + Math.imul(ah7, bh5)) | 0;
  2858. lo = (lo + Math.imul(al6, bl6)) | 0;
  2859. mid = (mid + Math.imul(al6, bh6)) | 0;
  2860. mid = (mid + Math.imul(ah6, bl6)) | 0;
  2861. hi = (hi + Math.imul(ah6, bh6)) | 0;
  2862. lo = (lo + Math.imul(al5, bl7)) | 0;
  2863. mid = (mid + Math.imul(al5, bh7)) | 0;
  2864. mid = (mid + Math.imul(ah5, bl7)) | 0;
  2865. hi = (hi + Math.imul(ah5, bh7)) | 0;
  2866. lo = (lo + Math.imul(al4, bl8)) | 0;
  2867. mid = (mid + Math.imul(al4, bh8)) | 0;
  2868. mid = (mid + Math.imul(ah4, bl8)) | 0;
  2869. hi = (hi + Math.imul(ah4, bh8)) | 0;
  2870. lo = (lo + Math.imul(al3, bl9)) | 0;
  2871. mid = (mid + Math.imul(al3, bh9)) | 0;
  2872. mid = (mid + Math.imul(ah3, bl9)) | 0;
  2873. hi = (hi + Math.imul(ah3, bh9)) | 0;
  2874. var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2875. c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
  2876. w12 &= 0x3ffffff;
  2877. /* k = 13 */
  2878. lo = Math.imul(al9, bl4);
  2879. mid = Math.imul(al9, bh4);
  2880. mid = (mid + Math.imul(ah9, bl4)) | 0;
  2881. hi = Math.imul(ah9, bh4);
  2882. lo = (lo + Math.imul(al8, bl5)) | 0;
  2883. mid = (mid + Math.imul(al8, bh5)) | 0;
  2884. mid = (mid + Math.imul(ah8, bl5)) | 0;
  2885. hi = (hi + Math.imul(ah8, bh5)) | 0;
  2886. lo = (lo + Math.imul(al7, bl6)) | 0;
  2887. mid = (mid + Math.imul(al7, bh6)) | 0;
  2888. mid = (mid + Math.imul(ah7, bl6)) | 0;
  2889. hi = (hi + Math.imul(ah7, bh6)) | 0;
  2890. lo = (lo + Math.imul(al6, bl7)) | 0;
  2891. mid = (mid + Math.imul(al6, bh7)) | 0;
  2892. mid = (mid + Math.imul(ah6, bl7)) | 0;
  2893. hi = (hi + Math.imul(ah6, bh7)) | 0;
  2894. lo = (lo + Math.imul(al5, bl8)) | 0;
  2895. mid = (mid + Math.imul(al5, bh8)) | 0;
  2896. mid = (mid + Math.imul(ah5, bl8)) | 0;
  2897. hi = (hi + Math.imul(ah5, bh8)) | 0;
  2898. lo = (lo + Math.imul(al4, bl9)) | 0;
  2899. mid = (mid + Math.imul(al4, bh9)) | 0;
  2900. mid = (mid + Math.imul(ah4, bl9)) | 0;
  2901. hi = (hi + Math.imul(ah4, bh9)) | 0;
  2902. var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2903. c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
  2904. w13 &= 0x3ffffff;
  2905. /* k = 14 */
  2906. lo = Math.imul(al9, bl5);
  2907. mid = Math.imul(al9, bh5);
  2908. mid = (mid + Math.imul(ah9, bl5)) | 0;
  2909. hi = Math.imul(ah9, bh5);
  2910. lo = (lo + Math.imul(al8, bl6)) | 0;
  2911. mid = (mid + Math.imul(al8, bh6)) | 0;
  2912. mid = (mid + Math.imul(ah8, bl6)) | 0;
  2913. hi = (hi + Math.imul(ah8, bh6)) | 0;
  2914. lo = (lo + Math.imul(al7, bl7)) | 0;
  2915. mid = (mid + Math.imul(al7, bh7)) | 0;
  2916. mid = (mid + Math.imul(ah7, bl7)) | 0;
  2917. hi = (hi + Math.imul(ah7, bh7)) | 0;
  2918. lo = (lo + Math.imul(al6, bl8)) | 0;
  2919. mid = (mid + Math.imul(al6, bh8)) | 0;
  2920. mid = (mid + Math.imul(ah6, bl8)) | 0;
  2921. hi = (hi + Math.imul(ah6, bh8)) | 0;
  2922. lo = (lo + Math.imul(al5, bl9)) | 0;
  2923. mid = (mid + Math.imul(al5, bh9)) | 0;
  2924. mid = (mid + Math.imul(ah5, bl9)) | 0;
  2925. hi = (hi + Math.imul(ah5, bh9)) | 0;
  2926. var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2927. c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
  2928. w14 &= 0x3ffffff;
  2929. /* k = 15 */
  2930. lo = Math.imul(al9, bl6);
  2931. mid = Math.imul(al9, bh6);
  2932. mid = (mid + Math.imul(ah9, bl6)) | 0;
  2933. hi = Math.imul(ah9, bh6);
  2934. lo = (lo + Math.imul(al8, bl7)) | 0;
  2935. mid = (mid + Math.imul(al8, bh7)) | 0;
  2936. mid = (mid + Math.imul(ah8, bl7)) | 0;
  2937. hi = (hi + Math.imul(ah8, bh7)) | 0;
  2938. lo = (lo + Math.imul(al7, bl8)) | 0;
  2939. mid = (mid + Math.imul(al7, bh8)) | 0;
  2940. mid = (mid + Math.imul(ah7, bl8)) | 0;
  2941. hi = (hi + Math.imul(ah7, bh8)) | 0;
  2942. lo = (lo + Math.imul(al6, bl9)) | 0;
  2943. mid = (mid + Math.imul(al6, bh9)) | 0;
  2944. mid = (mid + Math.imul(ah6, bl9)) | 0;
  2945. hi = (hi + Math.imul(ah6, bh9)) | 0;
  2946. var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2947. c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
  2948. w15 &= 0x3ffffff;
  2949. /* k = 16 */
  2950. lo = Math.imul(al9, bl7);
  2951. mid = Math.imul(al9, bh7);
  2952. mid = (mid + Math.imul(ah9, bl7)) | 0;
  2953. hi = Math.imul(ah9, bh7);
  2954. lo = (lo + Math.imul(al8, bl8)) | 0;
  2955. mid = (mid + Math.imul(al8, bh8)) | 0;
  2956. mid = (mid + Math.imul(ah8, bl8)) | 0;
  2957. hi = (hi + Math.imul(ah8, bh8)) | 0;
  2958. lo = (lo + Math.imul(al7, bl9)) | 0;
  2959. mid = (mid + Math.imul(al7, bh9)) | 0;
  2960. mid = (mid + Math.imul(ah7, bl9)) | 0;
  2961. hi = (hi + Math.imul(ah7, bh9)) | 0;
  2962. var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2963. c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
  2964. w16 &= 0x3ffffff;
  2965. /* k = 17 */
  2966. lo = Math.imul(al9, bl8);
  2967. mid = Math.imul(al9, bh8);
  2968. mid = (mid + Math.imul(ah9, bl8)) | 0;
  2969. hi = Math.imul(ah9, bh8);
  2970. lo = (lo + Math.imul(al8, bl9)) | 0;
  2971. mid = (mid + Math.imul(al8, bh9)) | 0;
  2972. mid = (mid + Math.imul(ah8, bl9)) | 0;
  2973. hi = (hi + Math.imul(ah8, bh9)) | 0;
  2974. var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2975. c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
  2976. w17 &= 0x3ffffff;
  2977. /* k = 18 */
  2978. lo = Math.imul(al9, bl9);
  2979. mid = Math.imul(al9, bh9);
  2980. mid = (mid + Math.imul(ah9, bl9)) | 0;
  2981. hi = Math.imul(ah9, bh9);
  2982. var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
  2983. c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
  2984. w18 &= 0x3ffffff;
  2985. o[0] = w0;
  2986. o[1] = w1;
  2987. o[2] = w2;
  2988. o[3] = w3;
  2989. o[4] = w4;
  2990. o[5] = w5;
  2991. o[6] = w6;
  2992. o[7] = w7;
  2993. o[8] = w8;
  2994. o[9] = w9;
  2995. o[10] = w10;
  2996. o[11] = w11;
  2997. o[12] = w12;
  2998. o[13] = w13;
  2999. o[14] = w14;
  3000. o[15] = w15;
  3001. o[16] = w16;
  3002. o[17] = w17;
  3003. o[18] = w18;
  3004. if (c !== 0) {
  3005. o[19] = c;
  3006. out.length++;
  3007. }
  3008. return out;
  3009. };
  3010. // Polyfill comb
  3011. if (!Math.imul) {
  3012. comb10MulTo = smallMulTo;
  3013. }
  3014. function bigMulTo (self, num, out) {
  3015. out.negative = num.negative ^ self.negative;
  3016. out.length = self.length + num.length;
  3017. var carry = 0;
  3018. var hncarry = 0;
  3019. for (var k = 0; k < out.length - 1; k++) {
  3020. // Sum all words with the same `i + j = k` and accumulate `ncarry`,
  3021. // note that ncarry could be >= 0x3ffffff
  3022. var ncarry = hncarry;
  3023. hncarry = 0;
  3024. var rword = carry & 0x3ffffff;
  3025. var maxJ = Math.min(k, num.length - 1);
  3026. for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
  3027. var i = k - j;
  3028. var a = self.words[i] | 0;
  3029. var b = num.words[j] | 0;
  3030. var r = a * b;
  3031. var lo = r & 0x3ffffff;
  3032. ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
  3033. lo = (lo + rword) | 0;
  3034. rword = lo & 0x3ffffff;
  3035. ncarry = (ncarry + (lo >>> 26)) | 0;
  3036. hncarry += ncarry >>> 26;
  3037. ncarry &= 0x3ffffff;
  3038. }
  3039. out.words[k] = rword;
  3040. carry = ncarry;
  3041. ncarry = hncarry;
  3042. }
  3043. if (carry !== 0) {
  3044. out.words[k] = carry;
  3045. } else {
  3046. out.length--;
  3047. }
  3048. return out.strip();
  3049. }
  3050. function jumboMulTo (self, num, out) {
  3051. var fftm = new FFTM();
  3052. return fftm.mulp(self, num, out);
  3053. }
  3054. BN.prototype.mulTo = function mulTo (num, out) {
  3055. var res;
  3056. var len = this.length + num.length;
  3057. if (this.length === 10 && num.length === 10) {
  3058. res = comb10MulTo(this, num, out);
  3059. } else if (len < 63) {
  3060. res = smallMulTo(this, num, out);
  3061. } else if (len < 1024) {
  3062. res = bigMulTo(this, num, out);
  3063. } else {
  3064. res = jumboMulTo(this, num, out);
  3065. }
  3066. return res;
  3067. };
  3068. // Cooley-Tukey algorithm for FFT
  3069. // slightly revisited to rely on looping instead of recursion
  3070. function FFTM (x, y) {
  3071. this.x = x;
  3072. this.y = y;
  3073. }
  3074. FFTM.prototype.makeRBT = function makeRBT (N) {
  3075. var t = new Array(N);
  3076. var l = BN.prototype._countBits(N) - 1;
  3077. for (var i = 0; i < N; i++) {
  3078. t[i] = this.revBin(i, l, N);
  3079. }
  3080. return t;
  3081. };
  3082. // Returns binary-reversed representation of `x`
  3083. FFTM.prototype.revBin = function revBin (x, l, N) {
  3084. if (x === 0 || x === N - 1) return x;
  3085. var rb = 0;
  3086. for (var i = 0; i < l; i++) {
  3087. rb |= (x & 1) << (l - i - 1);
  3088. x >>= 1;
  3089. }
  3090. return rb;
  3091. };
  3092. // Performs "tweedling" phase, therefore 'emulating'
  3093. // behaviour of the recursive algorithm
  3094. FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
  3095. for (var i = 0; i < N; i++) {
  3096. rtws[i] = rws[rbt[i]];
  3097. itws[i] = iws[rbt[i]];
  3098. }
  3099. };
  3100. FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
  3101. this.permute(rbt, rws, iws, rtws, itws, N);
  3102. for (var s = 1; s < N; s <<= 1) {
  3103. var l = s << 1;
  3104. var rtwdf = Math.cos(2 * Math.PI / l);
  3105. var itwdf = Math.sin(2 * Math.PI / l);
  3106. for (var p = 0; p < N; p += l) {
  3107. var rtwdf_ = rtwdf;
  3108. var itwdf_ = itwdf;
  3109. for (var j = 0; j < s; j++) {
  3110. var re = rtws[p + j];
  3111. var ie = itws[p + j];
  3112. var ro = rtws[p + j + s];
  3113. var io = itws[p + j + s];
  3114. var rx = rtwdf_ * ro - itwdf_ * io;
  3115. io = rtwdf_ * io + itwdf_ * ro;
  3116. ro = rx;
  3117. rtws[p + j] = re + ro;
  3118. itws[p + j] = ie + io;
  3119. rtws[p + j + s] = re - ro;
  3120. itws[p + j + s] = ie - io;
  3121. /* jshint maxdepth : false */
  3122. if (j !== l) {
  3123. rx = rtwdf * rtwdf_ - itwdf * itwdf_;
  3124. itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
  3125. rtwdf_ = rx;
  3126. }
  3127. }
  3128. }
  3129. }
  3130. };
  3131. FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
  3132. var N = Math.max(m, n) | 1;
  3133. var odd = N & 1;
  3134. var i = 0;
  3135. for (N = N / 2 | 0; N; N = N >>> 1) {
  3136. i++;
  3137. }
  3138. return 1 << i + 1 + odd;
  3139. };
  3140. FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
  3141. if (N <= 1) return;
  3142. for (var i = 0; i < N / 2; i++) {
  3143. var t = rws[i];
  3144. rws[i] = rws[N - i - 1];
  3145. rws[N - i - 1] = t;
  3146. t = iws[i];
  3147. iws[i] = -iws[N - i - 1];
  3148. iws[N - i - 1] = -t;
  3149. }
  3150. };
  3151. FFTM.prototype.normalize13b = function normalize13b (ws, N) {
  3152. var carry = 0;
  3153. for (var i = 0; i < N / 2; i++) {
  3154. var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
  3155. Math.round(ws[2 * i] / N) +
  3156. carry;
  3157. ws[i] = w & 0x3ffffff;
  3158. if (w < 0x4000000) {
  3159. carry = 0;
  3160. } else {
  3161. carry = w / 0x4000000 | 0;
  3162. }
  3163. }
  3164. return ws;
  3165. };
  3166. FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
  3167. var carry = 0;
  3168. for (var i = 0; i < len; i++) {
  3169. carry = carry + (ws[i] | 0);
  3170. rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
  3171. rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
  3172. }
  3173. // Pad with zeroes
  3174. for (i = 2 * len; i < N; ++i) {
  3175. rws[i] = 0;
  3176. }
  3177. assert(carry === 0);
  3178. assert((carry & ~0x1fff) === 0);
  3179. };
  3180. FFTM.prototype.stub = function stub (N) {
  3181. var ph = new Array(N);
  3182. for (var i = 0; i < N; i++) {
  3183. ph[i] = 0;
  3184. }
  3185. return ph;
  3186. };
  3187. FFTM.prototype.mulp = function mulp (x, y, out) {
  3188. var N = 2 * this.guessLen13b(x.length, y.length);
  3189. var rbt = this.makeRBT(N);
  3190. var _ = this.stub(N);
  3191. var rws = new Array(N);
  3192. var rwst = new Array(N);
  3193. var iwst = new Array(N);
  3194. var nrws = new Array(N);
  3195. var nrwst = new Array(N);
  3196. var niwst = new Array(N);
  3197. var rmws = out.words;
  3198. rmws.length = N;
  3199. this.convert13b(x.words, x.length, rws, N);
  3200. this.convert13b(y.words, y.length, nrws, N);
  3201. this.transform(rws, _, rwst, iwst, N, rbt);
  3202. this.transform(nrws, _, nrwst, niwst, N, rbt);
  3203. for (var i = 0; i < N; i++) {
  3204. var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
  3205. iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
  3206. rwst[i] = rx;
  3207. }
  3208. this.conjugate(rwst, iwst, N);
  3209. this.transform(rwst, iwst, rmws, _, N, rbt);
  3210. this.conjugate(rmws, _, N);
  3211. this.normalize13b(rmws, N);
  3212. out.negative = x.negative ^ y.negative;
  3213. out.length = x.length + y.length;
  3214. return out.strip();
  3215. };
  3216. // Multiply `this` by `num`
  3217. BN.prototype.mul = function mul (num) {
  3218. var out = new BN(null);
  3219. out.words = new Array(this.length + num.length);
  3220. return this.mulTo(num, out);
  3221. };
  3222. // Multiply employing FFT
  3223. BN.prototype.mulf = function mulf (num) {
  3224. var out = new BN(null);
  3225. out.words = new Array(this.length + num.length);
  3226. return jumboMulTo(this, num, out);
  3227. };
  3228. // In-place Multiplication
  3229. BN.prototype.imul = function imul (num) {
  3230. return this.clone().mulTo(num, this);
  3231. };
  3232. BN.prototype.imuln = function imuln (num) {
  3233. assert(typeof num === 'number');
  3234. assert(num < 0x4000000);
  3235. // Carry
  3236. var carry = 0;
  3237. for (var i = 0; i < this.length; i++) {
  3238. var w = (this.words[i] | 0) * num;
  3239. var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
  3240. carry >>= 26;
  3241. carry += (w / 0x4000000) | 0;
  3242. // NOTE: lo is 27bit maximum
  3243. carry += lo >>> 26;
  3244. this.words[i] = lo & 0x3ffffff;
  3245. }
  3246. if (carry !== 0) {
  3247. this.words[i] = carry;
  3248. this.length++;
  3249. }
  3250. return this;
  3251. };
  3252. BN.prototype.muln = function muln (num) {
  3253. return this.clone().imuln(num);
  3254. };
  3255. // `this` * `this`
  3256. BN.prototype.sqr = function sqr () {
  3257. return this.mul(this);
  3258. };
  3259. // `this` * `this` in-place
  3260. BN.prototype.isqr = function isqr () {
  3261. return this.imul(this.clone());
  3262. };
  3263. // Math.pow(`this`, `num`)
  3264. BN.prototype.pow = function pow (num) {
  3265. var w = toBitArray(num);
  3266. if (w.length === 0) return new BN(1);
  3267. // Skip leading zeroes
  3268. var res = this;
  3269. for (var i = 0; i < w.length; i++, res = res.sqr()) {
  3270. if (w[i] !== 0) break;
  3271. }
  3272. if (++i < w.length) {
  3273. for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
  3274. if (w[i] === 0) continue;
  3275. res = res.mul(q);
  3276. }
  3277. }
  3278. return res;
  3279. };
  3280. // Shift-left in-place
  3281. BN.prototype.iushln = function iushln (bits) {
  3282. assert(typeof bits === 'number' && bits >= 0);
  3283. var r = bits % 26;
  3284. var s = (bits - r) / 26;
  3285. var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
  3286. var i;
  3287. if (r !== 0) {
  3288. var carry = 0;
  3289. for (i = 0; i < this.length; i++) {
  3290. var newCarry = this.words[i] & carryMask;
  3291. var c = ((this.words[i] | 0) - newCarry) << r;
  3292. this.words[i] = c | carry;
  3293. carry = newCarry >>> (26 - r);
  3294. }
  3295. if (carry) {
  3296. this.words[i] = carry;
  3297. this.length++;
  3298. }
  3299. }
  3300. if (s !== 0) {
  3301. for (i = this.length - 1; i >= 0; i--) {
  3302. this.words[i + s] = this.words[i];
  3303. }
  3304. for (i = 0; i < s; i++) {
  3305. this.words[i] = 0;
  3306. }
  3307. this.length += s;
  3308. }
  3309. return this.strip();
  3310. };
  3311. BN.prototype.ishln = function ishln (bits) {
  3312. // TODO(indutny): implement me
  3313. assert(this.negative === 0);
  3314. return this.iushln(bits);
  3315. };
  3316. // Shift-right in-place
  3317. // NOTE: `hint` is a lowest bit before trailing zeroes
  3318. // NOTE: if `extended` is present - it will be filled with destroyed bits
  3319. BN.prototype.iushrn = function iushrn (bits, hint, extended) {
  3320. assert(typeof bits === 'number' && bits >= 0);
  3321. var h;
  3322. if (hint) {
  3323. h = (hint - (hint % 26)) / 26;
  3324. } else {
  3325. h = 0;
  3326. }
  3327. var r = bits % 26;
  3328. var s = Math.min((bits - r) / 26, this.length);
  3329. var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
  3330. var maskedWords = extended;
  3331. h -= s;
  3332. h = Math.max(0, h);
  3333. // Extended mode, copy masked part
  3334. if (maskedWords) {
  3335. for (var i = 0; i < s; i++) {
  3336. maskedWords.words[i] = this.words[i];
  3337. }
  3338. maskedWords.length = s;
  3339. }
  3340. if (s === 0) {
  3341. // No-op, we should not move anything at all
  3342. } else if (this.length > s) {
  3343. this.length -= s;
  3344. for (i = 0; i < this.length; i++) {
  3345. this.words[i] = this.words[i + s];
  3346. }
  3347. } else {
  3348. this.words[0] = 0;
  3349. this.length = 1;
  3350. }
  3351. var carry = 0;
  3352. for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
  3353. var word = this.words[i] | 0;
  3354. this.words[i] = (carry << (26 - r)) | (word >>> r);
  3355. carry = word & mask;
  3356. }
  3357. // Push carried bits as a mask
  3358. if (maskedWords && carry !== 0) {
  3359. maskedWords.words[maskedWords.length++] = carry;
  3360. }
  3361. if (this.length === 0) {
  3362. this.words[0] = 0;
  3363. this.length = 1;
  3364. }
  3365. return this.strip();
  3366. };
  3367. BN.prototype.ishrn = function ishrn (bits, hint, extended) {
  3368. // TODO(indutny): implement me
  3369. assert(this.negative === 0);
  3370. return this.iushrn(bits, hint, extended);
  3371. };
  3372. // Shift-left
  3373. BN.prototype.shln = function shln (bits) {
  3374. return this.clone().ishln(bits);
  3375. };
  3376. BN.prototype.ushln = function ushln (bits) {
  3377. return this.clone().iushln(bits);
  3378. };
  3379. // Shift-right
  3380. BN.prototype.shrn = function shrn (bits) {
  3381. return this.clone().ishrn(bits);
  3382. };
  3383. BN.prototype.ushrn = function ushrn (bits) {
  3384. return this.clone().iushrn(bits);
  3385. };
  3386. // Test if n bit is set
  3387. BN.prototype.testn = function testn (bit) {
  3388. assert(typeof bit === 'number' && bit >= 0);
  3389. var r = bit % 26;
  3390. var s = (bit - r) / 26;
  3391. var q = 1 << r;
  3392. // Fast case: bit is much higher than all existing words
  3393. if (this.length <= s) return false;
  3394. // Check bit and return
  3395. var w = this.words[s];
  3396. return !!(w & q);
  3397. };
  3398. // Return only lowers bits of number (in-place)
  3399. BN.prototype.imaskn = function imaskn (bits) {
  3400. assert(typeof bits === 'number' && bits >= 0);
  3401. var r = bits % 26;
  3402. var s = (bits - r) / 26;
  3403. assert(this.negative === 0, 'imaskn works only with positive numbers');
  3404. if (this.length <= s) {
  3405. return this;
  3406. }
  3407. if (r !== 0) {
  3408. s++;
  3409. }
  3410. this.length = Math.min(s, this.length);
  3411. if (r !== 0) {
  3412. var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
  3413. this.words[this.length - 1] &= mask;
  3414. }
  3415. return this.strip();
  3416. };
  3417. // Return only lowers bits of number
  3418. BN.prototype.maskn = function maskn (bits) {
  3419. return this.clone().imaskn(bits);
  3420. };
  3421. // Add plain number `num` to `this`
  3422. BN.prototype.iaddn = function iaddn (num) {
  3423. assert(typeof num === 'number');
  3424. assert(num < 0x4000000);
  3425. if (num < 0) return this.isubn(-num);
  3426. // Possible sign change
  3427. if (this.negative !== 0) {
  3428. if (this.length === 1 && (this.words[0] | 0) < num) {
  3429. this.words[0] = num - (this.words[0] | 0);
  3430. this.negative = 0;
  3431. return this;
  3432. }
  3433. this.negative = 0;
  3434. this.isubn(num);
  3435. this.negative = 1;
  3436. return this;
  3437. }
  3438. // Add without checks
  3439. return this._iaddn(num);
  3440. };
  3441. BN.prototype._iaddn = function _iaddn (num) {
  3442. this.words[0] += num;
  3443. // Carry
  3444. for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
  3445. this.words[i] -= 0x4000000;
  3446. if (i === this.length - 1) {
  3447. this.words[i + 1] = 1;
  3448. } else {
  3449. this.words[i + 1]++;
  3450. }
  3451. }
  3452. this.length = Math.max(this.length, i + 1);
  3453. return this;
  3454. };
  3455. // Subtract plain number `num` from `this`
  3456. BN.prototype.isubn = function isubn (num) {
  3457. assert(typeof num === 'number');
  3458. assert(num < 0x4000000);
  3459. if (num < 0) return this.iaddn(-num);
  3460. if (this.negative !== 0) {
  3461. this.negative = 0;
  3462. this.iaddn(num);
  3463. this.negative = 1;
  3464. return this;
  3465. }
  3466. this.words[0] -= num;
  3467. if (this.length === 1 && this.words[0] < 0) {
  3468. this.words[0] = -this.words[0];
  3469. this.negative = 1;
  3470. } else {
  3471. // Carry
  3472. for (var i = 0; i < this.length && this.words[i] < 0; i++) {
  3473. this.words[i] += 0x4000000;
  3474. this.words[i + 1] -= 1;
  3475. }
  3476. }
  3477. return this.strip();
  3478. };
  3479. BN.prototype.addn = function addn (num) {
  3480. return this.clone().iaddn(num);
  3481. };
  3482. BN.prototype.subn = function subn (num) {
  3483. return this.clone().isubn(num);
  3484. };
  3485. BN.prototype.iabs = function iabs () {
  3486. this.negative = 0;
  3487. return this;
  3488. };
  3489. BN.prototype.abs = function abs () {
  3490. return this.clone().iabs();
  3491. };
  3492. BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
  3493. var len = num.length + shift;
  3494. var i;
  3495. this._expand(len);
  3496. var w;
  3497. var carry = 0;
  3498. for (i = 0; i < num.length; i++) {
  3499. w = (this.words[i + shift] | 0) + carry;
  3500. var right = (num.words[i] | 0) * mul;
  3501. w -= right & 0x3ffffff;
  3502. carry = (w >> 26) - ((right / 0x4000000) | 0);
  3503. this.words[i + shift] = w & 0x3ffffff;
  3504. }
  3505. for (; i < this.length - shift; i++) {
  3506. w = (this.words[i + shift] | 0) + carry;
  3507. carry = w >> 26;
  3508. this.words[i + shift] = w & 0x3ffffff;
  3509. }
  3510. if (carry === 0) return this.strip();
  3511. // Subtraction overflow
  3512. assert(carry === -1);
  3513. carry = 0;
  3514. for (i = 0; i < this.length; i++) {
  3515. w = -(this.words[i] | 0) + carry;
  3516. carry = w >> 26;
  3517. this.words[i] = w & 0x3ffffff;
  3518. }
  3519. this.negative = 1;
  3520. return this.strip();
  3521. };
  3522. BN.prototype._wordDiv = function _wordDiv (num, mode) {
  3523. var shift = this.length - num.length;
  3524. var a = this.clone();
  3525. var b = num;
  3526. // Normalize
  3527. var bhi = b.words[b.length - 1] | 0;
  3528. var bhiBits = this._countBits(bhi);
  3529. shift = 26 - bhiBits;
  3530. if (shift !== 0) {
  3531. b = b.ushln(shift);
  3532. a.iushln(shift);
  3533. bhi = b.words[b.length - 1] | 0;
  3534. }
  3535. // Initialize quotient
  3536. var m = a.length - b.length;
  3537. var q;
  3538. if (mode !== 'mod') {
  3539. q = new BN(null);
  3540. q.length = m + 1;
  3541. q.words = new Array(q.length);
  3542. for (var i = 0; i < q.length; i++) {
  3543. q.words[i] = 0;
  3544. }
  3545. }
  3546. var diff = a.clone()._ishlnsubmul(b, 1, m);
  3547. if (diff.negative === 0) {
  3548. a = diff;
  3549. if (q) {
  3550. q.words[m] = 1;
  3551. }
  3552. }
  3553. for (var j = m - 1; j >= 0; j--) {
  3554. var qj = (a.words[b.length + j] | 0) * 0x4000000 +
  3555. (a.words[b.length + j - 1] | 0);
  3556. // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
  3557. // (0x7ffffff)
  3558. qj = Math.min((qj / bhi) | 0, 0x3ffffff);
  3559. a._ishlnsubmul(b, qj, j);
  3560. while (a.negative !== 0) {
  3561. qj--;
  3562. a.negative = 0;
  3563. a._ishlnsubmul(b, 1, j);
  3564. if (!a.isZero()) {
  3565. a.negative ^= 1;
  3566. }
  3567. }
  3568. if (q) {
  3569. q.words[j] = qj;
  3570. }
  3571. }
  3572. if (q) {
  3573. q.strip();
  3574. }
  3575. a.strip();
  3576. // Denormalize
  3577. if (mode !== 'div' && shift !== 0) {
  3578. a.iushrn(shift);
  3579. }
  3580. return {
  3581. div: q || null,
  3582. mod: a
  3583. };
  3584. };
  3585. // NOTE: 1) `mode` can be set to `mod` to request mod only,
  3586. // to `div` to request div only, or be absent to
  3587. // request both div & mod
  3588. // 2) `positive` is true if unsigned mod is requested
  3589. BN.prototype.divmod = function divmod (num, mode, positive) {
  3590. assert(!num.isZero());
  3591. if (this.isZero()) {
  3592. return {
  3593. div: new BN(0),
  3594. mod: new BN(0)
  3595. };
  3596. }
  3597. var div, mod, res;
  3598. if (this.negative !== 0 && num.negative === 0) {
  3599. res = this.neg().divmod(num, mode);
  3600. if (mode !== 'mod') {
  3601. div = res.div.neg();
  3602. }
  3603. if (mode !== 'div') {
  3604. mod = res.mod.neg();
  3605. if (positive && mod.negative !== 0) {
  3606. mod.iadd(num);
  3607. }
  3608. }
  3609. return {
  3610. div: div,
  3611. mod: mod
  3612. };
  3613. }
  3614. if (this.negative === 0 && num.negative !== 0) {
  3615. res = this.divmod(num.neg(), mode);
  3616. if (mode !== 'mod') {
  3617. div = res.div.neg();
  3618. }
  3619. return {
  3620. div: div,
  3621. mod: res.mod
  3622. };
  3623. }
  3624. if ((this.negative & num.negative) !== 0) {
  3625. res = this.neg().divmod(num.neg(), mode);
  3626. if (mode !== 'div') {
  3627. mod = res.mod.neg();
  3628. if (positive && mod.negative !== 0) {
  3629. mod.isub(num);
  3630. }
  3631. }
  3632. return {
  3633. div: res.div,
  3634. mod: mod
  3635. };
  3636. }
  3637. // Both numbers are positive at this point
  3638. // Strip both numbers to approximate shift value
  3639. if (num.length > this.length || this.cmp(num) < 0) {
  3640. return {
  3641. div: new BN(0),
  3642. mod: this
  3643. };
  3644. }
  3645. // Very short reduction
  3646. if (num.length === 1) {
  3647. if (mode === 'div') {
  3648. return {
  3649. div: this.divn(num.words[0]),
  3650. mod: null
  3651. };
  3652. }
  3653. if (mode === 'mod') {
  3654. return {
  3655. div: null,
  3656. mod: new BN(this.modn(num.words[0]))
  3657. };
  3658. }
  3659. return {
  3660. div: this.divn(num.words[0]),
  3661. mod: new BN(this.modn(num.words[0]))
  3662. };
  3663. }
  3664. return this._wordDiv(num, mode);
  3665. };
  3666. // Find `this` / `num`
  3667. BN.prototype.div = function div (num) {
  3668. return this.divmod(num, 'div', false).div;
  3669. };
  3670. // Find `this` % `num`
  3671. BN.prototype.mod = function mod (num) {
  3672. return this.divmod(num, 'mod', false).mod;
  3673. };
  3674. BN.prototype.umod = function umod (num) {
  3675. return this.divmod(num, 'mod', true).mod;
  3676. };
  3677. // Find Round(`this` / `num`)
  3678. BN.prototype.divRound = function divRound (num) {
  3679. var dm = this.divmod(num);
  3680. // Fast case - exact division
  3681. if (dm.mod.isZero()) return dm.div;
  3682. var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
  3683. var half = num.ushrn(1);
  3684. var r2 = num.andln(1);
  3685. var cmp = mod.cmp(half);
  3686. // Round down
  3687. if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
  3688. // Round up
  3689. return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
  3690. };
  3691. BN.prototype.modn = function modn (num) {
  3692. assert(num <= 0x3ffffff);
  3693. var p = (1 << 26) % num;
  3694. var acc = 0;
  3695. for (var i = this.length - 1; i >= 0; i--) {
  3696. acc = (p * acc + (this.words[i] | 0)) % num;
  3697. }
  3698. return acc;
  3699. };
  3700. // In-place division by number
  3701. BN.prototype.idivn = function idivn (num) {
  3702. assert(num <= 0x3ffffff);
  3703. var carry = 0;
  3704. for (var i = this.length - 1; i >= 0; i--) {
  3705. var w = (this.words[i] | 0) + carry * 0x4000000;
  3706. this.words[i] = (w / num) | 0;
  3707. carry = w % num;
  3708. }
  3709. return this.strip();
  3710. };
  3711. BN.prototype.divn = function divn (num) {
  3712. return this.clone().idivn(num);
  3713. };
  3714. BN.prototype.egcd = function egcd (p) {
  3715. assert(p.negative === 0);
  3716. assert(!p.isZero());
  3717. var x = this;
  3718. var y = p.clone();
  3719. if (x.negative !== 0) {
  3720. x = x.umod(p);
  3721. } else {
  3722. x = x.clone();
  3723. }
  3724. // A * x + B * y = x
  3725. var A = new BN(1);
  3726. var B = new BN(0);
  3727. // C * x + D * y = y
  3728. var C = new BN(0);
  3729. var D = new BN(1);
  3730. var g = 0;
  3731. while (x.isEven() && y.isEven()) {
  3732. x.iushrn(1);
  3733. y.iushrn(1);
  3734. ++g;
  3735. }
  3736. var yp = y.clone();
  3737. var xp = x.clone();
  3738. while (!x.isZero()) {
  3739. for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
  3740. if (i > 0) {
  3741. x.iushrn(i);
  3742. while (i-- > 0) {
  3743. if (A.isOdd() || B.isOdd()) {
  3744. A.iadd(yp);
  3745. B.isub(xp);
  3746. }
  3747. A.iushrn(1);
  3748. B.iushrn(1);
  3749. }
  3750. }
  3751. for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
  3752. if (j > 0) {
  3753. y.iushrn(j);
  3754. while (j-- > 0) {
  3755. if (C.isOdd() || D.isOdd()) {
  3756. C.iadd(yp);
  3757. D.isub(xp);
  3758. }
  3759. C.iushrn(1);
  3760. D.iushrn(1);
  3761. }
  3762. }
  3763. if (x.cmp(y) >= 0) {
  3764. x.isub(y);
  3765. A.isub(C);
  3766. B.isub(D);
  3767. } else {
  3768. y.isub(x);
  3769. C.isub(A);
  3770. D.isub(B);
  3771. }
  3772. }
  3773. return {
  3774. a: C,
  3775. b: D,
  3776. gcd: y.iushln(g)
  3777. };
  3778. };
  3779. // This is reduced incarnation of the binary EEA
  3780. // above, designated to invert members of the
  3781. // _prime_ fields F(p) at a maximal speed
  3782. BN.prototype._invmp = function _invmp (p) {
  3783. assert(p.negative === 0);
  3784. assert(!p.isZero());
  3785. var a = this;
  3786. var b = p.clone();
  3787. if (a.negative !== 0) {
  3788. a = a.umod(p);
  3789. } else {
  3790. a = a.clone();
  3791. }
  3792. var x1 = new BN(1);
  3793. var x2 = new BN(0);
  3794. var delta = b.clone();
  3795. while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
  3796. for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
  3797. if (i > 0) {
  3798. a.iushrn(i);
  3799. while (i-- > 0) {
  3800. if (x1.isOdd()) {
  3801. x1.iadd(delta);
  3802. }
  3803. x1.iushrn(1);
  3804. }
  3805. }
  3806. for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
  3807. if (j > 0) {
  3808. b.iushrn(j);
  3809. while (j-- > 0) {
  3810. if (x2.isOdd()) {
  3811. x2.iadd(delta);
  3812. }
  3813. x2.iushrn(1);
  3814. }
  3815. }
  3816. if (a.cmp(b) >= 0) {
  3817. a.isub(b);
  3818. x1.isub(x2);
  3819. } else {
  3820. b.isub(a);
  3821. x2.isub(x1);
  3822. }
  3823. }
  3824. var res;
  3825. if (a.cmpn(1) === 0) {
  3826. res = x1;
  3827. } else {
  3828. res = x2;
  3829. }
  3830. if (res.cmpn(0) < 0) {
  3831. res.iadd(p);
  3832. }
  3833. return res;
  3834. };
  3835. BN.prototype.gcd = function gcd (num) {
  3836. if (this.isZero()) return num.abs();
  3837. if (num.isZero()) return this.abs();
  3838. var a = this.clone();
  3839. var b = num.clone();
  3840. a.negative = 0;
  3841. b.negative = 0;
  3842. // Remove common factor of two
  3843. for (var shift = 0; a.isEven() && b.isEven(); shift++) {
  3844. a.iushrn(1);
  3845. b.iushrn(1);
  3846. }
  3847. do {
  3848. while (a.isEven()) {
  3849. a.iushrn(1);
  3850. }
  3851. while (b.isEven()) {
  3852. b.iushrn(1);
  3853. }
  3854. var r = a.cmp(b);
  3855. if (r < 0) {
  3856. // Swap `a` and `b` to make `a` always bigger than `b`
  3857. var t = a;
  3858. a = b;
  3859. b = t;
  3860. } else if (r === 0 || b.cmpn(1) === 0) {
  3861. break;
  3862. }
  3863. a.isub(b);
  3864. } while (true);
  3865. return b.iushln(shift);
  3866. };
  3867. // Invert number in the field F(num)
  3868. BN.prototype.invm = function invm (num) {
  3869. return this.egcd(num).a.umod(num);
  3870. };
  3871. BN.prototype.isEven = function isEven () {
  3872. return (this.words[0] & 1) === 0;
  3873. };
  3874. BN.prototype.isOdd = function isOdd () {
  3875. return (this.words[0] & 1) === 1;
  3876. };
  3877. // And first word and num
  3878. BN.prototype.andln = function andln (num) {
  3879. return this.words[0] & num;
  3880. };
  3881. // Increment at the bit position in-line
  3882. BN.prototype.bincn = function bincn (bit) {
  3883. assert(typeof bit === 'number');
  3884. var r = bit % 26;
  3885. var s = (bit - r) / 26;
  3886. var q = 1 << r;
  3887. // Fast case: bit is much higher than all existing words
  3888. if (this.length <= s) {
  3889. this._expand(s + 1);
  3890. this.words[s] |= q;
  3891. return this;
  3892. }
  3893. // Add bit and propagate, if needed
  3894. var carry = q;
  3895. for (var i = s; carry !== 0 && i < this.length; i++) {
  3896. var w = this.words[i] | 0;
  3897. w += carry;
  3898. carry = w >>> 26;
  3899. w &= 0x3ffffff;
  3900. this.words[i] = w;
  3901. }
  3902. if (carry !== 0) {
  3903. this.words[i] = carry;
  3904. this.length++;
  3905. }
  3906. return this;
  3907. };
  3908. BN.prototype.isZero = function isZero () {
  3909. return this.length === 1 && this.words[0] === 0;
  3910. };
  3911. BN.prototype.cmpn = function cmpn (num) {
  3912. var negative = num < 0;
  3913. if (this.negative !== 0 && !negative) return -1;
  3914. if (this.negative === 0 && negative) return 1;
  3915. this.strip();
  3916. var res;
  3917. if (this.length > 1) {
  3918. res = 1;
  3919. } else {
  3920. if (negative) {
  3921. num = -num;
  3922. }
  3923. assert(num <= 0x3ffffff, 'Number is too big');
  3924. var w = this.words[0] | 0;
  3925. res = w === num ? 0 : w < num ? -1 : 1;
  3926. }
  3927. if (this.negative !== 0) return -res | 0;
  3928. return res;
  3929. };
  3930. // Compare two numbers and return:
  3931. // 1 - if `this` > `num`
  3932. // 0 - if `this` == `num`
  3933. // -1 - if `this` < `num`
  3934. BN.prototype.cmp = function cmp (num) {
  3935. if (this.negative !== 0 && num.negative === 0) return -1;
  3936. if (this.negative === 0 && num.negative !== 0) return 1;
  3937. var res = this.ucmp(num);
  3938. if (this.negative !== 0) return -res | 0;
  3939. return res;
  3940. };
  3941. // Unsigned comparison
  3942. BN.prototype.ucmp = function ucmp (num) {
  3943. // At this point both numbers have the same sign
  3944. if (this.length > num.length) return 1;
  3945. if (this.length < num.length) return -1;
  3946. var res = 0;
  3947. for (var i = this.length - 1; i >= 0; i--) {
  3948. var a = this.words[i] | 0;
  3949. var b = num.words[i] | 0;
  3950. if (a === b) continue;
  3951. if (a < b) {
  3952. res = -1;
  3953. } else if (a > b) {
  3954. res = 1;
  3955. }
  3956. break;
  3957. }
  3958. return res;
  3959. };
  3960. BN.prototype.gtn = function gtn (num) {
  3961. return this.cmpn(num) === 1;
  3962. };
  3963. BN.prototype.gt = function gt (num) {
  3964. return this.cmp(num) === 1;
  3965. };
  3966. BN.prototype.gten = function gten (num) {
  3967. return this.cmpn(num) >= 0;
  3968. };
  3969. BN.prototype.gte = function gte (num) {
  3970. return this.cmp(num) >= 0;
  3971. };
  3972. BN.prototype.ltn = function ltn (num) {
  3973. return this.cmpn(num) === -1;
  3974. };
  3975. BN.prototype.lt = function lt (num) {
  3976. return this.cmp(num) === -1;
  3977. };
  3978. BN.prototype.lten = function lten (num) {
  3979. return this.cmpn(num) <= 0;
  3980. };
  3981. BN.prototype.lte = function lte (num) {
  3982. return this.cmp(num) <= 0;
  3983. };
  3984. BN.prototype.eqn = function eqn (num) {
  3985. return this.cmpn(num) === 0;
  3986. };
  3987. BN.prototype.eq = function eq (num) {
  3988. return this.cmp(num) === 0;
  3989. };
  3990. //
  3991. // A reduce context, could be using montgomery or something better, depending
  3992. // on the `m` itself.
  3993. //
  3994. BN.red = function red (num) {
  3995. return new Red(num);
  3996. };
  3997. BN.prototype.toRed = function toRed (ctx) {
  3998. assert(!this.red, 'Already a number in reduction context');
  3999. assert(this.negative === 0, 'red works only with positives');
  4000. return ctx.convertTo(this)._forceRed(ctx);
  4001. };
  4002. BN.prototype.fromRed = function fromRed () {
  4003. assert(this.red, 'fromRed works only with numbers in reduction context');
  4004. return this.red.convertFrom(this);
  4005. };
  4006. BN.prototype._forceRed = function _forceRed (ctx) {
  4007. this.red = ctx;
  4008. return this;
  4009. };
  4010. BN.prototype.forceRed = function forceRed (ctx) {
  4011. assert(!this.red, 'Already a number in reduction context');
  4012. return this._forceRed(ctx);
  4013. };
  4014. BN.prototype.redAdd = function redAdd (num) {
  4015. assert(this.red, 'redAdd works only with red numbers');
  4016. return this.red.add(this, num);
  4017. };
  4018. BN.prototype.redIAdd = function redIAdd (num) {
  4019. assert(this.red, 'redIAdd works only with red numbers');
  4020. return this.red.iadd(this, num);
  4021. };
  4022. BN.prototype.redSub = function redSub (num) {
  4023. assert(this.red, 'redSub works only with red numbers');
  4024. return this.red.sub(this, num);
  4025. };
  4026. BN.prototype.redISub = function redISub (num) {
  4027. assert(this.red, 'redISub works only with red numbers');
  4028. return this.red.isub(this, num);
  4029. };
  4030. BN.prototype.redShl = function redShl (num) {
  4031. assert(this.red, 'redShl works only with red numbers');
  4032. return this.red.shl(this, num);
  4033. };
  4034. BN.prototype.redMul = function redMul (num) {
  4035. assert(this.red, 'redMul works only with red numbers');
  4036. this.red._verify2(this, num);
  4037. return this.red.mul(this, num);
  4038. };
  4039. BN.prototype.redIMul = function redIMul (num) {
  4040. assert(this.red, 'redMul works only with red numbers');
  4041. this.red._verify2(this, num);
  4042. return this.red.imul(this, num);
  4043. };
  4044. BN.prototype.redSqr = function redSqr () {
  4045. assert(this.red, 'redSqr works only with red numbers');
  4046. this.red._verify1(this);
  4047. return this.red.sqr(this);
  4048. };
  4049. BN.prototype.redISqr = function redISqr () {
  4050. assert(this.red, 'redISqr works only with red numbers');
  4051. this.red._verify1(this);
  4052. return this.red.isqr(this);
  4053. };
  4054. // Square root over p
  4055. BN.prototype.redSqrt = function redSqrt () {
  4056. assert(this.red, 'redSqrt works only with red numbers');
  4057. this.red._verify1(this);
  4058. return this.red.sqrt(this);
  4059. };
  4060. BN.prototype.redInvm = function redInvm () {
  4061. assert(this.red, 'redInvm works only with red numbers');
  4062. this.red._verify1(this);
  4063. return this.red.invm(this);
  4064. };
  4065. // Return negative clone of `this` % `red modulo`
  4066. BN.prototype.redNeg = function redNeg () {
  4067. assert(this.red, 'redNeg works only with red numbers');
  4068. this.red._verify1(this);
  4069. return this.red.neg(this);
  4070. };
  4071. BN.prototype.redPow = function redPow (num) {
  4072. assert(this.red && !num.red, 'redPow(normalNum)');
  4073. this.red._verify1(this);
  4074. return this.red.pow(this, num);
  4075. };
  4076. // Prime numbers with efficient reduction
  4077. var primes = {
  4078. k256: null,
  4079. p224: null,
  4080. p192: null,
  4081. p25519: null
  4082. };
  4083. // Pseudo-Mersenne prime
  4084. function MPrime (name, p) {
  4085. // P = 2 ^ N - K
  4086. this.name = name;
  4087. this.p = new BN(p, 16);
  4088. this.n = this.p.bitLength();
  4089. this.k = new BN(1).iushln(this.n).isub(this.p);
  4090. this.tmp = this._tmp();
  4091. }
  4092. MPrime.prototype._tmp = function _tmp () {
  4093. var tmp = new BN(null);
  4094. tmp.words = new Array(Math.ceil(this.n / 13));
  4095. return tmp;
  4096. };
  4097. MPrime.prototype.ireduce = function ireduce (num) {
  4098. // Assumes that `num` is less than `P^2`
  4099. // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
  4100. var r = num;
  4101. var rlen;
  4102. do {
  4103. this.split(r, this.tmp);
  4104. r = this.imulK(r);
  4105. r = r.iadd(this.tmp);
  4106. rlen = r.bitLength();
  4107. } while (rlen > this.n);
  4108. var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
  4109. if (cmp === 0) {
  4110. r.words[0] = 0;
  4111. r.length = 1;
  4112. } else if (cmp > 0) {
  4113. r.isub(this.p);
  4114. } else {
  4115. r.strip();
  4116. }
  4117. return r;
  4118. };
  4119. MPrime.prototype.split = function split (input, out) {
  4120. input.iushrn(this.n, 0, out);
  4121. };
  4122. MPrime.prototype.imulK = function imulK (num) {
  4123. return num.imul(this.k);
  4124. };
  4125. function K256 () {
  4126. MPrime.call(
  4127. this,
  4128. 'k256',
  4129. 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
  4130. }
  4131. inherits(K256, MPrime);
  4132. K256.prototype.split = function split (input, output) {
  4133. // 256 = 9 * 26 + 22
  4134. var mask = 0x3fffff;
  4135. var outLen = Math.min(input.length, 9);
  4136. for (var i = 0; i < outLen; i++) {
  4137. output.words[i] = input.words[i];
  4138. }
  4139. output.length = outLen;
  4140. if (input.length <= 9) {
  4141. input.words[0] = 0;
  4142. input.length = 1;
  4143. return;
  4144. }
  4145. // Shift by 9 limbs
  4146. var prev = input.words[9];
  4147. output.words[output.length++] = prev & mask;
  4148. for (i = 10; i < input.length; i++) {
  4149. var next = input.words[i] | 0;
  4150. input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
  4151. prev = next;
  4152. }
  4153. prev >>>= 22;
  4154. input.words[i - 10] = prev;
  4155. if (prev === 0 && input.length > 10) {
  4156. input.length -= 10;
  4157. } else {
  4158. input.length -= 9;
  4159. }
  4160. };
  4161. K256.prototype.imulK = function imulK (num) {
  4162. // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
  4163. num.words[num.length] = 0;
  4164. num.words[num.length + 1] = 0;
  4165. num.length += 2;
  4166. // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
  4167. var lo = 0;
  4168. for (var i = 0; i < num.length; i++) {
  4169. var w = num.words[i] | 0;
  4170. lo += w * 0x3d1;
  4171. num.words[i] = lo & 0x3ffffff;
  4172. lo = w * 0x40 + ((lo / 0x4000000) | 0);
  4173. }
  4174. // Fast length reduction
  4175. if (num.words[num.length - 1] === 0) {
  4176. num.length--;
  4177. if (num.words[num.length - 1] === 0) {
  4178. num.length--;
  4179. }
  4180. }
  4181. return num;
  4182. };
  4183. function P224 () {
  4184. MPrime.call(
  4185. this,
  4186. 'p224',
  4187. 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
  4188. }
  4189. inherits(P224, MPrime);
  4190. function P192 () {
  4191. MPrime.call(
  4192. this,
  4193. 'p192',
  4194. 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
  4195. }
  4196. inherits(P192, MPrime);
  4197. function P25519 () {
  4198. // 2 ^ 255 - 19
  4199. MPrime.call(
  4200. this,
  4201. '25519',
  4202. '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
  4203. }
  4204. inherits(P25519, MPrime);
  4205. P25519.prototype.imulK = function imulK (num) {
  4206. // K = 0x13
  4207. var carry = 0;
  4208. for (var i = 0; i < num.length; i++) {
  4209. var hi = (num.words[i] | 0) * 0x13 + carry;
  4210. var lo = hi & 0x3ffffff;
  4211. hi >>>= 26;
  4212. num.words[i] = lo;
  4213. carry = hi;
  4214. }
  4215. if (carry !== 0) {
  4216. num.words[num.length++] = carry;
  4217. }
  4218. return num;
  4219. };
  4220. // Exported mostly for testing purposes, use plain name instead
  4221. BN._prime = function prime (name) {
  4222. // Cached version of prime
  4223. if (primes[name]) return primes[name];
  4224. var prime;
  4225. if (name === 'k256') {
  4226. prime = new K256();
  4227. } else if (name === 'p224') {
  4228. prime = new P224();
  4229. } else if (name === 'p192') {
  4230. prime = new P192();
  4231. } else if (name === 'p25519') {
  4232. prime = new P25519();
  4233. } else {
  4234. throw new Error('Unknown prime ' + name);
  4235. }
  4236. primes[name] = prime;
  4237. return prime;
  4238. };
  4239. //
  4240. // Base reduction engine
  4241. //
  4242. function Red (m) {
  4243. if (typeof m === 'string') {
  4244. var prime = BN._prime(m);
  4245. this.m = prime.p;
  4246. this.prime = prime;
  4247. } else {
  4248. assert(m.gtn(1), 'modulus must be greater than 1');
  4249. this.m = m;
  4250. this.prime = null;
  4251. }
  4252. }
  4253. Red.prototype._verify1 = function _verify1 (a) {
  4254. assert(a.negative === 0, 'red works only with positives');
  4255. assert(a.red, 'red works only with red numbers');
  4256. };
  4257. Red.prototype._verify2 = function _verify2 (a, b) {
  4258. assert((a.negative | b.negative) === 0, 'red works only with positives');
  4259. assert(a.red && a.red === b.red,
  4260. 'red works only with red numbers');
  4261. };
  4262. Red.prototype.imod = function imod (a) {
  4263. if (this.prime) return this.prime.ireduce(a)._forceRed(this);
  4264. return a.umod(this.m)._forceRed(this);
  4265. };
  4266. Red.prototype.neg = function neg (a) {
  4267. if (a.isZero()) {
  4268. return a.clone();
  4269. }
  4270. return this.m.sub(a)._forceRed(this);
  4271. };
  4272. Red.prototype.add = function add (a, b) {
  4273. this._verify2(a, b);
  4274. var res = a.add(b);
  4275. if (res.cmp(this.m) >= 0) {
  4276. res.isub(this.m);
  4277. }
  4278. return res._forceRed(this);
  4279. };
  4280. Red.prototype.iadd = function iadd (a, b) {
  4281. this._verify2(a, b);
  4282. var res = a.iadd(b);
  4283. if (res.cmp(this.m) >= 0) {
  4284. res.isub(this.m);
  4285. }
  4286. return res;
  4287. };
  4288. Red.prototype.sub = function sub (a, b) {
  4289. this._verify2(a, b);
  4290. var res = a.sub(b);
  4291. if (res.cmpn(0) < 0) {
  4292. res.iadd(this.m);
  4293. }
  4294. return res._forceRed(this);
  4295. };
  4296. Red.prototype.isub = function isub (a, b) {
  4297. this._verify2(a, b);
  4298. var res = a.isub(b);
  4299. if (res.cmpn(0) < 0) {
  4300. res.iadd(this.m);
  4301. }
  4302. return res;
  4303. };
  4304. Red.prototype.shl = function shl (a, num) {
  4305. this._verify1(a);
  4306. return this.imod(a.ushln(num));
  4307. };
  4308. Red.prototype.imul = function imul (a, b) {
  4309. this._verify2(a, b);
  4310. return this.imod(a.imul(b));
  4311. };
  4312. Red.prototype.mul = function mul (a, b) {
  4313. this._verify2(a, b);
  4314. return this.imod(a.mul(b));
  4315. };
  4316. Red.prototype.isqr = function isqr (a) {
  4317. return this.imul(a, a.clone());
  4318. };
  4319. Red.prototype.sqr = function sqr (a) {
  4320. return this.mul(a, a);
  4321. };
  4322. Red.prototype.sqrt = function sqrt (a) {
  4323. if (a.isZero()) return a.clone();
  4324. var mod3 = this.m.andln(3);
  4325. assert(mod3 % 2 === 1);
  4326. // Fast case
  4327. if (mod3 === 3) {
  4328. var pow = this.m.add(new BN(1)).iushrn(2);
  4329. return this.pow(a, pow);
  4330. }
  4331. // Tonelli-Shanks algorithm (Totally unoptimized and slow)
  4332. //
  4333. // Find Q and S, that Q * 2 ^ S = (P - 1)
  4334. var q = this.m.subn(1);
  4335. var s = 0;
  4336. while (!q.isZero() && q.andln(1) === 0) {
  4337. s++;
  4338. q.iushrn(1);
  4339. }
  4340. assert(!q.isZero());
  4341. var one = new BN(1).toRed(this);
  4342. var nOne = one.redNeg();
  4343. // Find quadratic non-residue
  4344. // NOTE: Max is such because of generalized Riemann hypothesis.
  4345. var lpow = this.m.subn(1).iushrn(1);
  4346. var z = this.m.bitLength();
  4347. z = new BN(2 * z * z).toRed(this);
  4348. while (this.pow(z, lpow).cmp(nOne) !== 0) {
  4349. z.redIAdd(nOne);
  4350. }
  4351. var c = this.pow(z, q);
  4352. var r = this.pow(a, q.addn(1).iushrn(1));
  4353. var t = this.pow(a, q);
  4354. var m = s;
  4355. while (t.cmp(one) !== 0) {
  4356. var tmp = t;
  4357. for (var i = 0; tmp.cmp(one) !== 0; i++) {
  4358. tmp = tmp.redSqr();
  4359. }
  4360. assert(i < m);
  4361. var b = this.pow(c, new BN(1).iushln(m - i - 1));
  4362. r = r.redMul(b);
  4363. c = b.redSqr();
  4364. t = t.redMul(c);
  4365. m = i;
  4366. }
  4367. return r;
  4368. };
  4369. Red.prototype.invm = function invm (a) {
  4370. var inv = a._invmp(this.m);
  4371. if (inv.negative !== 0) {
  4372. inv.negative = 0;
  4373. return this.imod(inv).redNeg();
  4374. } else {
  4375. return this.imod(inv);
  4376. }
  4377. };
  4378. Red.prototype.pow = function pow (a, num) {
  4379. if (num.isZero()) return new BN(1).toRed(this);
  4380. if (num.cmpn(1) === 0) return a.clone();
  4381. var windowSize = 4;
  4382. var wnd = new Array(1 << windowSize);
  4383. wnd[0] = new BN(1).toRed(this);
  4384. wnd[1] = a;
  4385. for (var i = 2; i < wnd.length; i++) {
  4386. wnd[i] = this.mul(wnd[i - 1], a);
  4387. }
  4388. var res = wnd[0];
  4389. var current = 0;
  4390. var currentLen = 0;
  4391. var start = num.bitLength() % 26;
  4392. if (start === 0) {
  4393. start = 26;
  4394. }
  4395. for (i = num.length - 1; i >= 0; i--) {
  4396. var word = num.words[i];
  4397. for (var j = start - 1; j >= 0; j--) {
  4398. var bit = (word >> j) & 1;
  4399. if (res !== wnd[0]) {
  4400. res = this.sqr(res);
  4401. }
  4402. if (bit === 0 && current === 0) {
  4403. currentLen = 0;
  4404. continue;
  4405. }
  4406. current <<= 1;
  4407. current |= bit;
  4408. currentLen++;
  4409. if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
  4410. res = this.mul(res, wnd[current]);
  4411. currentLen = 0;
  4412. current = 0;
  4413. }
  4414. start = 26;
  4415. }
  4416. return res;
  4417. };
  4418. Red.prototype.convertTo = function convertTo (num) {
  4419. var r = num.umod(this.m);
  4420. return r === num ? r.clone() : r;
  4421. };
  4422. Red.prototype.convertFrom = function convertFrom (num) {
  4423. var res = num.clone();
  4424. res.red = null;
  4425. return res;
  4426. };
  4427. //
  4428. // Montgomery method engine
  4429. //
  4430. BN.mont = function mont (num) {
  4431. return new Mont(num);
  4432. };
  4433. function Mont (m) {
  4434. Red.call(this, m);
  4435. this.shift = this.m.bitLength();
  4436. if (this.shift % 26 !== 0) {
  4437. this.shift += 26 - (this.shift % 26);
  4438. }
  4439. this.r = new BN(1).iushln(this.shift);
  4440. this.r2 = this.imod(this.r.sqr());
  4441. this.rinv = this.r._invmp(this.m);
  4442. this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
  4443. this.minv = this.minv.umod(this.r);
  4444. this.minv = this.r.sub(this.minv);
  4445. }
  4446. inherits(Mont, Red);
  4447. Mont.prototype.convertTo = function convertTo (num) {
  4448. return this.imod(num.ushln(this.shift));
  4449. };
  4450. Mont.prototype.convertFrom = function convertFrom (num) {
  4451. var r = this.imod(num.mul(this.rinv));
  4452. r.red = null;
  4453. return r;
  4454. };
  4455. Mont.prototype.imul = function imul (a, b) {
  4456. if (a.isZero() || b.isZero()) {
  4457. a.words[0] = 0;
  4458. a.length = 1;
  4459. return a;
  4460. }
  4461. var t = a.imul(b);
  4462. var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
  4463. var u = t.isub(c).iushrn(this.shift);
  4464. var res = u;
  4465. if (u.cmp(this.m) >= 0) {
  4466. res = u.isub(this.m);
  4467. } else if (u.cmpn(0) < 0) {
  4468. res = u.iadd(this.m);
  4469. }
  4470. return res._forceRed(this);
  4471. };
  4472. Mont.prototype.mul = function mul (a, b) {
  4473. if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
  4474. var t = a.mul(b);
  4475. var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
  4476. var u = t.isub(c).iushrn(this.shift);
  4477. var res = u;
  4478. if (u.cmp(this.m) >= 0) {
  4479. res = u.isub(this.m);
  4480. } else if (u.cmpn(0) < 0) {
  4481. res = u.iadd(this.m);
  4482. }
  4483. return res._forceRed(this);
  4484. };
  4485. Mont.prototype.invm = function invm (a) {
  4486. // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
  4487. var res = this.imod(a._invmp(this.m).mul(this.r2));
  4488. return res._forceRed(this);
  4489. };
  4490. })(typeof module === 'undefined' || module, this);
  4491. },{"buffer":27}],26:[function(require,module,exports){
  4492. var r;
  4493. module.exports = function rand(len) {
  4494. if (!r)
  4495. r = new Rand(null);
  4496. return r.generate(len);
  4497. };
  4498. function Rand(rand) {
  4499. this.rand = rand;
  4500. }
  4501. module.exports.Rand = Rand;
  4502. Rand.prototype.generate = function generate(len) {
  4503. return this._rand(len);
  4504. };
  4505. // Emulate crypto API using randy
  4506. Rand.prototype._rand = function _rand(n) {
  4507. if (this.rand.getBytes)
  4508. return this.rand.getBytes(n);
  4509. var res = new Uint8Array(n);
  4510. for (var i = 0; i < res.length; i++)
  4511. res[i] = this.rand.getByte();
  4512. return res;
  4513. };
  4514. if (typeof self === 'object') {
  4515. if (self.crypto && self.crypto.getRandomValues) {
  4516. // Modern browsers
  4517. Rand.prototype._rand = function _rand(n) {
  4518. var arr = new Uint8Array(n);
  4519. self.crypto.getRandomValues(arr);
  4520. return arr;
  4521. };
  4522. } else if (self.msCrypto && self.msCrypto.getRandomValues) {
  4523. // IE
  4524. Rand.prototype._rand = function _rand(n) {
  4525. var arr = new Uint8Array(n);
  4526. self.msCrypto.getRandomValues(arr);
  4527. return arr;
  4528. };
  4529. // Safari's WebWorkers do not have `crypto`
  4530. } else if (typeof window === 'object') {
  4531. // Old junk
  4532. Rand.prototype._rand = function() {
  4533. throw new Error('Not implemented yet');
  4534. };
  4535. }
  4536. } else {
  4537. // Node.js or Web worker with no crypto support
  4538. try {
  4539. var crypto = require('crypto');
  4540. if (typeof crypto.randomBytes !== 'function')
  4541. throw new Error('Not supported');
  4542. Rand.prototype._rand = function _rand(n) {
  4543. return crypto.randomBytes(n);
  4544. };
  4545. } catch (e) {
  4546. }
  4547. }
  4548. },{"crypto":27}],27:[function(require,module,exports){
  4549. arguments[4][9][0].apply(exports,arguments)
  4550. },{"dup":9}],28:[function(require,module,exports){
  4551. (function (Buffer){
  4552. // based on the aes implimentation in triple sec
  4553. // https://github.com/keybase/triplesec
  4554. // which is in turn based on the one from crypto-js
  4555. // https://code.google.com/p/crypto-js/
  4556. var uint_max = Math.pow(2, 32)
  4557. function fixup_uint32 (x) {
  4558. var ret, x_pos
  4559. ret = x > uint_max || x < 0 ? (x_pos = Math.abs(x) % uint_max, x < 0 ? uint_max - x_pos : x_pos) : x
  4560. return ret
  4561. }
  4562. function scrub_vec (v) {
  4563. for (var i = 0; i < v.length; v++) {
  4564. v[i] = 0
  4565. }
  4566. return false
  4567. }
  4568. function Global () {
  4569. this.SBOX = []
  4570. this.INV_SBOX = []
  4571. this.SUB_MIX = [[], [], [], []]
  4572. this.INV_SUB_MIX = [[], [], [], []]
  4573. this.init()
  4574. this.RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]
  4575. }
  4576. Global.prototype.init = function () {
  4577. var d, i, sx, t, x, x2, x4, x8, xi, _i
  4578. d = (function () {
  4579. var _i, _results
  4580. _results = []
  4581. for (i = _i = 0; _i < 256; i = ++_i) {
  4582. if (i < 128) {
  4583. _results.push(i << 1)
  4584. } else {
  4585. _results.push((i << 1) ^ 0x11b)
  4586. }
  4587. }
  4588. return _results
  4589. })()
  4590. x = 0
  4591. xi = 0
  4592. for (i = _i = 0; _i < 256; i = ++_i) {
  4593. sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)
  4594. sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63
  4595. this.SBOX[x] = sx
  4596. this.INV_SBOX[sx] = x
  4597. x2 = d[x]
  4598. x4 = d[x2]
  4599. x8 = d[x4]
  4600. t = (d[sx] * 0x101) ^ (sx * 0x1010100)
  4601. this.SUB_MIX[0][x] = (t << 24) | (t >>> 8)
  4602. this.SUB_MIX[1][x] = (t << 16) | (t >>> 16)
  4603. this.SUB_MIX[2][x] = (t << 8) | (t >>> 24)
  4604. this.SUB_MIX[3][x] = t
  4605. t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)
  4606. this.INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)
  4607. this.INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)
  4608. this.INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)
  4609. this.INV_SUB_MIX[3][sx] = t
  4610. if (x === 0) {
  4611. x = xi = 1
  4612. } else {
  4613. x = x2 ^ d[d[d[x8 ^ x2]]]
  4614. xi ^= d[d[xi]]
  4615. }
  4616. }
  4617. return true
  4618. }
  4619. var G = new Global()
  4620. AES.blockSize = 4 * 4
  4621. AES.prototype.blockSize = AES.blockSize
  4622. AES.keySize = 256 / 8
  4623. AES.prototype.keySize = AES.keySize
  4624. function bufferToArray (buf) {
  4625. var len = buf.length / 4
  4626. var out = new Array(len)
  4627. var i = -1
  4628. while (++i < len) {
  4629. out[i] = buf.readUInt32BE(i * 4)
  4630. }
  4631. return out
  4632. }
  4633. function AES (key) {
  4634. this._key = bufferToArray(key)
  4635. this._doReset()
  4636. }
  4637. AES.prototype._doReset = function () {
  4638. var invKsRow, keySize, keyWords, ksRow, ksRows, t
  4639. keyWords = this._key
  4640. keySize = keyWords.length
  4641. this._nRounds = keySize + 6
  4642. ksRows = (this._nRounds + 1) * 4
  4643. this._keySchedule = []
  4644. for (ksRow = 0; ksRow < ksRows; ksRow++) {
  4645. this._keySchedule[ksRow] = ksRow < keySize ? keyWords[ksRow] : (t = this._keySchedule[ksRow - 1], (ksRow % keySize) === 0 ? (t = (t << 8) | (t >>> 24), t = (G.SBOX[t >>> 24] << 24) | (G.SBOX[(t >>> 16) & 0xff] << 16) | (G.SBOX[(t >>> 8) & 0xff] << 8) | G.SBOX[t & 0xff], t ^= G.RCON[(ksRow / keySize) | 0] << 24) : keySize > 6 && ksRow % keySize === 4 ? t = (G.SBOX[t >>> 24] << 24) | (G.SBOX[(t >>> 16) & 0xff] << 16) | (G.SBOX[(t >>> 8) & 0xff] << 8) | G.SBOX[t & 0xff] : void 0, this._keySchedule[ksRow - keySize] ^ t)
  4646. }
  4647. this._invKeySchedule = []
  4648. for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {
  4649. ksRow = ksRows - invKsRow
  4650. t = this._keySchedule[ksRow - (invKsRow % 4 ? 0 : 4)]
  4651. this._invKeySchedule[invKsRow] = invKsRow < 4 || ksRow <= 4 ? t : G.INV_SUB_MIX[0][G.SBOX[t >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[(t >>> 16) & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[(t >>> 8) & 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[t & 0xff]]
  4652. }
  4653. return true
  4654. }
  4655. AES.prototype.encryptBlock = function (M) {
  4656. M = bufferToArray(new Buffer(M))
  4657. var out = this._doCryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX)
  4658. var buf = new Buffer(16)
  4659. buf.writeUInt32BE(out[0], 0)
  4660. buf.writeUInt32BE(out[1], 4)
  4661. buf.writeUInt32BE(out[2], 8)
  4662. buf.writeUInt32BE(out[3], 12)
  4663. return buf
  4664. }
  4665. AES.prototype.decryptBlock = function (M) {
  4666. M = bufferToArray(new Buffer(M))
  4667. var temp = [M[3], M[1]]
  4668. M[1] = temp[0]
  4669. M[3] = temp[1]
  4670. var out = this._doCryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX)
  4671. var buf = new Buffer(16)
  4672. buf.writeUInt32BE(out[0], 0)
  4673. buf.writeUInt32BE(out[3], 4)
  4674. buf.writeUInt32BE(out[2], 8)
  4675. buf.writeUInt32BE(out[1], 12)
  4676. return buf
  4677. }
  4678. AES.prototype.scrub = function () {
  4679. scrub_vec(this._keySchedule)
  4680. scrub_vec(this._invKeySchedule)
  4681. scrub_vec(this._key)
  4682. }
  4683. AES.prototype._doCryptBlock = function (M, keySchedule, SUB_MIX, SBOX) {
  4684. var ksRow, s0, s1, s2, s3, t0, t1, t2, t3
  4685. s0 = M[0] ^ keySchedule[0]
  4686. s1 = M[1] ^ keySchedule[1]
  4687. s2 = M[2] ^ keySchedule[2]
  4688. s3 = M[3] ^ keySchedule[3]
  4689. ksRow = 4
  4690. for (var round = 1; round < this._nRounds; round++) {
  4691. t0 = SUB_MIX[0][s0 >>> 24] ^ SUB_MIX[1][(s1 >>> 16) & 0xff] ^ SUB_MIX[2][(s2 >>> 8) & 0xff] ^ SUB_MIX[3][s3 & 0xff] ^ keySchedule[ksRow++]
  4692. t1 = SUB_MIX[0][s1 >>> 24] ^ SUB_MIX[1][(s2 >>> 16) & 0xff] ^ SUB_MIX[2][(s3 >>> 8) & 0xff] ^ SUB_MIX[3][s0 & 0xff] ^ keySchedule[ksRow++]
  4693. t2 = SUB_MIX[0][s2 >>> 24] ^ SUB_MIX[1][(s3 >>> 16) & 0xff] ^ SUB_MIX[2][(s0 >>> 8) & 0xff] ^ SUB_MIX[3][s1 & 0xff] ^ keySchedule[ksRow++]
  4694. t3 = SUB_MIX[0][s3 >>> 24] ^ SUB_MIX[1][(s0 >>> 16) & 0xff] ^ SUB_MIX[2][(s1 >>> 8) & 0xff] ^ SUB_MIX[3][s2 & 0xff] ^ keySchedule[ksRow++]
  4695. s0 = t0
  4696. s1 = t1
  4697. s2 = t2
  4698. s3 = t3
  4699. }
  4700. t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]
  4701. t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]
  4702. t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]
  4703. t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]
  4704. return [
  4705. fixup_uint32(t0),
  4706. fixup_uint32(t1),
  4707. fixup_uint32(t2),
  4708. fixup_uint32(t3)
  4709. ]
  4710. }
  4711. exports.AES = AES
  4712. }).call(this,require("buffer").Buffer)
  4713. },{"buffer":54}],29:[function(require,module,exports){
  4714. (function (Buffer){
  4715. var aes = require('./aes')
  4716. var Transform = require('cipher-base')
  4717. var inherits = require('inherits')
  4718. var GHASH = require('./ghash')
  4719. var xor = require('buffer-xor')
  4720. inherits(StreamCipher, Transform)
  4721. module.exports = StreamCipher
  4722. function StreamCipher (mode, key, iv, decrypt) {
  4723. if (!(this instanceof StreamCipher)) {
  4724. return new StreamCipher(mode, key, iv)
  4725. }
  4726. Transform.call(this)
  4727. this._finID = Buffer.concat([iv, new Buffer([0, 0, 0, 1])])
  4728. iv = Buffer.concat([iv, new Buffer([0, 0, 0, 2])])
  4729. this._cipher = new aes.AES(key)
  4730. this._prev = new Buffer(iv.length)
  4731. this._cache = new Buffer('')
  4732. this._secCache = new Buffer('')
  4733. this._decrypt = decrypt
  4734. this._alen = 0
  4735. this._len = 0
  4736. iv.copy(this._prev)
  4737. this._mode = mode
  4738. var h = new Buffer(4)
  4739. h.fill(0)
  4740. this._ghash = new GHASH(this._cipher.encryptBlock(h))
  4741. this._authTag = null
  4742. this._called = false
  4743. }
  4744. StreamCipher.prototype._update = function (chunk) {
  4745. if (!this._called && this._alen) {
  4746. var rump = 16 - (this._alen % 16)
  4747. if (rump < 16) {
  4748. rump = new Buffer(rump)
  4749. rump.fill(0)
  4750. this._ghash.update(rump)
  4751. }
  4752. }
  4753. this._called = true
  4754. var out = this._mode.encrypt(this, chunk)
  4755. if (this._decrypt) {
  4756. this._ghash.update(chunk)
  4757. } else {
  4758. this._ghash.update(out)
  4759. }
  4760. this._len += chunk.length
  4761. return out
  4762. }
  4763. StreamCipher.prototype._final = function () {
  4764. if (this._decrypt && !this._authTag) {
  4765. throw new Error('Unsupported state or unable to authenticate data')
  4766. }
  4767. var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))
  4768. if (this._decrypt) {
  4769. if (xorTest(tag, this._authTag)) {
  4770. throw new Error('Unsupported state or unable to authenticate data')
  4771. }
  4772. } else {
  4773. this._authTag = tag
  4774. }
  4775. this._cipher.scrub()
  4776. }
  4777. StreamCipher.prototype.getAuthTag = function getAuthTag () {
  4778. if (!this._decrypt && Buffer.isBuffer(this._authTag)) {
  4779. return this._authTag
  4780. } else {
  4781. throw new Error('Attempting to get auth tag in unsupported state')
  4782. }
  4783. }
  4784. StreamCipher.prototype.setAuthTag = function setAuthTag (tag) {
  4785. if (this._decrypt) {
  4786. this._authTag = tag
  4787. } else {
  4788. throw new Error('Attempting to set auth tag in unsupported state')
  4789. }
  4790. }
  4791. StreamCipher.prototype.setAAD = function setAAD (buf) {
  4792. if (!this._called) {
  4793. this._ghash.update(buf)
  4794. this._alen += buf.length
  4795. } else {
  4796. throw new Error('Attempting to set AAD in unsupported state')
  4797. }
  4798. }
  4799. function xorTest (a, b) {
  4800. var out = 0
  4801. if (a.length !== b.length) {
  4802. out++
  4803. }
  4804. var len = Math.min(a.length, b.length)
  4805. var i = -1
  4806. while (++i < len) {
  4807. out += (a[i] ^ b[i])
  4808. }
  4809. return out
  4810. }
  4811. }).call(this,require("buffer").Buffer)
  4812. },{"./aes":28,"./ghash":33,"buffer":54,"buffer-xor":53,"cipher-base":55,"inherits":108}],30:[function(require,module,exports){
  4813. var ciphers = require('./encrypter')
  4814. exports.createCipher = exports.Cipher = ciphers.createCipher
  4815. exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv
  4816. var deciphers = require('./decrypter')
  4817. exports.createDecipher = exports.Decipher = deciphers.createDecipher
  4818. exports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv
  4819. var modes = require('./modes')
  4820. function getCiphers () {
  4821. return Object.keys(modes)
  4822. }
  4823. exports.listCiphers = exports.getCiphers = getCiphers
  4824. },{"./decrypter":31,"./encrypter":32,"./modes":34}],31:[function(require,module,exports){
  4825. (function (Buffer){
  4826. var aes = require('./aes')
  4827. var Transform = require('cipher-base')
  4828. var inherits = require('inherits')
  4829. var modes = require('./modes')
  4830. var StreamCipher = require('./streamCipher')
  4831. var AuthCipher = require('./authCipher')
  4832. var ebtk = require('evp_bytestokey')
  4833. inherits(Decipher, Transform)
  4834. function Decipher (mode, key, iv) {
  4835. if (!(this instanceof Decipher)) {
  4836. return new Decipher(mode, key, iv)
  4837. }
  4838. Transform.call(this)
  4839. this._cache = new Splitter()
  4840. this._last = void 0
  4841. this._cipher = new aes.AES(key)
  4842. this._prev = new Buffer(iv.length)
  4843. iv.copy(this._prev)
  4844. this._mode = mode
  4845. this._autopadding = true
  4846. }
  4847. Decipher.prototype._update = function (data) {
  4848. this._cache.add(data)
  4849. var chunk
  4850. var thing
  4851. var out = []
  4852. while ((chunk = this._cache.get(this._autopadding))) {
  4853. thing = this._mode.decrypt(this, chunk)
  4854. out.push(thing)
  4855. }
  4856. return Buffer.concat(out)
  4857. }
  4858. Decipher.prototype._final = function () {
  4859. var chunk = this._cache.flush()
  4860. if (this._autopadding) {
  4861. return unpad(this._mode.decrypt(this, chunk))
  4862. } else if (chunk) {
  4863. throw new Error('data not multiple of block length')
  4864. }
  4865. }
  4866. Decipher.prototype.setAutoPadding = function (setTo) {
  4867. this._autopadding = !!setTo
  4868. return this
  4869. }
  4870. function Splitter () {
  4871. if (!(this instanceof Splitter)) {
  4872. return new Splitter()
  4873. }
  4874. this.cache = new Buffer('')
  4875. }
  4876. Splitter.prototype.add = function (data) {
  4877. this.cache = Buffer.concat([this.cache, data])
  4878. }
  4879. Splitter.prototype.get = function (autoPadding) {
  4880. var out
  4881. if (autoPadding) {
  4882. if (this.cache.length > 16) {
  4883. out = this.cache.slice(0, 16)
  4884. this.cache = this.cache.slice(16)
  4885. return out
  4886. }
  4887. } else {
  4888. if (this.cache.length >= 16) {
  4889. out = this.cache.slice(0, 16)
  4890. this.cache = this.cache.slice(16)
  4891. return out
  4892. }
  4893. }
  4894. return null
  4895. }
  4896. Splitter.prototype.flush = function () {
  4897. if (this.cache.length) {
  4898. return this.cache
  4899. }
  4900. }
  4901. function unpad (last) {
  4902. var padded = last[15]
  4903. var i = -1
  4904. while (++i < padded) {
  4905. if (last[(i + (16 - padded))] !== padded) {
  4906. throw new Error('unable to decrypt data')
  4907. }
  4908. }
  4909. if (padded === 16) {
  4910. return
  4911. }
  4912. return last.slice(0, 16 - padded)
  4913. }
  4914. var modelist = {
  4915. ECB: require('./modes/ecb'),
  4916. CBC: require('./modes/cbc'),
  4917. CFB: require('./modes/cfb'),
  4918. CFB8: require('./modes/cfb8'),
  4919. CFB1: require('./modes/cfb1'),
  4920. OFB: require('./modes/ofb'),
  4921. CTR: require('./modes/ctr'),
  4922. GCM: require('./modes/ctr')
  4923. }
  4924. function createDecipheriv (suite, password, iv) {
  4925. var config = modes[suite.toLowerCase()]
  4926. if (!config) {
  4927. throw new TypeError('invalid suite type')
  4928. }
  4929. if (typeof iv === 'string') {
  4930. iv = new Buffer(iv)
  4931. }
  4932. if (typeof password === 'string') {
  4933. password = new Buffer(password)
  4934. }
  4935. if (password.length !== config.key / 8) {
  4936. throw new TypeError('invalid key length ' + password.length)
  4937. }
  4938. if (iv.length !== config.iv) {
  4939. throw new TypeError('invalid iv length ' + iv.length)
  4940. }
  4941. if (config.type === 'stream') {
  4942. return new StreamCipher(modelist[config.mode], password, iv, true)
  4943. } else if (config.type === 'auth') {
  4944. return new AuthCipher(modelist[config.mode], password, iv, true)
  4945. }
  4946. return new Decipher(modelist[config.mode], password, iv)
  4947. }
  4948. function createDecipher (suite, password) {
  4949. var config = modes[suite.toLowerCase()]
  4950. if (!config) {
  4951. throw new TypeError('invalid suite type')
  4952. }
  4953. var keys = ebtk(password, false, config.key, config.iv)
  4954. return createDecipheriv(suite, keys.key, keys.iv)
  4955. }
  4956. exports.createDecipher = createDecipher
  4957. exports.createDecipheriv = createDecipheriv
  4958. }).call(this,require("buffer").Buffer)
  4959. },{"./aes":28,"./authCipher":29,"./modes":34,"./modes/cbc":35,"./modes/cfb":36,"./modes/cfb1":37,"./modes/cfb8":38,"./modes/ctr":39,"./modes/ecb":40,"./modes/ofb":41,"./streamCipher":42,"buffer":54,"cipher-base":55,"evp_bytestokey":91,"inherits":108}],32:[function(require,module,exports){
  4960. (function (Buffer){
  4961. var aes = require('./aes')
  4962. var Transform = require('cipher-base')
  4963. var inherits = require('inherits')
  4964. var modes = require('./modes')
  4965. var ebtk = require('evp_bytestokey')
  4966. var StreamCipher = require('./streamCipher')
  4967. var AuthCipher = require('./authCipher')
  4968. inherits(Cipher, Transform)
  4969. function Cipher (mode, key, iv) {
  4970. if (!(this instanceof Cipher)) {
  4971. return new Cipher(mode, key, iv)
  4972. }
  4973. Transform.call(this)
  4974. this._cache = new Splitter()
  4975. this._cipher = new aes.AES(key)
  4976. this._prev = new Buffer(iv.length)
  4977. iv.copy(this._prev)
  4978. this._mode = mode
  4979. this._autopadding = true
  4980. }
  4981. Cipher.prototype._update = function (data) {
  4982. this._cache.add(data)
  4983. var chunk
  4984. var thing
  4985. var out = []
  4986. while ((chunk = this._cache.get())) {
  4987. thing = this._mode.encrypt(this, chunk)
  4988. out.push(thing)
  4989. }
  4990. return Buffer.concat(out)
  4991. }
  4992. Cipher.prototype._final = function () {
  4993. var chunk = this._cache.flush()
  4994. if (this._autopadding) {
  4995. chunk = this._mode.encrypt(this, chunk)
  4996. this._cipher.scrub()
  4997. return chunk
  4998. } else if (chunk.toString('hex') !== '10101010101010101010101010101010') {
  4999. this._cipher.scrub()
  5000. throw new Error('data not multiple of block length')
  5001. }
  5002. }
  5003. Cipher.prototype.setAutoPadding = function (setTo) {
  5004. this._autopadding = !!setTo
  5005. return this
  5006. }
  5007. function Splitter () {
  5008. if (!(this instanceof Splitter)) {
  5009. return new Splitter()
  5010. }
  5011. this.cache = new Buffer('')
  5012. }
  5013. Splitter.prototype.add = function (data) {
  5014. this.cache = Buffer.concat([this.cache, data])
  5015. }
  5016. Splitter.prototype.get = function () {
  5017. if (this.cache.length > 15) {
  5018. var out = this.cache.slice(0, 16)
  5019. this.cache = this.cache.slice(16)
  5020. return out
  5021. }
  5022. return null
  5023. }
  5024. Splitter.prototype.flush = function () {
  5025. var len = 16 - this.cache.length
  5026. var padBuff = new Buffer(len)
  5027. var i = -1
  5028. while (++i < len) {
  5029. padBuff.writeUInt8(len, i)
  5030. }
  5031. var out = Buffer.concat([this.cache, padBuff])
  5032. return out
  5033. }
  5034. var modelist = {
  5035. ECB: require('./modes/ecb'),
  5036. CBC: require('./modes/cbc'),
  5037. CFB: require('./modes/cfb'),
  5038. CFB8: require('./modes/cfb8'),
  5039. CFB1: require('./modes/cfb1'),
  5040. OFB: require('./modes/ofb'),
  5041. CTR: require('./modes/ctr'),
  5042. GCM: require('./modes/ctr')
  5043. }
  5044. function createCipheriv (suite, password, iv) {
  5045. var config = modes[suite.toLowerCase()]
  5046. if (!config) {
  5047. throw new TypeError('invalid suite type')
  5048. }
  5049. if (typeof iv === 'string') {
  5050. iv = new Buffer(iv)
  5051. }
  5052. if (typeof password === 'string') {
  5053. password = new Buffer(password)
  5054. }
  5055. if (password.length !== config.key / 8) {
  5056. throw new TypeError('invalid key length ' + password.length)
  5057. }
  5058. if (iv.length !== config.iv) {
  5059. throw new TypeError('invalid iv length ' + iv.length)
  5060. }
  5061. if (config.type === 'stream') {
  5062. return new StreamCipher(modelist[config.mode], password, iv)
  5063. } else if (config.type === 'auth') {
  5064. return new AuthCipher(modelist[config.mode], password, iv)
  5065. }
  5066. return new Cipher(modelist[config.mode], password, iv)
  5067. }
  5068. function createCipher (suite, password) {
  5069. var config = modes[suite.toLowerCase()]
  5070. if (!config) {
  5071. throw new TypeError('invalid suite type')
  5072. }
  5073. var keys = ebtk(password, false, config.key, config.iv)
  5074. return createCipheriv(suite, keys.key, keys.iv)
  5075. }
  5076. exports.createCipheriv = createCipheriv
  5077. exports.createCipher = createCipher
  5078. }).call(this,require("buffer").Buffer)
  5079. },{"./aes":28,"./authCipher":29,"./modes":34,"./modes/cbc":35,"./modes/cfb":36,"./modes/cfb1":37,"./modes/cfb8":38,"./modes/ctr":39,"./modes/ecb":40,"./modes/ofb":41,"./streamCipher":42,"buffer":54,"cipher-base":55,"evp_bytestokey":91,"inherits":108}],33:[function(require,module,exports){
  5080. (function (Buffer){
  5081. var zeros = new Buffer(16)
  5082. zeros.fill(0)
  5083. module.exports = GHASH
  5084. function GHASH (key) {
  5085. this.h = key
  5086. this.state = new Buffer(16)
  5087. this.state.fill(0)
  5088. this.cache = new Buffer('')
  5089. }
  5090. // from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html
  5091. // by Juho Vähä-Herttua
  5092. GHASH.prototype.ghash = function (block) {
  5093. var i = -1
  5094. while (++i < block.length) {
  5095. this.state[i] ^= block[i]
  5096. }
  5097. this._multiply()
  5098. }
  5099. GHASH.prototype._multiply = function () {
  5100. var Vi = toArray(this.h)
  5101. var Zi = [0, 0, 0, 0]
  5102. var j, xi, lsb_Vi
  5103. var i = -1
  5104. while (++i < 128) {
  5105. xi = (this.state[~~(i / 8)] & (1 << (7 - i % 8))) !== 0
  5106. if (xi) {
  5107. // Z_i+1 = Z_i ^ V_i
  5108. Zi = xor(Zi, Vi)
  5109. }
  5110. // Store the value of LSB(V_i)
  5111. lsb_Vi = (Vi[3] & 1) !== 0
  5112. // V_i+1 = V_i >> 1
  5113. for (j = 3; j > 0; j--) {
  5114. Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)
  5115. }
  5116. Vi[0] = Vi[0] >>> 1
  5117. // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R
  5118. if (lsb_Vi) {
  5119. Vi[0] = Vi[0] ^ (0xe1 << 24)
  5120. }
  5121. }
  5122. this.state = fromArray(Zi)
  5123. }
  5124. GHASH.prototype.update = function (buf) {
  5125. this.cache = Buffer.concat([this.cache, buf])
  5126. var chunk
  5127. while (this.cache.length >= 16) {
  5128. chunk = this.cache.slice(0, 16)
  5129. this.cache = this.cache.slice(16)
  5130. this.ghash(chunk)
  5131. }
  5132. }
  5133. GHASH.prototype.final = function (abl, bl) {
  5134. if (this.cache.length) {
  5135. this.ghash(Buffer.concat([this.cache, zeros], 16))
  5136. }
  5137. this.ghash(fromArray([
  5138. 0, abl,
  5139. 0, bl
  5140. ]))
  5141. return this.state
  5142. }
  5143. function toArray (buf) {
  5144. return [
  5145. buf.readUInt32BE(0),
  5146. buf.readUInt32BE(4),
  5147. buf.readUInt32BE(8),
  5148. buf.readUInt32BE(12)
  5149. ]
  5150. }
  5151. function fromArray (out) {
  5152. out = out.map(fixup_uint32)
  5153. var buf = new Buffer(16)
  5154. buf.writeUInt32BE(out[0], 0)
  5155. buf.writeUInt32BE(out[1], 4)
  5156. buf.writeUInt32BE(out[2], 8)
  5157. buf.writeUInt32BE(out[3], 12)
  5158. return buf
  5159. }
  5160. var uint_max = Math.pow(2, 32)
  5161. function fixup_uint32 (x) {
  5162. var ret, x_pos
  5163. ret = x > uint_max || x < 0 ? (x_pos = Math.abs(x) % uint_max, x < 0 ? uint_max - x_pos : x_pos) : x
  5164. return ret
  5165. }
  5166. function xor (a, b) {
  5167. return [
  5168. a[0] ^ b[0],
  5169. a[1] ^ b[1],
  5170. a[2] ^ b[2],
  5171. a[3] ^ b[3]
  5172. ]
  5173. }
  5174. }).call(this,require("buffer").Buffer)
  5175. },{"buffer":54}],34:[function(require,module,exports){
  5176. exports['aes-128-ecb'] = {
  5177. cipher: 'AES',
  5178. key: 128,
  5179. iv: 0,
  5180. mode: 'ECB',
  5181. type: 'block'
  5182. }
  5183. exports['aes-192-ecb'] = {
  5184. cipher: 'AES',
  5185. key: 192,
  5186. iv: 0,
  5187. mode: 'ECB',
  5188. type: 'block'
  5189. }
  5190. exports['aes-256-ecb'] = {
  5191. cipher: 'AES',
  5192. key: 256,
  5193. iv: 0,
  5194. mode: 'ECB',
  5195. type: 'block'
  5196. }
  5197. exports['aes-128-cbc'] = {
  5198. cipher: 'AES',
  5199. key: 128,
  5200. iv: 16,
  5201. mode: 'CBC',
  5202. type: 'block'
  5203. }
  5204. exports['aes-192-cbc'] = {
  5205. cipher: 'AES',
  5206. key: 192,
  5207. iv: 16,
  5208. mode: 'CBC',
  5209. type: 'block'
  5210. }
  5211. exports['aes-256-cbc'] = {
  5212. cipher: 'AES',
  5213. key: 256,
  5214. iv: 16,
  5215. mode: 'CBC',
  5216. type: 'block'
  5217. }
  5218. exports['aes128'] = exports['aes-128-cbc']
  5219. exports['aes192'] = exports['aes-192-cbc']
  5220. exports['aes256'] = exports['aes-256-cbc']
  5221. exports['aes-128-cfb'] = {
  5222. cipher: 'AES',
  5223. key: 128,
  5224. iv: 16,
  5225. mode: 'CFB',
  5226. type: 'stream'
  5227. }
  5228. exports['aes-192-cfb'] = {
  5229. cipher: 'AES',
  5230. key: 192,
  5231. iv: 16,
  5232. mode: 'CFB',
  5233. type: 'stream'
  5234. }
  5235. exports['aes-256-cfb'] = {
  5236. cipher: 'AES',
  5237. key: 256,
  5238. iv: 16,
  5239. mode: 'CFB',
  5240. type: 'stream'
  5241. }
  5242. exports['aes-128-cfb8'] = {
  5243. cipher: 'AES',
  5244. key: 128,
  5245. iv: 16,
  5246. mode: 'CFB8',
  5247. type: 'stream'
  5248. }
  5249. exports['aes-192-cfb8'] = {
  5250. cipher: 'AES',
  5251. key: 192,
  5252. iv: 16,
  5253. mode: 'CFB8',
  5254. type: 'stream'
  5255. }
  5256. exports['aes-256-cfb8'] = {
  5257. cipher: 'AES',
  5258. key: 256,
  5259. iv: 16,
  5260. mode: 'CFB8',
  5261. type: 'stream'
  5262. }
  5263. exports['aes-128-cfb1'] = {
  5264. cipher: 'AES',
  5265. key: 128,
  5266. iv: 16,
  5267. mode: 'CFB1',
  5268. type: 'stream'
  5269. }
  5270. exports['aes-192-cfb1'] = {
  5271. cipher: 'AES',
  5272. key: 192,
  5273. iv: 16,
  5274. mode: 'CFB1',
  5275. type: 'stream'
  5276. }
  5277. exports['aes-256-cfb1'] = {
  5278. cipher: 'AES',
  5279. key: 256,
  5280. iv: 16,
  5281. mode: 'CFB1',
  5282. type: 'stream'
  5283. }
  5284. exports['aes-128-ofb'] = {
  5285. cipher: 'AES',
  5286. key: 128,
  5287. iv: 16,
  5288. mode: 'OFB',
  5289. type: 'stream'
  5290. }
  5291. exports['aes-192-ofb'] = {
  5292. cipher: 'AES',
  5293. key: 192,
  5294. iv: 16,
  5295. mode: 'OFB',
  5296. type: 'stream'
  5297. }
  5298. exports['aes-256-ofb'] = {
  5299. cipher: 'AES',
  5300. key: 256,
  5301. iv: 16,
  5302. mode: 'OFB',
  5303. type: 'stream'
  5304. }
  5305. exports['aes-128-ctr'] = {
  5306. cipher: 'AES',
  5307. key: 128,
  5308. iv: 16,
  5309. mode: 'CTR',
  5310. type: 'stream'
  5311. }
  5312. exports['aes-192-ctr'] = {
  5313. cipher: 'AES',
  5314. key: 192,
  5315. iv: 16,
  5316. mode: 'CTR',
  5317. type: 'stream'
  5318. }
  5319. exports['aes-256-ctr'] = {
  5320. cipher: 'AES',
  5321. key: 256,
  5322. iv: 16,
  5323. mode: 'CTR',
  5324. type: 'stream'
  5325. }
  5326. exports['aes-128-gcm'] = {
  5327. cipher: 'AES',
  5328. key: 128,
  5329. iv: 12,
  5330. mode: 'GCM',
  5331. type: 'auth'
  5332. }
  5333. exports['aes-192-gcm'] = {
  5334. cipher: 'AES',
  5335. key: 192,
  5336. iv: 12,
  5337. mode: 'GCM',
  5338. type: 'auth'
  5339. }
  5340. exports['aes-256-gcm'] = {
  5341. cipher: 'AES',
  5342. key: 256,
  5343. iv: 12,
  5344. mode: 'GCM',
  5345. type: 'auth'
  5346. }
  5347. },{}],35:[function(require,module,exports){
  5348. var xor = require('buffer-xor')
  5349. exports.encrypt = function (self, block) {
  5350. var data = xor(block, self._prev)
  5351. self._prev = self._cipher.encryptBlock(data)
  5352. return self._prev
  5353. }
  5354. exports.decrypt = function (self, block) {
  5355. var pad = self._prev
  5356. self._prev = block
  5357. var out = self._cipher.decryptBlock(block)
  5358. return xor(out, pad)
  5359. }
  5360. },{"buffer-xor":53}],36:[function(require,module,exports){
  5361. (function (Buffer){
  5362. var xor = require('buffer-xor')
  5363. exports.encrypt = function (self, data, decrypt) {
  5364. var out = new Buffer('')
  5365. var len
  5366. while (data.length) {
  5367. if (self._cache.length === 0) {
  5368. self._cache = self._cipher.encryptBlock(self._prev)
  5369. self._prev = new Buffer('')
  5370. }
  5371. if (self._cache.length <= data.length) {
  5372. len = self._cache.length
  5373. out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])
  5374. data = data.slice(len)
  5375. } else {
  5376. out = Buffer.concat([out, encryptStart(self, data, decrypt)])
  5377. break
  5378. }
  5379. }
  5380. return out
  5381. }
  5382. function encryptStart (self, data, decrypt) {
  5383. var len = data.length
  5384. var out = xor(data, self._cache)
  5385. self._cache = self._cache.slice(len)
  5386. self._prev = Buffer.concat([self._prev, decrypt ? data : out])
  5387. return out
  5388. }
  5389. }).call(this,require("buffer").Buffer)
  5390. },{"buffer":54,"buffer-xor":53}],37:[function(require,module,exports){
  5391. (function (Buffer){
  5392. function encryptByte (self, byteParam, decrypt) {
  5393. var pad
  5394. var i = -1
  5395. var len = 8
  5396. var out = 0
  5397. var bit, value
  5398. while (++i < len) {
  5399. pad = self._cipher.encryptBlock(self._prev)
  5400. bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0
  5401. value = pad[0] ^ bit
  5402. out += ((value & 0x80) >> (i % 8))
  5403. self._prev = shiftIn(self._prev, decrypt ? bit : value)
  5404. }
  5405. return out
  5406. }
  5407. exports.encrypt = function (self, chunk, decrypt) {
  5408. var len = chunk.length
  5409. var out = new Buffer(len)
  5410. var i = -1
  5411. while (++i < len) {
  5412. out[i] = encryptByte(self, chunk[i], decrypt)
  5413. }
  5414. return out
  5415. }
  5416. function shiftIn (buffer, value) {
  5417. var len = buffer.length
  5418. var i = -1
  5419. var out = new Buffer(buffer.length)
  5420. buffer = Buffer.concat([buffer, new Buffer([value])])
  5421. while (++i < len) {
  5422. out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)
  5423. }
  5424. return out
  5425. }
  5426. }).call(this,require("buffer").Buffer)
  5427. },{"buffer":54}],38:[function(require,module,exports){
  5428. (function (Buffer){
  5429. function encryptByte (self, byteParam, decrypt) {
  5430. var pad = self._cipher.encryptBlock(self._prev)
  5431. var out = pad[0] ^ byteParam
  5432. self._prev = Buffer.concat([self._prev.slice(1), new Buffer([decrypt ? byteParam : out])])
  5433. return out
  5434. }
  5435. exports.encrypt = function (self, chunk, decrypt) {
  5436. var len = chunk.length
  5437. var out = new Buffer(len)
  5438. var i = -1
  5439. while (++i < len) {
  5440. out[i] = encryptByte(self, chunk[i], decrypt)
  5441. }
  5442. return out
  5443. }
  5444. }).call(this,require("buffer").Buffer)
  5445. },{"buffer":54}],39:[function(require,module,exports){
  5446. (function (Buffer){
  5447. var xor = require('buffer-xor')
  5448. function incr32 (iv) {
  5449. var len = iv.length
  5450. var item
  5451. while (len--) {
  5452. item = iv.readUInt8(len)
  5453. if (item === 255) {
  5454. iv.writeUInt8(0, len)
  5455. } else {
  5456. item++
  5457. iv.writeUInt8(item, len)
  5458. break
  5459. }
  5460. }
  5461. }
  5462. function getBlock (self) {
  5463. var out = self._cipher.encryptBlock(self._prev)
  5464. incr32(self._prev)
  5465. return out
  5466. }
  5467. exports.encrypt = function (self, chunk) {
  5468. while (self._cache.length < chunk.length) {
  5469. self._cache = Buffer.concat([self._cache, getBlock(self)])
  5470. }
  5471. var pad = self._cache.slice(0, chunk.length)
  5472. self._cache = self._cache.slice(chunk.length)
  5473. return xor(chunk, pad)
  5474. }
  5475. }).call(this,require("buffer").Buffer)
  5476. },{"buffer":54,"buffer-xor":53}],40:[function(require,module,exports){
  5477. exports.encrypt = function (self, block) {
  5478. return self._cipher.encryptBlock(block)
  5479. }
  5480. exports.decrypt = function (self, block) {
  5481. return self._cipher.decryptBlock(block)
  5482. }
  5483. },{}],41:[function(require,module,exports){
  5484. (function (Buffer){
  5485. var xor = require('buffer-xor')
  5486. function getBlock (self) {
  5487. self._prev = self._cipher.encryptBlock(self._prev)
  5488. return self._prev
  5489. }
  5490. exports.encrypt = function (self, chunk) {
  5491. while (self._cache.length < chunk.length) {
  5492. self._cache = Buffer.concat([self._cache, getBlock(self)])
  5493. }
  5494. var pad = self._cache.slice(0, chunk.length)
  5495. self._cache = self._cache.slice(chunk.length)
  5496. return xor(chunk, pad)
  5497. }
  5498. }).call(this,require("buffer").Buffer)
  5499. },{"buffer":54,"buffer-xor":53}],42:[function(require,module,exports){
  5500. (function (Buffer){
  5501. var aes = require('./aes')
  5502. var Transform = require('cipher-base')
  5503. var inherits = require('inherits')
  5504. inherits(StreamCipher, Transform)
  5505. module.exports = StreamCipher
  5506. function StreamCipher (mode, key, iv, decrypt) {
  5507. if (!(this instanceof StreamCipher)) {
  5508. return new StreamCipher(mode, key, iv)
  5509. }
  5510. Transform.call(this)
  5511. this._cipher = new aes.AES(key)
  5512. this._prev = new Buffer(iv.length)
  5513. this._cache = new Buffer('')
  5514. this._secCache = new Buffer('')
  5515. this._decrypt = decrypt
  5516. iv.copy(this._prev)
  5517. this._mode = mode
  5518. }
  5519. StreamCipher.prototype._update = function (chunk) {
  5520. return this._mode.encrypt(this, chunk, this._decrypt)
  5521. }
  5522. StreamCipher.prototype._final = function () {
  5523. this._cipher.scrub()
  5524. }
  5525. }).call(this,require("buffer").Buffer)
  5526. },{"./aes":28,"buffer":54,"cipher-base":55,"inherits":108}],43:[function(require,module,exports){
  5527. var ebtk = require('evp_bytestokey')
  5528. var aes = require('browserify-aes/browser')
  5529. var DES = require('browserify-des')
  5530. var desModes = require('browserify-des/modes')
  5531. var aesModes = require('browserify-aes/modes')
  5532. function createCipher (suite, password) {
  5533. var keyLen, ivLen
  5534. suite = suite.toLowerCase()
  5535. if (aesModes[suite]) {
  5536. keyLen = aesModes[suite].key
  5537. ivLen = aesModes[suite].iv
  5538. } else if (desModes[suite]) {
  5539. keyLen = desModes[suite].key * 8
  5540. ivLen = desModes[suite].iv
  5541. } else {
  5542. throw new TypeError('invalid suite type')
  5543. }
  5544. var keys = ebtk(password, false, keyLen, ivLen)
  5545. return createCipheriv(suite, keys.key, keys.iv)
  5546. }
  5547. function createDecipher (suite, password) {
  5548. var keyLen, ivLen
  5549. suite = suite.toLowerCase()
  5550. if (aesModes[suite]) {
  5551. keyLen = aesModes[suite].key
  5552. ivLen = aesModes[suite].iv
  5553. } else if (desModes[suite]) {
  5554. keyLen = desModes[suite].key * 8
  5555. ivLen = desModes[suite].iv
  5556. } else {
  5557. throw new TypeError('invalid suite type')
  5558. }
  5559. var keys = ebtk(password, false, keyLen, ivLen)
  5560. return createDecipheriv(suite, keys.key, keys.iv)
  5561. }
  5562. function createCipheriv (suite, key, iv) {
  5563. suite = suite.toLowerCase()
  5564. if (aesModes[suite]) {
  5565. return aes.createCipheriv(suite, key, iv)
  5566. } else if (desModes[suite]) {
  5567. return new DES({
  5568. key: key,
  5569. iv: iv,
  5570. mode: suite
  5571. })
  5572. } else {
  5573. throw new TypeError('invalid suite type')
  5574. }
  5575. }
  5576. function createDecipheriv (suite, key, iv) {
  5577. suite = suite.toLowerCase()
  5578. if (aesModes[suite]) {
  5579. return aes.createDecipheriv(suite, key, iv)
  5580. } else if (desModes[suite]) {
  5581. return new DES({
  5582. key: key,
  5583. iv: iv,
  5584. mode: suite,
  5585. decrypt: true
  5586. })
  5587. } else {
  5588. throw new TypeError('invalid suite type')
  5589. }
  5590. }
  5591. exports.createCipher = exports.Cipher = createCipher
  5592. exports.createCipheriv = exports.Cipheriv = createCipheriv
  5593. exports.createDecipher = exports.Decipher = createDecipher
  5594. exports.createDecipheriv = exports.Decipheriv = createDecipheriv
  5595. function getCiphers () {
  5596. return Object.keys(desModes).concat(aes.getCiphers())
  5597. }
  5598. exports.listCiphers = exports.getCiphers = getCiphers
  5599. },{"browserify-aes/browser":30,"browserify-aes/modes":34,"browserify-des":44,"browserify-des/modes":45,"evp_bytestokey":91}],44:[function(require,module,exports){
  5600. (function (Buffer){
  5601. var CipherBase = require('cipher-base')
  5602. var des = require('des.js')
  5603. var inherits = require('inherits')
  5604. var modes = {
  5605. 'des-ede3-cbc': des.CBC.instantiate(des.EDE),
  5606. 'des-ede3': des.EDE,
  5607. 'des-ede-cbc': des.CBC.instantiate(des.EDE),
  5608. 'des-ede': des.EDE,
  5609. 'des-cbc': des.CBC.instantiate(des.DES),
  5610. 'des-ecb': des.DES
  5611. }
  5612. modes.des = modes['des-cbc']
  5613. modes.des3 = modes['des-ede3-cbc']
  5614. module.exports = DES
  5615. inherits(DES, CipherBase)
  5616. function DES (opts) {
  5617. CipherBase.call(this)
  5618. var modeName = opts.mode.toLowerCase()
  5619. var mode = modes[modeName]
  5620. var type
  5621. if (opts.decrypt) {
  5622. type = 'decrypt'
  5623. } else {
  5624. type = 'encrypt'
  5625. }
  5626. var key = opts.key
  5627. if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {
  5628. key = Buffer.concat([key, key.slice(0, 8)])
  5629. }
  5630. var iv = opts.iv
  5631. this._des = mode.create({
  5632. key: key,
  5633. iv: iv,
  5634. type: type
  5635. })
  5636. }
  5637. DES.prototype._update = function (data) {
  5638. return new Buffer(this._des.update(data))
  5639. }
  5640. DES.prototype._final = function () {
  5641. return new Buffer(this._des.final())
  5642. }
  5643. }).call(this,require("buffer").Buffer)
  5644. },{"buffer":54,"cipher-base":55,"des.js":64,"inherits":108}],45:[function(require,module,exports){
  5645. exports['des-ecb'] = {
  5646. key: 8,
  5647. iv: 0
  5648. }
  5649. exports['des-cbc'] = exports.des = {
  5650. key: 8,
  5651. iv: 8
  5652. }
  5653. exports['des-ede3-cbc'] = exports.des3 = {
  5654. key: 24,
  5655. iv: 8
  5656. }
  5657. exports['des-ede3'] = {
  5658. key: 24,
  5659. iv: 0
  5660. }
  5661. exports['des-ede-cbc'] = {
  5662. key: 16,
  5663. iv: 8
  5664. }
  5665. exports['des-ede'] = {
  5666. key: 16,
  5667. iv: 0
  5668. }
  5669. },{}],46:[function(require,module,exports){
  5670. (function (Buffer){
  5671. var bn = require('bn.js');
  5672. var randomBytes = require('randombytes');
  5673. module.exports = crt;
  5674. function blind(priv) {
  5675. var r = getr(priv);
  5676. var blinder = r.toRed(bn.mont(priv.modulus))
  5677. .redPow(new bn(priv.publicExponent)).fromRed();
  5678. return {
  5679. blinder: blinder,
  5680. unblinder:r.invm(priv.modulus)
  5681. };
  5682. }
  5683. function crt(msg, priv) {
  5684. var blinds = blind(priv);
  5685. var len = priv.modulus.byteLength();
  5686. var mod = bn.mont(priv.modulus);
  5687. var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus);
  5688. var c1 = blinded.toRed(bn.mont(priv.prime1));
  5689. var c2 = blinded.toRed(bn.mont(priv.prime2));
  5690. var qinv = priv.coefficient;
  5691. var p = priv.prime1;
  5692. var q = priv.prime2;
  5693. var m1 = c1.redPow(priv.exponent1);
  5694. var m2 = c2.redPow(priv.exponent2);
  5695. m1 = m1.fromRed();
  5696. m2 = m2.fromRed();
  5697. var h = m1.isub(m2).imul(qinv).umod(p);
  5698. h.imul(q);
  5699. m2.iadd(h);
  5700. return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len));
  5701. }
  5702. crt.getr = getr;
  5703. function getr(priv) {
  5704. var len = priv.modulus.byteLength();
  5705. var r = new bn(randomBytes(len));
  5706. while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) {
  5707. r = new bn(randomBytes(len));
  5708. }
  5709. return r;
  5710. }
  5711. }).call(this,require("buffer").Buffer)
  5712. },{"bn.js":25,"buffer":54,"randombytes":133}],47:[function(require,module,exports){
  5713. module.exports = require('./browser/algorithms.json')
  5714. },{"./browser/algorithms.json":48}],48:[function(require,module,exports){
  5715. module.exports={
  5716. "sha224WithRSAEncryption": {
  5717. "sign": "rsa",
  5718. "hash": "sha224",
  5719. "id": "302d300d06096086480165030402040500041c"
  5720. },
  5721. "RSA-SHA224": {
  5722. "sign": "ecdsa/rsa",
  5723. "hash": "sha224",
  5724. "id": "302d300d06096086480165030402040500041c"
  5725. },
  5726. "sha256WithRSAEncryption": {
  5727. "sign": "rsa",
  5728. "hash": "sha256",
  5729. "id": "3031300d060960864801650304020105000420"
  5730. },
  5731. "RSA-SHA256": {
  5732. "sign": "ecdsa/rsa",
  5733. "hash": "sha256",
  5734. "id": "3031300d060960864801650304020105000420"
  5735. },
  5736. "sha384WithRSAEncryption": {
  5737. "sign": "rsa",
  5738. "hash": "sha384",
  5739. "id": "3041300d060960864801650304020205000430"
  5740. },
  5741. "RSA-SHA384": {
  5742. "sign": "ecdsa/rsa",
  5743. "hash": "sha384",
  5744. "id": "3041300d060960864801650304020205000430"
  5745. },
  5746. "sha512WithRSAEncryption": {
  5747. "sign": "rsa",
  5748. "hash": "sha512",
  5749. "id": "3051300d060960864801650304020305000440"
  5750. },
  5751. "RSA-SHA512": {
  5752. "sign": "ecdsa/rsa",
  5753. "hash": "sha512",
  5754. "id": "3051300d060960864801650304020305000440"
  5755. },
  5756. "RSA-SHA1": {
  5757. "sign": "rsa",
  5758. "hash": "sha1",
  5759. "id": "3021300906052b0e03021a05000414"
  5760. },
  5761. "ecdsa-with-SHA1": {
  5762. "sign": "ecdsa",
  5763. "hash": "sha1",
  5764. "id": ""
  5765. },
  5766. "sha256": {
  5767. "sign": "ecdsa",
  5768. "hash": "sha256",
  5769. "id": ""
  5770. },
  5771. "sha224": {
  5772. "sign": "ecdsa",
  5773. "hash": "sha224",
  5774. "id": ""
  5775. },
  5776. "sha384": {
  5777. "sign": "ecdsa",
  5778. "hash": "sha384",
  5779. "id": ""
  5780. },
  5781. "sha512": {
  5782. "sign": "ecdsa",
  5783. "hash": "sha512",
  5784. "id": ""
  5785. },
  5786. "DSA-SHA": {
  5787. "sign": "dsa",
  5788. "hash": "sha1",
  5789. "id": ""
  5790. },
  5791. "DSA-SHA1": {
  5792. "sign": "dsa",
  5793. "hash": "sha1",
  5794. "id": ""
  5795. },
  5796. "DSA": {
  5797. "sign": "dsa",
  5798. "hash": "sha1",
  5799. "id": ""
  5800. },
  5801. "DSA-WITH-SHA224": {
  5802. "sign": "dsa",
  5803. "hash": "sha224",
  5804. "id": ""
  5805. },
  5806. "DSA-SHA224": {
  5807. "sign": "dsa",
  5808. "hash": "sha224",
  5809. "id": ""
  5810. },
  5811. "DSA-WITH-SHA256": {
  5812. "sign": "dsa",
  5813. "hash": "sha256",
  5814. "id": ""
  5815. },
  5816. "DSA-SHA256": {
  5817. "sign": "dsa",
  5818. "hash": "sha256",
  5819. "id": ""
  5820. },
  5821. "DSA-WITH-SHA384": {
  5822. "sign": "dsa",
  5823. "hash": "sha384",
  5824. "id": ""
  5825. },
  5826. "DSA-SHA384": {
  5827. "sign": "dsa",
  5828. "hash": "sha384",
  5829. "id": ""
  5830. },
  5831. "DSA-WITH-SHA512": {
  5832. "sign": "dsa",
  5833. "hash": "sha512",
  5834. "id": ""
  5835. },
  5836. "DSA-SHA512": {
  5837. "sign": "dsa",
  5838. "hash": "sha512",
  5839. "id": ""
  5840. },
  5841. "DSA-RIPEMD160": {
  5842. "sign": "dsa",
  5843. "hash": "rmd160",
  5844. "id": ""
  5845. },
  5846. "ripemd160WithRSA": {
  5847. "sign": "rsa",
  5848. "hash": "rmd160",
  5849. "id": "3021300906052b2403020105000414"
  5850. },
  5851. "RSA-RIPEMD160": {
  5852. "sign": "rsa",
  5853. "hash": "rmd160",
  5854. "id": "3021300906052b2403020105000414"
  5855. },
  5856. "md5WithRSAEncryption": {
  5857. "sign": "rsa",
  5858. "hash": "md5",
  5859. "id": "3020300c06082a864886f70d020505000410"
  5860. },
  5861. "RSA-MD5": {
  5862. "sign": "rsa",
  5863. "hash": "md5",
  5864. "id": "3020300c06082a864886f70d020505000410"
  5865. }
  5866. }
  5867. },{}],49:[function(require,module,exports){
  5868. module.exports={
  5869. "1.3.132.0.10": "secp256k1",
  5870. "1.3.132.0.33": "p224",
  5871. "1.2.840.10045.3.1.1": "p192",
  5872. "1.2.840.10045.3.1.7": "p256",
  5873. "1.3.132.0.34": "p384",
  5874. "1.3.132.0.35": "p521"
  5875. }
  5876. },{}],50:[function(require,module,exports){
  5877. (function (Buffer){
  5878. var createHash = require('create-hash')
  5879. var stream = require('stream')
  5880. var inherits = require('inherits')
  5881. var sign = require('./sign')
  5882. var verify = require('./verify')
  5883. var algorithms = require('./algorithms.json')
  5884. Object.keys(algorithms).forEach(function (key) {
  5885. algorithms[key].id = new Buffer(algorithms[key].id, 'hex')
  5886. algorithms[key.toLowerCase()] = algorithms[key]
  5887. })
  5888. function Sign (algorithm) {
  5889. stream.Writable.call(this)
  5890. var data = algorithms[algorithm]
  5891. if (!data) throw new Error('Unknown message digest')
  5892. this._hashType = data.hash
  5893. this._hash = createHash(data.hash)
  5894. this._tag = data.id
  5895. this._signType = data.sign
  5896. }
  5897. inherits(Sign, stream.Writable)
  5898. Sign.prototype._write = function _write (data, _, done) {
  5899. this._hash.update(data)
  5900. done()
  5901. }
  5902. Sign.prototype.update = function update (data, enc) {
  5903. if (typeof data === 'string') data = new Buffer(data, enc)
  5904. this._hash.update(data)
  5905. return this
  5906. }
  5907. Sign.prototype.sign = function signMethod (key, enc) {
  5908. this.end()
  5909. var hash = this._hash.digest()
  5910. var sig = sign(hash, key, this._hashType, this._signType, this._tag)
  5911. return enc ? sig.toString(enc) : sig
  5912. }
  5913. function Verify (algorithm) {
  5914. stream.Writable.call(this)
  5915. var data = algorithms[algorithm]
  5916. if (!data) throw new Error('Unknown message digest')
  5917. this._hash = createHash(data.hash)
  5918. this._tag = data.id
  5919. this._signType = data.sign
  5920. }
  5921. inherits(Verify, stream.Writable)
  5922. Verify.prototype._write = function _write (data, _, done) {
  5923. this._hash.update(data)
  5924. done()
  5925. }
  5926. Verify.prototype.update = function update (data, enc) {
  5927. if (typeof data === 'string') data = new Buffer(data, enc)
  5928. this._hash.update(data)
  5929. return this
  5930. }
  5931. Verify.prototype.verify = function verifyMethod (key, sig, enc) {
  5932. if (typeof sig === 'string') sig = new Buffer(sig, enc)
  5933. this.end()
  5934. var hash = this._hash.digest()
  5935. return verify(sig, hash, key, this._signType, this._tag)
  5936. }
  5937. function createSign (algorithm) {
  5938. return new Sign(algorithm)
  5939. }
  5940. function createVerify (algorithm) {
  5941. return new Verify(algorithm)
  5942. }
  5943. module.exports = {
  5944. Sign: createSign,
  5945. Verify: createVerify,
  5946. createSign: createSign,
  5947. createVerify: createVerify
  5948. }
  5949. }).call(this,require("buffer").Buffer)
  5950. },{"./algorithms.json":48,"./sign":51,"./verify":52,"buffer":54,"create-hash":58,"inherits":108,"stream":157}],51:[function(require,module,exports){
  5951. (function (Buffer){
  5952. // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js
  5953. var createHmac = require('create-hmac')
  5954. var crt = require('browserify-rsa')
  5955. var EC = require('elliptic').ec
  5956. var BN = require('bn.js')
  5957. var parseKeys = require('parse-asn1')
  5958. var curves = require('./curves.json')
  5959. function sign (hash, key, hashType, signType, tag) {
  5960. var priv = parseKeys(key)
  5961. if (priv.curve) {
  5962. // rsa keys can be interpreted as ecdsa ones in openssl
  5963. if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')
  5964. return ecSign(hash, priv)
  5965. } else if (priv.type === 'dsa') {
  5966. if (signType !== 'dsa') throw new Error('wrong private key type')
  5967. return dsaSign(hash, priv, hashType)
  5968. } else {
  5969. if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')
  5970. }
  5971. hash = Buffer.concat([tag, hash])
  5972. var len = priv.modulus.byteLength()
  5973. var pad = [ 0, 1 ]
  5974. while (hash.length + pad.length + 1 < len) pad.push(0xff)
  5975. pad.push(0x00)
  5976. var i = -1
  5977. while (++i < hash.length) pad.push(hash[i])
  5978. var out = crt(pad, priv)
  5979. return out
  5980. }
  5981. function ecSign (hash, priv) {
  5982. var curveId = curves[priv.curve.join('.')]
  5983. if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))
  5984. var curve = new EC(curveId)
  5985. var key = curve.keyFromPrivate(priv.privateKey)
  5986. var out = key.sign(hash)
  5987. return new Buffer(out.toDER())
  5988. }
  5989. function dsaSign (hash, priv, algo) {
  5990. var x = priv.params.priv_key
  5991. var p = priv.params.p
  5992. var q = priv.params.q
  5993. var g = priv.params.g
  5994. var r = new BN(0)
  5995. var k
  5996. var H = bits2int(hash, q).mod(q)
  5997. var s = false
  5998. var kv = getKey(x, q, hash, algo)
  5999. while (s === false) {
  6000. k = makeKey(q, kv, algo)
  6001. r = makeR(g, k, p, q)
  6002. s = k.invm(q).imul(H.add(x.mul(r))).mod(q)
  6003. if (s.cmpn(0) === 0) {
  6004. s = false
  6005. r = new BN(0)
  6006. }
  6007. }
  6008. return toDER(r, s)
  6009. }
  6010. function toDER (r, s) {
  6011. r = r.toArray()
  6012. s = s.toArray()
  6013. // Pad values
  6014. if (r[0] & 0x80) r = [ 0 ].concat(r)
  6015. if (s[0] & 0x80) s = [ 0 ].concat(s)
  6016. var total = r.length + s.length + 4
  6017. var res = [ 0x30, total, 0x02, r.length ]
  6018. res = res.concat(r, [ 0x02, s.length ], s)
  6019. return new Buffer(res)
  6020. }
  6021. function getKey (x, q, hash, algo) {
  6022. x = new Buffer(x.toArray())
  6023. if (x.length < q.byteLength()) {
  6024. var zeros = new Buffer(q.byteLength() - x.length)
  6025. zeros.fill(0)
  6026. x = Buffer.concat([ zeros, x ])
  6027. }
  6028. var hlen = hash.length
  6029. var hbits = bits2octets(hash, q)
  6030. var v = new Buffer(hlen)
  6031. v.fill(1)
  6032. var k = new Buffer(hlen)
  6033. k.fill(0)
  6034. k = createHmac(algo, k).update(v).update(new Buffer([ 0 ])).update(x).update(hbits).digest()
  6035. v = createHmac(algo, k).update(v).digest()
  6036. k = createHmac(algo, k).update(v).update(new Buffer([ 1 ])).update(x).update(hbits).digest()
  6037. v = createHmac(algo, k).update(v).digest()
  6038. return { k: k, v: v }
  6039. }
  6040. function bits2int (obits, q) {
  6041. var bits = new BN(obits)
  6042. var shift = (obits.length << 3) - q.bitLength()
  6043. if (shift > 0) bits.ishrn(shift)
  6044. return bits
  6045. }
  6046. function bits2octets (bits, q) {
  6047. bits = bits2int(bits, q)
  6048. bits = bits.mod(q)
  6049. var out = new Buffer(bits.toArray())
  6050. if (out.length < q.byteLength()) {
  6051. var zeros = new Buffer(q.byteLength() - out.length)
  6052. zeros.fill(0)
  6053. out = Buffer.concat([ zeros, out ])
  6054. }
  6055. return out
  6056. }
  6057. function makeKey (q, kv, algo) {
  6058. var t
  6059. var k
  6060. do {
  6061. t = new Buffer(0)
  6062. while (t.length * 8 < q.bitLength()) {
  6063. kv.v = createHmac(algo, kv.k).update(kv.v).digest()
  6064. t = Buffer.concat([ t, kv.v ])
  6065. }
  6066. k = bits2int(t, q)
  6067. kv.k = createHmac(algo, kv.k).update(kv.v).update(new Buffer([ 0 ])).digest()
  6068. kv.v = createHmac(algo, kv.k).update(kv.v).digest()
  6069. } while (k.cmp(q) !== -1)
  6070. return k
  6071. }
  6072. function makeR (g, k, p, q) {
  6073. return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)
  6074. }
  6075. module.exports = sign
  6076. module.exports.getKey = getKey
  6077. module.exports.makeKey = makeKey
  6078. }).call(this,require("buffer").Buffer)
  6079. },{"./curves.json":49,"bn.js":25,"browserify-rsa":46,"buffer":54,"create-hmac":61,"elliptic":74,"parse-asn1":118}],52:[function(require,module,exports){
  6080. (function (Buffer){
  6081. // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js
  6082. var BN = require('bn.js')
  6083. var EC = require('elliptic').ec
  6084. var parseKeys = require('parse-asn1')
  6085. var curves = require('./curves.json')
  6086. function verify (sig, hash, key, signType, tag) {
  6087. var pub = parseKeys(key)
  6088. if (pub.type === 'ec') {
  6089. // rsa keys can be interpreted as ecdsa ones in openssl
  6090. if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')
  6091. return ecVerify(sig, hash, pub)
  6092. } else if (pub.type === 'dsa') {
  6093. if (signType !== 'dsa') throw new Error('wrong public key type')
  6094. return dsaVerify(sig, hash, pub)
  6095. } else {
  6096. if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')
  6097. }
  6098. hash = Buffer.concat([tag, hash])
  6099. var len = pub.modulus.byteLength()
  6100. var pad = [ 1 ]
  6101. var padNum = 0
  6102. while (hash.length + pad.length + 2 < len) {
  6103. pad.push(0xff)
  6104. padNum++
  6105. }
  6106. pad.push(0x00)
  6107. var i = -1
  6108. while (++i < hash.length) {
  6109. pad.push(hash[i])
  6110. }
  6111. pad = new Buffer(pad)
  6112. var red = BN.mont(pub.modulus)
  6113. sig = new BN(sig).toRed(red)
  6114. sig = sig.redPow(new BN(pub.publicExponent))
  6115. sig = new Buffer(sig.fromRed().toArray())
  6116. var out = padNum < 8 ? 1 : 0
  6117. len = Math.min(sig.length, pad.length)
  6118. if (sig.length !== pad.length) out = 1
  6119. i = -1
  6120. while (++i < len) out |= sig[i] ^ pad[i]
  6121. return out === 0
  6122. }
  6123. function ecVerify (sig, hash, pub) {
  6124. var curveId = curves[pub.data.algorithm.curve.join('.')]
  6125. if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))
  6126. var curve = new EC(curveId)
  6127. var pubkey = pub.data.subjectPrivateKey.data
  6128. return curve.verify(hash, sig, pubkey)
  6129. }
  6130. function dsaVerify (sig, hash, pub) {
  6131. var p = pub.data.p
  6132. var q = pub.data.q
  6133. var g = pub.data.g
  6134. var y = pub.data.pub_key
  6135. var unpacked = parseKeys.signature.decode(sig, 'der')
  6136. var s = unpacked.s
  6137. var r = unpacked.r
  6138. checkValue(s, q)
  6139. checkValue(r, q)
  6140. var montp = BN.mont(p)
  6141. var w = s.invm(q)
  6142. var v = g.toRed(montp)
  6143. .redPow(new BN(hash).mul(w).mod(q))
  6144. .fromRed()
  6145. .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())
  6146. .mod(p)
  6147. .mod(q)
  6148. return v.cmp(r) === 0
  6149. }
  6150. function checkValue (b, q) {
  6151. if (b.cmpn(0) <= 0) throw new Error('invalid sig')
  6152. if (b.cmp(q) >= q) throw new Error('invalid sig')
  6153. }
  6154. module.exports = verify
  6155. }).call(this,require("buffer").Buffer)
  6156. },{"./curves.json":49,"bn.js":25,"buffer":54,"elliptic":74,"parse-asn1":118}],53:[function(require,module,exports){
  6157. (function (Buffer){
  6158. module.exports = function xor (a, b) {
  6159. var length = Math.min(a.length, b.length)
  6160. var buffer = new Buffer(length)
  6161. for (var i = 0; i < length; ++i) {
  6162. buffer[i] = a[i] ^ b[i]
  6163. }
  6164. return buffer
  6165. }
  6166. }).call(this,require("buffer").Buffer)
  6167. },{"buffer":54}],54:[function(require,module,exports){
  6168. /*!
  6169. * The buffer module from node.js, for the browser.
  6170. *
  6171. * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
  6172. * @license MIT
  6173. */
  6174. /* eslint-disable no-proto */
  6175. 'use strict'
  6176. var base64 = require('base64-js')
  6177. var ieee754 = require('ieee754')
  6178. exports.Buffer = Buffer
  6179. exports.SlowBuffer = SlowBuffer
  6180. exports.INSPECT_MAX_BYTES = 50
  6181. var K_MAX_LENGTH = 0x7fffffff
  6182. exports.kMaxLength = K_MAX_LENGTH
  6183. /**
  6184. * If `Buffer.TYPED_ARRAY_SUPPORT`:
  6185. * === true Use Uint8Array implementation (fastest)
  6186. * === false Print warning and recommend using `buffer` v4.x which has an Object
  6187. * implementation (most compatible, even IE6)
  6188. *
  6189. * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
  6190. * Opera 11.6+, iOS 4.2+.
  6191. *
  6192. * We report that the browser does not support typed arrays if the are not subclassable
  6193. * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
  6194. * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
  6195. * for __proto__ and has a buggy typed array implementation.
  6196. */
  6197. Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
  6198. if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
  6199. typeof console.error === 'function') {
  6200. console.error(
  6201. 'This browser lacks typed array (Uint8Array) support which is required by ' +
  6202. '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
  6203. )
  6204. }
  6205. function typedArraySupport () {
  6206. // Can typed array instances can be augmented?
  6207. try {
  6208. var arr = new Uint8Array(1)
  6209. arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
  6210. return arr.foo() === 42
  6211. } catch (e) {
  6212. return false
  6213. }
  6214. }
  6215. function createBuffer (length) {
  6216. if (length > K_MAX_LENGTH) {
  6217. throw new RangeError('Invalid typed array length')
  6218. }
  6219. // Return an augmented `Uint8Array` instance
  6220. var buf = new Uint8Array(length)
  6221. buf.__proto__ = Buffer.prototype
  6222. return buf
  6223. }
  6224. /**
  6225. * The Buffer constructor returns instances of `Uint8Array` that have their
  6226. * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
  6227. * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
  6228. * and the `Uint8Array` methods. Square bracket notation works as expected -- it
  6229. * returns a single octet.
  6230. *
  6231. * The `Uint8Array` prototype remains unmodified.
  6232. */
  6233. function Buffer (arg, encodingOrOffset, length) {
  6234. // Common case.
  6235. if (typeof arg === 'number') {
  6236. if (typeof encodingOrOffset === 'string') {
  6237. throw new Error(
  6238. 'If encoding is specified then the first argument must be a string'
  6239. )
  6240. }
  6241. return allocUnsafe(arg)
  6242. }
  6243. return from(arg, encodingOrOffset, length)
  6244. }
  6245. // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
  6246. if (typeof Symbol !== 'undefined' && Symbol.species &&
  6247. Buffer[Symbol.species] === Buffer) {
  6248. Object.defineProperty(Buffer, Symbol.species, {
  6249. value: null,
  6250. configurable: true,
  6251. enumerable: false,
  6252. writable: false
  6253. })
  6254. }
  6255. Buffer.poolSize = 8192 // not used by this implementation
  6256. function from (value, encodingOrOffset, length) {
  6257. if (typeof value === 'number') {
  6258. throw new TypeError('"value" argument must not be a number')
  6259. }
  6260. if (isArrayBuffer(value)) {
  6261. return fromArrayBuffer(value, encodingOrOffset, length)
  6262. }
  6263. if (typeof value === 'string') {
  6264. return fromString(value, encodingOrOffset)
  6265. }
  6266. return fromObject(value)
  6267. }
  6268. /**
  6269. * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
  6270. * if value is a number.
  6271. * Buffer.from(str[, encoding])
  6272. * Buffer.from(array)
  6273. * Buffer.from(buffer)
  6274. * Buffer.from(arrayBuffer[, byteOffset[, length]])
  6275. **/
  6276. Buffer.from = function (value, encodingOrOffset, length) {
  6277. return from(value, encodingOrOffset, length)
  6278. }
  6279. // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
  6280. // https://github.com/feross/buffer/pull/148
  6281. Buffer.prototype.__proto__ = Uint8Array.prototype
  6282. Buffer.__proto__ = Uint8Array
  6283. function assertSize (size) {
  6284. if (typeof size !== 'number') {
  6285. throw new TypeError('"size" argument must be a number')
  6286. } else if (size < 0) {
  6287. throw new RangeError('"size" argument must not be negative')
  6288. }
  6289. }
  6290. function alloc (size, fill, encoding) {
  6291. assertSize(size)
  6292. if (size <= 0) {
  6293. return createBuffer(size)
  6294. }
  6295. if (fill !== undefined) {
  6296. // Only pay attention to encoding if it's a string. This
  6297. // prevents accidentally sending in a number that would
  6298. // be interpretted as a start offset.
  6299. return typeof encoding === 'string'
  6300. ? createBuffer(size).fill(fill, encoding)
  6301. : createBuffer(size).fill(fill)
  6302. }
  6303. return createBuffer(size)
  6304. }
  6305. /**
  6306. * Creates a new filled Buffer instance.
  6307. * alloc(size[, fill[, encoding]])
  6308. **/
  6309. Buffer.alloc = function (size, fill, encoding) {
  6310. return alloc(size, fill, encoding)
  6311. }
  6312. function allocUnsafe (size) {
  6313. assertSize(size)
  6314. return createBuffer(size < 0 ? 0 : checked(size) | 0)
  6315. }
  6316. /**
  6317. * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
  6318. * */
  6319. Buffer.allocUnsafe = function (size) {
  6320. return allocUnsafe(size)
  6321. }
  6322. /**
  6323. * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
  6324. */
  6325. Buffer.allocUnsafeSlow = function (size) {
  6326. return allocUnsafe(size)
  6327. }
  6328. function fromString (string, encoding) {
  6329. if (typeof encoding !== 'string' || encoding === '') {
  6330. encoding = 'utf8'
  6331. }
  6332. if (!Buffer.isEncoding(encoding)) {
  6333. throw new TypeError('"encoding" must be a valid string encoding')
  6334. }
  6335. var length = byteLength(string, encoding) | 0
  6336. var buf = createBuffer(length)
  6337. var actual = buf.write(string, encoding)
  6338. if (actual !== length) {
  6339. // Writing a hex string, for example, that contains invalid characters will
  6340. // cause everything after the first invalid character to be ignored. (e.g.
  6341. // 'abxxcd' will be treated as 'ab')
  6342. buf = buf.slice(0, actual)
  6343. }
  6344. return buf
  6345. }
  6346. function fromArrayLike (array) {
  6347. var length = array.length < 0 ? 0 : checked(array.length) | 0
  6348. var buf = createBuffer(length)
  6349. for (var i = 0; i < length; i += 1) {
  6350. buf[i] = array[i] & 255
  6351. }
  6352. return buf
  6353. }
  6354. function fromArrayBuffer (array, byteOffset, length) {
  6355. if (byteOffset < 0 || array.byteLength < byteOffset) {
  6356. throw new RangeError('\'offset\' is out of bounds')
  6357. }
  6358. if (array.byteLength < byteOffset + (length || 0)) {
  6359. throw new RangeError('\'length\' is out of bounds')
  6360. }
  6361. var buf
  6362. if (byteOffset === undefined && length === undefined) {
  6363. buf = new Uint8Array(array)
  6364. } else if (length === undefined) {
  6365. buf = new Uint8Array(array, byteOffset)
  6366. } else {
  6367. buf = new Uint8Array(array, byteOffset, length)
  6368. }
  6369. // Return an augmented `Uint8Array` instance
  6370. buf.__proto__ = Buffer.prototype
  6371. return buf
  6372. }
  6373. function fromObject (obj) {
  6374. if (Buffer.isBuffer(obj)) {
  6375. var len = checked(obj.length) | 0
  6376. var buf = createBuffer(len)
  6377. if (buf.length === 0) {
  6378. return buf
  6379. }
  6380. obj.copy(buf, 0, 0, len)
  6381. return buf
  6382. }
  6383. if (obj) {
  6384. if (isArrayBufferView(obj) || 'length' in obj) {
  6385. if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
  6386. return createBuffer(0)
  6387. }
  6388. return fromArrayLike(obj)
  6389. }
  6390. if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
  6391. return fromArrayLike(obj.data)
  6392. }
  6393. }
  6394. throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
  6395. }
  6396. function checked (length) {
  6397. // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
  6398. // length is NaN (which is otherwise coerced to zero.)
  6399. if (length >= K_MAX_LENGTH) {
  6400. throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
  6401. 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
  6402. }
  6403. return length | 0
  6404. }
  6405. function SlowBuffer (length) {
  6406. if (+length != length) { // eslint-disable-line eqeqeq
  6407. length = 0
  6408. }
  6409. return Buffer.alloc(+length)
  6410. }
  6411. Buffer.isBuffer = function isBuffer (b) {
  6412. return b != null && b._isBuffer === true
  6413. }
  6414. Buffer.compare = function compare (a, b) {
  6415. if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
  6416. throw new TypeError('Arguments must be Buffers')
  6417. }
  6418. if (a === b) return 0
  6419. var x = a.length
  6420. var y = b.length
  6421. for (var i = 0, len = Math.min(x, y); i < len; ++i) {
  6422. if (a[i] !== b[i]) {
  6423. x = a[i]
  6424. y = b[i]
  6425. break
  6426. }
  6427. }
  6428. if (x < y) return -1
  6429. if (y < x) return 1
  6430. return 0
  6431. }
  6432. Buffer.isEncoding = function isEncoding (encoding) {
  6433. switch (String(encoding).toLowerCase()) {
  6434. case 'hex':
  6435. case 'utf8':
  6436. case 'utf-8':
  6437. case 'ascii':
  6438. case 'latin1':
  6439. case 'binary':
  6440. case 'base64':
  6441. case 'ucs2':
  6442. case 'ucs-2':
  6443. case 'utf16le':
  6444. case 'utf-16le':
  6445. return true
  6446. default:
  6447. return false
  6448. }
  6449. }
  6450. Buffer.concat = function concat (list, length) {
  6451. if (!Array.isArray(list)) {
  6452. throw new TypeError('"list" argument must be an Array of Buffers')
  6453. }
  6454. if (list.length === 0) {
  6455. return Buffer.alloc(0)
  6456. }
  6457. var i
  6458. if (length === undefined) {
  6459. length = 0
  6460. for (i = 0; i < list.length; ++i) {
  6461. length += list[i].length
  6462. }
  6463. }
  6464. var buffer = Buffer.allocUnsafe(length)
  6465. var pos = 0
  6466. for (i = 0; i < list.length; ++i) {
  6467. var buf = list[i]
  6468. if (!Buffer.isBuffer(buf)) {
  6469. throw new TypeError('"list" argument must be an Array of Buffers')
  6470. }
  6471. buf.copy(buffer, pos)
  6472. pos += buf.length
  6473. }
  6474. return buffer
  6475. }
  6476. function byteLength (string, encoding) {
  6477. if (Buffer.isBuffer(string)) {
  6478. return string.length
  6479. }
  6480. if (isArrayBufferView(string) || isArrayBuffer(string)) {
  6481. return string.byteLength
  6482. }
  6483. if (typeof string !== 'string') {
  6484. string = '' + string
  6485. }
  6486. var len = string.length
  6487. if (len === 0) return 0
  6488. // Use a for loop to avoid recursion
  6489. var loweredCase = false
  6490. for (;;) {
  6491. switch (encoding) {
  6492. case 'ascii':
  6493. case 'latin1':
  6494. case 'binary':
  6495. return len
  6496. case 'utf8':
  6497. case 'utf-8':
  6498. case undefined:
  6499. return utf8ToBytes(string).length
  6500. case 'ucs2':
  6501. case 'ucs-2':
  6502. case 'utf16le':
  6503. case 'utf-16le':
  6504. return len * 2
  6505. case 'hex':
  6506. return len >>> 1
  6507. case 'base64':
  6508. return base64ToBytes(string).length
  6509. default:
  6510. if (loweredCase) return utf8ToBytes(string).length // assume utf8
  6511. encoding = ('' + encoding).toLowerCase()
  6512. loweredCase = true
  6513. }
  6514. }
  6515. }
  6516. Buffer.byteLength = byteLength
  6517. function slowToString (encoding, start, end) {
  6518. var loweredCase = false
  6519. // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
  6520. // property of a typed array.
  6521. // This behaves neither like String nor Uint8Array in that we set start/end
  6522. // to their upper/lower bounds if the value passed is out of range.
  6523. // undefined is handled specially as per ECMA-262 6th Edition,
  6524. // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
  6525. if (start === undefined || start < 0) {
  6526. start = 0
  6527. }
  6528. // Return early if start > this.length. Done here to prevent potential uint32
  6529. // coercion fail below.
  6530. if (start > this.length) {
  6531. return ''
  6532. }
  6533. if (end === undefined || end > this.length) {
  6534. end = this.length
  6535. }
  6536. if (end <= 0) {
  6537. return ''
  6538. }
  6539. // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
  6540. end >>>= 0
  6541. start >>>= 0
  6542. if (end <= start) {
  6543. return ''
  6544. }
  6545. if (!encoding) encoding = 'utf8'
  6546. while (true) {
  6547. switch (encoding) {
  6548. case 'hex':
  6549. return hexSlice(this, start, end)
  6550. case 'utf8':
  6551. case 'utf-8':
  6552. return utf8Slice(this, start, end)
  6553. case 'ascii':
  6554. return asciiSlice(this, start, end)
  6555. case 'latin1':
  6556. case 'binary':
  6557. return latin1Slice(this, start, end)
  6558. case 'base64':
  6559. return base64Slice(this, start, end)
  6560. case 'ucs2':
  6561. case 'ucs-2':
  6562. case 'utf16le':
  6563. case 'utf-16le':
  6564. return utf16leSlice(this, start, end)
  6565. default:
  6566. if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
  6567. encoding = (encoding + '').toLowerCase()
  6568. loweredCase = true
  6569. }
  6570. }
  6571. }
  6572. // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
  6573. // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
  6574. // reliably in a browserify context because there could be multiple different
  6575. // copies of the 'buffer' package in use. This method works even for Buffer
  6576. // instances that were created from another copy of the `buffer` package.
  6577. // See: https://github.com/feross/buffer/issues/154
  6578. Buffer.prototype._isBuffer = true
  6579. function swap (b, n, m) {
  6580. var i = b[n]
  6581. b[n] = b[m]
  6582. b[m] = i
  6583. }
  6584. Buffer.prototype.swap16 = function swap16 () {
  6585. var len = this.length
  6586. if (len % 2 !== 0) {
  6587. throw new RangeError('Buffer size must be a multiple of 16-bits')
  6588. }
  6589. for (var i = 0; i < len; i += 2) {
  6590. swap(this, i, i + 1)
  6591. }
  6592. return this
  6593. }
  6594. Buffer.prototype.swap32 = function swap32 () {
  6595. var len = this.length
  6596. if (len % 4 !== 0) {
  6597. throw new RangeError('Buffer size must be a multiple of 32-bits')
  6598. }
  6599. for (var i = 0; i < len; i += 4) {
  6600. swap(this, i, i + 3)
  6601. swap(this, i + 1, i + 2)
  6602. }
  6603. return this
  6604. }
  6605. Buffer.prototype.swap64 = function swap64 () {
  6606. var len = this.length
  6607. if (len % 8 !== 0) {
  6608. throw new RangeError('Buffer size must be a multiple of 64-bits')
  6609. }
  6610. for (var i = 0; i < len; i += 8) {
  6611. swap(this, i, i + 7)
  6612. swap(this, i + 1, i + 6)
  6613. swap(this, i + 2, i + 5)
  6614. swap(this, i + 3, i + 4)
  6615. }
  6616. return this
  6617. }
  6618. Buffer.prototype.toString = function toString () {
  6619. var length = this.length
  6620. if (length === 0) return ''
  6621. if (arguments.length === 0) return utf8Slice(this, 0, length)
  6622. return slowToString.apply(this, arguments)
  6623. }
  6624. Buffer.prototype.equals = function equals (b) {
  6625. if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
  6626. if (this === b) return true
  6627. return Buffer.compare(this, b) === 0
  6628. }
  6629. Buffer.prototype.inspect = function inspect () {
  6630. var str = ''
  6631. var max = exports.INSPECT_MAX_BYTES
  6632. if (this.length > 0) {
  6633. str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
  6634. if (this.length > max) str += ' ... '
  6635. }
  6636. return '<Buffer ' + str + '>'
  6637. }
  6638. Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
  6639. if (!Buffer.isBuffer(target)) {
  6640. throw new TypeError('Argument must be a Buffer')
  6641. }
  6642. if (start === undefined) {
  6643. start = 0
  6644. }
  6645. if (end === undefined) {
  6646. end = target ? target.length : 0
  6647. }
  6648. if (thisStart === undefined) {
  6649. thisStart = 0
  6650. }
  6651. if (thisEnd === undefined) {
  6652. thisEnd = this.length
  6653. }
  6654. if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
  6655. throw new RangeError('out of range index')
  6656. }
  6657. if (thisStart >= thisEnd && start >= end) {
  6658. return 0
  6659. }
  6660. if (thisStart >= thisEnd) {
  6661. return -1
  6662. }
  6663. if (start >= end) {
  6664. return 1
  6665. }
  6666. start >>>= 0
  6667. end >>>= 0
  6668. thisStart >>>= 0
  6669. thisEnd >>>= 0
  6670. if (this === target) return 0
  6671. var x = thisEnd - thisStart
  6672. var y = end - start
  6673. var len = Math.min(x, y)
  6674. var thisCopy = this.slice(thisStart, thisEnd)
  6675. var targetCopy = target.slice(start, end)
  6676. for (var i = 0; i < len; ++i) {
  6677. if (thisCopy[i] !== targetCopy[i]) {
  6678. x = thisCopy[i]
  6679. y = targetCopy[i]
  6680. break
  6681. }
  6682. }
  6683. if (x < y) return -1
  6684. if (y < x) return 1
  6685. return 0
  6686. }
  6687. // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
  6688. // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
  6689. //
  6690. // Arguments:
  6691. // - buffer - a Buffer to search
  6692. // - val - a string, Buffer, or number
  6693. // - byteOffset - an index into `buffer`; will be clamped to an int32
  6694. // - encoding - an optional encoding, relevant is val is a string
  6695. // - dir - true for indexOf, false for lastIndexOf
  6696. function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
  6697. // Empty buffer means no match
  6698. if (buffer.length === 0) return -1
  6699. // Normalize byteOffset
  6700. if (typeof byteOffset === 'string') {
  6701. encoding = byteOffset
  6702. byteOffset = 0
  6703. } else if (byteOffset > 0x7fffffff) {
  6704. byteOffset = 0x7fffffff
  6705. } else if (byteOffset < -0x80000000) {
  6706. byteOffset = -0x80000000
  6707. }
  6708. byteOffset = +byteOffset // Coerce to Number.
  6709. if (numberIsNaN(byteOffset)) {
  6710. // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
  6711. byteOffset = dir ? 0 : (buffer.length - 1)
  6712. }
  6713. // Normalize byteOffset: negative offsets start from the end of the buffer
  6714. if (byteOffset < 0) byteOffset = buffer.length + byteOffset
  6715. if (byteOffset >= buffer.length) {
  6716. if (dir) return -1
  6717. else byteOffset = buffer.length - 1
  6718. } else if (byteOffset < 0) {
  6719. if (dir) byteOffset = 0
  6720. else return -1
  6721. }
  6722. // Normalize val
  6723. if (typeof val === 'string') {
  6724. val = Buffer.from(val, encoding)
  6725. }
  6726. // Finally, search either indexOf (if dir is true) or lastIndexOf
  6727. if (Buffer.isBuffer(val)) {
  6728. // Special case: looking for empty string/buffer always fails
  6729. if (val.length === 0) {
  6730. return -1
  6731. }
  6732. return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
  6733. } else if (typeof val === 'number') {
  6734. val = val & 0xFF // Search for a byte value [0-255]
  6735. if (typeof Uint8Array.prototype.indexOf === 'function') {
  6736. if (dir) {
  6737. return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
  6738. } else {
  6739. return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
  6740. }
  6741. }
  6742. return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
  6743. }
  6744. throw new TypeError('val must be string, number or Buffer')
  6745. }
  6746. function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
  6747. var indexSize = 1
  6748. var arrLength = arr.length
  6749. var valLength = val.length
  6750. if (encoding !== undefined) {
  6751. encoding = String(encoding).toLowerCase()
  6752. if (encoding === 'ucs2' || encoding === 'ucs-2' ||
  6753. encoding === 'utf16le' || encoding === 'utf-16le') {
  6754. if (arr.length < 2 || val.length < 2) {
  6755. return -1
  6756. }
  6757. indexSize = 2
  6758. arrLength /= 2
  6759. valLength /= 2
  6760. byteOffset /= 2
  6761. }
  6762. }
  6763. function read (buf, i) {
  6764. if (indexSize === 1) {
  6765. return buf[i]
  6766. } else {
  6767. return buf.readUInt16BE(i * indexSize)
  6768. }
  6769. }
  6770. var i
  6771. if (dir) {
  6772. var foundIndex = -1
  6773. for (i = byteOffset; i < arrLength; i++) {
  6774. if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
  6775. if (foundIndex === -1) foundIndex = i
  6776. if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
  6777. } else {
  6778. if (foundIndex !== -1) i -= i - foundIndex
  6779. foundIndex = -1
  6780. }
  6781. }
  6782. } else {
  6783. if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
  6784. for (i = byteOffset; i >= 0; i--) {
  6785. var found = true
  6786. for (var j = 0; j < valLength; j++) {
  6787. if (read(arr, i + j) !== read(val, j)) {
  6788. found = false
  6789. break
  6790. }
  6791. }
  6792. if (found) return i
  6793. }
  6794. }
  6795. return -1
  6796. }
  6797. Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
  6798. return this.indexOf(val, byteOffset, encoding) !== -1
  6799. }
  6800. Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
  6801. return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
  6802. }
  6803. Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
  6804. return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
  6805. }
  6806. function hexWrite (buf, string, offset, length) {
  6807. offset = Number(offset) || 0
  6808. var remaining = buf.length - offset
  6809. if (!length) {
  6810. length = remaining
  6811. } else {
  6812. length = Number(length)
  6813. if (length > remaining) {
  6814. length = remaining
  6815. }
  6816. }
  6817. // must be an even number of digits
  6818. var strLen = string.length
  6819. if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
  6820. if (length > strLen / 2) {
  6821. length = strLen / 2
  6822. }
  6823. for (var i = 0; i < length; ++i) {
  6824. var parsed = parseInt(string.substr(i * 2, 2), 16)
  6825. if (numberIsNaN(parsed)) return i
  6826. buf[offset + i] = parsed
  6827. }
  6828. return i
  6829. }
  6830. function utf8Write (buf, string, offset, length) {
  6831. return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
  6832. }
  6833. function asciiWrite (buf, string, offset, length) {
  6834. return blitBuffer(asciiToBytes(string), buf, offset, length)
  6835. }
  6836. function latin1Write (buf, string, offset, length) {
  6837. return asciiWrite(buf, string, offset, length)
  6838. }
  6839. function base64Write (buf, string, offset, length) {
  6840. return blitBuffer(base64ToBytes(string), buf, offset, length)
  6841. }
  6842. function ucs2Write (buf, string, offset, length) {
  6843. return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
  6844. }
  6845. Buffer.prototype.write = function write (string, offset, length, encoding) {
  6846. // Buffer#write(string)
  6847. if (offset === undefined) {
  6848. encoding = 'utf8'
  6849. length = this.length
  6850. offset = 0
  6851. // Buffer#write(string, encoding)
  6852. } else if (length === undefined && typeof offset === 'string') {
  6853. encoding = offset
  6854. length = this.length
  6855. offset = 0
  6856. // Buffer#write(string, offset[, length][, encoding])
  6857. } else if (isFinite(offset)) {
  6858. offset = offset >>> 0
  6859. if (isFinite(length)) {
  6860. length = length >>> 0
  6861. if (encoding === undefined) encoding = 'utf8'
  6862. } else {
  6863. encoding = length
  6864. length = undefined
  6865. }
  6866. } else {
  6867. throw new Error(
  6868. 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
  6869. )
  6870. }
  6871. var remaining = this.length - offset
  6872. if (length === undefined || length > remaining) length = remaining
  6873. if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
  6874. throw new RangeError('Attempt to write outside buffer bounds')
  6875. }
  6876. if (!encoding) encoding = 'utf8'
  6877. var loweredCase = false
  6878. for (;;) {
  6879. switch (encoding) {
  6880. case 'hex':
  6881. return hexWrite(this, string, offset, length)
  6882. case 'utf8':
  6883. case 'utf-8':
  6884. return utf8Write(this, string, offset, length)
  6885. case 'ascii':
  6886. return asciiWrite(this, string, offset, length)
  6887. case 'latin1':
  6888. case 'binary':
  6889. return latin1Write(this, string, offset, length)
  6890. case 'base64':
  6891. // Warning: maxLength not taken into account in base64Write
  6892. return base64Write(this, string, offset, length)
  6893. case 'ucs2':
  6894. case 'ucs-2':
  6895. case 'utf16le':
  6896. case 'utf-16le':
  6897. return ucs2Write(this, string, offset, length)
  6898. default:
  6899. if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
  6900. encoding = ('' + encoding).toLowerCase()
  6901. loweredCase = true
  6902. }
  6903. }
  6904. }
  6905. Buffer.prototype.toJSON = function toJSON () {
  6906. return {
  6907. type: 'Buffer',
  6908. data: Array.prototype.slice.call(this._arr || this, 0)
  6909. }
  6910. }
  6911. function base64Slice (buf, start, end) {
  6912. if (start === 0 && end === buf.length) {
  6913. return base64.fromByteArray(buf)
  6914. } else {
  6915. return base64.fromByteArray(buf.slice(start, end))
  6916. }
  6917. }
  6918. function utf8Slice (buf, start, end) {
  6919. end = Math.min(buf.length, end)
  6920. var res = []
  6921. var i = start
  6922. while (i < end) {
  6923. var firstByte = buf[i]
  6924. var codePoint = null
  6925. var bytesPerSequence = (firstByte > 0xEF) ? 4
  6926. : (firstByte > 0xDF) ? 3
  6927. : (firstByte > 0xBF) ? 2
  6928. : 1
  6929. if (i + bytesPerSequence <= end) {
  6930. var secondByte, thirdByte, fourthByte, tempCodePoint
  6931. switch (bytesPerSequence) {
  6932. case 1:
  6933. if (firstByte < 0x80) {
  6934. codePoint = firstByte
  6935. }
  6936. break
  6937. case 2:
  6938. secondByte = buf[i + 1]
  6939. if ((secondByte & 0xC0) === 0x80) {
  6940. tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
  6941. if (tempCodePoint > 0x7F) {
  6942. codePoint = tempCodePoint
  6943. }
  6944. }
  6945. break
  6946. case 3:
  6947. secondByte = buf[i + 1]
  6948. thirdByte = buf[i + 2]
  6949. if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
  6950. tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
  6951. if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
  6952. codePoint = tempCodePoint
  6953. }
  6954. }
  6955. break
  6956. case 4:
  6957. secondByte = buf[i + 1]
  6958. thirdByte = buf[i + 2]
  6959. fourthByte = buf[i + 3]
  6960. if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
  6961. tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
  6962. if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
  6963. codePoint = tempCodePoint
  6964. }
  6965. }
  6966. }
  6967. }
  6968. if (codePoint === null) {
  6969. // we did not generate a valid codePoint so insert a
  6970. // replacement char (U+FFFD) and advance only 1 byte
  6971. codePoint = 0xFFFD
  6972. bytesPerSequence = 1
  6973. } else if (codePoint > 0xFFFF) {
  6974. // encode to utf16 (surrogate pair dance)
  6975. codePoint -= 0x10000
  6976. res.push(codePoint >>> 10 & 0x3FF | 0xD800)
  6977. codePoint = 0xDC00 | codePoint & 0x3FF
  6978. }
  6979. res.push(codePoint)
  6980. i += bytesPerSequence
  6981. }
  6982. return decodeCodePointsArray(res)
  6983. }
  6984. // Based on http://stackoverflow.com/a/22747272/680742, the browser with
  6985. // the lowest limit is Chrome, with 0x10000 args.
  6986. // We go 1 magnitude less, for safety
  6987. var MAX_ARGUMENTS_LENGTH = 0x1000
  6988. function decodeCodePointsArray (codePoints) {
  6989. var len = codePoints.length
  6990. if (len <= MAX_ARGUMENTS_LENGTH) {
  6991. return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
  6992. }
  6993. // Decode in chunks to avoid "call stack size exceeded".
  6994. var res = ''
  6995. var i = 0
  6996. while (i < len) {
  6997. res += String.fromCharCode.apply(
  6998. String,
  6999. codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
  7000. )
  7001. }
  7002. return res
  7003. }
  7004. function asciiSlice (buf, start, end) {
  7005. var ret = ''
  7006. end = Math.min(buf.length, end)
  7007. for (var i = start; i < end; ++i) {
  7008. ret += String.fromCharCode(buf[i] & 0x7F)
  7009. }
  7010. return ret
  7011. }
  7012. function latin1Slice (buf, start, end) {
  7013. var ret = ''
  7014. end = Math.min(buf.length, end)
  7015. for (var i = start; i < end; ++i) {
  7016. ret += String.fromCharCode(buf[i])
  7017. }
  7018. return ret
  7019. }
  7020. function hexSlice (buf, start, end) {
  7021. var len = buf.length
  7022. if (!start || start < 0) start = 0
  7023. if (!end || end < 0 || end > len) end = len
  7024. var out = ''
  7025. for (var i = start; i < end; ++i) {
  7026. out += toHex(buf[i])
  7027. }
  7028. return out
  7029. }
  7030. function utf16leSlice (buf, start, end) {
  7031. var bytes = buf.slice(start, end)
  7032. var res = ''
  7033. for (var i = 0; i < bytes.length; i += 2) {
  7034. res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
  7035. }
  7036. return res
  7037. }
  7038. Buffer.prototype.slice = function slice (start, end) {
  7039. var len = this.length
  7040. start = ~~start
  7041. end = end === undefined ? len : ~~end
  7042. if (start < 0) {
  7043. start += len
  7044. if (start < 0) start = 0
  7045. } else if (start > len) {
  7046. start = len
  7047. }
  7048. if (end < 0) {
  7049. end += len
  7050. if (end < 0) end = 0
  7051. } else if (end > len) {
  7052. end = len
  7053. }
  7054. if (end < start) end = start
  7055. var newBuf = this.subarray(start, end)
  7056. // Return an augmented `Uint8Array` instance
  7057. newBuf.__proto__ = Buffer.prototype
  7058. return newBuf
  7059. }
  7060. /*
  7061. * Need to make sure that buffer isn't trying to write out of bounds.
  7062. */
  7063. function checkOffset (offset, ext, length) {
  7064. if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
  7065. if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
  7066. }
  7067. Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
  7068. offset = offset >>> 0
  7069. byteLength = byteLength >>> 0
  7070. if (!noAssert) checkOffset(offset, byteLength, this.length)
  7071. var val = this[offset]
  7072. var mul = 1
  7073. var i = 0
  7074. while (++i < byteLength && (mul *= 0x100)) {
  7075. val += this[offset + i] * mul
  7076. }
  7077. return val
  7078. }
  7079. Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
  7080. offset = offset >>> 0
  7081. byteLength = byteLength >>> 0
  7082. if (!noAssert) {
  7083. checkOffset(offset, byteLength, this.length)
  7084. }
  7085. var val = this[offset + --byteLength]
  7086. var mul = 1
  7087. while (byteLength > 0 && (mul *= 0x100)) {
  7088. val += this[offset + --byteLength] * mul
  7089. }
  7090. return val
  7091. }
  7092. Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
  7093. offset = offset >>> 0
  7094. if (!noAssert) checkOffset(offset, 1, this.length)
  7095. return this[offset]
  7096. }
  7097. Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
  7098. offset = offset >>> 0
  7099. if (!noAssert) checkOffset(offset, 2, this.length)
  7100. return this[offset] | (this[offset + 1] << 8)
  7101. }
  7102. Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
  7103. offset = offset >>> 0
  7104. if (!noAssert) checkOffset(offset, 2, this.length)
  7105. return (this[offset] << 8) | this[offset + 1]
  7106. }
  7107. Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
  7108. offset = offset >>> 0
  7109. if (!noAssert) checkOffset(offset, 4, this.length)
  7110. return ((this[offset]) |
  7111. (this[offset + 1] << 8) |
  7112. (this[offset + 2] << 16)) +
  7113. (this[offset + 3] * 0x1000000)
  7114. }
  7115. Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
  7116. offset = offset >>> 0
  7117. if (!noAssert) checkOffset(offset, 4, this.length)
  7118. return (this[offset] * 0x1000000) +
  7119. ((this[offset + 1] << 16) |
  7120. (this[offset + 2] << 8) |
  7121. this[offset + 3])
  7122. }
  7123. Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
  7124. offset = offset >>> 0
  7125. byteLength = byteLength >>> 0
  7126. if (!noAssert) checkOffset(offset, byteLength, this.length)
  7127. var val = this[offset]
  7128. var mul = 1
  7129. var i = 0
  7130. while (++i < byteLength && (mul *= 0x100)) {
  7131. val += this[offset + i] * mul
  7132. }
  7133. mul *= 0x80
  7134. if (val >= mul) val -= Math.pow(2, 8 * byteLength)
  7135. return val
  7136. }
  7137. Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
  7138. offset = offset >>> 0
  7139. byteLength = byteLength >>> 0
  7140. if (!noAssert) checkOffset(offset, byteLength, this.length)
  7141. var i = byteLength
  7142. var mul = 1
  7143. var val = this[offset + --i]
  7144. while (i > 0 && (mul *= 0x100)) {
  7145. val += this[offset + --i] * mul
  7146. }
  7147. mul *= 0x80
  7148. if (val >= mul) val -= Math.pow(2, 8 * byteLength)
  7149. return val
  7150. }
  7151. Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
  7152. offset = offset >>> 0
  7153. if (!noAssert) checkOffset(offset, 1, this.length)
  7154. if (!(this[offset] & 0x80)) return (this[offset])
  7155. return ((0xff - this[offset] + 1) * -1)
  7156. }
  7157. Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
  7158. offset = offset >>> 0
  7159. if (!noAssert) checkOffset(offset, 2, this.length)
  7160. var val = this[offset] | (this[offset + 1] << 8)
  7161. return (val & 0x8000) ? val | 0xFFFF0000 : val
  7162. }
  7163. Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
  7164. offset = offset >>> 0
  7165. if (!noAssert) checkOffset(offset, 2, this.length)
  7166. var val = this[offset + 1] | (this[offset] << 8)
  7167. return (val & 0x8000) ? val | 0xFFFF0000 : val
  7168. }
  7169. Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
  7170. offset = offset >>> 0
  7171. if (!noAssert) checkOffset(offset, 4, this.length)
  7172. return (this[offset]) |
  7173. (this[offset + 1] << 8) |
  7174. (this[offset + 2] << 16) |
  7175. (this[offset + 3] << 24)
  7176. }
  7177. Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
  7178. offset = offset >>> 0
  7179. if (!noAssert) checkOffset(offset, 4, this.length)
  7180. return (this[offset] << 24) |
  7181. (this[offset + 1] << 16) |
  7182. (this[offset + 2] << 8) |
  7183. (this[offset + 3])
  7184. }
  7185. Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
  7186. offset = offset >>> 0
  7187. if (!noAssert) checkOffset(offset, 4, this.length)
  7188. return ieee754.read(this, offset, true, 23, 4)
  7189. }
  7190. Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
  7191. offset = offset >>> 0
  7192. if (!noAssert) checkOffset(offset, 4, this.length)
  7193. return ieee754.read(this, offset, false, 23, 4)
  7194. }
  7195. Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
  7196. offset = offset >>> 0
  7197. if (!noAssert) checkOffset(offset, 8, this.length)
  7198. return ieee754.read(this, offset, true, 52, 8)
  7199. }
  7200. Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
  7201. offset = offset >>> 0
  7202. if (!noAssert) checkOffset(offset, 8, this.length)
  7203. return ieee754.read(this, offset, false, 52, 8)
  7204. }
  7205. function checkInt (buf, value, offset, ext, max, min) {
  7206. if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
  7207. if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
  7208. if (offset + ext > buf.length) throw new RangeError('Index out of range')
  7209. }
  7210. Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
  7211. value = +value
  7212. offset = offset >>> 0
  7213. byteLength = byteLength >>> 0
  7214. if (!noAssert) {
  7215. var maxBytes = Math.pow(2, 8 * byteLength) - 1
  7216. checkInt(this, value, offset, byteLength, maxBytes, 0)
  7217. }
  7218. var mul = 1
  7219. var i = 0
  7220. this[offset] = value & 0xFF
  7221. while (++i < byteLength && (mul *= 0x100)) {
  7222. this[offset + i] = (value / mul) & 0xFF
  7223. }
  7224. return offset + byteLength
  7225. }
  7226. Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
  7227. value = +value
  7228. offset = offset >>> 0
  7229. byteLength = byteLength >>> 0
  7230. if (!noAssert) {
  7231. var maxBytes = Math.pow(2, 8 * byteLength) - 1
  7232. checkInt(this, value, offset, byteLength, maxBytes, 0)
  7233. }
  7234. var i = byteLength - 1
  7235. var mul = 1
  7236. this[offset + i] = value & 0xFF
  7237. while (--i >= 0 && (mul *= 0x100)) {
  7238. this[offset + i] = (value / mul) & 0xFF
  7239. }
  7240. return offset + byteLength
  7241. }
  7242. Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
  7243. value = +value
  7244. offset = offset >>> 0
  7245. if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
  7246. this[offset] = (value & 0xff)
  7247. return offset + 1
  7248. }
  7249. Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
  7250. value = +value
  7251. offset = offset >>> 0
  7252. if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
  7253. this[offset] = (value & 0xff)
  7254. this[offset + 1] = (value >>> 8)
  7255. return offset + 2
  7256. }
  7257. Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
  7258. value = +value
  7259. offset = offset >>> 0
  7260. if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
  7261. this[offset] = (value >>> 8)
  7262. this[offset + 1] = (value & 0xff)
  7263. return offset + 2
  7264. }
  7265. Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
  7266. value = +value
  7267. offset = offset >>> 0
  7268. if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
  7269. this[offset + 3] = (value >>> 24)
  7270. this[offset + 2] = (value >>> 16)
  7271. this[offset + 1] = (value >>> 8)
  7272. this[offset] = (value & 0xff)
  7273. return offset + 4
  7274. }
  7275. Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
  7276. value = +value
  7277. offset = offset >>> 0
  7278. if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
  7279. this[offset] = (value >>> 24)
  7280. this[offset + 1] = (value >>> 16)
  7281. this[offset + 2] = (value >>> 8)
  7282. this[offset + 3] = (value & 0xff)
  7283. return offset + 4
  7284. }
  7285. Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
  7286. value = +value
  7287. offset = offset >>> 0
  7288. if (!noAssert) {
  7289. var limit = Math.pow(2, (8 * byteLength) - 1)
  7290. checkInt(this, value, offset, byteLength, limit - 1, -limit)
  7291. }
  7292. var i = 0
  7293. var mul = 1
  7294. var sub = 0
  7295. this[offset] = value & 0xFF
  7296. while (++i < byteLength && (mul *= 0x100)) {
  7297. if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
  7298. sub = 1
  7299. }
  7300. this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
  7301. }
  7302. return offset + byteLength
  7303. }
  7304. Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
  7305. value = +value
  7306. offset = offset >>> 0
  7307. if (!noAssert) {
  7308. var limit = Math.pow(2, (8 * byteLength) - 1)
  7309. checkInt(this, value, offset, byteLength, limit - 1, -limit)
  7310. }
  7311. var i = byteLength - 1
  7312. var mul = 1
  7313. var sub = 0
  7314. this[offset + i] = value & 0xFF
  7315. while (--i >= 0 && (mul *= 0x100)) {
  7316. if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
  7317. sub = 1
  7318. }
  7319. this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
  7320. }
  7321. return offset + byteLength
  7322. }
  7323. Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
  7324. value = +value
  7325. offset = offset >>> 0
  7326. if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
  7327. if (value < 0) value = 0xff + value + 1
  7328. this[offset] = (value & 0xff)
  7329. return offset + 1
  7330. }
  7331. Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
  7332. value = +value
  7333. offset = offset >>> 0
  7334. if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
  7335. this[offset] = (value & 0xff)
  7336. this[offset + 1] = (value >>> 8)
  7337. return offset + 2
  7338. }
  7339. Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
  7340. value = +value
  7341. offset = offset >>> 0
  7342. if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
  7343. this[offset] = (value >>> 8)
  7344. this[offset + 1] = (value & 0xff)
  7345. return offset + 2
  7346. }
  7347. Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
  7348. value = +value
  7349. offset = offset >>> 0
  7350. if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
  7351. this[offset] = (value & 0xff)
  7352. this[offset + 1] = (value >>> 8)
  7353. this[offset + 2] = (value >>> 16)
  7354. this[offset + 3] = (value >>> 24)
  7355. return offset + 4
  7356. }
  7357. Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
  7358. value = +value
  7359. offset = offset >>> 0
  7360. if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
  7361. if (value < 0) value = 0xffffffff + value + 1
  7362. this[offset] = (value >>> 24)
  7363. this[offset + 1] = (value >>> 16)
  7364. this[offset + 2] = (value >>> 8)
  7365. this[offset + 3] = (value & 0xff)
  7366. return offset + 4
  7367. }
  7368. function checkIEEE754 (buf, value, offset, ext, max, min) {
  7369. if (offset + ext > buf.length) throw new RangeError('Index out of range')
  7370. if (offset < 0) throw new RangeError('Index out of range')
  7371. }
  7372. function writeFloat (buf, value, offset, littleEndian, noAssert) {
  7373. value = +value
  7374. offset = offset >>> 0
  7375. if (!noAssert) {
  7376. checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
  7377. }
  7378. ieee754.write(buf, value, offset, littleEndian, 23, 4)
  7379. return offset + 4
  7380. }
  7381. Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
  7382. return writeFloat(this, value, offset, true, noAssert)
  7383. }
  7384. Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
  7385. return writeFloat(this, value, offset, false, noAssert)
  7386. }
  7387. function writeDouble (buf, value, offset, littleEndian, noAssert) {
  7388. value = +value
  7389. offset = offset >>> 0
  7390. if (!noAssert) {
  7391. checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
  7392. }
  7393. ieee754.write(buf, value, offset, littleEndian, 52, 8)
  7394. return offset + 8
  7395. }
  7396. Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
  7397. return writeDouble(this, value, offset, true, noAssert)
  7398. }
  7399. Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
  7400. return writeDouble(this, value, offset, false, noAssert)
  7401. }
  7402. // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
  7403. Buffer.prototype.copy = function copy (target, targetStart, start, end) {
  7404. if (!start) start = 0
  7405. if (!end && end !== 0) end = this.length
  7406. if (targetStart >= target.length) targetStart = target.length
  7407. if (!targetStart) targetStart = 0
  7408. if (end > 0 && end < start) end = start
  7409. // Copy 0 bytes; we're done
  7410. if (end === start) return 0
  7411. if (target.length === 0 || this.length === 0) return 0
  7412. // Fatal error conditions
  7413. if (targetStart < 0) {
  7414. throw new RangeError('targetStart out of bounds')
  7415. }
  7416. if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
  7417. if (end < 0) throw new RangeError('sourceEnd out of bounds')
  7418. // Are we oob?
  7419. if (end > this.length) end = this.length
  7420. if (target.length - targetStart < end - start) {
  7421. end = target.length - targetStart + start
  7422. }
  7423. var len = end - start
  7424. var i
  7425. if (this === target && start < targetStart && targetStart < end) {
  7426. // descending copy from end
  7427. for (i = len - 1; i >= 0; --i) {
  7428. target[i + targetStart] = this[i + start]
  7429. }
  7430. } else if (len < 1000) {
  7431. // ascending copy from start
  7432. for (i = 0; i < len; ++i) {
  7433. target[i + targetStart] = this[i + start]
  7434. }
  7435. } else {
  7436. Uint8Array.prototype.set.call(
  7437. target,
  7438. this.subarray(start, start + len),
  7439. targetStart
  7440. )
  7441. }
  7442. return len
  7443. }
  7444. // Usage:
  7445. // buffer.fill(number[, offset[, end]])
  7446. // buffer.fill(buffer[, offset[, end]])
  7447. // buffer.fill(string[, offset[, end]][, encoding])
  7448. Buffer.prototype.fill = function fill (val, start, end, encoding) {
  7449. // Handle string cases:
  7450. if (typeof val === 'string') {
  7451. if (typeof start === 'string') {
  7452. encoding = start
  7453. start = 0
  7454. end = this.length
  7455. } else if (typeof end === 'string') {
  7456. encoding = end
  7457. end = this.length
  7458. }
  7459. if (val.length === 1) {
  7460. var code = val.charCodeAt(0)
  7461. if (code < 256) {
  7462. val = code
  7463. }
  7464. }
  7465. if (encoding !== undefined && typeof encoding !== 'string') {
  7466. throw new TypeError('encoding must be a string')
  7467. }
  7468. if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
  7469. throw new TypeError('Unknown encoding: ' + encoding)
  7470. }
  7471. } else if (typeof val === 'number') {
  7472. val = val & 255
  7473. }
  7474. // Invalid ranges are not set to a default, so can range check early.
  7475. if (start < 0 || this.length < start || this.length < end) {
  7476. throw new RangeError('Out of range index')
  7477. }
  7478. if (end <= start) {
  7479. return this
  7480. }
  7481. start = start >>> 0
  7482. end = end === undefined ? this.length : end >>> 0
  7483. if (!val) val = 0
  7484. var i
  7485. if (typeof val === 'number') {
  7486. for (i = start; i < end; ++i) {
  7487. this[i] = val
  7488. }
  7489. } else {
  7490. var bytes = Buffer.isBuffer(val)
  7491. ? val
  7492. : new Buffer(val, encoding)
  7493. var len = bytes.length
  7494. for (i = 0; i < end - start; ++i) {
  7495. this[i + start] = bytes[i % len]
  7496. }
  7497. }
  7498. return this
  7499. }
  7500. // HELPER FUNCTIONS
  7501. // ================
  7502. var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
  7503. function base64clean (str) {
  7504. // Node strips out invalid characters like \n and \t from the string, base64-js does not
  7505. str = str.trim().replace(INVALID_BASE64_RE, '')
  7506. // Node converts strings with length < 2 to ''
  7507. if (str.length < 2) return ''
  7508. // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
  7509. while (str.length % 4 !== 0) {
  7510. str = str + '='
  7511. }
  7512. return str
  7513. }
  7514. function toHex (n) {
  7515. if (n < 16) return '0' + n.toString(16)
  7516. return n.toString(16)
  7517. }
  7518. function utf8ToBytes (string, units) {
  7519. units = units || Infinity
  7520. var codePoint
  7521. var length = string.length
  7522. var leadSurrogate = null
  7523. var bytes = []
  7524. for (var i = 0; i < length; ++i) {
  7525. codePoint = string.charCodeAt(i)
  7526. // is surrogate component
  7527. if (codePoint > 0xD7FF && codePoint < 0xE000) {
  7528. // last char was a lead
  7529. if (!leadSurrogate) {
  7530. // no lead yet
  7531. if (codePoint > 0xDBFF) {
  7532. // unexpected trail
  7533. if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
  7534. continue
  7535. } else if (i + 1 === length) {
  7536. // unpaired lead
  7537. if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
  7538. continue
  7539. }
  7540. // valid lead
  7541. leadSurrogate = codePoint
  7542. continue
  7543. }
  7544. // 2 leads in a row
  7545. if (codePoint < 0xDC00) {
  7546. if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
  7547. leadSurrogate = codePoint
  7548. continue
  7549. }
  7550. // valid surrogate pair
  7551. codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
  7552. } else if (leadSurrogate) {
  7553. // valid bmp char, but last char was a lead
  7554. if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
  7555. }
  7556. leadSurrogate = null
  7557. // encode utf8
  7558. if (codePoint < 0x80) {
  7559. if ((units -= 1) < 0) break
  7560. bytes.push(codePoint)
  7561. } else if (codePoint < 0x800) {
  7562. if ((units -= 2) < 0) break
  7563. bytes.push(
  7564. codePoint >> 0x6 | 0xC0,
  7565. codePoint & 0x3F | 0x80
  7566. )
  7567. } else if (codePoint < 0x10000) {
  7568. if ((units -= 3) < 0) break
  7569. bytes.push(
  7570. codePoint >> 0xC | 0xE0,
  7571. codePoint >> 0x6 & 0x3F | 0x80,
  7572. codePoint & 0x3F | 0x80
  7573. )
  7574. } else if (codePoint < 0x110000) {
  7575. if ((units -= 4) < 0) break
  7576. bytes.push(
  7577. codePoint >> 0x12 | 0xF0,
  7578. codePoint >> 0xC & 0x3F | 0x80,
  7579. codePoint >> 0x6 & 0x3F | 0x80,
  7580. codePoint & 0x3F | 0x80
  7581. )
  7582. } else {
  7583. throw new Error('Invalid code point')
  7584. }
  7585. }
  7586. return bytes
  7587. }
  7588. function asciiToBytes (str) {
  7589. var byteArray = []
  7590. for (var i = 0; i < str.length; ++i) {
  7591. // Node's code seems to be doing this and not & 0x7F..
  7592. byteArray.push(str.charCodeAt(i) & 0xFF)
  7593. }
  7594. return byteArray
  7595. }
  7596. function utf16leToBytes (str, units) {
  7597. var c, hi, lo
  7598. var byteArray = []
  7599. for (var i = 0; i < str.length; ++i) {
  7600. if ((units -= 2) < 0) break
  7601. c = str.charCodeAt(i)
  7602. hi = c >> 8
  7603. lo = c % 256
  7604. byteArray.push(lo)
  7605. byteArray.push(hi)
  7606. }
  7607. return byteArray
  7608. }
  7609. function base64ToBytes (str) {
  7610. return base64.toByteArray(base64clean(str))
  7611. }
  7612. function blitBuffer (src, dst, offset, length) {
  7613. for (var i = 0; i < length; ++i) {
  7614. if ((i + offset >= dst.length) || (i >= src.length)) break
  7615. dst[i + offset] = src[i]
  7616. }
  7617. return i
  7618. }
  7619. // ArrayBuffers from another context (i.e. an iframe) do not pass the `instanceof` check
  7620. // but they should be treated as valid. See: https://github.com/feross/buffer/issues/166
  7621. function isArrayBuffer (obj) {
  7622. return obj instanceof ArrayBuffer ||
  7623. (obj != null && obj.constructor != null && obj.constructor.name === 'ArrayBuffer' &&
  7624. typeof obj.byteLength === 'number')
  7625. }
  7626. // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
  7627. function isArrayBufferView (obj) {
  7628. return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
  7629. }
  7630. function numberIsNaN (obj) {
  7631. return obj !== obj // eslint-disable-line no-self-compare
  7632. }
  7633. },{"base64-js":24,"ieee754":106}],55:[function(require,module,exports){
  7634. var Buffer = require('safe-buffer').Buffer
  7635. var Transform = require('stream').Transform
  7636. var StringDecoder = require('string_decoder').StringDecoder
  7637. var inherits = require('inherits')
  7638. function CipherBase (hashMode) {
  7639. Transform.call(this)
  7640. this.hashMode = typeof hashMode === 'string'
  7641. if (this.hashMode) {
  7642. this[hashMode] = this._finalOrDigest
  7643. } else {
  7644. this.final = this._finalOrDigest
  7645. }
  7646. if (this._final) {
  7647. this.__final = this._final
  7648. this._final = null
  7649. }
  7650. this._decoder = null
  7651. this._encoding = null
  7652. }
  7653. inherits(CipherBase, Transform)
  7654. CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
  7655. if (typeof data === 'string') {
  7656. data = Buffer.from(data, inputEnc)
  7657. }
  7658. var outData = this._update(data)
  7659. if (this.hashMode) return this
  7660. if (outputEnc) {
  7661. outData = this._toString(outData, outputEnc)
  7662. }
  7663. return outData
  7664. }
  7665. CipherBase.prototype.setAutoPadding = function () {}
  7666. CipherBase.prototype.getAuthTag = function () {
  7667. throw new Error('trying to get auth tag in unsupported state')
  7668. }
  7669. CipherBase.prototype.setAuthTag = function () {
  7670. throw new Error('trying to set auth tag in unsupported state')
  7671. }
  7672. CipherBase.prototype.setAAD = function () {
  7673. throw new Error('trying to set aad in unsupported state')
  7674. }
  7675. CipherBase.prototype._transform = function (data, _, next) {
  7676. var err
  7677. try {
  7678. if (this.hashMode) {
  7679. this._update(data)
  7680. } else {
  7681. this.push(this._update(data))
  7682. }
  7683. } catch (e) {
  7684. err = e
  7685. } finally {
  7686. next(err)
  7687. }
  7688. }
  7689. CipherBase.prototype._flush = function (done) {
  7690. var err
  7691. try {
  7692. this.push(this.__final())
  7693. } catch (e) {
  7694. err = e
  7695. }
  7696. done(err)
  7697. }
  7698. CipherBase.prototype._finalOrDigest = function (outputEnc) {
  7699. var outData = this.__final() || Buffer.alloc(0)
  7700. if (outputEnc) {
  7701. outData = this._toString(outData, outputEnc, true)
  7702. }
  7703. return outData
  7704. }
  7705. CipherBase.prototype._toString = function (value, enc, fin) {
  7706. if (!this._decoder) {
  7707. this._decoder = new StringDecoder(enc)
  7708. this._encoding = enc
  7709. }
  7710. if (this._encoding !== enc) throw new Error('can\'t switch encodings')
  7711. var out = this._decoder.write(value)
  7712. if (fin) {
  7713. out += this._decoder.end()
  7714. }
  7715. return out
  7716. }
  7717. module.exports = CipherBase
  7718. },{"inherits":108,"safe-buffer":148,"stream":157,"string_decoder":158}],56:[function(require,module,exports){
  7719. (function (Buffer){
  7720. // Copyright Joyent, Inc. and other Node contributors.
  7721. //
  7722. // Permission is hereby granted, free of charge, to any person obtaining a
  7723. // copy of this software and associated documentation files (the
  7724. // "Software"), to deal in the Software without restriction, including
  7725. // without limitation the rights to use, copy, modify, merge, publish,
  7726. // distribute, sublicense, and/or sell copies of the Software, and to permit
  7727. // persons to whom the Software is furnished to do so, subject to the
  7728. // following conditions:
  7729. //
  7730. // The above copyright notice and this permission notice shall be included
  7731. // in all copies or substantial portions of the Software.
  7732. //
  7733. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  7734. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  7735. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  7736. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  7737. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  7738. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  7739. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  7740. // NOTE: These type checking functions intentionally don't use `instanceof`
  7741. // because it is fragile and can be easily faked with `Object.create()`.
  7742. function isArray(arg) {
  7743. if (Array.isArray) {
  7744. return Array.isArray(arg);
  7745. }
  7746. return objectToString(arg) === '[object Array]';
  7747. }
  7748. exports.isArray = isArray;
  7749. function isBoolean(arg) {
  7750. return typeof arg === 'boolean';
  7751. }
  7752. exports.isBoolean = isBoolean;
  7753. function isNull(arg) {
  7754. return arg === null;
  7755. }
  7756. exports.isNull = isNull;
  7757. function isNullOrUndefined(arg) {
  7758. return arg == null;
  7759. }
  7760. exports.isNullOrUndefined = isNullOrUndefined;
  7761. function isNumber(arg) {
  7762. return typeof arg === 'number';
  7763. }
  7764. exports.isNumber = isNumber;
  7765. function isString(arg) {
  7766. return typeof arg === 'string';
  7767. }
  7768. exports.isString = isString;
  7769. function isSymbol(arg) {
  7770. return typeof arg === 'symbol';
  7771. }
  7772. exports.isSymbol = isSymbol;
  7773. function isUndefined(arg) {
  7774. return arg === void 0;
  7775. }
  7776. exports.isUndefined = isUndefined;
  7777. function isRegExp(re) {
  7778. return objectToString(re) === '[object RegExp]';
  7779. }
  7780. exports.isRegExp = isRegExp;
  7781. function isObject(arg) {
  7782. return typeof arg === 'object' && arg !== null;
  7783. }
  7784. exports.isObject = isObject;
  7785. function isDate(d) {
  7786. return objectToString(d) === '[object Date]';
  7787. }
  7788. exports.isDate = isDate;
  7789. function isError(e) {
  7790. return (objectToString(e) === '[object Error]' || e instanceof Error);
  7791. }
  7792. exports.isError = isError;
  7793. function isFunction(arg) {
  7794. return typeof arg === 'function';
  7795. }
  7796. exports.isFunction = isFunction;
  7797. function isPrimitive(arg) {
  7798. return arg === null ||
  7799. typeof arg === 'boolean' ||
  7800. typeof arg === 'number' ||
  7801. typeof arg === 'string' ||
  7802. typeof arg === 'symbol' || // ES6 symbol
  7803. typeof arg === 'undefined';
  7804. }
  7805. exports.isPrimitive = isPrimitive;
  7806. exports.isBuffer = Buffer.isBuffer;
  7807. function objectToString(o) {
  7808. return Object.prototype.toString.call(o);
  7809. }
  7810. }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
  7811. },{"../../is-buffer/index.js":109}],57:[function(require,module,exports){
  7812. (function (Buffer){
  7813. var elliptic = require('elliptic');
  7814. var BN = require('bn.js');
  7815. module.exports = function createECDH(curve) {
  7816. return new ECDH(curve);
  7817. };
  7818. var aliases = {
  7819. secp256k1: {
  7820. name: 'secp256k1',
  7821. byteLength: 32
  7822. },
  7823. secp224r1: {
  7824. name: 'p224',
  7825. byteLength: 28
  7826. },
  7827. prime256v1: {
  7828. name: 'p256',
  7829. byteLength: 32
  7830. },
  7831. prime192v1: {
  7832. name: 'p192',
  7833. byteLength: 24
  7834. },
  7835. ed25519: {
  7836. name: 'ed25519',
  7837. byteLength: 32
  7838. },
  7839. secp384r1: {
  7840. name: 'p384',
  7841. byteLength: 48
  7842. },
  7843. secp521r1: {
  7844. name: 'p521',
  7845. byteLength: 66
  7846. }
  7847. };
  7848. aliases.p224 = aliases.secp224r1;
  7849. aliases.p256 = aliases.secp256r1 = aliases.prime256v1;
  7850. aliases.p192 = aliases.secp192r1 = aliases.prime192v1;
  7851. aliases.p384 = aliases.secp384r1;
  7852. aliases.p521 = aliases.secp521r1;
  7853. function ECDH(curve) {
  7854. this.curveType = aliases[curve];
  7855. if (!this.curveType ) {
  7856. this.curveType = {
  7857. name: curve
  7858. };
  7859. }
  7860. this.curve = new elliptic.ec(this.curveType.name);
  7861. this.keys = void 0;
  7862. }
  7863. ECDH.prototype.generateKeys = function (enc, format) {
  7864. this.keys = this.curve.genKeyPair();
  7865. return this.getPublicKey(enc, format);
  7866. };
  7867. ECDH.prototype.computeSecret = function (other, inenc, enc) {
  7868. inenc = inenc || 'utf8';
  7869. if (!Buffer.isBuffer(other)) {
  7870. other = new Buffer(other, inenc);
  7871. }
  7872. var otherPub = this.curve.keyFromPublic(other).getPublic();
  7873. var out = otherPub.mul(this.keys.getPrivate()).getX();
  7874. return formatReturnValue(out, enc, this.curveType.byteLength);
  7875. };
  7876. ECDH.prototype.getPublicKey = function (enc, format) {
  7877. var key = this.keys.getPublic(format === 'compressed', true);
  7878. if (format === 'hybrid') {
  7879. if (key[key.length - 1] % 2) {
  7880. key[0] = 7;
  7881. } else {
  7882. key [0] = 6;
  7883. }
  7884. }
  7885. return formatReturnValue(key, enc);
  7886. };
  7887. ECDH.prototype.getPrivateKey = function (enc) {
  7888. return formatReturnValue(this.keys.getPrivate(), enc);
  7889. };
  7890. ECDH.prototype.setPublicKey = function (pub, enc) {
  7891. enc = enc || 'utf8';
  7892. if (!Buffer.isBuffer(pub)) {
  7893. pub = new Buffer(pub, enc);
  7894. }
  7895. this.keys._importPublic(pub);
  7896. return this;
  7897. };
  7898. ECDH.prototype.setPrivateKey = function (priv, enc) {
  7899. enc = enc || 'utf8';
  7900. if (!Buffer.isBuffer(priv)) {
  7901. priv = new Buffer(priv, enc);
  7902. }
  7903. var _priv = new BN(priv);
  7904. _priv = _priv.toString(16);
  7905. this.keys._importPrivate(_priv);
  7906. return this;
  7907. };
  7908. function formatReturnValue(bn, enc, len) {
  7909. if (!Array.isArray(bn)) {
  7910. bn = bn.toArray();
  7911. }
  7912. var buf = new Buffer(bn);
  7913. if (len && buf.length < len) {
  7914. var zeros = new Buffer(len - buf.length);
  7915. zeros.fill(0);
  7916. buf = Buffer.concat([zeros, buf]);
  7917. }
  7918. if (!enc) {
  7919. return buf;
  7920. } else {
  7921. return buf.toString(enc);
  7922. }
  7923. }
  7924. }).call(this,require("buffer").Buffer)
  7925. },{"bn.js":25,"buffer":54,"elliptic":74}],58:[function(require,module,exports){
  7926. (function (Buffer){
  7927. 'use strict'
  7928. var inherits = require('inherits')
  7929. var md5 = require('./md5')
  7930. var RIPEMD160 = require('ripemd160')
  7931. var sha = require('sha.js')
  7932. var Base = require('cipher-base')
  7933. function HashNoConstructor (hash) {
  7934. Base.call(this, 'digest')
  7935. this._hash = hash
  7936. this.buffers = []
  7937. }
  7938. inherits(HashNoConstructor, Base)
  7939. HashNoConstructor.prototype._update = function (data) {
  7940. this.buffers.push(data)
  7941. }
  7942. HashNoConstructor.prototype._final = function () {
  7943. var buf = Buffer.concat(this.buffers)
  7944. var r = this._hash(buf)
  7945. this.buffers = null
  7946. return r
  7947. }
  7948. function Hash (hash) {
  7949. Base.call(this, 'digest')
  7950. this._hash = hash
  7951. }
  7952. inherits(Hash, Base)
  7953. Hash.prototype._update = function (data) {
  7954. this._hash.update(data)
  7955. }
  7956. Hash.prototype._final = function () {
  7957. return this._hash.digest()
  7958. }
  7959. module.exports = function createHash (alg) {
  7960. alg = alg.toLowerCase()
  7961. if (alg === 'md5') return new HashNoConstructor(md5)
  7962. if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())
  7963. return new Hash(sha(alg))
  7964. }
  7965. }).call(this,require("buffer").Buffer)
  7966. },{"./md5":60,"buffer":54,"cipher-base":55,"inherits":108,"ripemd160":147,"sha.js":150}],59:[function(require,module,exports){
  7967. (function (Buffer){
  7968. 'use strict'
  7969. var intSize = 4
  7970. var zeroBuffer = new Buffer(intSize)
  7971. zeroBuffer.fill(0)
  7972. var charSize = 8
  7973. var hashSize = 16
  7974. function toArray (buf) {
  7975. if ((buf.length % intSize) !== 0) {
  7976. var len = buf.length + (intSize - (buf.length % intSize))
  7977. buf = Buffer.concat([buf, zeroBuffer], len)
  7978. }
  7979. var arr = new Array(buf.length >>> 2)
  7980. for (var i = 0, j = 0; i < buf.length; i += intSize, j++) {
  7981. arr[j] = buf.readInt32LE(i)
  7982. }
  7983. return arr
  7984. }
  7985. module.exports = function hash (buf, fn) {
  7986. var arr = fn(toArray(buf), buf.length * charSize)
  7987. buf = new Buffer(hashSize)
  7988. for (var i = 0; i < arr.length; i++) {
  7989. buf.writeInt32LE(arr[i], i << 2, true)
  7990. }
  7991. return buf
  7992. }
  7993. }).call(this,require("buffer").Buffer)
  7994. },{"buffer":54}],60:[function(require,module,exports){
  7995. 'use strict'
  7996. /*
  7997. * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
  7998. * Digest Algorithm, as defined in RFC 1321.
  7999. * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
  8000. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
  8001. * Distributed under the BSD License
  8002. * See http://pajhome.org.uk/crypt/md5 for more info.
  8003. */
  8004. var makeHash = require('./make-hash')
  8005. /*
  8006. * Calculate the MD5 of an array of little-endian words, and a bit length
  8007. */
  8008. function core_md5 (x, len) {
  8009. /* append padding */
  8010. x[len >> 5] |= 0x80 << ((len) % 32)
  8011. x[(((len + 64) >>> 9) << 4) + 14] = len
  8012. var a = 1732584193
  8013. var b = -271733879
  8014. var c = -1732584194
  8015. var d = 271733878
  8016. for (var i = 0; i < x.length; i += 16) {
  8017. var olda = a
  8018. var oldb = b
  8019. var oldc = c
  8020. var oldd = d
  8021. a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936)
  8022. d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586)
  8023. c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819)
  8024. b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330)
  8025. a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897)
  8026. d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426)
  8027. c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341)
  8028. b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983)
  8029. a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416)
  8030. d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417)
  8031. c = md5_ff(c, d, a, b, x[i + 10], 17, -42063)
  8032. b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162)
  8033. a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682)
  8034. d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101)
  8035. c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290)
  8036. b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329)
  8037. a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510)
  8038. d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632)
  8039. c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713)
  8040. b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302)
  8041. a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691)
  8042. d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083)
  8043. c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335)
  8044. b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848)
  8045. a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438)
  8046. d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690)
  8047. c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961)
  8048. b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501)
  8049. a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467)
  8050. d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784)
  8051. c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473)
  8052. b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734)
  8053. a = md5_hh(a, b, c, d, x[i + 5], 4, -378558)
  8054. d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463)
  8055. c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562)
  8056. b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556)
  8057. a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060)
  8058. d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353)
  8059. c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632)
  8060. b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640)
  8061. a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174)
  8062. d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222)
  8063. c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979)
  8064. b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189)
  8065. a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487)
  8066. d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835)
  8067. c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520)
  8068. b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651)
  8069. a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844)
  8070. d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415)
  8071. c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905)
  8072. b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055)
  8073. a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571)
  8074. d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606)
  8075. c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523)
  8076. b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799)
  8077. a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359)
  8078. d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744)
  8079. c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380)
  8080. b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649)
  8081. a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070)
  8082. d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379)
  8083. c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259)
  8084. b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551)
  8085. a = safe_add(a, olda)
  8086. b = safe_add(b, oldb)
  8087. c = safe_add(c, oldc)
  8088. d = safe_add(d, oldd)
  8089. }
  8090. return [a, b, c, d]
  8091. }
  8092. /*
  8093. * These functions implement the four basic operations the algorithm uses.
  8094. */
  8095. function md5_cmn (q, a, b, x, s, t) {
  8096. return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
  8097. }
  8098. function md5_ff (a, b, c, d, x, s, t) {
  8099. return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
  8100. }
  8101. function md5_gg (a, b, c, d, x, s, t) {
  8102. return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
  8103. }
  8104. function md5_hh (a, b, c, d, x, s, t) {
  8105. return md5_cmn(b ^ c ^ d, a, b, x, s, t)
  8106. }
  8107. function md5_ii (a, b, c, d, x, s, t) {
  8108. return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
  8109. }
  8110. /*
  8111. * Add integers, wrapping at 2^32. This uses 16-bit operations internally
  8112. * to work around bugs in some JS interpreters.
  8113. */
  8114. function safe_add (x, y) {
  8115. var lsw = (x & 0xFFFF) + (y & 0xFFFF)
  8116. var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
  8117. return (msw << 16) | (lsw & 0xFFFF)
  8118. }
  8119. /*
  8120. * Bitwise rotate a 32-bit number to the left.
  8121. */
  8122. function bit_rol (num, cnt) {
  8123. return (num << cnt) | (num >>> (32 - cnt))
  8124. }
  8125. module.exports = function md5 (buf) {
  8126. return makeHash(buf, core_md5)
  8127. }
  8128. },{"./make-hash":59}],61:[function(require,module,exports){
  8129. 'use strict'
  8130. var inherits = require('inherits')
  8131. var Legacy = require('./legacy')
  8132. var Base = require('cipher-base')
  8133. var Buffer = require('safe-buffer').Buffer
  8134. var md5 = require('create-hash/md5')
  8135. var RIPEMD160 = require('ripemd160')
  8136. var sha = require('sha.js')
  8137. var ZEROS = Buffer.alloc(128)
  8138. function Hmac (alg, key) {
  8139. Base.call(this, 'digest')
  8140. if (typeof key === 'string') {
  8141. key = Buffer.from(key)
  8142. }
  8143. var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
  8144. this._alg = alg
  8145. this._key = key
  8146. if (key.length > blocksize) {
  8147. var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
  8148. key = hash.update(key).digest()
  8149. } else if (key.length < blocksize) {
  8150. key = Buffer.concat([key, ZEROS], blocksize)
  8151. }
  8152. var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
  8153. var opad = this._opad = Buffer.allocUnsafe(blocksize)
  8154. for (var i = 0; i < blocksize; i++) {
  8155. ipad[i] = key[i] ^ 0x36
  8156. opad[i] = key[i] ^ 0x5C
  8157. }
  8158. this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
  8159. this._hash.update(ipad)
  8160. }
  8161. inherits(Hmac, Base)
  8162. Hmac.prototype._update = function (data) {
  8163. this._hash.update(data)
  8164. }
  8165. Hmac.prototype._final = function () {
  8166. var h = this._hash.digest()
  8167. var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)
  8168. return hash.update(this._opad).update(h).digest()
  8169. }
  8170. module.exports = function createHmac (alg, key) {
  8171. alg = alg.toLowerCase()
  8172. if (alg === 'rmd160' || alg === 'ripemd160') {
  8173. return new Hmac('rmd160', key)
  8174. }
  8175. if (alg === 'md5') {
  8176. return new Legacy(md5, key)
  8177. }
  8178. return new Hmac(alg, key)
  8179. }
  8180. },{"./legacy":62,"cipher-base":55,"create-hash/md5":60,"inherits":108,"ripemd160":147,"safe-buffer":148,"sha.js":150}],62:[function(require,module,exports){
  8181. 'use strict'
  8182. var inherits = require('inherits')
  8183. var Buffer = require('safe-buffer').Buffer
  8184. var Base = require('cipher-base')
  8185. var ZEROS = Buffer.alloc(128)
  8186. var blocksize = 64
  8187. function Hmac (alg, key) {
  8188. Base.call(this, 'digest')
  8189. if (typeof key === 'string') {
  8190. key = Buffer.from(key)
  8191. }
  8192. this._alg = alg
  8193. this._key = key
  8194. if (key.length > blocksize) {
  8195. key = alg(key)
  8196. } else if (key.length < blocksize) {
  8197. key = Buffer.concat([key, ZEROS], blocksize)
  8198. }
  8199. var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
  8200. var opad = this._opad = Buffer.allocUnsafe(blocksize)
  8201. for (var i = 0; i < blocksize; i++) {
  8202. ipad[i] = key[i] ^ 0x36
  8203. opad[i] = key[i] ^ 0x5C
  8204. }
  8205. this._hash = [ipad]
  8206. }
  8207. inherits(Hmac, Base)
  8208. Hmac.prototype._update = function (data) {
  8209. this._hash.push(data)
  8210. }
  8211. Hmac.prototype._final = function () {
  8212. var h = this._alg(Buffer.concat(this._hash))
  8213. return this._alg(Buffer.concat([this._opad, h]))
  8214. }
  8215. module.exports = Hmac
  8216. },{"cipher-base":55,"inherits":108,"safe-buffer":148}],63:[function(require,module,exports){
  8217. 'use strict'
  8218. exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')
  8219. exports.createHash = exports.Hash = require('create-hash')
  8220. exports.createHmac = exports.Hmac = require('create-hmac')
  8221. var algos = require('browserify-sign/algos')
  8222. var algoKeys = Object.keys(algos)
  8223. var hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)
  8224. exports.getHashes = function () {
  8225. return hashes
  8226. }
  8227. var p = require('pbkdf2')
  8228. exports.pbkdf2 = p.pbkdf2
  8229. exports.pbkdf2Sync = p.pbkdf2Sync
  8230. var aes = require('browserify-cipher')
  8231. exports.Cipher = aes.Cipher
  8232. exports.createCipher = aes.createCipher
  8233. exports.Cipheriv = aes.Cipheriv
  8234. exports.createCipheriv = aes.createCipheriv
  8235. exports.Decipher = aes.Decipher
  8236. exports.createDecipher = aes.createDecipher
  8237. exports.Decipheriv = aes.Decipheriv
  8238. exports.createDecipheriv = aes.createDecipheriv
  8239. exports.getCiphers = aes.getCiphers
  8240. exports.listCiphers = aes.listCiphers
  8241. var dh = require('diffie-hellman')
  8242. exports.DiffieHellmanGroup = dh.DiffieHellmanGroup
  8243. exports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup
  8244. exports.getDiffieHellman = dh.getDiffieHellman
  8245. exports.createDiffieHellman = dh.createDiffieHellman
  8246. exports.DiffieHellman = dh.DiffieHellman
  8247. var sign = require('browserify-sign')
  8248. exports.createSign = sign.createSign
  8249. exports.Sign = sign.Sign
  8250. exports.createVerify = sign.createVerify
  8251. exports.Verify = sign.Verify
  8252. exports.createECDH = require('create-ecdh')
  8253. var publicEncrypt = require('public-encrypt')
  8254. exports.publicEncrypt = publicEncrypt.publicEncrypt
  8255. exports.privateEncrypt = publicEncrypt.privateEncrypt
  8256. exports.publicDecrypt = publicEncrypt.publicDecrypt
  8257. exports.privateDecrypt = publicEncrypt.privateDecrypt
  8258. // the least I can do is make error messages for the rest of the node.js/crypto api.
  8259. // ;[
  8260. // 'createCredentials'
  8261. // ].forEach(function (name) {
  8262. // exports[name] = function () {
  8263. // throw new Error([
  8264. // 'sorry, ' + name + ' is not implemented yet',
  8265. // 'we accept pull requests',
  8266. // 'https://github.com/crypto-browserify/crypto-browserify'
  8267. // ].join('\n'))
  8268. // }
  8269. // })
  8270. exports.createCredentials = function () {
  8271. throw new Error([
  8272. 'sorry, createCredentials is not implemented yet',
  8273. 'we accept pull requests',
  8274. 'https://github.com/crypto-browserify/crypto-browserify'
  8275. ].join('\n'))
  8276. }
  8277. exports.constants = {
  8278. 'DH_CHECK_P_NOT_SAFE_PRIME': 2,
  8279. 'DH_CHECK_P_NOT_PRIME': 1,
  8280. 'DH_UNABLE_TO_CHECK_GENERATOR': 4,
  8281. 'DH_NOT_SUITABLE_GENERATOR': 8,
  8282. 'NPN_ENABLED': 1,
  8283. 'ALPN_ENABLED': 1,
  8284. 'RSA_PKCS1_PADDING': 1,
  8285. 'RSA_SSLV23_PADDING': 2,
  8286. 'RSA_NO_PADDING': 3,
  8287. 'RSA_PKCS1_OAEP_PADDING': 4,
  8288. 'RSA_X931_PADDING': 5,
  8289. 'RSA_PKCS1_PSS_PADDING': 6,
  8290. 'POINT_CONVERSION_COMPRESSED': 2,
  8291. 'POINT_CONVERSION_UNCOMPRESSED': 4,
  8292. 'POINT_CONVERSION_HYBRID': 6
  8293. }
  8294. },{"browserify-cipher":43,"browserify-sign":50,"browserify-sign/algos":47,"create-ecdh":57,"create-hash":58,"create-hmac":61,"diffie-hellman":70,"pbkdf2":120,"public-encrypt":127,"randombytes":133}],64:[function(require,module,exports){
  8295. 'use strict';
  8296. exports.utils = require('./des/utils');
  8297. exports.Cipher = require('./des/cipher');
  8298. exports.DES = require('./des/des');
  8299. exports.CBC = require('./des/cbc');
  8300. exports.EDE = require('./des/ede');
  8301. },{"./des/cbc":65,"./des/cipher":66,"./des/des":67,"./des/ede":68,"./des/utils":69}],65:[function(require,module,exports){
  8302. 'use strict';
  8303. var assert = require('minimalistic-assert');
  8304. var inherits = require('inherits');
  8305. var proto = {};
  8306. function CBCState(iv) {
  8307. assert.equal(iv.length, 8, 'Invalid IV length');
  8308. this.iv = new Array(8);
  8309. for (var i = 0; i < this.iv.length; i++)
  8310. this.iv[i] = iv[i];
  8311. }
  8312. function instantiate(Base) {
  8313. function CBC(options) {
  8314. Base.call(this, options);
  8315. this._cbcInit();
  8316. }
  8317. inherits(CBC, Base);
  8318. var keys = Object.keys(proto);
  8319. for (var i = 0; i < keys.length; i++) {
  8320. var key = keys[i];
  8321. CBC.prototype[key] = proto[key];
  8322. }
  8323. CBC.create = function create(options) {
  8324. return new CBC(options);
  8325. };
  8326. return CBC;
  8327. }
  8328. exports.instantiate = instantiate;
  8329. proto._cbcInit = function _cbcInit() {
  8330. var state = new CBCState(this.options.iv);
  8331. this._cbcState = state;
  8332. };
  8333. proto._update = function _update(inp, inOff, out, outOff) {
  8334. var state = this._cbcState;
  8335. var superProto = this.constructor.super_.prototype;
  8336. var iv = state.iv;
  8337. if (this.type === 'encrypt') {
  8338. for (var i = 0; i < this.blockSize; i++)
  8339. iv[i] ^= inp[inOff + i];
  8340. superProto._update.call(this, iv, 0, out, outOff);
  8341. for (var i = 0; i < this.blockSize; i++)
  8342. iv[i] = out[outOff + i];
  8343. } else {
  8344. superProto._update.call(this, inp, inOff, out, outOff);
  8345. for (var i = 0; i < this.blockSize; i++)
  8346. out[outOff + i] ^= iv[i];
  8347. for (var i = 0; i < this.blockSize; i++)
  8348. iv[i] = inp[inOff + i];
  8349. }
  8350. };
  8351. },{"inherits":108,"minimalistic-assert":112}],66:[function(require,module,exports){
  8352. 'use strict';
  8353. var assert = require('minimalistic-assert');
  8354. function Cipher(options) {
  8355. this.options = options;
  8356. this.type = this.options.type;
  8357. this.blockSize = 8;
  8358. this._init();
  8359. this.buffer = new Array(this.blockSize);
  8360. this.bufferOff = 0;
  8361. }
  8362. module.exports = Cipher;
  8363. Cipher.prototype._init = function _init() {
  8364. // Might be overrided
  8365. };
  8366. Cipher.prototype.update = function update(data) {
  8367. if (data.length === 0)
  8368. return [];
  8369. if (this.type === 'decrypt')
  8370. return this._updateDecrypt(data);
  8371. else
  8372. return this._updateEncrypt(data);
  8373. };
  8374. Cipher.prototype._buffer = function _buffer(data, off) {
  8375. // Append data to buffer
  8376. var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);
  8377. for (var i = 0; i < min; i++)
  8378. this.buffer[this.bufferOff + i] = data[off + i];
  8379. this.bufferOff += min;
  8380. // Shift next
  8381. return min;
  8382. };
  8383. Cipher.prototype._flushBuffer = function _flushBuffer(out, off) {
  8384. this._update(this.buffer, 0, out, off);
  8385. this.bufferOff = 0;
  8386. return this.blockSize;
  8387. };
  8388. Cipher.prototype._updateEncrypt = function _updateEncrypt(data) {
  8389. var inputOff = 0;
  8390. var outputOff = 0;
  8391. var count = ((this.bufferOff + data.length) / this.blockSize) | 0;
  8392. var out = new Array(count * this.blockSize);
  8393. if (this.bufferOff !== 0) {
  8394. inputOff += this._buffer(data, inputOff);
  8395. if (this.bufferOff === this.buffer.length)
  8396. outputOff += this._flushBuffer(out, outputOff);
  8397. }
  8398. // Write blocks
  8399. var max = data.length - ((data.length - inputOff) % this.blockSize);
  8400. for (; inputOff < max; inputOff += this.blockSize) {
  8401. this._update(data, inputOff, out, outputOff);
  8402. outputOff += this.blockSize;
  8403. }
  8404. // Queue rest
  8405. for (; inputOff < data.length; inputOff++, this.bufferOff++)
  8406. this.buffer[this.bufferOff] = data[inputOff];
  8407. return out;
  8408. };
  8409. Cipher.prototype._updateDecrypt = function _updateDecrypt(data) {
  8410. var inputOff = 0;
  8411. var outputOff = 0;
  8412. var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;
  8413. var out = new Array(count * this.blockSize);
  8414. // TODO(indutny): optimize it, this is far from optimal
  8415. for (; count > 0; count--) {
  8416. inputOff += this._buffer(data, inputOff);
  8417. outputOff += this._flushBuffer(out, outputOff);
  8418. }
  8419. // Buffer rest of the input
  8420. inputOff += this._buffer(data, inputOff);
  8421. return out;
  8422. };
  8423. Cipher.prototype.final = function final(buffer) {
  8424. var first;
  8425. if (buffer)
  8426. first = this.update(buffer);
  8427. var last;
  8428. if (this.type === 'encrypt')
  8429. last = this._finalEncrypt();
  8430. else
  8431. last = this._finalDecrypt();
  8432. if (first)
  8433. return first.concat(last);
  8434. else
  8435. return last;
  8436. };
  8437. Cipher.prototype._pad = function _pad(buffer, off) {
  8438. if (off === 0)
  8439. return false;
  8440. while (off < buffer.length)
  8441. buffer[off++] = 0;
  8442. return true;
  8443. };
  8444. Cipher.prototype._finalEncrypt = function _finalEncrypt() {
  8445. if (!this._pad(this.buffer, this.bufferOff))
  8446. return [];
  8447. var out = new Array(this.blockSize);
  8448. this._update(this.buffer, 0, out, 0);
  8449. return out;
  8450. };
  8451. Cipher.prototype._unpad = function _unpad(buffer) {
  8452. return buffer;
  8453. };
  8454. Cipher.prototype._finalDecrypt = function _finalDecrypt() {
  8455. assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');
  8456. var out = new Array(this.blockSize);
  8457. this._flushBuffer(out, 0);
  8458. return this._unpad(out);
  8459. };
  8460. },{"minimalistic-assert":112}],67:[function(require,module,exports){
  8461. 'use strict';
  8462. var assert = require('minimalistic-assert');
  8463. var inherits = require('inherits');
  8464. var des = require('../des');
  8465. var utils = des.utils;
  8466. var Cipher = des.Cipher;
  8467. function DESState() {
  8468. this.tmp = new Array(2);
  8469. this.keys = null;
  8470. }
  8471. function DES(options) {
  8472. Cipher.call(this, options);
  8473. var state = new DESState();
  8474. this._desState = state;
  8475. this.deriveKeys(state, options.key);
  8476. }
  8477. inherits(DES, Cipher);
  8478. module.exports = DES;
  8479. DES.create = function create(options) {
  8480. return new DES(options);
  8481. };
  8482. var shiftTable = [
  8483. 1, 1, 2, 2, 2, 2, 2, 2,
  8484. 1, 2, 2, 2, 2, 2, 2, 1
  8485. ];
  8486. DES.prototype.deriveKeys = function deriveKeys(state, key) {
  8487. state.keys = new Array(16 * 2);
  8488. assert.equal(key.length, this.blockSize, 'Invalid key length');
  8489. var kL = utils.readUInt32BE(key, 0);
  8490. var kR = utils.readUInt32BE(key, 4);
  8491. utils.pc1(kL, kR, state.tmp, 0);
  8492. kL = state.tmp[0];
  8493. kR = state.tmp[1];
  8494. for (var i = 0; i < state.keys.length; i += 2) {
  8495. var shift = shiftTable[i >>> 1];
  8496. kL = utils.r28shl(kL, shift);
  8497. kR = utils.r28shl(kR, shift);
  8498. utils.pc2(kL, kR, state.keys, i);
  8499. }
  8500. };
  8501. DES.prototype._update = function _update(inp, inOff, out, outOff) {
  8502. var state = this._desState;
  8503. var l = utils.readUInt32BE(inp, inOff);
  8504. var r = utils.readUInt32BE(inp, inOff + 4);
  8505. // Initial Permutation
  8506. utils.ip(l, r, state.tmp, 0);
  8507. l = state.tmp[0];
  8508. r = state.tmp[1];
  8509. if (this.type === 'encrypt')
  8510. this._encrypt(state, l, r, state.tmp, 0);
  8511. else
  8512. this._decrypt(state, l, r, state.tmp, 0);
  8513. l = state.tmp[0];
  8514. r = state.tmp[1];
  8515. utils.writeUInt32BE(out, l, outOff);
  8516. utils.writeUInt32BE(out, r, outOff + 4);
  8517. };
  8518. DES.prototype._pad = function _pad(buffer, off) {
  8519. var value = buffer.length - off;
  8520. for (var i = off; i < buffer.length; i++)
  8521. buffer[i] = value;
  8522. return true;
  8523. };
  8524. DES.prototype._unpad = function _unpad(buffer) {
  8525. var pad = buffer[buffer.length - 1];
  8526. for (var i = buffer.length - pad; i < buffer.length; i++)
  8527. assert.equal(buffer[i], pad);
  8528. return buffer.slice(0, buffer.length - pad);
  8529. };
  8530. DES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {
  8531. var l = lStart;
  8532. var r = rStart;
  8533. // Apply f() x16 times
  8534. for (var i = 0; i < state.keys.length; i += 2) {
  8535. var keyL = state.keys[i];
  8536. var keyR = state.keys[i + 1];
  8537. // f(r, k)
  8538. utils.expand(r, state.tmp, 0);
  8539. keyL ^= state.tmp[0];
  8540. keyR ^= state.tmp[1];
  8541. var s = utils.substitute(keyL, keyR);
  8542. var f = utils.permute(s);
  8543. var t = r;
  8544. r = (l ^ f) >>> 0;
  8545. l = t;
  8546. }
  8547. // Reverse Initial Permutation
  8548. utils.rip(r, l, out, off);
  8549. };
  8550. DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {
  8551. var l = rStart;
  8552. var r = lStart;
  8553. // Apply f() x16 times
  8554. for (var i = state.keys.length - 2; i >= 0; i -= 2) {
  8555. var keyL = state.keys[i];
  8556. var keyR = state.keys[i + 1];
  8557. // f(r, k)
  8558. utils.expand(l, state.tmp, 0);
  8559. keyL ^= state.tmp[0];
  8560. keyR ^= state.tmp[1];
  8561. var s = utils.substitute(keyL, keyR);
  8562. var f = utils.permute(s);
  8563. var t = l;
  8564. l = (r ^ f) >>> 0;
  8565. r = t;
  8566. }
  8567. // Reverse Initial Permutation
  8568. utils.rip(l, r, out, off);
  8569. };
  8570. },{"../des":64,"inherits":108,"minimalistic-assert":112}],68:[function(require,module,exports){
  8571. 'use strict';
  8572. var assert = require('minimalistic-assert');
  8573. var inherits = require('inherits');
  8574. var des = require('../des');
  8575. var Cipher = des.Cipher;
  8576. var DES = des.DES;
  8577. function EDEState(type, key) {
  8578. assert.equal(key.length, 24, 'Invalid key length');
  8579. var k1 = key.slice(0, 8);
  8580. var k2 = key.slice(8, 16);
  8581. var k3 = key.slice(16, 24);
  8582. if (type === 'encrypt') {
  8583. this.ciphers = [
  8584. DES.create({ type: 'encrypt', key: k1 }),
  8585. DES.create({ type: 'decrypt', key: k2 }),
  8586. DES.create({ type: 'encrypt', key: k3 })
  8587. ];
  8588. } else {
  8589. this.ciphers = [
  8590. DES.create({ type: 'decrypt', key: k3 }),
  8591. DES.create({ type: 'encrypt', key: k2 }),
  8592. DES.create({ type: 'decrypt', key: k1 })
  8593. ];
  8594. }
  8595. }
  8596. function EDE(options) {
  8597. Cipher.call(this, options);
  8598. var state = new EDEState(this.type, this.options.key);
  8599. this._edeState = state;
  8600. }
  8601. inherits(EDE, Cipher);
  8602. module.exports = EDE;
  8603. EDE.create = function create(options) {
  8604. return new EDE(options);
  8605. };
  8606. EDE.prototype._update = function _update(inp, inOff, out, outOff) {
  8607. var state = this._edeState;
  8608. state.ciphers[0]._update(inp, inOff, out, outOff);
  8609. state.ciphers[1]._update(out, outOff, out, outOff);
  8610. state.ciphers[2]._update(out, outOff, out, outOff);
  8611. };
  8612. EDE.prototype._pad = DES.prototype._pad;
  8613. EDE.prototype._unpad = DES.prototype._unpad;
  8614. },{"../des":64,"inherits":108,"minimalistic-assert":112}],69:[function(require,module,exports){
  8615. 'use strict';
  8616. exports.readUInt32BE = function readUInt32BE(bytes, off) {
  8617. var res = (bytes[0 + off] << 24) |
  8618. (bytes[1 + off] << 16) |
  8619. (bytes[2 + off] << 8) |
  8620. bytes[3 + off];
  8621. return res >>> 0;
  8622. };
  8623. exports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {
  8624. bytes[0 + off] = value >>> 24;
  8625. bytes[1 + off] = (value >>> 16) & 0xff;
  8626. bytes[2 + off] = (value >>> 8) & 0xff;
  8627. bytes[3 + off] = value & 0xff;
  8628. };
  8629. exports.ip = function ip(inL, inR, out, off) {
  8630. var outL = 0;
  8631. var outR = 0;
  8632. for (var i = 6; i >= 0; i -= 2) {
  8633. for (var j = 0; j <= 24; j += 8) {
  8634. outL <<= 1;
  8635. outL |= (inR >>> (j + i)) & 1;
  8636. }
  8637. for (var j = 0; j <= 24; j += 8) {
  8638. outL <<= 1;
  8639. outL |= (inL >>> (j + i)) & 1;
  8640. }
  8641. }
  8642. for (var i = 6; i >= 0; i -= 2) {
  8643. for (var j = 1; j <= 25; j += 8) {
  8644. outR <<= 1;
  8645. outR |= (inR >>> (j + i)) & 1;
  8646. }
  8647. for (var j = 1; j <= 25; j += 8) {
  8648. outR <<= 1;
  8649. outR |= (inL >>> (j + i)) & 1;
  8650. }
  8651. }
  8652. out[off + 0] = outL >>> 0;
  8653. out[off + 1] = outR >>> 0;
  8654. };
  8655. exports.rip = function rip(inL, inR, out, off) {
  8656. var outL = 0;
  8657. var outR = 0;
  8658. for (var i = 0; i < 4; i++) {
  8659. for (var j = 24; j >= 0; j -= 8) {
  8660. outL <<= 1;
  8661. outL |= (inR >>> (j + i)) & 1;
  8662. outL <<= 1;
  8663. outL |= (inL >>> (j + i)) & 1;
  8664. }
  8665. }
  8666. for (var i = 4; i < 8; i++) {
  8667. for (var j = 24; j >= 0; j -= 8) {
  8668. outR <<= 1;
  8669. outR |= (inR >>> (j + i)) & 1;
  8670. outR <<= 1;
  8671. outR |= (inL >>> (j + i)) & 1;
  8672. }
  8673. }
  8674. out[off + 0] = outL >>> 0;
  8675. out[off + 1] = outR >>> 0;
  8676. };
  8677. exports.pc1 = function pc1(inL, inR, out, off) {
  8678. var outL = 0;
  8679. var outR = 0;
  8680. // 7, 15, 23, 31, 39, 47, 55, 63
  8681. // 6, 14, 22, 30, 39, 47, 55, 63
  8682. // 5, 13, 21, 29, 39, 47, 55, 63
  8683. // 4, 12, 20, 28
  8684. for (var i = 7; i >= 5; i--) {
  8685. for (var j = 0; j <= 24; j += 8) {
  8686. outL <<= 1;
  8687. outL |= (inR >> (j + i)) & 1;
  8688. }
  8689. for (var j = 0; j <= 24; j += 8) {
  8690. outL <<= 1;
  8691. outL |= (inL >> (j + i)) & 1;
  8692. }
  8693. }
  8694. for (var j = 0; j <= 24; j += 8) {
  8695. outL <<= 1;
  8696. outL |= (inR >> (j + i)) & 1;
  8697. }
  8698. // 1, 9, 17, 25, 33, 41, 49, 57
  8699. // 2, 10, 18, 26, 34, 42, 50, 58
  8700. // 3, 11, 19, 27, 35, 43, 51, 59
  8701. // 36, 44, 52, 60
  8702. for (var i = 1; i <= 3; i++) {
  8703. for (var j = 0; j <= 24; j += 8) {
  8704. outR <<= 1;
  8705. outR |= (inR >> (j + i)) & 1;
  8706. }
  8707. for (var j = 0; j <= 24; j += 8) {
  8708. outR <<= 1;
  8709. outR |= (inL >> (j + i)) & 1;
  8710. }
  8711. }
  8712. for (var j = 0; j <= 24; j += 8) {
  8713. outR <<= 1;
  8714. outR |= (inL >> (j + i)) & 1;
  8715. }
  8716. out[off + 0] = outL >>> 0;
  8717. out[off + 1] = outR >>> 0;
  8718. };
  8719. exports.r28shl = function r28shl(num, shift) {
  8720. return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));
  8721. };
  8722. var pc2table = [
  8723. // inL => outL
  8724. 14, 11, 17, 4, 27, 23, 25, 0,
  8725. 13, 22, 7, 18, 5, 9, 16, 24,
  8726. 2, 20, 12, 21, 1, 8, 15, 26,
  8727. // inR => outR
  8728. 15, 4, 25, 19, 9, 1, 26, 16,
  8729. 5, 11, 23, 8, 12, 7, 17, 0,
  8730. 22, 3, 10, 14, 6, 20, 27, 24
  8731. ];
  8732. exports.pc2 = function pc2(inL, inR, out, off) {
  8733. var outL = 0;
  8734. var outR = 0;
  8735. var len = pc2table.length >>> 1;
  8736. for (var i = 0; i < len; i++) {
  8737. outL <<= 1;
  8738. outL |= (inL >>> pc2table[i]) & 0x1;
  8739. }
  8740. for (var i = len; i < pc2table.length; i++) {
  8741. outR <<= 1;
  8742. outR |= (inR >>> pc2table[i]) & 0x1;
  8743. }
  8744. out[off + 0] = outL >>> 0;
  8745. out[off + 1] = outR >>> 0;
  8746. };
  8747. exports.expand = function expand(r, out, off) {
  8748. var outL = 0;
  8749. var outR = 0;
  8750. outL = ((r & 1) << 5) | (r >>> 27);
  8751. for (var i = 23; i >= 15; i -= 4) {
  8752. outL <<= 6;
  8753. outL |= (r >>> i) & 0x3f;
  8754. }
  8755. for (var i = 11; i >= 3; i -= 4) {
  8756. outR |= (r >>> i) & 0x3f;
  8757. outR <<= 6;
  8758. }
  8759. outR |= ((r & 0x1f) << 1) | (r >>> 31);
  8760. out[off + 0] = outL >>> 0;
  8761. out[off + 1] = outR >>> 0;
  8762. };
  8763. var sTable = [
  8764. 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,
  8765. 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,
  8766. 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,
  8767. 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,
  8768. 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,
  8769. 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,
  8770. 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,
  8771. 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,
  8772. 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,
  8773. 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,
  8774. 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,
  8775. 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,
  8776. 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,
  8777. 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,
  8778. 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,
  8779. 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,
  8780. 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,
  8781. 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,
  8782. 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,
  8783. 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,
  8784. 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,
  8785. 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,
  8786. 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,
  8787. 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,
  8788. 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,
  8789. 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,
  8790. 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,
  8791. 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,
  8792. 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,
  8793. 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,
  8794. 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,
  8795. 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11
  8796. ];
  8797. exports.substitute = function substitute(inL, inR) {
  8798. var out = 0;
  8799. for (var i = 0; i < 4; i++) {
  8800. var b = (inL >>> (18 - i * 6)) & 0x3f;
  8801. var sb = sTable[i * 0x40 + b];
  8802. out <<= 4;
  8803. out |= sb;
  8804. }
  8805. for (var i = 0; i < 4; i++) {
  8806. var b = (inR >>> (18 - i * 6)) & 0x3f;
  8807. var sb = sTable[4 * 0x40 + i * 0x40 + b];
  8808. out <<= 4;
  8809. out |= sb;
  8810. }
  8811. return out >>> 0;
  8812. };
  8813. var permuteTable = [
  8814. 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,
  8815. 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7
  8816. ];
  8817. exports.permute = function permute(num) {
  8818. var out = 0;
  8819. for (var i = 0; i < permuteTable.length; i++) {
  8820. out <<= 1;
  8821. out |= (num >>> permuteTable[i]) & 0x1;
  8822. }
  8823. return out >>> 0;
  8824. };
  8825. exports.padSplit = function padSplit(num, size, group) {
  8826. var str = num.toString(2);
  8827. while (str.length < size)
  8828. str = '0' + str;
  8829. var out = [];
  8830. for (var i = 0; i < size; i += group)
  8831. out.push(str.slice(i, i + group));
  8832. return out.join(' ');
  8833. };
  8834. },{}],70:[function(require,module,exports){
  8835. (function (Buffer){
  8836. var generatePrime = require('./lib/generatePrime')
  8837. var primes = require('./lib/primes.json')
  8838. var DH = require('./lib/dh')
  8839. function getDiffieHellman (mod) {
  8840. var prime = new Buffer(primes[mod].prime, 'hex')
  8841. var gen = new Buffer(primes[mod].gen, 'hex')
  8842. return new DH(prime, gen)
  8843. }
  8844. var ENCODINGS = {
  8845. 'binary': true, 'hex': true, 'base64': true
  8846. }
  8847. function createDiffieHellman (prime, enc, generator, genc) {
  8848. if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {
  8849. return createDiffieHellman(prime, 'binary', enc, generator)
  8850. }
  8851. enc = enc || 'binary'
  8852. genc = genc || 'binary'
  8853. generator = generator || new Buffer([2])
  8854. if (!Buffer.isBuffer(generator)) {
  8855. generator = new Buffer(generator, genc)
  8856. }
  8857. if (typeof prime === 'number') {
  8858. return new DH(generatePrime(prime, generator), generator, true)
  8859. }
  8860. if (!Buffer.isBuffer(prime)) {
  8861. prime = new Buffer(prime, enc)
  8862. }
  8863. return new DH(prime, generator, true)
  8864. }
  8865. exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman
  8866. exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman
  8867. }).call(this,require("buffer").Buffer)
  8868. },{"./lib/dh":71,"./lib/generatePrime":72,"./lib/primes.json":73,"buffer":54}],71:[function(require,module,exports){
  8869. (function (Buffer){
  8870. var BN = require('bn.js');
  8871. var MillerRabin = require('miller-rabin');
  8872. var millerRabin = new MillerRabin();
  8873. var TWENTYFOUR = new BN(24);
  8874. var ELEVEN = new BN(11);
  8875. var TEN = new BN(10);
  8876. var THREE = new BN(3);
  8877. var SEVEN = new BN(7);
  8878. var primes = require('./generatePrime');
  8879. var randomBytes = require('randombytes');
  8880. module.exports = DH;
  8881. function setPublicKey(pub, enc) {
  8882. enc = enc || 'utf8';
  8883. if (!Buffer.isBuffer(pub)) {
  8884. pub = new Buffer(pub, enc);
  8885. }
  8886. this._pub = new BN(pub);
  8887. return this;
  8888. }
  8889. function setPrivateKey(priv, enc) {
  8890. enc = enc || 'utf8';
  8891. if (!Buffer.isBuffer(priv)) {
  8892. priv = new Buffer(priv, enc);
  8893. }
  8894. this._priv = new BN(priv);
  8895. return this;
  8896. }
  8897. var primeCache = {};
  8898. function checkPrime(prime, generator) {
  8899. var gen = generator.toString('hex');
  8900. var hex = [gen, prime.toString(16)].join('_');
  8901. if (hex in primeCache) {
  8902. return primeCache[hex];
  8903. }
  8904. var error = 0;
  8905. if (prime.isEven() ||
  8906. !primes.simpleSieve ||
  8907. !primes.fermatTest(prime) ||
  8908. !millerRabin.test(prime)) {
  8909. //not a prime so +1
  8910. error += 1;
  8911. if (gen === '02' || gen === '05') {
  8912. // we'd be able to check the generator
  8913. // it would fail so +8
  8914. error += 8;
  8915. } else {
  8916. //we wouldn't be able to test the generator
  8917. // so +4
  8918. error += 4;
  8919. }
  8920. primeCache[hex] = error;
  8921. return error;
  8922. }
  8923. if (!millerRabin.test(prime.shrn(1))) {
  8924. //not a safe prime
  8925. error += 2;
  8926. }
  8927. var rem;
  8928. switch (gen) {
  8929. case '02':
  8930. if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {
  8931. // unsuidable generator
  8932. error += 8;
  8933. }
  8934. break;
  8935. case '05':
  8936. rem = prime.mod(TEN);
  8937. if (rem.cmp(THREE) && rem.cmp(SEVEN)) {
  8938. // prime mod 10 needs to equal 3 or 7
  8939. error += 8;
  8940. }
  8941. break;
  8942. default:
  8943. error += 4;
  8944. }
  8945. primeCache[hex] = error;
  8946. return error;
  8947. }
  8948. function DH(prime, generator, malleable) {
  8949. this.setGenerator(generator);
  8950. this.__prime = new BN(prime);
  8951. this._prime = BN.mont(this.__prime);
  8952. this._primeLen = prime.length;
  8953. this._pub = undefined;
  8954. this._priv = undefined;
  8955. this._primeCode = undefined;
  8956. if (malleable) {
  8957. this.setPublicKey = setPublicKey;
  8958. this.setPrivateKey = setPrivateKey;
  8959. } else {
  8960. this._primeCode = 8;
  8961. }
  8962. }
  8963. Object.defineProperty(DH.prototype, 'verifyError', {
  8964. enumerable: true,
  8965. get: function () {
  8966. if (typeof this._primeCode !== 'number') {
  8967. this._primeCode = checkPrime(this.__prime, this.__gen);
  8968. }
  8969. return this._primeCode;
  8970. }
  8971. });
  8972. DH.prototype.generateKeys = function () {
  8973. if (!this._priv) {
  8974. this._priv = new BN(randomBytes(this._primeLen));
  8975. }
  8976. this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();
  8977. return this.getPublicKey();
  8978. };
  8979. DH.prototype.computeSecret = function (other) {
  8980. other = new BN(other);
  8981. other = other.toRed(this._prime);
  8982. var secret = other.redPow(this._priv).fromRed();
  8983. var out = new Buffer(secret.toArray());
  8984. var prime = this.getPrime();
  8985. if (out.length < prime.length) {
  8986. var front = new Buffer(prime.length - out.length);
  8987. front.fill(0);
  8988. out = Buffer.concat([front, out]);
  8989. }
  8990. return out;
  8991. };
  8992. DH.prototype.getPublicKey = function getPublicKey(enc) {
  8993. return formatReturnValue(this._pub, enc);
  8994. };
  8995. DH.prototype.getPrivateKey = function getPrivateKey(enc) {
  8996. return formatReturnValue(this._priv, enc);
  8997. };
  8998. DH.prototype.getPrime = function (enc) {
  8999. return formatReturnValue(this.__prime, enc);
  9000. };
  9001. DH.prototype.getGenerator = function (enc) {
  9002. return formatReturnValue(this._gen, enc);
  9003. };
  9004. DH.prototype.setGenerator = function (gen, enc) {
  9005. enc = enc || 'utf8';
  9006. if (!Buffer.isBuffer(gen)) {
  9007. gen = new Buffer(gen, enc);
  9008. }
  9009. this.__gen = gen;
  9010. this._gen = new BN(gen);
  9011. return this;
  9012. };
  9013. function formatReturnValue(bn, enc) {
  9014. var buf = new Buffer(bn.toArray());
  9015. if (!enc) {
  9016. return buf;
  9017. } else {
  9018. return buf.toString(enc);
  9019. }
  9020. }
  9021. }).call(this,require("buffer").Buffer)
  9022. },{"./generatePrime":72,"bn.js":25,"buffer":54,"miller-rabin":111,"randombytes":133}],72:[function(require,module,exports){
  9023. var randomBytes = require('randombytes');
  9024. module.exports = findPrime;
  9025. findPrime.simpleSieve = simpleSieve;
  9026. findPrime.fermatTest = fermatTest;
  9027. var BN = require('bn.js');
  9028. var TWENTYFOUR = new BN(24);
  9029. var MillerRabin = require('miller-rabin');
  9030. var millerRabin = new MillerRabin();
  9031. var ONE = new BN(1);
  9032. var TWO = new BN(2);
  9033. var FIVE = new BN(5);
  9034. var SIXTEEN = new BN(16);
  9035. var EIGHT = new BN(8);
  9036. var TEN = new BN(10);
  9037. var THREE = new BN(3);
  9038. var SEVEN = new BN(7);
  9039. var ELEVEN = new BN(11);
  9040. var FOUR = new BN(4);
  9041. var TWELVE = new BN(12);
  9042. var primes = null;
  9043. function _getPrimes() {
  9044. if (primes !== null)
  9045. return primes;
  9046. var limit = 0x100000;
  9047. var res = [];
  9048. res[0] = 2;
  9049. for (var i = 1, k = 3; k < limit; k += 2) {
  9050. var sqrt = Math.ceil(Math.sqrt(k));
  9051. for (var j = 0; j < i && res[j] <= sqrt; j++)
  9052. if (k % res[j] === 0)
  9053. break;
  9054. if (i !== j && res[j] <= sqrt)
  9055. continue;
  9056. res[i++] = k;
  9057. }
  9058. primes = res;
  9059. return res;
  9060. }
  9061. function simpleSieve(p) {
  9062. var primes = _getPrimes();
  9063. for (var i = 0; i < primes.length; i++)
  9064. if (p.modn(primes[i]) === 0) {
  9065. if (p.cmpn(primes[i]) === 0) {
  9066. return true;
  9067. } else {
  9068. return false;
  9069. }
  9070. }
  9071. return true;
  9072. }
  9073. function fermatTest(p) {
  9074. var red = BN.mont(p);
  9075. return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;
  9076. }
  9077. function findPrime(bits, gen) {
  9078. if (bits < 16) {
  9079. // this is what openssl does
  9080. if (gen === 2 || gen === 5) {
  9081. return new BN([0x8c, 0x7b]);
  9082. } else {
  9083. return new BN([0x8c, 0x27]);
  9084. }
  9085. }
  9086. gen = new BN(gen);
  9087. var num, n2;
  9088. while (true) {
  9089. num = new BN(randomBytes(Math.ceil(bits / 8)));
  9090. while (num.bitLength() > bits) {
  9091. num.ishrn(1);
  9092. }
  9093. if (num.isEven()) {
  9094. num.iadd(ONE);
  9095. }
  9096. if (!num.testn(1)) {
  9097. num.iadd(TWO);
  9098. }
  9099. if (!gen.cmp(TWO)) {
  9100. while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {
  9101. num.iadd(FOUR);
  9102. }
  9103. } else if (!gen.cmp(FIVE)) {
  9104. while (num.mod(TEN).cmp(THREE)) {
  9105. num.iadd(FOUR);
  9106. }
  9107. }
  9108. n2 = num.shrn(1);
  9109. if (simpleSieve(n2) && simpleSieve(num) &&
  9110. fermatTest(n2) && fermatTest(num) &&
  9111. millerRabin.test(n2) && millerRabin.test(num)) {
  9112. return num;
  9113. }
  9114. }
  9115. }
  9116. },{"bn.js":25,"miller-rabin":111,"randombytes":133}],73:[function(require,module,exports){
  9117. module.exports={
  9118. "modp1": {
  9119. "gen": "02",
  9120. "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"
  9121. },
  9122. "modp2": {
  9123. "gen": "02",
  9124. "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"
  9125. },
  9126. "modp5": {
  9127. "gen": "02",
  9128. "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"
  9129. },
  9130. "modp14": {
  9131. "gen": "02",
  9132. "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"
  9133. },
  9134. "modp15": {
  9135. "gen": "02",
  9136. "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"
  9137. },
  9138. "modp16": {
  9139. "gen": "02",
  9140. "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"
  9141. },
  9142. "modp17": {
  9143. "gen": "02",
  9144. "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"
  9145. },
  9146. "modp18": {
  9147. "gen": "02",
  9148. "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"
  9149. }
  9150. }
  9151. },{}],74:[function(require,module,exports){
  9152. 'use strict';
  9153. var elliptic = exports;
  9154. elliptic.version = require('../package.json').version;
  9155. elliptic.utils = require('./elliptic/utils');
  9156. elliptic.rand = require('brorand');
  9157. elliptic.curve = require('./elliptic/curve');
  9158. elliptic.curves = require('./elliptic/curves');
  9159. // Protocols
  9160. elliptic.ec = require('./elliptic/ec');
  9161. elliptic.eddsa = require('./elliptic/eddsa');
  9162. },{"../package.json":89,"./elliptic/curve":77,"./elliptic/curves":80,"./elliptic/ec":81,"./elliptic/eddsa":84,"./elliptic/utils":88,"brorand":26}],75:[function(require,module,exports){
  9163. 'use strict';
  9164. var BN = require('bn.js');
  9165. var elliptic = require('../../elliptic');
  9166. var utils = elliptic.utils;
  9167. var getNAF = utils.getNAF;
  9168. var getJSF = utils.getJSF;
  9169. var assert = utils.assert;
  9170. function BaseCurve(type, conf) {
  9171. this.type = type;
  9172. this.p = new BN(conf.p, 16);
  9173. // Use Montgomery, when there is no fast reduction for the prime
  9174. this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
  9175. // Useful for many curves
  9176. this.zero = new BN(0).toRed(this.red);
  9177. this.one = new BN(1).toRed(this.red);
  9178. this.two = new BN(2).toRed(this.red);
  9179. // Curve configuration, optional
  9180. this.n = conf.n && new BN(conf.n, 16);
  9181. this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
  9182. // Temporary arrays
  9183. this._wnafT1 = new Array(4);
  9184. this._wnafT2 = new Array(4);
  9185. this._wnafT3 = new Array(4);
  9186. this._wnafT4 = new Array(4);
  9187. // Generalized Greg Maxwell's trick
  9188. var adjustCount = this.n && this.p.div(this.n);
  9189. if (!adjustCount || adjustCount.cmpn(100) > 0) {
  9190. this.redN = null;
  9191. } else {
  9192. this._maxwellTrick = true;
  9193. this.redN = this.n.toRed(this.red);
  9194. }
  9195. }
  9196. module.exports = BaseCurve;
  9197. BaseCurve.prototype.point = function point() {
  9198. throw new Error('Not implemented');
  9199. };
  9200. BaseCurve.prototype.validate = function validate() {
  9201. throw new Error('Not implemented');
  9202. };
  9203. BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
  9204. assert(p.precomputed);
  9205. var doubles = p._getDoubles();
  9206. var naf = getNAF(k, 1);
  9207. var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
  9208. I /= 3;
  9209. // Translate into more windowed form
  9210. var repr = [];
  9211. for (var j = 0; j < naf.length; j += doubles.step) {
  9212. var nafW = 0;
  9213. for (var k = j + doubles.step - 1; k >= j; k--)
  9214. nafW = (nafW << 1) + naf[k];
  9215. repr.push(nafW);
  9216. }
  9217. var a = this.jpoint(null, null, null);
  9218. var b = this.jpoint(null, null, null);
  9219. for (var i = I; i > 0; i--) {
  9220. for (var j = 0; j < repr.length; j++) {
  9221. var nafW = repr[j];
  9222. if (nafW === i)
  9223. b = b.mixedAdd(doubles.points[j]);
  9224. else if (nafW === -i)
  9225. b = b.mixedAdd(doubles.points[j].neg());
  9226. }
  9227. a = a.add(b);
  9228. }
  9229. return a.toP();
  9230. };
  9231. BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
  9232. var w = 4;
  9233. // Precompute window
  9234. var nafPoints = p._getNAFPoints(w);
  9235. w = nafPoints.wnd;
  9236. var wnd = nafPoints.points;
  9237. // Get NAF form
  9238. var naf = getNAF(k, w);
  9239. // Add `this`*(N+1) for every w-NAF index
  9240. var acc = this.jpoint(null, null, null);
  9241. for (var i = naf.length - 1; i >= 0; i--) {
  9242. // Count zeroes
  9243. for (var k = 0; i >= 0 && naf[i] === 0; i--)
  9244. k++;
  9245. if (i >= 0)
  9246. k++;
  9247. acc = acc.dblp(k);
  9248. if (i < 0)
  9249. break;
  9250. var z = naf[i];
  9251. assert(z !== 0);
  9252. if (p.type === 'affine') {
  9253. // J +- P
  9254. if (z > 0)
  9255. acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
  9256. else
  9257. acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
  9258. } else {
  9259. // J +- J
  9260. if (z > 0)
  9261. acc = acc.add(wnd[(z - 1) >> 1]);
  9262. else
  9263. acc = acc.add(wnd[(-z - 1) >> 1].neg());
  9264. }
  9265. }
  9266. return p.type === 'affine' ? acc.toP() : acc;
  9267. };
  9268. BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
  9269. points,
  9270. coeffs,
  9271. len,
  9272. jacobianResult) {
  9273. var wndWidth = this._wnafT1;
  9274. var wnd = this._wnafT2;
  9275. var naf = this._wnafT3;
  9276. // Fill all arrays
  9277. var max = 0;
  9278. for (var i = 0; i < len; i++) {
  9279. var p = points[i];
  9280. var nafPoints = p._getNAFPoints(defW);
  9281. wndWidth[i] = nafPoints.wnd;
  9282. wnd[i] = nafPoints.points;
  9283. }
  9284. // Comb small window NAFs
  9285. for (var i = len - 1; i >= 1; i -= 2) {
  9286. var a = i - 1;
  9287. var b = i;
  9288. if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
  9289. naf[a] = getNAF(coeffs[a], wndWidth[a]);
  9290. naf[b] = getNAF(coeffs[b], wndWidth[b]);
  9291. max = Math.max(naf[a].length, max);
  9292. max = Math.max(naf[b].length, max);
  9293. continue;
  9294. }
  9295. var comb = [
  9296. points[a], /* 1 */
  9297. null, /* 3 */
  9298. null, /* 5 */
  9299. points[b] /* 7 */
  9300. ];
  9301. // Try to avoid Projective points, if possible
  9302. if (points[a].y.cmp(points[b].y) === 0) {
  9303. comb[1] = points[a].add(points[b]);
  9304. comb[2] = points[a].toJ().mixedAdd(points[b].neg());
  9305. } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
  9306. comb[1] = points[a].toJ().mixedAdd(points[b]);
  9307. comb[2] = points[a].add(points[b].neg());
  9308. } else {
  9309. comb[1] = points[a].toJ().mixedAdd(points[b]);
  9310. comb[2] = points[a].toJ().mixedAdd(points[b].neg());
  9311. }
  9312. var index = [
  9313. -3, /* -1 -1 */
  9314. -1, /* -1 0 */
  9315. -5, /* -1 1 */
  9316. -7, /* 0 -1 */
  9317. 0, /* 0 0 */
  9318. 7, /* 0 1 */
  9319. 5, /* 1 -1 */
  9320. 1, /* 1 0 */
  9321. 3 /* 1 1 */
  9322. ];
  9323. var jsf = getJSF(coeffs[a], coeffs[b]);
  9324. max = Math.max(jsf[0].length, max);
  9325. naf[a] = new Array(max);
  9326. naf[b] = new Array(max);
  9327. for (var j = 0; j < max; j++) {
  9328. var ja = jsf[0][j] | 0;
  9329. var jb = jsf[1][j] | 0;
  9330. naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
  9331. naf[b][j] = 0;
  9332. wnd[a] = comb;
  9333. }
  9334. }
  9335. var acc = this.jpoint(null, null, null);
  9336. var tmp = this._wnafT4;
  9337. for (var i = max; i >= 0; i--) {
  9338. var k = 0;
  9339. while (i >= 0) {
  9340. var zero = true;
  9341. for (var j = 0; j < len; j++) {
  9342. tmp[j] = naf[j][i] | 0;
  9343. if (tmp[j] !== 0)
  9344. zero = false;
  9345. }
  9346. if (!zero)
  9347. break;
  9348. k++;
  9349. i--;
  9350. }
  9351. if (i >= 0)
  9352. k++;
  9353. acc = acc.dblp(k);
  9354. if (i < 0)
  9355. break;
  9356. for (var j = 0; j < len; j++) {
  9357. var z = tmp[j];
  9358. var p;
  9359. if (z === 0)
  9360. continue;
  9361. else if (z > 0)
  9362. p = wnd[j][(z - 1) >> 1];
  9363. else if (z < 0)
  9364. p = wnd[j][(-z - 1) >> 1].neg();
  9365. if (p.type === 'affine')
  9366. acc = acc.mixedAdd(p);
  9367. else
  9368. acc = acc.add(p);
  9369. }
  9370. }
  9371. // Zeroify references
  9372. for (var i = 0; i < len; i++)
  9373. wnd[i] = null;
  9374. if (jacobianResult)
  9375. return acc;
  9376. else
  9377. return acc.toP();
  9378. };
  9379. function BasePoint(curve, type) {
  9380. this.curve = curve;
  9381. this.type = type;
  9382. this.precomputed = null;
  9383. }
  9384. BaseCurve.BasePoint = BasePoint;
  9385. BasePoint.prototype.eq = function eq(/*other*/) {
  9386. throw new Error('Not implemented');
  9387. };
  9388. BasePoint.prototype.validate = function validate() {
  9389. return this.curve.validate(this);
  9390. };
  9391. BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
  9392. bytes = utils.toArray(bytes, enc);
  9393. var len = this.p.byteLength();
  9394. // uncompressed, hybrid-odd, hybrid-even
  9395. if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
  9396. bytes.length - 1 === 2 * len) {
  9397. if (bytes[0] === 0x06)
  9398. assert(bytes[bytes.length - 1] % 2 === 0);
  9399. else if (bytes[0] === 0x07)
  9400. assert(bytes[bytes.length - 1] % 2 === 1);
  9401. var res = this.point(bytes.slice(1, 1 + len),
  9402. bytes.slice(1 + len, 1 + 2 * len));
  9403. return res;
  9404. } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
  9405. bytes.length - 1 === len) {
  9406. return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
  9407. }
  9408. throw new Error('Unknown point format');
  9409. };
  9410. BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
  9411. return this.encode(enc, true);
  9412. };
  9413. BasePoint.prototype._encode = function _encode(compact) {
  9414. var len = this.curve.p.byteLength();
  9415. var x = this.getX().toArray('be', len);
  9416. if (compact)
  9417. return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
  9418. return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
  9419. };
  9420. BasePoint.prototype.encode = function encode(enc, compact) {
  9421. return utils.encode(this._encode(compact), enc);
  9422. };
  9423. BasePoint.prototype.precompute = function precompute(power) {
  9424. if (this.precomputed)
  9425. return this;
  9426. var precomputed = {
  9427. doubles: null,
  9428. naf: null,
  9429. beta: null
  9430. };
  9431. precomputed.naf = this._getNAFPoints(8);
  9432. precomputed.doubles = this._getDoubles(4, power);
  9433. precomputed.beta = this._getBeta();
  9434. this.precomputed = precomputed;
  9435. return this;
  9436. };
  9437. BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
  9438. if (!this.precomputed)
  9439. return false;
  9440. var doubles = this.precomputed.doubles;
  9441. if (!doubles)
  9442. return false;
  9443. return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
  9444. };
  9445. BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
  9446. if (this.precomputed && this.precomputed.doubles)
  9447. return this.precomputed.doubles;
  9448. var doubles = [ this ];
  9449. var acc = this;
  9450. for (var i = 0; i < power; i += step) {
  9451. for (var j = 0; j < step; j++)
  9452. acc = acc.dbl();
  9453. doubles.push(acc);
  9454. }
  9455. return {
  9456. step: step,
  9457. points: doubles
  9458. };
  9459. };
  9460. BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
  9461. if (this.precomputed && this.precomputed.naf)
  9462. return this.precomputed.naf;
  9463. var res = [ this ];
  9464. var max = (1 << wnd) - 1;
  9465. var dbl = max === 1 ? null : this.dbl();
  9466. for (var i = 1; i < max; i++)
  9467. res[i] = res[i - 1].add(dbl);
  9468. return {
  9469. wnd: wnd,
  9470. points: res
  9471. };
  9472. };
  9473. BasePoint.prototype._getBeta = function _getBeta() {
  9474. return null;
  9475. };
  9476. BasePoint.prototype.dblp = function dblp(k) {
  9477. var r = this;
  9478. for (var i = 0; i < k; i++)
  9479. r = r.dbl();
  9480. return r;
  9481. };
  9482. },{"../../elliptic":74,"bn.js":25}],76:[function(require,module,exports){
  9483. 'use strict';
  9484. var curve = require('../curve');
  9485. var elliptic = require('../../elliptic');
  9486. var BN = require('bn.js');
  9487. var inherits = require('inherits');
  9488. var Base = curve.base;
  9489. var assert = elliptic.utils.assert;
  9490. function EdwardsCurve(conf) {
  9491. // NOTE: Important as we are creating point in Base.call()
  9492. this.twisted = (conf.a | 0) !== 1;
  9493. this.mOneA = this.twisted && (conf.a | 0) === -1;
  9494. this.extended = this.mOneA;
  9495. Base.call(this, 'edwards', conf);
  9496. this.a = new BN(conf.a, 16).umod(this.red.m);
  9497. this.a = this.a.toRed(this.red);
  9498. this.c = new BN(conf.c, 16).toRed(this.red);
  9499. this.c2 = this.c.redSqr();
  9500. this.d = new BN(conf.d, 16).toRed(this.red);
  9501. this.dd = this.d.redAdd(this.d);
  9502. assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
  9503. this.oneC = (conf.c | 0) === 1;
  9504. }
  9505. inherits(EdwardsCurve, Base);
  9506. module.exports = EdwardsCurve;
  9507. EdwardsCurve.prototype._mulA = function _mulA(num) {
  9508. if (this.mOneA)
  9509. return num.redNeg();
  9510. else
  9511. return this.a.redMul(num);
  9512. };
  9513. EdwardsCurve.prototype._mulC = function _mulC(num) {
  9514. if (this.oneC)
  9515. return num;
  9516. else
  9517. return this.c.redMul(num);
  9518. };
  9519. // Just for compatibility with Short curve
  9520. EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
  9521. return this.point(x, y, z, t);
  9522. };
  9523. EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
  9524. x = new BN(x, 16);
  9525. if (!x.red)
  9526. x = x.toRed(this.red);
  9527. var x2 = x.redSqr();
  9528. var rhs = this.c2.redSub(this.a.redMul(x2));
  9529. var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
  9530. var y2 = rhs.redMul(lhs.redInvm());
  9531. var y = y2.redSqrt();
  9532. if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
  9533. throw new Error('invalid point');
  9534. var isOdd = y.fromRed().isOdd();
  9535. if (odd && !isOdd || !odd && isOdd)
  9536. y = y.redNeg();
  9537. return this.point(x, y);
  9538. };
  9539. EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
  9540. y = new BN(y, 16);
  9541. if (!y.red)
  9542. y = y.toRed(this.red);
  9543. // x^2 = (y^2 - 1) / (d y^2 + 1)
  9544. var y2 = y.redSqr();
  9545. var lhs = y2.redSub(this.one);
  9546. var rhs = y2.redMul(this.d).redAdd(this.one);
  9547. var x2 = lhs.redMul(rhs.redInvm());
  9548. if (x2.cmp(this.zero) === 0) {
  9549. if (odd)
  9550. throw new Error('invalid point');
  9551. else
  9552. return this.point(this.zero, y);
  9553. }
  9554. var x = x2.redSqrt();
  9555. if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
  9556. throw new Error('invalid point');
  9557. if (x.isOdd() !== odd)
  9558. x = x.redNeg();
  9559. return this.point(x, y);
  9560. };
  9561. EdwardsCurve.prototype.validate = function validate(point) {
  9562. if (point.isInfinity())
  9563. return true;
  9564. // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
  9565. point.normalize();
  9566. var x2 = point.x.redSqr();
  9567. var y2 = point.y.redSqr();
  9568. var lhs = x2.redMul(this.a).redAdd(y2);
  9569. var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
  9570. return lhs.cmp(rhs) === 0;
  9571. };
  9572. function Point(curve, x, y, z, t) {
  9573. Base.BasePoint.call(this, curve, 'projective');
  9574. if (x === null && y === null && z === null) {
  9575. this.x = this.curve.zero;
  9576. this.y = this.curve.one;
  9577. this.z = this.curve.one;
  9578. this.t = this.curve.zero;
  9579. this.zOne = true;
  9580. } else {
  9581. this.x = new BN(x, 16);
  9582. this.y = new BN(y, 16);
  9583. this.z = z ? new BN(z, 16) : this.curve.one;
  9584. this.t = t && new BN(t, 16);
  9585. if (!this.x.red)
  9586. this.x = this.x.toRed(this.curve.red);
  9587. if (!this.y.red)
  9588. this.y = this.y.toRed(this.curve.red);
  9589. if (!this.z.red)
  9590. this.z = this.z.toRed(this.curve.red);
  9591. if (this.t && !this.t.red)
  9592. this.t = this.t.toRed(this.curve.red);
  9593. this.zOne = this.z === this.curve.one;
  9594. // Use extended coordinates
  9595. if (this.curve.extended && !this.t) {
  9596. this.t = this.x.redMul(this.y);
  9597. if (!this.zOne)
  9598. this.t = this.t.redMul(this.z.redInvm());
  9599. }
  9600. }
  9601. }
  9602. inherits(Point, Base.BasePoint);
  9603. EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
  9604. return Point.fromJSON(this, obj);
  9605. };
  9606. EdwardsCurve.prototype.point = function point(x, y, z, t) {
  9607. return new Point(this, x, y, z, t);
  9608. };
  9609. Point.fromJSON = function fromJSON(curve, obj) {
  9610. return new Point(curve, obj[0], obj[1], obj[2]);
  9611. };
  9612. Point.prototype.inspect = function inspect() {
  9613. if (this.isInfinity())
  9614. return '<EC Point Infinity>';
  9615. return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
  9616. ' y: ' + this.y.fromRed().toString(16, 2) +
  9617. ' z: ' + this.z.fromRed().toString(16, 2) + '>';
  9618. };
  9619. Point.prototype.isInfinity = function isInfinity() {
  9620. // XXX This code assumes that zero is always zero in red
  9621. return this.x.cmpn(0) === 0 &&
  9622. this.y.cmp(this.z) === 0;
  9623. };
  9624. Point.prototype._extDbl = function _extDbl() {
  9625. // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
  9626. // #doubling-dbl-2008-hwcd
  9627. // 4M + 4S
  9628. // A = X1^2
  9629. var a = this.x.redSqr();
  9630. // B = Y1^2
  9631. var b = this.y.redSqr();
  9632. // C = 2 * Z1^2
  9633. var c = this.z.redSqr();
  9634. c = c.redIAdd(c);
  9635. // D = a * A
  9636. var d = this.curve._mulA(a);
  9637. // E = (X1 + Y1)^2 - A - B
  9638. var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
  9639. // G = D + B
  9640. var g = d.redAdd(b);
  9641. // F = G - C
  9642. var f = g.redSub(c);
  9643. // H = D - B
  9644. var h = d.redSub(b);
  9645. // X3 = E * F
  9646. var nx = e.redMul(f);
  9647. // Y3 = G * H
  9648. var ny = g.redMul(h);
  9649. // T3 = E * H
  9650. var nt = e.redMul(h);
  9651. // Z3 = F * G
  9652. var nz = f.redMul(g);
  9653. return this.curve.point(nx, ny, nz, nt);
  9654. };
  9655. Point.prototype._projDbl = function _projDbl() {
  9656. // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
  9657. // #doubling-dbl-2008-bbjlp
  9658. // #doubling-dbl-2007-bl
  9659. // and others
  9660. // Generally 3M + 4S or 2M + 4S
  9661. // B = (X1 + Y1)^2
  9662. var b = this.x.redAdd(this.y).redSqr();
  9663. // C = X1^2
  9664. var c = this.x.redSqr();
  9665. // D = Y1^2
  9666. var d = this.y.redSqr();
  9667. var nx;
  9668. var ny;
  9669. var nz;
  9670. if (this.curve.twisted) {
  9671. // E = a * C
  9672. var e = this.curve._mulA(c);
  9673. // F = E + D
  9674. var f = e.redAdd(d);
  9675. if (this.zOne) {
  9676. // X3 = (B - C - D) * (F - 2)
  9677. nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
  9678. // Y3 = F * (E - D)
  9679. ny = f.redMul(e.redSub(d));
  9680. // Z3 = F^2 - 2 * F
  9681. nz = f.redSqr().redSub(f).redSub(f);
  9682. } else {
  9683. // H = Z1^2
  9684. var h = this.z.redSqr();
  9685. // J = F - 2 * H
  9686. var j = f.redSub(h).redISub(h);
  9687. // X3 = (B-C-D)*J
  9688. nx = b.redSub(c).redISub(d).redMul(j);
  9689. // Y3 = F * (E - D)
  9690. ny = f.redMul(e.redSub(d));
  9691. // Z3 = F * J
  9692. nz = f.redMul(j);
  9693. }
  9694. } else {
  9695. // E = C + D
  9696. var e = c.redAdd(d);
  9697. // H = (c * Z1)^2
  9698. var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
  9699. // J = E - 2 * H
  9700. var j = e.redSub(h).redSub(h);
  9701. // X3 = c * (B - E) * J
  9702. nx = this.curve._mulC(b.redISub(e)).redMul(j);
  9703. // Y3 = c * E * (C - D)
  9704. ny = this.curve._mulC(e).redMul(c.redISub(d));
  9705. // Z3 = E * J
  9706. nz = e.redMul(j);
  9707. }
  9708. return this.curve.point(nx, ny, nz);
  9709. };
  9710. Point.prototype.dbl = function dbl() {
  9711. if (this.isInfinity())
  9712. return this;
  9713. // Double in extended coordinates
  9714. if (this.curve.extended)
  9715. return this._extDbl();
  9716. else
  9717. return this._projDbl();
  9718. };
  9719. Point.prototype._extAdd = function _extAdd(p) {
  9720. // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
  9721. // #addition-add-2008-hwcd-3
  9722. // 8M
  9723. // A = (Y1 - X1) * (Y2 - X2)
  9724. var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
  9725. // B = (Y1 + X1) * (Y2 + X2)
  9726. var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
  9727. // C = T1 * k * T2
  9728. var c = this.t.redMul(this.curve.dd).redMul(p.t);
  9729. // D = Z1 * 2 * Z2
  9730. var d = this.z.redMul(p.z.redAdd(p.z));
  9731. // E = B - A
  9732. var e = b.redSub(a);
  9733. // F = D - C
  9734. var f = d.redSub(c);
  9735. // G = D + C
  9736. var g = d.redAdd(c);
  9737. // H = B + A
  9738. var h = b.redAdd(a);
  9739. // X3 = E * F
  9740. var nx = e.redMul(f);
  9741. // Y3 = G * H
  9742. var ny = g.redMul(h);
  9743. // T3 = E * H
  9744. var nt = e.redMul(h);
  9745. // Z3 = F * G
  9746. var nz = f.redMul(g);
  9747. return this.curve.point(nx, ny, nz, nt);
  9748. };
  9749. Point.prototype._projAdd = function _projAdd(p) {
  9750. // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
  9751. // #addition-add-2008-bbjlp
  9752. // #addition-add-2007-bl
  9753. // 10M + 1S
  9754. // A = Z1 * Z2
  9755. var a = this.z.redMul(p.z);
  9756. // B = A^2
  9757. var b = a.redSqr();
  9758. // C = X1 * X2
  9759. var c = this.x.redMul(p.x);
  9760. // D = Y1 * Y2
  9761. var d = this.y.redMul(p.y);
  9762. // E = d * C * D
  9763. var e = this.curve.d.redMul(c).redMul(d);
  9764. // F = B - E
  9765. var f = b.redSub(e);
  9766. // G = B + E
  9767. var g = b.redAdd(e);
  9768. // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
  9769. var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
  9770. var nx = a.redMul(f).redMul(tmp);
  9771. var ny;
  9772. var nz;
  9773. if (this.curve.twisted) {
  9774. // Y3 = A * G * (D - a * C)
  9775. ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
  9776. // Z3 = F * G
  9777. nz = f.redMul(g);
  9778. } else {
  9779. // Y3 = A * G * (D - C)
  9780. ny = a.redMul(g).redMul(d.redSub(c));
  9781. // Z3 = c * F * G
  9782. nz = this.curve._mulC(f).redMul(g);
  9783. }
  9784. return this.curve.point(nx, ny, nz);
  9785. };
  9786. Point.prototype.add = function add(p) {
  9787. if (this.isInfinity())
  9788. return p;
  9789. if (p.isInfinity())
  9790. return this;
  9791. if (this.curve.extended)
  9792. return this._extAdd(p);
  9793. else
  9794. return this._projAdd(p);
  9795. };
  9796. Point.prototype.mul = function mul(k) {
  9797. if (this._hasDoubles(k))
  9798. return this.curve._fixedNafMul(this, k);
  9799. else
  9800. return this.curve._wnafMul(this, k);
  9801. };
  9802. Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
  9803. return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
  9804. };
  9805. Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
  9806. return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
  9807. };
  9808. Point.prototype.normalize = function normalize() {
  9809. if (this.zOne)
  9810. return this;
  9811. // Normalize coordinates
  9812. var zi = this.z.redInvm();
  9813. this.x = this.x.redMul(zi);
  9814. this.y = this.y.redMul(zi);
  9815. if (this.t)
  9816. this.t = this.t.redMul(zi);
  9817. this.z = this.curve.one;
  9818. this.zOne = true;
  9819. return this;
  9820. };
  9821. Point.prototype.neg = function neg() {
  9822. return this.curve.point(this.x.redNeg(),
  9823. this.y,
  9824. this.z,
  9825. this.t && this.t.redNeg());
  9826. };
  9827. Point.prototype.getX = function getX() {
  9828. this.normalize();
  9829. return this.x.fromRed();
  9830. };
  9831. Point.prototype.getY = function getY() {
  9832. this.normalize();
  9833. return this.y.fromRed();
  9834. };
  9835. Point.prototype.eq = function eq(other) {
  9836. return this === other ||
  9837. this.getX().cmp(other.getX()) === 0 &&
  9838. this.getY().cmp(other.getY()) === 0;
  9839. };
  9840. Point.prototype.eqXToP = function eqXToP(x) {
  9841. var rx = x.toRed(this.curve.red).redMul(this.z);
  9842. if (this.x.cmp(rx) === 0)
  9843. return true;
  9844. var xc = x.clone();
  9845. var t = this.curve.redN.redMul(this.z);
  9846. for (;;) {
  9847. xc.iadd(this.curve.n);
  9848. if (xc.cmp(this.curve.p) >= 0)
  9849. return false;
  9850. rx.redIAdd(t);
  9851. if (this.x.cmp(rx) === 0)
  9852. return true;
  9853. }
  9854. return false;
  9855. };
  9856. // Compatibility with BaseCurve
  9857. Point.prototype.toP = Point.prototype.normalize;
  9858. Point.prototype.mixedAdd = Point.prototype.add;
  9859. },{"../../elliptic":74,"../curve":77,"bn.js":25,"inherits":108}],77:[function(require,module,exports){
  9860. 'use strict';
  9861. var curve = exports;
  9862. curve.base = require('./base');
  9863. curve.short = require('./short');
  9864. curve.mont = require('./mont');
  9865. curve.edwards = require('./edwards');
  9866. },{"./base":75,"./edwards":76,"./mont":78,"./short":79}],78:[function(require,module,exports){
  9867. 'use strict';
  9868. var curve = require('../curve');
  9869. var BN = require('bn.js');
  9870. var inherits = require('inherits');
  9871. var Base = curve.base;
  9872. var elliptic = require('../../elliptic');
  9873. var utils = elliptic.utils;
  9874. function MontCurve(conf) {
  9875. Base.call(this, 'mont', conf);
  9876. this.a = new BN(conf.a, 16).toRed(this.red);
  9877. this.b = new BN(conf.b, 16).toRed(this.red);
  9878. this.i4 = new BN(4).toRed(this.red).redInvm();
  9879. this.two = new BN(2).toRed(this.red);
  9880. this.a24 = this.i4.redMul(this.a.redAdd(this.two));
  9881. }
  9882. inherits(MontCurve, Base);
  9883. module.exports = MontCurve;
  9884. MontCurve.prototype.validate = function validate(point) {
  9885. var x = point.normalize().x;
  9886. var x2 = x.redSqr();
  9887. var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
  9888. var y = rhs.redSqrt();
  9889. return y.redSqr().cmp(rhs) === 0;
  9890. };
  9891. function Point(curve, x, z) {
  9892. Base.BasePoint.call(this, curve, 'projective');
  9893. if (x === null && z === null) {
  9894. this.x = this.curve.one;
  9895. this.z = this.curve.zero;
  9896. } else {
  9897. this.x = new BN(x, 16);
  9898. this.z = new BN(z, 16);
  9899. if (!this.x.red)
  9900. this.x = this.x.toRed(this.curve.red);
  9901. if (!this.z.red)
  9902. this.z = this.z.toRed(this.curve.red);
  9903. }
  9904. }
  9905. inherits(Point, Base.BasePoint);
  9906. MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
  9907. return this.point(utils.toArray(bytes, enc), 1);
  9908. };
  9909. MontCurve.prototype.point = function point(x, z) {
  9910. return new Point(this, x, z);
  9911. };
  9912. MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
  9913. return Point.fromJSON(this, obj);
  9914. };
  9915. Point.prototype.precompute = function precompute() {
  9916. // No-op
  9917. };
  9918. Point.prototype._encode = function _encode() {
  9919. return this.getX().toArray('be', this.curve.p.byteLength());
  9920. };
  9921. Point.fromJSON = function fromJSON(curve, obj) {
  9922. return new Point(curve, obj[0], obj[1] || curve.one);
  9923. };
  9924. Point.prototype.inspect = function inspect() {
  9925. if (this.isInfinity())
  9926. return '<EC Point Infinity>';
  9927. return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
  9928. ' z: ' + this.z.fromRed().toString(16, 2) + '>';
  9929. };
  9930. Point.prototype.isInfinity = function isInfinity() {
  9931. // XXX This code assumes that zero is always zero in red
  9932. return this.z.cmpn(0) === 0;
  9933. };
  9934. Point.prototype.dbl = function dbl() {
  9935. // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
  9936. // 2M + 2S + 4A
  9937. // A = X1 + Z1
  9938. var a = this.x.redAdd(this.z);
  9939. // AA = A^2
  9940. var aa = a.redSqr();
  9941. // B = X1 - Z1
  9942. var b = this.x.redSub(this.z);
  9943. // BB = B^2
  9944. var bb = b.redSqr();
  9945. // C = AA - BB
  9946. var c = aa.redSub(bb);
  9947. // X3 = AA * BB
  9948. var nx = aa.redMul(bb);
  9949. // Z3 = C * (BB + A24 * C)
  9950. var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
  9951. return this.curve.point(nx, nz);
  9952. };
  9953. Point.prototype.add = function add() {
  9954. throw new Error('Not supported on Montgomery curve');
  9955. };
  9956. Point.prototype.diffAdd = function diffAdd(p, diff) {
  9957. // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
  9958. // 4M + 2S + 6A
  9959. // A = X2 + Z2
  9960. var a = this.x.redAdd(this.z);
  9961. // B = X2 - Z2
  9962. var b = this.x.redSub(this.z);
  9963. // C = X3 + Z3
  9964. var c = p.x.redAdd(p.z);
  9965. // D = X3 - Z3
  9966. var d = p.x.redSub(p.z);
  9967. // DA = D * A
  9968. var da = d.redMul(a);
  9969. // CB = C * B
  9970. var cb = c.redMul(b);
  9971. // X5 = Z1 * (DA + CB)^2
  9972. var nx = diff.z.redMul(da.redAdd(cb).redSqr());
  9973. // Z5 = X1 * (DA - CB)^2
  9974. var nz = diff.x.redMul(da.redISub(cb).redSqr());
  9975. return this.curve.point(nx, nz);
  9976. };
  9977. Point.prototype.mul = function mul(k) {
  9978. var t = k.clone();
  9979. var a = this; // (N / 2) * Q + Q
  9980. var b = this.curve.point(null, null); // (N / 2) * Q
  9981. var c = this; // Q
  9982. for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
  9983. bits.push(t.andln(1));
  9984. for (var i = bits.length - 1; i >= 0; i--) {
  9985. if (bits[i] === 0) {
  9986. // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
  9987. a = a.diffAdd(b, c);
  9988. // N * Q = 2 * ((N / 2) * Q + Q))
  9989. b = b.dbl();
  9990. } else {
  9991. // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
  9992. b = a.diffAdd(b, c);
  9993. // N * Q + Q = 2 * ((N / 2) * Q + Q)
  9994. a = a.dbl();
  9995. }
  9996. }
  9997. return b;
  9998. };
  9999. Point.prototype.mulAdd = function mulAdd() {
  10000. throw new Error('Not supported on Montgomery curve');
  10001. };
  10002. Point.prototype.jumlAdd = function jumlAdd() {
  10003. throw new Error('Not supported on Montgomery curve');
  10004. };
  10005. Point.prototype.eq = function eq(other) {
  10006. return this.getX().cmp(other.getX()) === 0;
  10007. };
  10008. Point.prototype.normalize = function normalize() {
  10009. this.x = this.x.redMul(this.z.redInvm());
  10010. this.z = this.curve.one;
  10011. return this;
  10012. };
  10013. Point.prototype.getX = function getX() {
  10014. // Normalize coordinates
  10015. this.normalize();
  10016. return this.x.fromRed();
  10017. };
  10018. },{"../../elliptic":74,"../curve":77,"bn.js":25,"inherits":108}],79:[function(require,module,exports){
  10019. 'use strict';
  10020. var curve = require('../curve');
  10021. var elliptic = require('../../elliptic');
  10022. var BN = require('bn.js');
  10023. var inherits = require('inherits');
  10024. var Base = curve.base;
  10025. var assert = elliptic.utils.assert;
  10026. function ShortCurve(conf) {
  10027. Base.call(this, 'short', conf);
  10028. this.a = new BN(conf.a, 16).toRed(this.red);
  10029. this.b = new BN(conf.b, 16).toRed(this.red);
  10030. this.tinv = this.two.redInvm();
  10031. this.zeroA = this.a.fromRed().cmpn(0) === 0;
  10032. this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
  10033. // If the curve is endomorphic, precalculate beta and lambda
  10034. this.endo = this._getEndomorphism(conf);
  10035. this._endoWnafT1 = new Array(4);
  10036. this._endoWnafT2 = new Array(4);
  10037. }
  10038. inherits(ShortCurve, Base);
  10039. module.exports = ShortCurve;
  10040. ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
  10041. // No efficient endomorphism
  10042. if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
  10043. return;
  10044. // Compute beta and lambda, that lambda * P = (beta * Px; Py)
  10045. var beta;
  10046. var lambda;
  10047. if (conf.beta) {
  10048. beta = new BN(conf.beta, 16).toRed(this.red);
  10049. } else {
  10050. var betas = this._getEndoRoots(this.p);
  10051. // Choose the smallest beta
  10052. beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
  10053. beta = beta.toRed(this.red);
  10054. }
  10055. if (conf.lambda) {
  10056. lambda = new BN(conf.lambda, 16);
  10057. } else {
  10058. // Choose the lambda that is matching selected beta
  10059. var lambdas = this._getEndoRoots(this.n);
  10060. if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
  10061. lambda = lambdas[0];
  10062. } else {
  10063. lambda = lambdas[1];
  10064. assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
  10065. }
  10066. }
  10067. // Get basis vectors, used for balanced length-two representation
  10068. var basis;
  10069. if (conf.basis) {
  10070. basis = conf.basis.map(function(vec) {
  10071. return {
  10072. a: new BN(vec.a, 16),
  10073. b: new BN(vec.b, 16)
  10074. };
  10075. });
  10076. } else {
  10077. basis = this._getEndoBasis(lambda);
  10078. }
  10079. return {
  10080. beta: beta,
  10081. lambda: lambda,
  10082. basis: basis
  10083. };
  10084. };
  10085. ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
  10086. // Find roots of for x^2 + x + 1 in F
  10087. // Root = (-1 +- Sqrt(-3)) / 2
  10088. //
  10089. var red = num === this.p ? this.red : BN.mont(num);
  10090. var tinv = new BN(2).toRed(red).redInvm();
  10091. var ntinv = tinv.redNeg();
  10092. var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
  10093. var l1 = ntinv.redAdd(s).fromRed();
  10094. var l2 = ntinv.redSub(s).fromRed();
  10095. return [ l1, l2 ];
  10096. };
  10097. ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
  10098. // aprxSqrt >= sqrt(this.n)
  10099. var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
  10100. // 3.74
  10101. // Run EGCD, until r(L + 1) < aprxSqrt
  10102. var u = lambda;
  10103. var v = this.n.clone();
  10104. var x1 = new BN(1);
  10105. var y1 = new BN(0);
  10106. var x2 = new BN(0);
  10107. var y2 = new BN(1);
  10108. // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
  10109. var a0;
  10110. var b0;
  10111. // First vector
  10112. var a1;
  10113. var b1;
  10114. // Second vector
  10115. var a2;
  10116. var b2;
  10117. var prevR;
  10118. var i = 0;
  10119. var r;
  10120. var x;
  10121. while (u.cmpn(0) !== 0) {
  10122. var q = v.div(u);
  10123. r = v.sub(q.mul(u));
  10124. x = x2.sub(q.mul(x1));
  10125. var y = y2.sub(q.mul(y1));
  10126. if (!a1 && r.cmp(aprxSqrt) < 0) {
  10127. a0 = prevR.neg();
  10128. b0 = x1;
  10129. a1 = r.neg();
  10130. b1 = x;
  10131. } else if (a1 && ++i === 2) {
  10132. break;
  10133. }
  10134. prevR = r;
  10135. v = u;
  10136. u = r;
  10137. x2 = x1;
  10138. x1 = x;
  10139. y2 = y1;
  10140. y1 = y;
  10141. }
  10142. a2 = r.neg();
  10143. b2 = x;
  10144. var len1 = a1.sqr().add(b1.sqr());
  10145. var len2 = a2.sqr().add(b2.sqr());
  10146. if (len2.cmp(len1) >= 0) {
  10147. a2 = a0;
  10148. b2 = b0;
  10149. }
  10150. // Normalize signs
  10151. if (a1.negative) {
  10152. a1 = a1.neg();
  10153. b1 = b1.neg();
  10154. }
  10155. if (a2.negative) {
  10156. a2 = a2.neg();
  10157. b2 = b2.neg();
  10158. }
  10159. return [
  10160. { a: a1, b: b1 },
  10161. { a: a2, b: b2 }
  10162. ];
  10163. };
  10164. ShortCurve.prototype._endoSplit = function _endoSplit(k) {
  10165. var basis = this.endo.basis;
  10166. var v1 = basis[0];
  10167. var v2 = basis[1];
  10168. var c1 = v2.b.mul(k).divRound(this.n);
  10169. var c2 = v1.b.neg().mul(k).divRound(this.n);
  10170. var p1 = c1.mul(v1.a);
  10171. var p2 = c2.mul(v2.a);
  10172. var q1 = c1.mul(v1.b);
  10173. var q2 = c2.mul(v2.b);
  10174. // Calculate answer
  10175. var k1 = k.sub(p1).sub(p2);
  10176. var k2 = q1.add(q2).neg();
  10177. return { k1: k1, k2: k2 };
  10178. };
  10179. ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
  10180. x = new BN(x, 16);
  10181. if (!x.red)
  10182. x = x.toRed(this.red);
  10183. var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
  10184. var y = y2.redSqrt();
  10185. if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
  10186. throw new Error('invalid point');
  10187. // XXX Is there any way to tell if the number is odd without converting it
  10188. // to non-red form?
  10189. var isOdd = y.fromRed().isOdd();
  10190. if (odd && !isOdd || !odd && isOdd)
  10191. y = y.redNeg();
  10192. return this.point(x, y);
  10193. };
  10194. ShortCurve.prototype.validate = function validate(point) {
  10195. if (point.inf)
  10196. return true;
  10197. var x = point.x;
  10198. var y = point.y;
  10199. var ax = this.a.redMul(x);
  10200. var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
  10201. return y.redSqr().redISub(rhs).cmpn(0) === 0;
  10202. };
  10203. ShortCurve.prototype._endoWnafMulAdd =
  10204. function _endoWnafMulAdd(points, coeffs, jacobianResult) {
  10205. var npoints = this._endoWnafT1;
  10206. var ncoeffs = this._endoWnafT2;
  10207. for (var i = 0; i < points.length; i++) {
  10208. var split = this._endoSplit(coeffs[i]);
  10209. var p = points[i];
  10210. var beta = p._getBeta();
  10211. if (split.k1.negative) {
  10212. split.k1.ineg();
  10213. p = p.neg(true);
  10214. }
  10215. if (split.k2.negative) {
  10216. split.k2.ineg();
  10217. beta = beta.neg(true);
  10218. }
  10219. npoints[i * 2] = p;
  10220. npoints[i * 2 + 1] = beta;
  10221. ncoeffs[i * 2] = split.k1;
  10222. ncoeffs[i * 2 + 1] = split.k2;
  10223. }
  10224. var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
  10225. // Clean-up references to points and coefficients
  10226. for (var j = 0; j < i * 2; j++) {
  10227. npoints[j] = null;
  10228. ncoeffs[j] = null;
  10229. }
  10230. return res;
  10231. };
  10232. function Point(curve, x, y, isRed) {
  10233. Base.BasePoint.call(this, curve, 'affine');
  10234. if (x === null && y === null) {
  10235. this.x = null;
  10236. this.y = null;
  10237. this.inf = true;
  10238. } else {
  10239. this.x = new BN(x, 16);
  10240. this.y = new BN(y, 16);
  10241. // Force redgomery representation when loading from JSON
  10242. if (isRed) {
  10243. this.x.forceRed(this.curve.red);
  10244. this.y.forceRed(this.curve.red);
  10245. }
  10246. if (!this.x.red)
  10247. this.x = this.x.toRed(this.curve.red);
  10248. if (!this.y.red)
  10249. this.y = this.y.toRed(this.curve.red);
  10250. this.inf = false;
  10251. }
  10252. }
  10253. inherits(Point, Base.BasePoint);
  10254. ShortCurve.prototype.point = function point(x, y, isRed) {
  10255. return new Point(this, x, y, isRed);
  10256. };
  10257. ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
  10258. return Point.fromJSON(this, obj, red);
  10259. };
  10260. Point.prototype._getBeta = function _getBeta() {
  10261. if (!this.curve.endo)
  10262. return;
  10263. var pre = this.precomputed;
  10264. if (pre && pre.beta)
  10265. return pre.beta;
  10266. var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
  10267. if (pre) {
  10268. var curve = this.curve;
  10269. var endoMul = function(p) {
  10270. return curve.point(p.x.redMul(curve.endo.beta), p.y);
  10271. };
  10272. pre.beta = beta;
  10273. beta.precomputed = {
  10274. beta: null,
  10275. naf: pre.naf && {
  10276. wnd: pre.naf.wnd,
  10277. points: pre.naf.points.map(endoMul)
  10278. },
  10279. doubles: pre.doubles && {
  10280. step: pre.doubles.step,
  10281. points: pre.doubles.points.map(endoMul)
  10282. }
  10283. };
  10284. }
  10285. return beta;
  10286. };
  10287. Point.prototype.toJSON = function toJSON() {
  10288. if (!this.precomputed)
  10289. return [ this.x, this.y ];
  10290. return [ this.x, this.y, this.precomputed && {
  10291. doubles: this.precomputed.doubles && {
  10292. step: this.precomputed.doubles.step,
  10293. points: this.precomputed.doubles.points.slice(1)
  10294. },
  10295. naf: this.precomputed.naf && {
  10296. wnd: this.precomputed.naf.wnd,
  10297. points: this.precomputed.naf.points.slice(1)
  10298. }
  10299. } ];
  10300. };
  10301. Point.fromJSON = function fromJSON(curve, obj, red) {
  10302. if (typeof obj === 'string')
  10303. obj = JSON.parse(obj);
  10304. var res = curve.point(obj[0], obj[1], red);
  10305. if (!obj[2])
  10306. return res;
  10307. function obj2point(obj) {
  10308. return curve.point(obj[0], obj[1], red);
  10309. }
  10310. var pre = obj[2];
  10311. res.precomputed = {
  10312. beta: null,
  10313. doubles: pre.doubles && {
  10314. step: pre.doubles.step,
  10315. points: [ res ].concat(pre.doubles.points.map(obj2point))
  10316. },
  10317. naf: pre.naf && {
  10318. wnd: pre.naf.wnd,
  10319. points: [ res ].concat(pre.naf.points.map(obj2point))
  10320. }
  10321. };
  10322. return res;
  10323. };
  10324. Point.prototype.inspect = function inspect() {
  10325. if (this.isInfinity())
  10326. return '<EC Point Infinity>';
  10327. return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
  10328. ' y: ' + this.y.fromRed().toString(16, 2) + '>';
  10329. };
  10330. Point.prototype.isInfinity = function isInfinity() {
  10331. return this.inf;
  10332. };
  10333. Point.prototype.add = function add(p) {
  10334. // O + P = P
  10335. if (this.inf)
  10336. return p;
  10337. // P + O = P
  10338. if (p.inf)
  10339. return this;
  10340. // P + P = 2P
  10341. if (this.eq(p))
  10342. return this.dbl();
  10343. // P + (-P) = O
  10344. if (this.neg().eq(p))
  10345. return this.curve.point(null, null);
  10346. // P + Q = O
  10347. if (this.x.cmp(p.x) === 0)
  10348. return this.curve.point(null, null);
  10349. var c = this.y.redSub(p.y);
  10350. if (c.cmpn(0) !== 0)
  10351. c = c.redMul(this.x.redSub(p.x).redInvm());
  10352. var nx = c.redSqr().redISub(this.x).redISub(p.x);
  10353. var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
  10354. return this.curve.point(nx, ny);
  10355. };
  10356. Point.prototype.dbl = function dbl() {
  10357. if (this.inf)
  10358. return this;
  10359. // 2P = O
  10360. var ys1 = this.y.redAdd(this.y);
  10361. if (ys1.cmpn(0) === 0)
  10362. return this.curve.point(null, null);
  10363. var a = this.curve.a;
  10364. var x2 = this.x.redSqr();
  10365. var dyinv = ys1.redInvm();
  10366. var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
  10367. var nx = c.redSqr().redISub(this.x.redAdd(this.x));
  10368. var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
  10369. return this.curve.point(nx, ny);
  10370. };
  10371. Point.prototype.getX = function getX() {
  10372. return this.x.fromRed();
  10373. };
  10374. Point.prototype.getY = function getY() {
  10375. return this.y.fromRed();
  10376. };
  10377. Point.prototype.mul = function mul(k) {
  10378. k = new BN(k, 16);
  10379. if (this._hasDoubles(k))
  10380. return this.curve._fixedNafMul(this, k);
  10381. else if (this.curve.endo)
  10382. return this.curve._endoWnafMulAdd([ this ], [ k ]);
  10383. else
  10384. return this.curve._wnafMul(this, k);
  10385. };
  10386. Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
  10387. var points = [ this, p2 ];
  10388. var coeffs = [ k1, k2 ];
  10389. if (this.curve.endo)
  10390. return this.curve._endoWnafMulAdd(points, coeffs);
  10391. else
  10392. return this.curve._wnafMulAdd(1, points, coeffs, 2);
  10393. };
  10394. Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
  10395. var points = [ this, p2 ];
  10396. var coeffs = [ k1, k2 ];
  10397. if (this.curve.endo)
  10398. return this.curve._endoWnafMulAdd(points, coeffs, true);
  10399. else
  10400. return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
  10401. };
  10402. Point.prototype.eq = function eq(p) {
  10403. return this === p ||
  10404. this.inf === p.inf &&
  10405. (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
  10406. };
  10407. Point.prototype.neg = function neg(_precompute) {
  10408. if (this.inf)
  10409. return this;
  10410. var res = this.curve.point(this.x, this.y.redNeg());
  10411. if (_precompute && this.precomputed) {
  10412. var pre = this.precomputed;
  10413. var negate = function(p) {
  10414. return p.neg();
  10415. };
  10416. res.precomputed = {
  10417. naf: pre.naf && {
  10418. wnd: pre.naf.wnd,
  10419. points: pre.naf.points.map(negate)
  10420. },
  10421. doubles: pre.doubles && {
  10422. step: pre.doubles.step,
  10423. points: pre.doubles.points.map(negate)
  10424. }
  10425. };
  10426. }
  10427. return res;
  10428. };
  10429. Point.prototype.toJ = function toJ() {
  10430. if (this.inf)
  10431. return this.curve.jpoint(null, null, null);
  10432. var res = this.curve.jpoint(this.x, this.y, this.curve.one);
  10433. return res;
  10434. };
  10435. function JPoint(curve, x, y, z) {
  10436. Base.BasePoint.call(this, curve, 'jacobian');
  10437. if (x === null && y === null && z === null) {
  10438. this.x = this.curve.one;
  10439. this.y = this.curve.one;
  10440. this.z = new BN(0);
  10441. } else {
  10442. this.x = new BN(x, 16);
  10443. this.y = new BN(y, 16);
  10444. this.z = new BN(z, 16);
  10445. }
  10446. if (!this.x.red)
  10447. this.x = this.x.toRed(this.curve.red);
  10448. if (!this.y.red)
  10449. this.y = this.y.toRed(this.curve.red);
  10450. if (!this.z.red)
  10451. this.z = this.z.toRed(this.curve.red);
  10452. this.zOne = this.z === this.curve.one;
  10453. }
  10454. inherits(JPoint, Base.BasePoint);
  10455. ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
  10456. return new JPoint(this, x, y, z);
  10457. };
  10458. JPoint.prototype.toP = function toP() {
  10459. if (this.isInfinity())
  10460. return this.curve.point(null, null);
  10461. var zinv = this.z.redInvm();
  10462. var zinv2 = zinv.redSqr();
  10463. var ax = this.x.redMul(zinv2);
  10464. var ay = this.y.redMul(zinv2).redMul(zinv);
  10465. return this.curve.point(ax, ay);
  10466. };
  10467. JPoint.prototype.neg = function neg() {
  10468. return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
  10469. };
  10470. JPoint.prototype.add = function add(p) {
  10471. // O + P = P
  10472. if (this.isInfinity())
  10473. return p;
  10474. // P + O = P
  10475. if (p.isInfinity())
  10476. return this;
  10477. // 12M + 4S + 7A
  10478. var pz2 = p.z.redSqr();
  10479. var z2 = this.z.redSqr();
  10480. var u1 = this.x.redMul(pz2);
  10481. var u2 = p.x.redMul(z2);
  10482. var s1 = this.y.redMul(pz2.redMul(p.z));
  10483. var s2 = p.y.redMul(z2.redMul(this.z));
  10484. var h = u1.redSub(u2);
  10485. var r = s1.redSub(s2);
  10486. if (h.cmpn(0) === 0) {
  10487. if (r.cmpn(0) !== 0)
  10488. return this.curve.jpoint(null, null, null);
  10489. else
  10490. return this.dbl();
  10491. }
  10492. var h2 = h.redSqr();
  10493. var h3 = h2.redMul(h);
  10494. var v = u1.redMul(h2);
  10495. var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
  10496. var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
  10497. var nz = this.z.redMul(p.z).redMul(h);
  10498. return this.curve.jpoint(nx, ny, nz);
  10499. };
  10500. JPoint.prototype.mixedAdd = function mixedAdd(p) {
  10501. // O + P = P
  10502. if (this.isInfinity())
  10503. return p.toJ();
  10504. // P + O = P
  10505. if (p.isInfinity())
  10506. return this;
  10507. // 8M + 3S + 7A
  10508. var z2 = this.z.redSqr();
  10509. var u1 = this.x;
  10510. var u2 = p.x.redMul(z2);
  10511. var s1 = this.y;
  10512. var s2 = p.y.redMul(z2).redMul(this.z);
  10513. var h = u1.redSub(u2);
  10514. var r = s1.redSub(s2);
  10515. if (h.cmpn(0) === 0) {
  10516. if (r.cmpn(0) !== 0)
  10517. return this.curve.jpoint(null, null, null);
  10518. else
  10519. return this.dbl();
  10520. }
  10521. var h2 = h.redSqr();
  10522. var h3 = h2.redMul(h);
  10523. var v = u1.redMul(h2);
  10524. var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
  10525. var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
  10526. var nz = this.z.redMul(h);
  10527. return this.curve.jpoint(nx, ny, nz);
  10528. };
  10529. JPoint.prototype.dblp = function dblp(pow) {
  10530. if (pow === 0)
  10531. return this;
  10532. if (this.isInfinity())
  10533. return this;
  10534. if (!pow)
  10535. return this.dbl();
  10536. if (this.curve.zeroA || this.curve.threeA) {
  10537. var r = this;
  10538. for (var i = 0; i < pow; i++)
  10539. r = r.dbl();
  10540. return r;
  10541. }
  10542. // 1M + 2S + 1A + N * (4S + 5M + 8A)
  10543. // N = 1 => 6M + 6S + 9A
  10544. var a = this.curve.a;
  10545. var tinv = this.curve.tinv;
  10546. var jx = this.x;
  10547. var jy = this.y;
  10548. var jz = this.z;
  10549. var jz4 = jz.redSqr().redSqr();
  10550. // Reuse results
  10551. var jyd = jy.redAdd(jy);
  10552. for (var i = 0; i < pow; i++) {
  10553. var jx2 = jx.redSqr();
  10554. var jyd2 = jyd.redSqr();
  10555. var jyd4 = jyd2.redSqr();
  10556. var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
  10557. var t1 = jx.redMul(jyd2);
  10558. var nx = c.redSqr().redISub(t1.redAdd(t1));
  10559. var t2 = t1.redISub(nx);
  10560. var dny = c.redMul(t2);
  10561. dny = dny.redIAdd(dny).redISub(jyd4);
  10562. var nz = jyd.redMul(jz);
  10563. if (i + 1 < pow)
  10564. jz4 = jz4.redMul(jyd4);
  10565. jx = nx;
  10566. jz = nz;
  10567. jyd = dny;
  10568. }
  10569. return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
  10570. };
  10571. JPoint.prototype.dbl = function dbl() {
  10572. if (this.isInfinity())
  10573. return this;
  10574. if (this.curve.zeroA)
  10575. return this._zeroDbl();
  10576. else if (this.curve.threeA)
  10577. return this._threeDbl();
  10578. else
  10579. return this._dbl();
  10580. };
  10581. JPoint.prototype._zeroDbl = function _zeroDbl() {
  10582. var nx;
  10583. var ny;
  10584. var nz;
  10585. // Z = 1
  10586. if (this.zOne) {
  10587. // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
  10588. // #doubling-mdbl-2007-bl
  10589. // 1M + 5S + 14A
  10590. // XX = X1^2
  10591. var xx = this.x.redSqr();
  10592. // YY = Y1^2
  10593. var yy = this.y.redSqr();
  10594. // YYYY = YY^2
  10595. var yyyy = yy.redSqr();
  10596. // S = 2 * ((X1 + YY)^2 - XX - YYYY)
  10597. var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
  10598. s = s.redIAdd(s);
  10599. // M = 3 * XX + a; a = 0
  10600. var m = xx.redAdd(xx).redIAdd(xx);
  10601. // T = M ^ 2 - 2*S
  10602. var t = m.redSqr().redISub(s).redISub(s);
  10603. // 8 * YYYY
  10604. var yyyy8 = yyyy.redIAdd(yyyy);
  10605. yyyy8 = yyyy8.redIAdd(yyyy8);
  10606. yyyy8 = yyyy8.redIAdd(yyyy8);
  10607. // X3 = T
  10608. nx = t;
  10609. // Y3 = M * (S - T) - 8 * YYYY
  10610. ny = m.redMul(s.redISub(t)).redISub(yyyy8);
  10611. // Z3 = 2*Y1
  10612. nz = this.y.redAdd(this.y);
  10613. } else {
  10614. // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
  10615. // #doubling-dbl-2009-l
  10616. // 2M + 5S + 13A
  10617. // A = X1^2
  10618. var a = this.x.redSqr();
  10619. // B = Y1^2
  10620. var b = this.y.redSqr();
  10621. // C = B^2
  10622. var c = b.redSqr();
  10623. // D = 2 * ((X1 + B)^2 - A - C)
  10624. var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
  10625. d = d.redIAdd(d);
  10626. // E = 3 * A
  10627. var e = a.redAdd(a).redIAdd(a);
  10628. // F = E^2
  10629. var f = e.redSqr();
  10630. // 8 * C
  10631. var c8 = c.redIAdd(c);
  10632. c8 = c8.redIAdd(c8);
  10633. c8 = c8.redIAdd(c8);
  10634. // X3 = F - 2 * D
  10635. nx = f.redISub(d).redISub(d);
  10636. // Y3 = E * (D - X3) - 8 * C
  10637. ny = e.redMul(d.redISub(nx)).redISub(c8);
  10638. // Z3 = 2 * Y1 * Z1
  10639. nz = this.y.redMul(this.z);
  10640. nz = nz.redIAdd(nz);
  10641. }
  10642. return this.curve.jpoint(nx, ny, nz);
  10643. };
  10644. JPoint.prototype._threeDbl = function _threeDbl() {
  10645. var nx;
  10646. var ny;
  10647. var nz;
  10648. // Z = 1
  10649. if (this.zOne) {
  10650. // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
  10651. // #doubling-mdbl-2007-bl
  10652. // 1M + 5S + 15A
  10653. // XX = X1^2
  10654. var xx = this.x.redSqr();
  10655. // YY = Y1^2
  10656. var yy = this.y.redSqr();
  10657. // YYYY = YY^2
  10658. var yyyy = yy.redSqr();
  10659. // S = 2 * ((X1 + YY)^2 - XX - YYYY)
  10660. var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
  10661. s = s.redIAdd(s);
  10662. // M = 3 * XX + a
  10663. var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
  10664. // T = M^2 - 2 * S
  10665. var t = m.redSqr().redISub(s).redISub(s);
  10666. // X3 = T
  10667. nx = t;
  10668. // Y3 = M * (S - T) - 8 * YYYY
  10669. var yyyy8 = yyyy.redIAdd(yyyy);
  10670. yyyy8 = yyyy8.redIAdd(yyyy8);
  10671. yyyy8 = yyyy8.redIAdd(yyyy8);
  10672. ny = m.redMul(s.redISub(t)).redISub(yyyy8);
  10673. // Z3 = 2 * Y1
  10674. nz = this.y.redAdd(this.y);
  10675. } else {
  10676. // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
  10677. // 3M + 5S
  10678. // delta = Z1^2
  10679. var delta = this.z.redSqr();
  10680. // gamma = Y1^2
  10681. var gamma = this.y.redSqr();
  10682. // beta = X1 * gamma
  10683. var beta = this.x.redMul(gamma);
  10684. // alpha = 3 * (X1 - delta) * (X1 + delta)
  10685. var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
  10686. alpha = alpha.redAdd(alpha).redIAdd(alpha);
  10687. // X3 = alpha^2 - 8 * beta
  10688. var beta4 = beta.redIAdd(beta);
  10689. beta4 = beta4.redIAdd(beta4);
  10690. var beta8 = beta4.redAdd(beta4);
  10691. nx = alpha.redSqr().redISub(beta8);
  10692. // Z3 = (Y1 + Z1)^2 - gamma - delta
  10693. nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
  10694. // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
  10695. var ggamma8 = gamma.redSqr();
  10696. ggamma8 = ggamma8.redIAdd(ggamma8);
  10697. ggamma8 = ggamma8.redIAdd(ggamma8);
  10698. ggamma8 = ggamma8.redIAdd(ggamma8);
  10699. ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
  10700. }
  10701. return this.curve.jpoint(nx, ny, nz);
  10702. };
  10703. JPoint.prototype._dbl = function _dbl() {
  10704. var a = this.curve.a;
  10705. // 4M + 6S + 10A
  10706. var jx = this.x;
  10707. var jy = this.y;
  10708. var jz = this.z;
  10709. var jz4 = jz.redSqr().redSqr();
  10710. var jx2 = jx.redSqr();
  10711. var jy2 = jy.redSqr();
  10712. var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
  10713. var jxd4 = jx.redAdd(jx);
  10714. jxd4 = jxd4.redIAdd(jxd4);
  10715. var t1 = jxd4.redMul(jy2);
  10716. var nx = c.redSqr().redISub(t1.redAdd(t1));
  10717. var t2 = t1.redISub(nx);
  10718. var jyd8 = jy2.redSqr();
  10719. jyd8 = jyd8.redIAdd(jyd8);
  10720. jyd8 = jyd8.redIAdd(jyd8);
  10721. jyd8 = jyd8.redIAdd(jyd8);
  10722. var ny = c.redMul(t2).redISub(jyd8);
  10723. var nz = jy.redAdd(jy).redMul(jz);
  10724. return this.curve.jpoint(nx, ny, nz);
  10725. };
  10726. JPoint.prototype.trpl = function trpl() {
  10727. if (!this.curve.zeroA)
  10728. return this.dbl().add(this);
  10729. // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
  10730. // 5M + 10S + ...
  10731. // XX = X1^2
  10732. var xx = this.x.redSqr();
  10733. // YY = Y1^2
  10734. var yy = this.y.redSqr();
  10735. // ZZ = Z1^2
  10736. var zz = this.z.redSqr();
  10737. // YYYY = YY^2
  10738. var yyyy = yy.redSqr();
  10739. // M = 3 * XX + a * ZZ2; a = 0
  10740. var m = xx.redAdd(xx).redIAdd(xx);
  10741. // MM = M^2
  10742. var mm = m.redSqr();
  10743. // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
  10744. var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
  10745. e = e.redIAdd(e);
  10746. e = e.redAdd(e).redIAdd(e);
  10747. e = e.redISub(mm);
  10748. // EE = E^2
  10749. var ee = e.redSqr();
  10750. // T = 16*YYYY
  10751. var t = yyyy.redIAdd(yyyy);
  10752. t = t.redIAdd(t);
  10753. t = t.redIAdd(t);
  10754. t = t.redIAdd(t);
  10755. // U = (M + E)^2 - MM - EE - T
  10756. var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
  10757. // X3 = 4 * (X1 * EE - 4 * YY * U)
  10758. var yyu4 = yy.redMul(u);
  10759. yyu4 = yyu4.redIAdd(yyu4);
  10760. yyu4 = yyu4.redIAdd(yyu4);
  10761. var nx = this.x.redMul(ee).redISub(yyu4);
  10762. nx = nx.redIAdd(nx);
  10763. nx = nx.redIAdd(nx);
  10764. // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
  10765. var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
  10766. ny = ny.redIAdd(ny);
  10767. ny = ny.redIAdd(ny);
  10768. ny = ny.redIAdd(ny);
  10769. // Z3 = (Z1 + E)^2 - ZZ - EE
  10770. var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
  10771. return this.curve.jpoint(nx, ny, nz);
  10772. };
  10773. JPoint.prototype.mul = function mul(k, kbase) {
  10774. k = new BN(k, kbase);
  10775. return this.curve._wnafMul(this, k);
  10776. };
  10777. JPoint.prototype.eq = function eq(p) {
  10778. if (p.type === 'affine')
  10779. return this.eq(p.toJ());
  10780. if (this === p)
  10781. return true;
  10782. // x1 * z2^2 == x2 * z1^2
  10783. var z2 = this.z.redSqr();
  10784. var pz2 = p.z.redSqr();
  10785. if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
  10786. return false;
  10787. // y1 * z2^3 == y2 * z1^3
  10788. var z3 = z2.redMul(this.z);
  10789. var pz3 = pz2.redMul(p.z);
  10790. return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
  10791. };
  10792. JPoint.prototype.eqXToP = function eqXToP(x) {
  10793. var zs = this.z.redSqr();
  10794. var rx = x.toRed(this.curve.red).redMul(zs);
  10795. if (this.x.cmp(rx) === 0)
  10796. return true;
  10797. var xc = x.clone();
  10798. var t = this.curve.redN.redMul(zs);
  10799. for (;;) {
  10800. xc.iadd(this.curve.n);
  10801. if (xc.cmp(this.curve.p) >= 0)
  10802. return false;
  10803. rx.redIAdd(t);
  10804. if (this.x.cmp(rx) === 0)
  10805. return true;
  10806. }
  10807. return false;
  10808. };
  10809. JPoint.prototype.inspect = function inspect() {
  10810. if (this.isInfinity())
  10811. return '<EC JPoint Infinity>';
  10812. return '<EC JPoint x: ' + this.x.toString(16, 2) +
  10813. ' y: ' + this.y.toString(16, 2) +
  10814. ' z: ' + this.z.toString(16, 2) + '>';
  10815. };
  10816. JPoint.prototype.isInfinity = function isInfinity() {
  10817. // XXX This code assumes that zero is always zero in red
  10818. return this.z.cmpn(0) === 0;
  10819. };
  10820. },{"../../elliptic":74,"../curve":77,"bn.js":25,"inherits":108}],80:[function(require,module,exports){
  10821. 'use strict';
  10822. var curves = exports;
  10823. var hash = require('hash.js');
  10824. var elliptic = require('../elliptic');
  10825. var assert = elliptic.utils.assert;
  10826. function PresetCurve(options) {
  10827. if (options.type === 'short')
  10828. this.curve = new elliptic.curve.short(options);
  10829. else if (options.type === 'edwards')
  10830. this.curve = new elliptic.curve.edwards(options);
  10831. else
  10832. this.curve = new elliptic.curve.mont(options);
  10833. this.g = this.curve.g;
  10834. this.n = this.curve.n;
  10835. this.hash = options.hash;
  10836. assert(this.g.validate(), 'Invalid curve');
  10837. assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
  10838. }
  10839. curves.PresetCurve = PresetCurve;
  10840. function defineCurve(name, options) {
  10841. Object.defineProperty(curves, name, {
  10842. configurable: true,
  10843. enumerable: true,
  10844. get: function() {
  10845. var curve = new PresetCurve(options);
  10846. Object.defineProperty(curves, name, {
  10847. configurable: true,
  10848. enumerable: true,
  10849. value: curve
  10850. });
  10851. return curve;
  10852. }
  10853. });
  10854. }
  10855. defineCurve('p192', {
  10856. type: 'short',
  10857. prime: 'p192',
  10858. p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
  10859. a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
  10860. b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
  10861. n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
  10862. hash: hash.sha256,
  10863. gRed: false,
  10864. g: [
  10865. '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
  10866. '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
  10867. ]
  10868. });
  10869. defineCurve('p224', {
  10870. type: 'short',
  10871. prime: 'p224',
  10872. p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
  10873. a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
  10874. b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
  10875. n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
  10876. hash: hash.sha256,
  10877. gRed: false,
  10878. g: [
  10879. 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
  10880. 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
  10881. ]
  10882. });
  10883. defineCurve('p256', {
  10884. type: 'short',
  10885. prime: null,
  10886. p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
  10887. a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
  10888. b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
  10889. n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
  10890. hash: hash.sha256,
  10891. gRed: false,
  10892. g: [
  10893. '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
  10894. '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
  10895. ]
  10896. });
  10897. defineCurve('p384', {
  10898. type: 'short',
  10899. prime: null,
  10900. p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
  10901. 'fffffffe ffffffff 00000000 00000000 ffffffff',
  10902. a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
  10903. 'fffffffe ffffffff 00000000 00000000 fffffffc',
  10904. b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
  10905. '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
  10906. n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
  10907. 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
  10908. hash: hash.sha384,
  10909. gRed: false,
  10910. g: [
  10911. 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
  10912. '5502f25d bf55296c 3a545e38 72760ab7',
  10913. '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
  10914. '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
  10915. ]
  10916. });
  10917. defineCurve('p521', {
  10918. type: 'short',
  10919. prime: null,
  10920. p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
  10921. 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
  10922. 'ffffffff ffffffff ffffffff ffffffff ffffffff',
  10923. a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
  10924. 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
  10925. 'ffffffff ffffffff ffffffff ffffffff fffffffc',
  10926. b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
  10927. '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
  10928. '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
  10929. n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
  10930. 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
  10931. 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
  10932. hash: hash.sha512,
  10933. gRed: false,
  10934. g: [
  10935. '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
  10936. '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
  10937. 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
  10938. '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
  10939. '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
  10940. '3fad0761 353c7086 a272c240 88be9476 9fd16650'
  10941. ]
  10942. });
  10943. defineCurve('curve25519', {
  10944. type: 'mont',
  10945. prime: 'p25519',
  10946. p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
  10947. a: '76d06',
  10948. b: '1',
  10949. n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
  10950. hash: hash.sha256,
  10951. gRed: false,
  10952. g: [
  10953. '9'
  10954. ]
  10955. });
  10956. defineCurve('ed25519', {
  10957. type: 'edwards',
  10958. prime: 'p25519',
  10959. p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
  10960. a: '-1',
  10961. c: '1',
  10962. // -121665 * (121666^(-1)) (mod P)
  10963. d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
  10964. n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
  10965. hash: hash.sha256,
  10966. gRed: false,
  10967. g: [
  10968. '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
  10969. // 4/5
  10970. '6666666666666666666666666666666666666666666666666666666666666658'
  10971. ]
  10972. });
  10973. var pre;
  10974. try {
  10975. pre = require('./precomputed/secp256k1');
  10976. } catch (e) {
  10977. pre = undefined;
  10978. }
  10979. defineCurve('secp256k1', {
  10980. type: 'short',
  10981. prime: 'k256',
  10982. p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
  10983. a: '0',
  10984. b: '7',
  10985. n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
  10986. h: '1',
  10987. hash: hash.sha256,
  10988. // Precomputed endomorphism
  10989. beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
  10990. lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
  10991. basis: [
  10992. {
  10993. a: '3086d221a7d46bcde86c90e49284eb15',
  10994. b: '-e4437ed6010e88286f547fa90abfe4c3'
  10995. },
  10996. {
  10997. a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
  10998. b: '3086d221a7d46bcde86c90e49284eb15'
  10999. }
  11000. ],
  11001. gRed: false,
  11002. g: [
  11003. '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
  11004. '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
  11005. pre
  11006. ]
  11007. });
  11008. },{"../elliptic":74,"./precomputed/secp256k1":87,"hash.js":93}],81:[function(require,module,exports){
  11009. 'use strict';
  11010. var BN = require('bn.js');
  11011. var HmacDRBG = require('hmac-drbg');
  11012. var elliptic = require('../../elliptic');
  11013. var utils = elliptic.utils;
  11014. var assert = utils.assert;
  11015. var KeyPair = require('./key');
  11016. var Signature = require('./signature');
  11017. function EC(options) {
  11018. if (!(this instanceof EC))
  11019. return new EC(options);
  11020. // Shortcut `elliptic.ec(curve-name)`
  11021. if (typeof options === 'string') {
  11022. assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
  11023. options = elliptic.curves[options];
  11024. }
  11025. // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
  11026. if (options instanceof elliptic.curves.PresetCurve)
  11027. options = { curve: options };
  11028. this.curve = options.curve.curve;
  11029. this.n = this.curve.n;
  11030. this.nh = this.n.ushrn(1);
  11031. this.g = this.curve.g;
  11032. // Point on curve
  11033. this.g = options.curve.g;
  11034. this.g.precompute(options.curve.n.bitLength() + 1);
  11035. // Hash for function for DRBG
  11036. this.hash = options.hash || options.curve.hash;
  11037. }
  11038. module.exports = EC;
  11039. EC.prototype.keyPair = function keyPair(options) {
  11040. return new KeyPair(this, options);
  11041. };
  11042. EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
  11043. return KeyPair.fromPrivate(this, priv, enc);
  11044. };
  11045. EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
  11046. return KeyPair.fromPublic(this, pub, enc);
  11047. };
  11048. EC.prototype.genKeyPair = function genKeyPair(options) {
  11049. if (!options)
  11050. options = {};
  11051. // Instantiate Hmac_DRBG
  11052. var drbg = new HmacDRBG({
  11053. hash: this.hash,
  11054. pers: options.pers,
  11055. persEnc: options.persEnc || 'utf8',
  11056. entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
  11057. entropyEnc: options.entropy && options.entropyEnc || 'utf8',
  11058. nonce: this.n.toArray()
  11059. });
  11060. var bytes = this.n.byteLength();
  11061. var ns2 = this.n.sub(new BN(2));
  11062. do {
  11063. var priv = new BN(drbg.generate(bytes));
  11064. if (priv.cmp(ns2) > 0)
  11065. continue;
  11066. priv.iaddn(1);
  11067. return this.keyFromPrivate(priv);
  11068. } while (true);
  11069. };
  11070. EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
  11071. var delta = msg.byteLength() * 8 - this.n.bitLength();
  11072. if (delta > 0)
  11073. msg = msg.ushrn(delta);
  11074. if (!truncOnly && msg.cmp(this.n) >= 0)
  11075. return msg.sub(this.n);
  11076. else
  11077. return msg;
  11078. };
  11079. EC.prototype.sign = function sign(msg, key, enc, options) {
  11080. if (typeof enc === 'object') {
  11081. options = enc;
  11082. enc = null;
  11083. }
  11084. if (!options)
  11085. options = {};
  11086. key = this.keyFromPrivate(key, enc);
  11087. msg = this._truncateToN(new BN(msg, 16));
  11088. // Zero-extend key to provide enough entropy
  11089. var bytes = this.n.byteLength();
  11090. var bkey = key.getPrivate().toArray('be', bytes);
  11091. // Zero-extend nonce to have the same byte size as N
  11092. var nonce = msg.toArray('be', bytes);
  11093. // Instantiate Hmac_DRBG
  11094. var drbg = new HmacDRBG({
  11095. hash: this.hash,
  11096. entropy: bkey,
  11097. nonce: nonce,
  11098. pers: options.pers,
  11099. persEnc: options.persEnc || 'utf8'
  11100. });
  11101. // Number of bytes to generate
  11102. var ns1 = this.n.sub(new BN(1));
  11103. for (var iter = 0; true; iter++) {
  11104. var k = options.k ?
  11105. options.k(iter) :
  11106. new BN(drbg.generate(this.n.byteLength()));
  11107. k = this._truncateToN(k, true);
  11108. if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
  11109. continue;
  11110. var kp = this.g.mul(k);
  11111. if (kp.isInfinity())
  11112. continue;
  11113. var kpX = kp.getX();
  11114. var r = kpX.umod(this.n);
  11115. if (r.cmpn(0) === 0)
  11116. continue;
  11117. var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
  11118. s = s.umod(this.n);
  11119. if (s.cmpn(0) === 0)
  11120. continue;
  11121. var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
  11122. (kpX.cmp(r) !== 0 ? 2 : 0);
  11123. // Use complement of `s`, if it is > `n / 2`
  11124. if (options.canonical && s.cmp(this.nh) > 0) {
  11125. s = this.n.sub(s);
  11126. recoveryParam ^= 1;
  11127. }
  11128. return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
  11129. }
  11130. };
  11131. EC.prototype.verify = function verify(msg, signature, key, enc) {
  11132. msg = this._truncateToN(new BN(msg, 16));
  11133. key = this.keyFromPublic(key, enc);
  11134. signature = new Signature(signature, 'hex');
  11135. // Perform primitive values validation
  11136. var r = signature.r;
  11137. var s = signature.s;
  11138. if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
  11139. return false;
  11140. if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
  11141. return false;
  11142. // Validate signature
  11143. var sinv = s.invm(this.n);
  11144. var u1 = sinv.mul(msg).umod(this.n);
  11145. var u2 = sinv.mul(r).umod(this.n);
  11146. if (!this.curve._maxwellTrick) {
  11147. var p = this.g.mulAdd(u1, key.getPublic(), u2);
  11148. if (p.isInfinity())
  11149. return false;
  11150. return p.getX().umod(this.n).cmp(r) === 0;
  11151. }
  11152. // NOTE: Greg Maxwell's trick, inspired by:
  11153. // https://git.io/vad3K
  11154. var p = this.g.jmulAdd(u1, key.getPublic(), u2);
  11155. if (p.isInfinity())
  11156. return false;
  11157. // Compare `p.x` of Jacobian point with `r`,
  11158. // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
  11159. // inverse of `p.z^2`
  11160. return p.eqXToP(r);
  11161. };
  11162. EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
  11163. assert((3 & j) === j, 'The recovery param is more than two bits');
  11164. signature = new Signature(signature, enc);
  11165. var n = this.n;
  11166. var e = new BN(msg);
  11167. var r = signature.r;
  11168. var s = signature.s;
  11169. // A set LSB signifies that the y-coordinate is odd
  11170. var isYOdd = j & 1;
  11171. var isSecondKey = j >> 1;
  11172. if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
  11173. throw new Error('Unable to find sencond key candinate');
  11174. // 1.1. Let x = r + jn.
  11175. if (isSecondKey)
  11176. r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
  11177. else
  11178. r = this.curve.pointFromX(r, isYOdd);
  11179. var rInv = signature.r.invm(n);
  11180. var s1 = n.sub(e).mul(rInv).umod(n);
  11181. var s2 = s.mul(rInv).umod(n);
  11182. // 1.6.1 Compute Q = r^-1 (sR - eG)
  11183. // Q = r^-1 (sR + -eG)
  11184. return this.g.mulAdd(s1, r, s2);
  11185. };
  11186. EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
  11187. signature = new Signature(signature, enc);
  11188. if (signature.recoveryParam !== null)
  11189. return signature.recoveryParam;
  11190. for (var i = 0; i < 4; i++) {
  11191. var Qprime;
  11192. try {
  11193. Qprime = this.recoverPubKey(e, signature, i);
  11194. } catch (e) {
  11195. continue;
  11196. }
  11197. if (Qprime.eq(Q))
  11198. return i;
  11199. }
  11200. throw new Error('Unable to find valid recovery factor');
  11201. };
  11202. },{"../../elliptic":74,"./key":82,"./signature":83,"bn.js":25,"hmac-drbg":105}],82:[function(require,module,exports){
  11203. 'use strict';
  11204. var BN = require('bn.js');
  11205. var elliptic = require('../../elliptic');
  11206. var utils = elliptic.utils;
  11207. var assert = utils.assert;
  11208. function KeyPair(ec, options) {
  11209. this.ec = ec;
  11210. this.priv = null;
  11211. this.pub = null;
  11212. // KeyPair(ec, { priv: ..., pub: ... })
  11213. if (options.priv)
  11214. this._importPrivate(options.priv, options.privEnc);
  11215. if (options.pub)
  11216. this._importPublic(options.pub, options.pubEnc);
  11217. }
  11218. module.exports = KeyPair;
  11219. KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
  11220. if (pub instanceof KeyPair)
  11221. return pub;
  11222. return new KeyPair(ec, {
  11223. pub: pub,
  11224. pubEnc: enc
  11225. });
  11226. };
  11227. KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
  11228. if (priv instanceof KeyPair)
  11229. return priv;
  11230. return new KeyPair(ec, {
  11231. priv: priv,
  11232. privEnc: enc
  11233. });
  11234. };
  11235. KeyPair.prototype.validate = function validate() {
  11236. var pub = this.getPublic();
  11237. if (pub.isInfinity())
  11238. return { result: false, reason: 'Invalid public key' };
  11239. if (!pub.validate())
  11240. return { result: false, reason: 'Public key is not a point' };
  11241. if (!pub.mul(this.ec.curve.n).isInfinity())
  11242. return { result: false, reason: 'Public key * N != O' };
  11243. return { result: true, reason: null };
  11244. };
  11245. KeyPair.prototype.getPublic = function getPublic(compact, enc) {
  11246. // compact is optional argument
  11247. if (typeof compact === 'string') {
  11248. enc = compact;
  11249. compact = null;
  11250. }
  11251. if (!this.pub)
  11252. this.pub = this.ec.g.mul(this.priv);
  11253. if (!enc)
  11254. return this.pub;
  11255. return this.pub.encode(enc, compact);
  11256. };
  11257. KeyPair.prototype.getPrivate = function getPrivate(enc) {
  11258. if (enc === 'hex')
  11259. return this.priv.toString(16, 2);
  11260. else
  11261. return this.priv;
  11262. };
  11263. KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
  11264. this.priv = new BN(key, enc || 16);
  11265. // Ensure that the priv won't be bigger than n, otherwise we may fail
  11266. // in fixed multiplication method
  11267. this.priv = this.priv.umod(this.ec.curve.n);
  11268. };
  11269. KeyPair.prototype._importPublic = function _importPublic(key, enc) {
  11270. if (key.x || key.y) {
  11271. // Montgomery points only have an `x` coordinate.
  11272. // Weierstrass/Edwards points on the other hand have both `x` and
  11273. // `y` coordinates.
  11274. if (this.ec.curve.type === 'mont') {
  11275. assert(key.x, 'Need x coordinate');
  11276. } else if (this.ec.curve.type === 'short' ||
  11277. this.ec.curve.type === 'edwards') {
  11278. assert(key.x && key.y, 'Need both x and y coordinate');
  11279. }
  11280. this.pub = this.ec.curve.point(key.x, key.y);
  11281. return;
  11282. }
  11283. this.pub = this.ec.curve.decodePoint(key, enc);
  11284. };
  11285. // ECDH
  11286. KeyPair.prototype.derive = function derive(pub) {
  11287. return pub.mul(this.priv).getX();
  11288. };
  11289. // ECDSA
  11290. KeyPair.prototype.sign = function sign(msg, enc, options) {
  11291. return this.ec.sign(msg, this, enc, options);
  11292. };
  11293. KeyPair.prototype.verify = function verify(msg, signature) {
  11294. return this.ec.verify(msg, signature, this);
  11295. };
  11296. KeyPair.prototype.inspect = function inspect() {
  11297. return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
  11298. ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
  11299. };
  11300. },{"../../elliptic":74,"bn.js":25}],83:[function(require,module,exports){
  11301. 'use strict';
  11302. var BN = require('bn.js');
  11303. var elliptic = require('../../elliptic');
  11304. var utils = elliptic.utils;
  11305. var assert = utils.assert;
  11306. function Signature(options, enc) {
  11307. if (options instanceof Signature)
  11308. return options;
  11309. if (this._importDER(options, enc))
  11310. return;
  11311. assert(options.r && options.s, 'Signature without r or s');
  11312. this.r = new BN(options.r, 16);
  11313. this.s = new BN(options.s, 16);
  11314. if (options.recoveryParam === undefined)
  11315. this.recoveryParam = null;
  11316. else
  11317. this.recoveryParam = options.recoveryParam;
  11318. }
  11319. module.exports = Signature;
  11320. function Position() {
  11321. this.place = 0;
  11322. }
  11323. function getLength(buf, p) {
  11324. var initial = buf[p.place++];
  11325. if (!(initial & 0x80)) {
  11326. return initial;
  11327. }
  11328. var octetLen = initial & 0xf;
  11329. var val = 0;
  11330. for (var i = 0, off = p.place; i < octetLen; i++, off++) {
  11331. val <<= 8;
  11332. val |= buf[off];
  11333. }
  11334. p.place = off;
  11335. return val;
  11336. }
  11337. function rmPadding(buf) {
  11338. var i = 0;
  11339. var len = buf.length - 1;
  11340. while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
  11341. i++;
  11342. }
  11343. if (i === 0) {
  11344. return buf;
  11345. }
  11346. return buf.slice(i);
  11347. }
  11348. Signature.prototype._importDER = function _importDER(data, enc) {
  11349. data = utils.toArray(data, enc);
  11350. var p = new Position();
  11351. if (data[p.place++] !== 0x30) {
  11352. return false;
  11353. }
  11354. var len = getLength(data, p);
  11355. if ((len + p.place) !== data.length) {
  11356. return false;
  11357. }
  11358. if (data[p.place++] !== 0x02) {
  11359. return false;
  11360. }
  11361. var rlen = getLength(data, p);
  11362. var r = data.slice(p.place, rlen + p.place);
  11363. p.place += rlen;
  11364. if (data[p.place++] !== 0x02) {
  11365. return false;
  11366. }
  11367. var slen = getLength(data, p);
  11368. if (data.length !== slen + p.place) {
  11369. return false;
  11370. }
  11371. var s = data.slice(p.place, slen + p.place);
  11372. if (r[0] === 0 && (r[1] & 0x80)) {
  11373. r = r.slice(1);
  11374. }
  11375. if (s[0] === 0 && (s[1] & 0x80)) {
  11376. s = s.slice(1);
  11377. }
  11378. this.r = new BN(r);
  11379. this.s = new BN(s);
  11380. this.recoveryParam = null;
  11381. return true;
  11382. };
  11383. function constructLength(arr, len) {
  11384. if (len < 0x80) {
  11385. arr.push(len);
  11386. return;
  11387. }
  11388. var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
  11389. arr.push(octets | 0x80);
  11390. while (--octets) {
  11391. arr.push((len >>> (octets << 3)) & 0xff);
  11392. }
  11393. arr.push(len);
  11394. }
  11395. Signature.prototype.toDER = function toDER(enc) {
  11396. var r = this.r.toArray();
  11397. var s = this.s.toArray();
  11398. // Pad values
  11399. if (r[0] & 0x80)
  11400. r = [ 0 ].concat(r);
  11401. // Pad values
  11402. if (s[0] & 0x80)
  11403. s = [ 0 ].concat(s);
  11404. r = rmPadding(r);
  11405. s = rmPadding(s);
  11406. while (!s[0] && !(s[1] & 0x80)) {
  11407. s = s.slice(1);
  11408. }
  11409. var arr = [ 0x02 ];
  11410. constructLength(arr, r.length);
  11411. arr = arr.concat(r);
  11412. arr.push(0x02);
  11413. constructLength(arr, s.length);
  11414. var backHalf = arr.concat(s);
  11415. var res = [ 0x30 ];
  11416. constructLength(res, backHalf.length);
  11417. res = res.concat(backHalf);
  11418. return utils.encode(res, enc);
  11419. };
  11420. },{"../../elliptic":74,"bn.js":25}],84:[function(require,module,exports){
  11421. 'use strict';
  11422. var hash = require('hash.js');
  11423. var elliptic = require('../../elliptic');
  11424. var utils = elliptic.utils;
  11425. var assert = utils.assert;
  11426. var parseBytes = utils.parseBytes;
  11427. var KeyPair = require('./key');
  11428. var Signature = require('./signature');
  11429. function EDDSA(curve) {
  11430. assert(curve === 'ed25519', 'only tested with ed25519 so far');
  11431. if (!(this instanceof EDDSA))
  11432. return new EDDSA(curve);
  11433. var curve = elliptic.curves[curve].curve;
  11434. this.curve = curve;
  11435. this.g = curve.g;
  11436. this.g.precompute(curve.n.bitLength() + 1);
  11437. this.pointClass = curve.point().constructor;
  11438. this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
  11439. this.hash = hash.sha512;
  11440. }
  11441. module.exports = EDDSA;
  11442. /**
  11443. * @param {Array|String} message - message bytes
  11444. * @param {Array|String|KeyPair} secret - secret bytes or a keypair
  11445. * @returns {Signature} - signature
  11446. */
  11447. EDDSA.prototype.sign = function sign(message, secret) {
  11448. message = parseBytes(message);
  11449. var key = this.keyFromSecret(secret);
  11450. var r = this.hashInt(key.messagePrefix(), message);
  11451. var R = this.g.mul(r);
  11452. var Rencoded = this.encodePoint(R);
  11453. var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
  11454. .mul(key.priv());
  11455. var S = r.add(s_).umod(this.curve.n);
  11456. return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
  11457. };
  11458. /**
  11459. * @param {Array} message - message bytes
  11460. * @param {Array|String|Signature} sig - sig bytes
  11461. * @param {Array|String|Point|KeyPair} pub - public key
  11462. * @returns {Boolean} - true if public key matches sig of message
  11463. */
  11464. EDDSA.prototype.verify = function verify(message, sig, pub) {
  11465. message = parseBytes(message);
  11466. sig = this.makeSignature(sig);
  11467. var key = this.keyFromPublic(pub);
  11468. var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
  11469. var SG = this.g.mul(sig.S());
  11470. var RplusAh = sig.R().add(key.pub().mul(h));
  11471. return RplusAh.eq(SG);
  11472. };
  11473. EDDSA.prototype.hashInt = function hashInt() {
  11474. var hash = this.hash();
  11475. for (var i = 0; i < arguments.length; i++)
  11476. hash.update(arguments[i]);
  11477. return utils.intFromLE(hash.digest()).umod(this.curve.n);
  11478. };
  11479. EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
  11480. return KeyPair.fromPublic(this, pub);
  11481. };
  11482. EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
  11483. return KeyPair.fromSecret(this, secret);
  11484. };
  11485. EDDSA.prototype.makeSignature = function makeSignature(sig) {
  11486. if (sig instanceof Signature)
  11487. return sig;
  11488. return new Signature(this, sig);
  11489. };
  11490. /**
  11491. * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
  11492. *
  11493. * EDDSA defines methods for encoding and decoding points and integers. These are
  11494. * helper convenience methods, that pass along to utility functions implied
  11495. * parameters.
  11496. *
  11497. */
  11498. EDDSA.prototype.encodePoint = function encodePoint(point) {
  11499. var enc = point.getY().toArray('le', this.encodingLength);
  11500. enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
  11501. return enc;
  11502. };
  11503. EDDSA.prototype.decodePoint = function decodePoint(bytes) {
  11504. bytes = utils.parseBytes(bytes);
  11505. var lastIx = bytes.length - 1;
  11506. var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
  11507. var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
  11508. var y = utils.intFromLE(normed);
  11509. return this.curve.pointFromY(y, xIsOdd);
  11510. };
  11511. EDDSA.prototype.encodeInt = function encodeInt(num) {
  11512. return num.toArray('le', this.encodingLength);
  11513. };
  11514. EDDSA.prototype.decodeInt = function decodeInt(bytes) {
  11515. return utils.intFromLE(bytes);
  11516. };
  11517. EDDSA.prototype.isPoint = function isPoint(val) {
  11518. return val instanceof this.pointClass;
  11519. };
  11520. },{"../../elliptic":74,"./key":85,"./signature":86,"hash.js":93}],85:[function(require,module,exports){
  11521. 'use strict';
  11522. var elliptic = require('../../elliptic');
  11523. var utils = elliptic.utils;
  11524. var assert = utils.assert;
  11525. var parseBytes = utils.parseBytes;
  11526. var cachedProperty = utils.cachedProperty;
  11527. /**
  11528. * @param {EDDSA} eddsa - instance
  11529. * @param {Object} params - public/private key parameters
  11530. *
  11531. * @param {Array<Byte>} [params.secret] - secret seed bytes
  11532. * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
  11533. * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
  11534. *
  11535. */
  11536. function KeyPair(eddsa, params) {
  11537. this.eddsa = eddsa;
  11538. this._secret = parseBytes(params.secret);
  11539. if (eddsa.isPoint(params.pub))
  11540. this._pub = params.pub;
  11541. else
  11542. this._pubBytes = parseBytes(params.pub);
  11543. }
  11544. KeyPair.fromPublic = function fromPublic(eddsa, pub) {
  11545. if (pub instanceof KeyPair)
  11546. return pub;
  11547. return new KeyPair(eddsa, { pub: pub });
  11548. };
  11549. KeyPair.fromSecret = function fromSecret(eddsa, secret) {
  11550. if (secret instanceof KeyPair)
  11551. return secret;
  11552. return new KeyPair(eddsa, { secret: secret });
  11553. };
  11554. KeyPair.prototype.secret = function secret() {
  11555. return this._secret;
  11556. };
  11557. cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
  11558. return this.eddsa.encodePoint(this.pub());
  11559. });
  11560. cachedProperty(KeyPair, 'pub', function pub() {
  11561. if (this._pubBytes)
  11562. return this.eddsa.decodePoint(this._pubBytes);
  11563. return this.eddsa.g.mul(this.priv());
  11564. });
  11565. cachedProperty(KeyPair, 'privBytes', function privBytes() {
  11566. var eddsa = this.eddsa;
  11567. var hash = this.hash();
  11568. var lastIx = eddsa.encodingLength - 1;
  11569. var a = hash.slice(0, eddsa.encodingLength);
  11570. a[0] &= 248;
  11571. a[lastIx] &= 127;
  11572. a[lastIx] |= 64;
  11573. return a;
  11574. });
  11575. cachedProperty(KeyPair, 'priv', function priv() {
  11576. return this.eddsa.decodeInt(this.privBytes());
  11577. });
  11578. cachedProperty(KeyPair, 'hash', function hash() {
  11579. return this.eddsa.hash().update(this.secret()).digest();
  11580. });
  11581. cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
  11582. return this.hash().slice(this.eddsa.encodingLength);
  11583. });
  11584. KeyPair.prototype.sign = function sign(message) {
  11585. assert(this._secret, 'KeyPair can only verify');
  11586. return this.eddsa.sign(message, this);
  11587. };
  11588. KeyPair.prototype.verify = function verify(message, sig) {
  11589. return this.eddsa.verify(message, sig, this);
  11590. };
  11591. KeyPair.prototype.getSecret = function getSecret(enc) {
  11592. assert(this._secret, 'KeyPair is public only');
  11593. return utils.encode(this.secret(), enc);
  11594. };
  11595. KeyPair.prototype.getPublic = function getPublic(enc) {
  11596. return utils.encode(this.pubBytes(), enc);
  11597. };
  11598. module.exports = KeyPair;
  11599. },{"../../elliptic":74}],86:[function(require,module,exports){
  11600. 'use strict';
  11601. var BN = require('bn.js');
  11602. var elliptic = require('../../elliptic');
  11603. var utils = elliptic.utils;
  11604. var assert = utils.assert;
  11605. var cachedProperty = utils.cachedProperty;
  11606. var parseBytes = utils.parseBytes;
  11607. /**
  11608. * @param {EDDSA} eddsa - eddsa instance
  11609. * @param {Array<Bytes>|Object} sig -
  11610. * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
  11611. * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
  11612. * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
  11613. * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
  11614. */
  11615. function Signature(eddsa, sig) {
  11616. this.eddsa = eddsa;
  11617. if (typeof sig !== 'object')
  11618. sig = parseBytes(sig);
  11619. if (Array.isArray(sig)) {
  11620. sig = {
  11621. R: sig.slice(0, eddsa.encodingLength),
  11622. S: sig.slice(eddsa.encodingLength)
  11623. };
  11624. }
  11625. assert(sig.R && sig.S, 'Signature without R or S');
  11626. if (eddsa.isPoint(sig.R))
  11627. this._R = sig.R;
  11628. if (sig.S instanceof BN)
  11629. this._S = sig.S;
  11630. this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
  11631. this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
  11632. }
  11633. cachedProperty(Signature, 'S', function S() {
  11634. return this.eddsa.decodeInt(this.Sencoded());
  11635. });
  11636. cachedProperty(Signature, 'R', function R() {
  11637. return this.eddsa.decodePoint(this.Rencoded());
  11638. });
  11639. cachedProperty(Signature, 'Rencoded', function Rencoded() {
  11640. return this.eddsa.encodePoint(this.R());
  11641. });
  11642. cachedProperty(Signature, 'Sencoded', function Sencoded() {
  11643. return this.eddsa.encodeInt(this.S());
  11644. });
  11645. Signature.prototype.toBytes = function toBytes() {
  11646. return this.Rencoded().concat(this.Sencoded());
  11647. };
  11648. Signature.prototype.toHex = function toHex() {
  11649. return utils.encode(this.toBytes(), 'hex').toUpperCase();
  11650. };
  11651. module.exports = Signature;
  11652. },{"../../elliptic":74,"bn.js":25}],87:[function(require,module,exports){
  11653. module.exports = {
  11654. doubles: {
  11655. step: 4,
  11656. points: [
  11657. [
  11658. 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
  11659. 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
  11660. ],
  11661. [
  11662. '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
  11663. '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
  11664. ],
  11665. [
  11666. '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
  11667. 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
  11668. ],
  11669. [
  11670. '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
  11671. '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
  11672. ],
  11673. [
  11674. '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
  11675. '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
  11676. ],
  11677. [
  11678. '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
  11679. '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
  11680. ],
  11681. [
  11682. 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
  11683. '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
  11684. ],
  11685. [
  11686. '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
  11687. 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
  11688. ],
  11689. [
  11690. 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
  11691. '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
  11692. ],
  11693. [
  11694. 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
  11695. 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
  11696. ],
  11697. [
  11698. 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
  11699. '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
  11700. ],
  11701. [
  11702. '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
  11703. '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
  11704. ],
  11705. [
  11706. '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
  11707. '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
  11708. ],
  11709. [
  11710. '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
  11711. '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
  11712. ],
  11713. [
  11714. '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
  11715. '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
  11716. ],
  11717. [
  11718. '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
  11719. '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
  11720. ],
  11721. [
  11722. '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
  11723. '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
  11724. ],
  11725. [
  11726. '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
  11727. '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
  11728. ],
  11729. [
  11730. '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
  11731. 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
  11732. ],
  11733. [
  11734. 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
  11735. '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
  11736. ],
  11737. [
  11738. 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
  11739. '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
  11740. ],
  11741. [
  11742. '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
  11743. '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
  11744. ],
  11745. [
  11746. '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
  11747. '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
  11748. ],
  11749. [
  11750. 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
  11751. '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
  11752. ],
  11753. [
  11754. '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
  11755. 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
  11756. ],
  11757. [
  11758. 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
  11759. '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
  11760. ],
  11761. [
  11762. 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
  11763. 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
  11764. ],
  11765. [
  11766. 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
  11767. '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
  11768. ],
  11769. [
  11770. 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
  11771. 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
  11772. ],
  11773. [
  11774. 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
  11775. '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
  11776. ],
  11777. [
  11778. '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
  11779. 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
  11780. ],
  11781. [
  11782. '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
  11783. '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
  11784. ],
  11785. [
  11786. 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
  11787. '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
  11788. ],
  11789. [
  11790. '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
  11791. 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
  11792. ],
  11793. [
  11794. 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
  11795. '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
  11796. ],
  11797. [
  11798. 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
  11799. '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
  11800. ],
  11801. [
  11802. 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
  11803. 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
  11804. ],
  11805. [
  11806. '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
  11807. '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
  11808. ],
  11809. [
  11810. '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
  11811. '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
  11812. ],
  11813. [
  11814. '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
  11815. 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
  11816. ],
  11817. [
  11818. '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
  11819. '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
  11820. ],
  11821. [
  11822. 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
  11823. '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
  11824. ],
  11825. [
  11826. '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
  11827. '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
  11828. ],
  11829. [
  11830. '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
  11831. 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
  11832. ],
  11833. [
  11834. '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
  11835. '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
  11836. ],
  11837. [
  11838. 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
  11839. '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
  11840. ],
  11841. [
  11842. '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
  11843. 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
  11844. ],
  11845. [
  11846. 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
  11847. 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
  11848. ],
  11849. [
  11850. 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
  11851. '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
  11852. ],
  11853. [
  11854. '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
  11855. 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
  11856. ],
  11857. [
  11858. '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
  11859. 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
  11860. ],
  11861. [
  11862. 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
  11863. '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
  11864. ],
  11865. [
  11866. 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
  11867. '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
  11868. ],
  11869. [
  11870. 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
  11871. '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
  11872. ],
  11873. [
  11874. '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
  11875. 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
  11876. ],
  11877. [
  11878. '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
  11879. '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
  11880. ],
  11881. [
  11882. 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
  11883. 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
  11884. ],
  11885. [
  11886. '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
  11887. 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
  11888. ],
  11889. [
  11890. '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
  11891. '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
  11892. ],
  11893. [
  11894. '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
  11895. '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
  11896. ],
  11897. [
  11898. 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
  11899. 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
  11900. ],
  11901. [
  11902. '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
  11903. '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
  11904. ],
  11905. [
  11906. '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
  11907. '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
  11908. ],
  11909. [
  11910. 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
  11911. '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
  11912. ],
  11913. [
  11914. 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
  11915. 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
  11916. ]
  11917. ]
  11918. },
  11919. naf: {
  11920. wnd: 7,
  11921. points: [
  11922. [
  11923. 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
  11924. '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
  11925. ],
  11926. [
  11927. '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
  11928. 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
  11929. ],
  11930. [
  11931. '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
  11932. '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
  11933. ],
  11934. [
  11935. 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
  11936. 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
  11937. ],
  11938. [
  11939. '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
  11940. 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
  11941. ],
  11942. [
  11943. 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
  11944. 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
  11945. ],
  11946. [
  11947. 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
  11948. '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
  11949. ],
  11950. [
  11951. 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
  11952. '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
  11953. ],
  11954. [
  11955. '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
  11956. '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
  11957. ],
  11958. [
  11959. '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
  11960. '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
  11961. ],
  11962. [
  11963. '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
  11964. '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
  11965. ],
  11966. [
  11967. '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
  11968. '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
  11969. ],
  11970. [
  11971. 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
  11972. 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
  11973. ],
  11974. [
  11975. 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
  11976. '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
  11977. ],
  11978. [
  11979. '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
  11980. 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
  11981. ],
  11982. [
  11983. '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
  11984. 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
  11985. ],
  11986. [
  11987. '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
  11988. '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
  11989. ],
  11990. [
  11991. '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
  11992. '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
  11993. ],
  11994. [
  11995. '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
  11996. '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
  11997. ],
  11998. [
  11999. '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
  12000. 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
  12001. ],
  12002. [
  12003. 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
  12004. 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
  12005. ],
  12006. [
  12007. '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
  12008. '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
  12009. ],
  12010. [
  12011. '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
  12012. '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
  12013. ],
  12014. [
  12015. 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
  12016. 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
  12017. ],
  12018. [
  12019. '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
  12020. '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
  12021. ],
  12022. [
  12023. 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
  12024. 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
  12025. ],
  12026. [
  12027. 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
  12028. 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
  12029. ],
  12030. [
  12031. '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
  12032. '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
  12033. ],
  12034. [
  12035. '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
  12036. '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
  12037. ],
  12038. [
  12039. '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
  12040. '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
  12041. ],
  12042. [
  12043. 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
  12044. '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
  12045. ],
  12046. [
  12047. '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
  12048. '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
  12049. ],
  12050. [
  12051. 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
  12052. '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
  12053. ],
  12054. [
  12055. '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
  12056. 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
  12057. ],
  12058. [
  12059. '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
  12060. 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
  12061. ],
  12062. [
  12063. 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
  12064. 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
  12065. ],
  12066. [
  12067. '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
  12068. '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
  12069. ],
  12070. [
  12071. '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
  12072. 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
  12073. ],
  12074. [
  12075. 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
  12076. 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
  12077. ],
  12078. [
  12079. '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
  12080. '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
  12081. ],
  12082. [
  12083. '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
  12084. 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
  12085. ],
  12086. [
  12087. '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
  12088. '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
  12089. ],
  12090. [
  12091. '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
  12092. 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
  12093. ],
  12094. [
  12095. 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
  12096. '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
  12097. ],
  12098. [
  12099. '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
  12100. '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
  12101. ],
  12102. [
  12103. '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
  12104. 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
  12105. ],
  12106. [
  12107. '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
  12108. 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
  12109. ],
  12110. [
  12111. 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
  12112. 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
  12113. ],
  12114. [
  12115. 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
  12116. 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
  12117. ],
  12118. [
  12119. '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
  12120. '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
  12121. ],
  12122. [
  12123. '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
  12124. '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
  12125. ],
  12126. [
  12127. 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
  12128. '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
  12129. ],
  12130. [
  12131. 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
  12132. 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
  12133. ],
  12134. [
  12135. '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
  12136. '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
  12137. ],
  12138. [
  12139. '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
  12140. '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
  12141. ],
  12142. [
  12143. 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
  12144. '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
  12145. ],
  12146. [
  12147. '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
  12148. '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
  12149. ],
  12150. [
  12151. 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
  12152. 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
  12153. ],
  12154. [
  12155. '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
  12156. 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
  12157. ],
  12158. [
  12159. '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
  12160. '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
  12161. ],
  12162. [
  12163. 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
  12164. '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
  12165. ],
  12166. [
  12167. 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
  12168. '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
  12169. ],
  12170. [
  12171. '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
  12172. '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
  12173. ],
  12174. [
  12175. '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
  12176. '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
  12177. ],
  12178. [
  12179. '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
  12180. 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
  12181. ],
  12182. [
  12183. '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
  12184. 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
  12185. ],
  12186. [
  12187. '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
  12188. '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
  12189. ],
  12190. [
  12191. '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
  12192. '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
  12193. ],
  12194. [
  12195. '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
  12196. '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
  12197. ],
  12198. [
  12199. '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
  12200. 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
  12201. ],
  12202. [
  12203. 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
  12204. 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
  12205. ],
  12206. [
  12207. '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
  12208. 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
  12209. ],
  12210. [
  12211. 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
  12212. '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
  12213. ],
  12214. [
  12215. 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
  12216. '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
  12217. ],
  12218. [
  12219. 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
  12220. '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
  12221. ],
  12222. [
  12223. 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
  12224. '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
  12225. ],
  12226. [
  12227. '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
  12228. 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
  12229. ],
  12230. [
  12231. '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
  12232. '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
  12233. ],
  12234. [
  12235. '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
  12236. 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
  12237. ],
  12238. [
  12239. 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
  12240. 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
  12241. ],
  12242. [
  12243. 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
  12244. '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
  12245. ],
  12246. [
  12247. 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
  12248. 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
  12249. ],
  12250. [
  12251. 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
  12252. '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
  12253. ],
  12254. [
  12255. '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
  12256. '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
  12257. ],
  12258. [
  12259. 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
  12260. '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
  12261. ],
  12262. [
  12263. 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
  12264. '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
  12265. ],
  12266. [
  12267. '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
  12268. '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
  12269. ],
  12270. [
  12271. '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
  12272. 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
  12273. ],
  12274. [
  12275. 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
  12276. '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
  12277. ],
  12278. [
  12279. 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
  12280. '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
  12281. ],
  12282. [
  12283. 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
  12284. '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
  12285. ],
  12286. [
  12287. '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
  12288. '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
  12289. ],
  12290. [
  12291. 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
  12292. 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
  12293. ],
  12294. [
  12295. '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
  12296. 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
  12297. ],
  12298. [
  12299. 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
  12300. 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
  12301. ],
  12302. [
  12303. 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
  12304. '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
  12305. ],
  12306. [
  12307. '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
  12308. 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
  12309. ],
  12310. [
  12311. 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
  12312. '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
  12313. ],
  12314. [
  12315. 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
  12316. '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
  12317. ],
  12318. [
  12319. 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
  12320. '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
  12321. ],
  12322. [
  12323. '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
  12324. 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
  12325. ],
  12326. [
  12327. '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
  12328. 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
  12329. ],
  12330. [
  12331. 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
  12332. '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
  12333. ],
  12334. [
  12335. '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
  12336. 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
  12337. ],
  12338. [
  12339. '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
  12340. '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
  12341. ],
  12342. [
  12343. '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
  12344. 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
  12345. ],
  12346. [
  12347. 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
  12348. 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
  12349. ],
  12350. [
  12351. '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
  12352. 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
  12353. ],
  12354. [
  12355. '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
  12356. '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
  12357. ],
  12358. [
  12359. '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
  12360. 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
  12361. ],
  12362. [
  12363. '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
  12364. '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
  12365. ],
  12366. [
  12367. 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
  12368. 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
  12369. ],
  12370. [
  12371. '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
  12372. '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
  12373. ],
  12374. [
  12375. 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
  12376. '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
  12377. ],
  12378. [
  12379. '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
  12380. '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
  12381. ],
  12382. [
  12383. 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
  12384. 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
  12385. ],
  12386. [
  12387. 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
  12388. '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
  12389. ],
  12390. [
  12391. 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
  12392. 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
  12393. ],
  12394. [
  12395. '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
  12396. 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
  12397. ],
  12398. [
  12399. '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
  12400. '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
  12401. ],
  12402. [
  12403. '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
  12404. 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
  12405. ],
  12406. [
  12407. '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
  12408. '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
  12409. ],
  12410. [
  12411. '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
  12412. '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
  12413. ],
  12414. [
  12415. '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
  12416. 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
  12417. ],
  12418. [
  12419. '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
  12420. '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
  12421. ],
  12422. [
  12423. '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
  12424. '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
  12425. ],
  12426. [
  12427. '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
  12428. '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
  12429. ]
  12430. ]
  12431. }
  12432. };
  12433. },{}],88:[function(require,module,exports){
  12434. 'use strict';
  12435. var utils = exports;
  12436. var BN = require('bn.js');
  12437. var minAssert = require('minimalistic-assert');
  12438. var minUtils = require('minimalistic-crypto-utils');
  12439. utils.assert = minAssert;
  12440. utils.toArray = minUtils.toArray;
  12441. utils.zero2 = minUtils.zero2;
  12442. utils.toHex = minUtils.toHex;
  12443. utils.encode = minUtils.encode;
  12444. // Represent num in a w-NAF form
  12445. function getNAF(num, w) {
  12446. var naf = [];
  12447. var ws = 1 << (w + 1);
  12448. var k = num.clone();
  12449. while (k.cmpn(1) >= 0) {
  12450. var z;
  12451. if (k.isOdd()) {
  12452. var mod = k.andln(ws - 1);
  12453. if (mod > (ws >> 1) - 1)
  12454. z = (ws >> 1) - mod;
  12455. else
  12456. z = mod;
  12457. k.isubn(z);
  12458. } else {
  12459. z = 0;
  12460. }
  12461. naf.push(z);
  12462. // Optimization, shift by word if possible
  12463. var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
  12464. for (var i = 1; i < shift; i++)
  12465. naf.push(0);
  12466. k.iushrn(shift);
  12467. }
  12468. return naf;
  12469. }
  12470. utils.getNAF = getNAF;
  12471. // Represent k1, k2 in a Joint Sparse Form
  12472. function getJSF(k1, k2) {
  12473. var jsf = [
  12474. [],
  12475. []
  12476. ];
  12477. k1 = k1.clone();
  12478. k2 = k2.clone();
  12479. var d1 = 0;
  12480. var d2 = 0;
  12481. while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
  12482. // First phase
  12483. var m14 = (k1.andln(3) + d1) & 3;
  12484. var m24 = (k2.andln(3) + d2) & 3;
  12485. if (m14 === 3)
  12486. m14 = -1;
  12487. if (m24 === 3)
  12488. m24 = -1;
  12489. var u1;
  12490. if ((m14 & 1) === 0) {
  12491. u1 = 0;
  12492. } else {
  12493. var m8 = (k1.andln(7) + d1) & 7;
  12494. if ((m8 === 3 || m8 === 5) && m24 === 2)
  12495. u1 = -m14;
  12496. else
  12497. u1 = m14;
  12498. }
  12499. jsf[0].push(u1);
  12500. var u2;
  12501. if ((m24 & 1) === 0) {
  12502. u2 = 0;
  12503. } else {
  12504. var m8 = (k2.andln(7) + d2) & 7;
  12505. if ((m8 === 3 || m8 === 5) && m14 === 2)
  12506. u2 = -m24;
  12507. else
  12508. u2 = m24;
  12509. }
  12510. jsf[1].push(u2);
  12511. // Second phase
  12512. if (2 * d1 === u1 + 1)
  12513. d1 = 1 - d1;
  12514. if (2 * d2 === u2 + 1)
  12515. d2 = 1 - d2;
  12516. k1.iushrn(1);
  12517. k2.iushrn(1);
  12518. }
  12519. return jsf;
  12520. }
  12521. utils.getJSF = getJSF;
  12522. function cachedProperty(obj, name, computer) {
  12523. var key = '_' + name;
  12524. obj.prototype[name] = function cachedProperty() {
  12525. return this[key] !== undefined ? this[key] :
  12526. this[key] = computer.call(this);
  12527. };
  12528. }
  12529. utils.cachedProperty = cachedProperty;
  12530. function parseBytes(bytes) {
  12531. return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
  12532. bytes;
  12533. }
  12534. utils.parseBytes = parseBytes;
  12535. function intFromLE(bytes) {
  12536. return new BN(bytes, 'hex', 'le');
  12537. }
  12538. utils.intFromLE = intFromLE;
  12539. },{"bn.js":25,"minimalistic-assert":112,"minimalistic-crypto-utils":113}],89:[function(require,module,exports){
  12540. module.exports={
  12541. "_from": "elliptic@^6.0.0",
  12542. "_id": "elliptic@6.4.0",
  12543. "_inBundle": false,
  12544. "_integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
  12545. "_location": "/browserify/elliptic",
  12546. "_phantomChildren": {},
  12547. "_requested": {
  12548. "type": "range",
  12549. "registry": true,
  12550. "raw": "elliptic@^6.0.0",
  12551. "name": "elliptic",
  12552. "escapedName": "elliptic",
  12553. "rawSpec": "^6.0.0",
  12554. "saveSpec": null,
  12555. "fetchSpec": "^6.0.0"
  12556. },
  12557. "_requiredBy": [
  12558. "/browserify/browserify-sign",
  12559. "/browserify/create-ecdh"
  12560. ],
  12561. "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
  12562. "_shasum": "cac9af8762c85836187003c8dfe193e5e2eae5df",
  12563. "_spec": "elliptic@^6.0.0",
  12564. "_where": "/usr/local/lib/node_modules/browserify/node_modules/browserify-sign",
  12565. "author": {
  12566. "name": "Fedor Indutny",
  12567. "email": "fedor@indutny.com"
  12568. },
  12569. "bugs": {
  12570. "url": "https://github.com/indutny/elliptic/issues"
  12571. },
  12572. "bundleDependencies": false,
  12573. "dependencies": {
  12574. "bn.js": "^4.4.0",
  12575. "brorand": "^1.0.1",
  12576. "hash.js": "^1.0.0",
  12577. "hmac-drbg": "^1.0.0",
  12578. "inherits": "^2.0.1",
  12579. "minimalistic-assert": "^1.0.0",
  12580. "minimalistic-crypto-utils": "^1.0.0"
  12581. },
  12582. "deprecated": false,
  12583. "description": "EC cryptography",
  12584. "devDependencies": {
  12585. "brfs": "^1.4.3",
  12586. "coveralls": "^2.11.3",
  12587. "grunt": "^0.4.5",
  12588. "grunt-browserify": "^5.0.0",
  12589. "grunt-cli": "^1.2.0",
  12590. "grunt-contrib-connect": "^1.0.0",
  12591. "grunt-contrib-copy": "^1.0.0",
  12592. "grunt-contrib-uglify": "^1.0.1",
  12593. "grunt-mocha-istanbul": "^3.0.1",
  12594. "grunt-saucelabs": "^8.6.2",
  12595. "istanbul": "^0.4.2",
  12596. "jscs": "^2.9.0",
  12597. "jshint": "^2.6.0",
  12598. "mocha": "^2.1.0"
  12599. },
  12600. "files": [
  12601. "lib"
  12602. ],
  12603. "homepage": "https://github.com/indutny/elliptic",
  12604. "keywords": [
  12605. "EC",
  12606. "Elliptic",
  12607. "curve",
  12608. "Cryptography"
  12609. ],
  12610. "license": "MIT",
  12611. "main": "lib/elliptic.js",
  12612. "name": "elliptic",
  12613. "repository": {
  12614. "type": "git",
  12615. "url": "git+ssh://git@github.com/indutny/elliptic.git"
  12616. },
  12617. "scripts": {
  12618. "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
  12619. "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
  12620. "lint": "npm run jscs && npm run jshint",
  12621. "test": "npm run lint && npm run unit",
  12622. "unit": "istanbul test _mocha --reporter=spec test/index.js",
  12623. "version": "grunt dist && git add dist/"
  12624. },
  12625. "version": "6.4.0"
  12626. }
  12627. },{}],90:[function(require,module,exports){
  12628. // Copyright Joyent, Inc. and other Node contributors.
  12629. //
  12630. // Permission is hereby granted, free of charge, to any person obtaining a
  12631. // copy of this software and associated documentation files (the
  12632. // "Software"), to deal in the Software without restriction, including
  12633. // without limitation the rights to use, copy, modify, merge, publish,
  12634. // distribute, sublicense, and/or sell copies of the Software, and to permit
  12635. // persons to whom the Software is furnished to do so, subject to the
  12636. // following conditions:
  12637. //
  12638. // The above copyright notice and this permission notice shall be included
  12639. // in all copies or substantial portions of the Software.
  12640. //
  12641. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  12642. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  12643. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  12644. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  12645. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  12646. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  12647. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  12648. function EventEmitter() {
  12649. this._events = this._events || {};
  12650. this._maxListeners = this._maxListeners || undefined;
  12651. }
  12652. module.exports = EventEmitter;
  12653. // Backwards-compat with node 0.10.x
  12654. EventEmitter.EventEmitter = EventEmitter;
  12655. EventEmitter.prototype._events = undefined;
  12656. EventEmitter.prototype._maxListeners = undefined;
  12657. // By default EventEmitters will print a warning if more than 10 listeners are
  12658. // added to it. This is a useful default which helps finding memory leaks.
  12659. EventEmitter.defaultMaxListeners = 10;
  12660. // Obviously not all Emitters should be limited to 10. This function allows
  12661. // that to be increased. Set to zero for unlimited.
  12662. EventEmitter.prototype.setMaxListeners = function(n) {
  12663. if (!isNumber(n) || n < 0 || isNaN(n))
  12664. throw TypeError('n must be a positive number');
  12665. this._maxListeners = n;
  12666. return this;
  12667. };
  12668. EventEmitter.prototype.emit = function(type) {
  12669. var er, handler, len, args, i, listeners;
  12670. if (!this._events)
  12671. this._events = {};
  12672. // If there is no 'error' event listener then throw.
  12673. if (type === 'error') {
  12674. if (!this._events.error ||
  12675. (isObject(this._events.error) && !this._events.error.length)) {
  12676. er = arguments[1];
  12677. if (er instanceof Error) {
  12678. throw er; // Unhandled 'error' event
  12679. } else {
  12680. // At least give some kind of context to the user
  12681. var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
  12682. err.context = er;
  12683. throw err;
  12684. }
  12685. }
  12686. }
  12687. handler = this._events[type];
  12688. if (isUndefined(handler))
  12689. return false;
  12690. if (isFunction(handler)) {
  12691. switch (arguments.length) {
  12692. // fast cases
  12693. case 1:
  12694. handler.call(this);
  12695. break;
  12696. case 2:
  12697. handler.call(this, arguments[1]);
  12698. break;
  12699. case 3:
  12700. handler.call(this, arguments[1], arguments[2]);
  12701. break;
  12702. // slower
  12703. default:
  12704. args = Array.prototype.slice.call(arguments, 1);
  12705. handler.apply(this, args);
  12706. }
  12707. } else if (isObject(handler)) {
  12708. args = Array.prototype.slice.call(arguments, 1);
  12709. listeners = handler.slice();
  12710. len = listeners.length;
  12711. for (i = 0; i < len; i++)
  12712. listeners[i].apply(this, args);
  12713. }
  12714. return true;
  12715. };
  12716. EventEmitter.prototype.addListener = function(type, listener) {
  12717. var m;
  12718. if (!isFunction(listener))
  12719. throw TypeError('listener must be a function');
  12720. if (!this._events)
  12721. this._events = {};
  12722. // To avoid recursion in the case that type === "newListener"! Before
  12723. // adding it to the listeners, first emit "newListener".
  12724. if (this._events.newListener)
  12725. this.emit('newListener', type,
  12726. isFunction(listener.listener) ?
  12727. listener.listener : listener);
  12728. if (!this._events[type])
  12729. // Optimize the case of one listener. Don't need the extra array object.
  12730. this._events[type] = listener;
  12731. else if (isObject(this._events[type]))
  12732. // If we've already got an array, just append.
  12733. this._events[type].push(listener);
  12734. else
  12735. // Adding the second element, need to change to array.
  12736. this._events[type] = [this._events[type], listener];
  12737. // Check for listener leak
  12738. if (isObject(this._events[type]) && !this._events[type].warned) {
  12739. if (!isUndefined(this._maxListeners)) {
  12740. m = this._maxListeners;
  12741. } else {
  12742. m = EventEmitter.defaultMaxListeners;
  12743. }
  12744. if (m && m > 0 && this._events[type].length > m) {
  12745. this._events[type].warned = true;
  12746. console.error('(node) warning: possible EventEmitter memory ' +
  12747. 'leak detected. %d listeners added. ' +
  12748. 'Use emitter.setMaxListeners() to increase limit.',
  12749. this._events[type].length);
  12750. if (typeof console.trace === 'function') {
  12751. // not supported in IE 10
  12752. console.trace();
  12753. }
  12754. }
  12755. }
  12756. return this;
  12757. };
  12758. EventEmitter.prototype.on = EventEmitter.prototype.addListener;
  12759. EventEmitter.prototype.once = function(type, listener) {
  12760. if (!isFunction(listener))
  12761. throw TypeError('listener must be a function');
  12762. var fired = false;
  12763. function g() {
  12764. this.removeListener(type, g);
  12765. if (!fired) {
  12766. fired = true;
  12767. listener.apply(this, arguments);
  12768. }
  12769. }
  12770. g.listener = listener;
  12771. this.on(type, g);
  12772. return this;
  12773. };
  12774. // emits a 'removeListener' event iff the listener was removed
  12775. EventEmitter.prototype.removeListener = function(type, listener) {
  12776. var list, position, length, i;
  12777. if (!isFunction(listener))
  12778. throw TypeError('listener must be a function');
  12779. if (!this._events || !this._events[type])
  12780. return this;
  12781. list = this._events[type];
  12782. length = list.length;
  12783. position = -1;
  12784. if (list === listener ||
  12785. (isFunction(list.listener) && list.listener === listener)) {
  12786. delete this._events[type];
  12787. if (this._events.removeListener)
  12788. this.emit('removeListener', type, listener);
  12789. } else if (isObject(list)) {
  12790. for (i = length; i-- > 0;) {
  12791. if (list[i] === listener ||
  12792. (list[i].listener && list[i].listener === listener)) {
  12793. position = i;
  12794. break;
  12795. }
  12796. }
  12797. if (position < 0)
  12798. return this;
  12799. if (list.length === 1) {
  12800. list.length = 0;
  12801. delete this._events[type];
  12802. } else {
  12803. list.splice(position, 1);
  12804. }
  12805. if (this._events.removeListener)
  12806. this.emit('removeListener', type, listener);
  12807. }
  12808. return this;
  12809. };
  12810. EventEmitter.prototype.removeAllListeners = function(type) {
  12811. var key, listeners;
  12812. if (!this._events)
  12813. return this;
  12814. // not listening for removeListener, no need to emit
  12815. if (!this._events.removeListener) {
  12816. if (arguments.length === 0)
  12817. this._events = {};
  12818. else if (this._events[type])
  12819. delete this._events[type];
  12820. return this;
  12821. }
  12822. // emit removeListener for all listeners on all events
  12823. if (arguments.length === 0) {
  12824. for (key in this._events) {
  12825. if (key === 'removeListener') continue;
  12826. this.removeAllListeners(key);
  12827. }
  12828. this.removeAllListeners('removeListener');
  12829. this._events = {};
  12830. return this;
  12831. }
  12832. listeners = this._events[type];
  12833. if (isFunction(listeners)) {
  12834. this.removeListener(type, listeners);
  12835. } else if (listeners) {
  12836. // LIFO order
  12837. while (listeners.length)
  12838. this.removeListener(type, listeners[listeners.length - 1]);
  12839. }
  12840. delete this._events[type];
  12841. return this;
  12842. };
  12843. EventEmitter.prototype.listeners = function(type) {
  12844. var ret;
  12845. if (!this._events || !this._events[type])
  12846. ret = [];
  12847. else if (isFunction(this._events[type]))
  12848. ret = [this._events[type]];
  12849. else
  12850. ret = this._events[type].slice();
  12851. return ret;
  12852. };
  12853. EventEmitter.prototype.listenerCount = function(type) {
  12854. if (this._events) {
  12855. var evlistener = this._events[type];
  12856. if (isFunction(evlistener))
  12857. return 1;
  12858. else if (evlistener)
  12859. return evlistener.length;
  12860. }
  12861. return 0;
  12862. };
  12863. EventEmitter.listenerCount = function(emitter, type) {
  12864. return emitter.listenerCount(type);
  12865. };
  12866. function isFunction(arg) {
  12867. return typeof arg === 'function';
  12868. }
  12869. function isNumber(arg) {
  12870. return typeof arg === 'number';
  12871. }
  12872. function isObject(arg) {
  12873. return typeof arg === 'object' && arg !== null;
  12874. }
  12875. function isUndefined(arg) {
  12876. return arg === void 0;
  12877. }
  12878. },{}],91:[function(require,module,exports){
  12879. (function (Buffer){
  12880. var md5 = require('create-hash/md5')
  12881. module.exports = EVP_BytesToKey
  12882. function EVP_BytesToKey (password, salt, keyLen, ivLen) {
  12883. if (!Buffer.isBuffer(password)) {
  12884. password = new Buffer(password, 'binary')
  12885. }
  12886. if (salt && !Buffer.isBuffer(salt)) {
  12887. salt = new Buffer(salt, 'binary')
  12888. }
  12889. keyLen = keyLen / 8
  12890. ivLen = ivLen || 0
  12891. var ki = 0
  12892. var ii = 0
  12893. var key = new Buffer(keyLen)
  12894. var iv = new Buffer(ivLen)
  12895. var addmd = 0
  12896. var md_buf
  12897. var i
  12898. var bufs = []
  12899. while (true) {
  12900. if (addmd++ > 0) {
  12901. bufs.push(md_buf)
  12902. }
  12903. bufs.push(password)
  12904. if (salt) {
  12905. bufs.push(salt)
  12906. }
  12907. md_buf = md5(Buffer.concat(bufs))
  12908. bufs = []
  12909. i = 0
  12910. if (keyLen > 0) {
  12911. while (true) {
  12912. if (keyLen === 0) {
  12913. break
  12914. }
  12915. if (i === md_buf.length) {
  12916. break
  12917. }
  12918. key[ki++] = md_buf[i]
  12919. keyLen--
  12920. i++
  12921. }
  12922. }
  12923. if (ivLen > 0 && i !== md_buf.length) {
  12924. while (true) {
  12925. if (ivLen === 0) {
  12926. break
  12927. }
  12928. if (i === md_buf.length) {
  12929. break
  12930. }
  12931. iv[ii++] = md_buf[i]
  12932. ivLen--
  12933. i++
  12934. }
  12935. }
  12936. if (keyLen === 0 && ivLen === 0) {
  12937. break
  12938. }
  12939. }
  12940. for (i = 0; i < md_buf.length; i++) {
  12941. md_buf[i] = 0
  12942. }
  12943. return {
  12944. key: key,
  12945. iv: iv
  12946. }
  12947. }
  12948. }).call(this,require("buffer").Buffer)
  12949. },{"buffer":54,"create-hash/md5":60}],92:[function(require,module,exports){
  12950. (function (Buffer){
  12951. 'use strict'
  12952. var Transform = require('stream').Transform
  12953. var inherits = require('inherits')
  12954. function HashBase (blockSize) {
  12955. Transform.call(this)
  12956. this._block = new Buffer(blockSize)
  12957. this._blockSize = blockSize
  12958. this._blockOffset = 0
  12959. this._length = [0, 0, 0, 0]
  12960. this._finalized = false
  12961. }
  12962. inherits(HashBase, Transform)
  12963. HashBase.prototype._transform = function (chunk, encoding, callback) {
  12964. var error = null
  12965. try {
  12966. if (encoding !== 'buffer') chunk = new Buffer(chunk, encoding)
  12967. this.update(chunk)
  12968. } catch (err) {
  12969. error = err
  12970. }
  12971. callback(error)
  12972. }
  12973. HashBase.prototype._flush = function (callback) {
  12974. var error = null
  12975. try {
  12976. this.push(this._digest())
  12977. } catch (err) {
  12978. error = err
  12979. }
  12980. callback(error)
  12981. }
  12982. HashBase.prototype.update = function (data, encoding) {
  12983. if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
  12984. if (this._finalized) throw new Error('Digest already called')
  12985. if (!Buffer.isBuffer(data)) data = new Buffer(data, encoding || 'binary')
  12986. // consume data
  12987. var block = this._block
  12988. var offset = 0
  12989. while (this._blockOffset + data.length - offset >= this._blockSize) {
  12990. for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]
  12991. this._update()
  12992. this._blockOffset = 0
  12993. }
  12994. while (offset < data.length) block[this._blockOffset++] = data[offset++]
  12995. // update length
  12996. for (var j = 0, carry = data.length * 8; carry > 0; ++j) {
  12997. this._length[j] += carry
  12998. carry = (this._length[j] / 0x0100000000) | 0
  12999. if (carry > 0) this._length[j] -= 0x0100000000 * carry
  13000. }
  13001. return this
  13002. }
  13003. HashBase.prototype._update = function (data) {
  13004. throw new Error('_update is not implemented')
  13005. }
  13006. HashBase.prototype.digest = function (encoding) {
  13007. if (this._finalized) throw new Error('Digest already called')
  13008. this._finalized = true
  13009. var digest = this._digest()
  13010. if (encoding !== undefined) digest = digest.toString(encoding)
  13011. return digest
  13012. }
  13013. HashBase.prototype._digest = function () {
  13014. throw new Error('_digest is not implemented')
  13015. }
  13016. module.exports = HashBase
  13017. }).call(this,require("buffer").Buffer)
  13018. },{"buffer":54,"inherits":108,"stream":157}],93:[function(require,module,exports){
  13019. var hash = exports;
  13020. hash.utils = require('./hash/utils');
  13021. hash.common = require('./hash/common');
  13022. hash.sha = require('./hash/sha');
  13023. hash.ripemd = require('./hash/ripemd');
  13024. hash.hmac = require('./hash/hmac');
  13025. // Proxy hash functions to the main object
  13026. hash.sha1 = hash.sha.sha1;
  13027. hash.sha256 = hash.sha.sha256;
  13028. hash.sha224 = hash.sha.sha224;
  13029. hash.sha384 = hash.sha.sha384;
  13030. hash.sha512 = hash.sha.sha512;
  13031. hash.ripemd160 = hash.ripemd.ripemd160;
  13032. },{"./hash/common":94,"./hash/hmac":95,"./hash/ripemd":96,"./hash/sha":97,"./hash/utils":104}],94:[function(require,module,exports){
  13033. 'use strict';
  13034. var utils = require('./utils');
  13035. var assert = require('minimalistic-assert');
  13036. function BlockHash() {
  13037. this.pending = null;
  13038. this.pendingTotal = 0;
  13039. this.blockSize = this.constructor.blockSize;
  13040. this.outSize = this.constructor.outSize;
  13041. this.hmacStrength = this.constructor.hmacStrength;
  13042. this.padLength = this.constructor.padLength / 8;
  13043. this.endian = 'big';
  13044. this._delta8 = this.blockSize / 8;
  13045. this._delta32 = this.blockSize / 32;
  13046. }
  13047. exports.BlockHash = BlockHash;
  13048. BlockHash.prototype.update = function update(msg, enc) {
  13049. // Convert message to array, pad it, and join into 32bit blocks
  13050. msg = utils.toArray(msg, enc);
  13051. if (!this.pending)
  13052. this.pending = msg;
  13053. else
  13054. this.pending = this.pending.concat(msg);
  13055. this.pendingTotal += msg.length;
  13056. // Enough data, try updating
  13057. if (this.pending.length >= this._delta8) {
  13058. msg = this.pending;
  13059. // Process pending data in blocks
  13060. var r = msg.length % this._delta8;
  13061. this.pending = msg.slice(msg.length - r, msg.length);
  13062. if (this.pending.length === 0)
  13063. this.pending = null;
  13064. msg = utils.join32(msg, 0, msg.length - r, this.endian);
  13065. for (var i = 0; i < msg.length; i += this._delta32)
  13066. this._update(msg, i, i + this._delta32);
  13067. }
  13068. return this;
  13069. };
  13070. BlockHash.prototype.digest = function digest(enc) {
  13071. this.update(this._pad());
  13072. assert(this.pending === null);
  13073. return this._digest(enc);
  13074. };
  13075. BlockHash.prototype._pad = function pad() {
  13076. var len = this.pendingTotal;
  13077. var bytes = this._delta8;
  13078. var k = bytes - ((len + this.padLength) % bytes);
  13079. var res = new Array(k + this.padLength);
  13080. res[0] = 0x80;
  13081. for (var i = 1; i < k; i++)
  13082. res[i] = 0;
  13083. // Append length
  13084. len <<= 3;
  13085. if (this.endian === 'big') {
  13086. for (var t = 8; t < this.padLength; t++)
  13087. res[i++] = 0;
  13088. res[i++] = 0;
  13089. res[i++] = 0;
  13090. res[i++] = 0;
  13091. res[i++] = 0;
  13092. res[i++] = (len >>> 24) & 0xff;
  13093. res[i++] = (len >>> 16) & 0xff;
  13094. res[i++] = (len >>> 8) & 0xff;
  13095. res[i++] = len & 0xff;
  13096. } else {
  13097. res[i++] = len & 0xff;
  13098. res[i++] = (len >>> 8) & 0xff;
  13099. res[i++] = (len >>> 16) & 0xff;
  13100. res[i++] = (len >>> 24) & 0xff;
  13101. res[i++] = 0;
  13102. res[i++] = 0;
  13103. res[i++] = 0;
  13104. res[i++] = 0;
  13105. for (t = 8; t < this.padLength; t++)
  13106. res[i++] = 0;
  13107. }
  13108. return res;
  13109. };
  13110. },{"./utils":104,"minimalistic-assert":112}],95:[function(require,module,exports){
  13111. 'use strict';
  13112. var utils = require('./utils');
  13113. var assert = require('minimalistic-assert');
  13114. function Hmac(hash, key, enc) {
  13115. if (!(this instanceof Hmac))
  13116. return new Hmac(hash, key, enc);
  13117. this.Hash = hash;
  13118. this.blockSize = hash.blockSize / 8;
  13119. this.outSize = hash.outSize / 8;
  13120. this.inner = null;
  13121. this.outer = null;
  13122. this._init(utils.toArray(key, enc));
  13123. }
  13124. module.exports = Hmac;
  13125. Hmac.prototype._init = function init(key) {
  13126. // Shorten key, if needed
  13127. if (key.length > this.blockSize)
  13128. key = new this.Hash().update(key).digest();
  13129. assert(key.length <= this.blockSize);
  13130. // Add padding to key
  13131. for (var i = key.length; i < this.blockSize; i++)
  13132. key.push(0);
  13133. for (i = 0; i < key.length; i++)
  13134. key[i] ^= 0x36;
  13135. this.inner = new this.Hash().update(key);
  13136. // 0x36 ^ 0x5c = 0x6a
  13137. for (i = 0; i < key.length; i++)
  13138. key[i] ^= 0x6a;
  13139. this.outer = new this.Hash().update(key);
  13140. };
  13141. Hmac.prototype.update = function update(msg, enc) {
  13142. this.inner.update(msg, enc);
  13143. return this;
  13144. };
  13145. Hmac.prototype.digest = function digest(enc) {
  13146. this.outer.update(this.inner.digest());
  13147. return this.outer.digest(enc);
  13148. };
  13149. },{"./utils":104,"minimalistic-assert":112}],96:[function(require,module,exports){
  13150. 'use strict';
  13151. var utils = require('./utils');
  13152. var common = require('./common');
  13153. var rotl32 = utils.rotl32;
  13154. var sum32 = utils.sum32;
  13155. var sum32_3 = utils.sum32_3;
  13156. var sum32_4 = utils.sum32_4;
  13157. var BlockHash = common.BlockHash;
  13158. function RIPEMD160() {
  13159. if (!(this instanceof RIPEMD160))
  13160. return new RIPEMD160();
  13161. BlockHash.call(this);
  13162. this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
  13163. this.endian = 'little';
  13164. }
  13165. utils.inherits(RIPEMD160, BlockHash);
  13166. exports.ripemd160 = RIPEMD160;
  13167. RIPEMD160.blockSize = 512;
  13168. RIPEMD160.outSize = 160;
  13169. RIPEMD160.hmacStrength = 192;
  13170. RIPEMD160.padLength = 64;
  13171. RIPEMD160.prototype._update = function update(msg, start) {
  13172. var A = this.h[0];
  13173. var B = this.h[1];
  13174. var C = this.h[2];
  13175. var D = this.h[3];
  13176. var E = this.h[4];
  13177. var Ah = A;
  13178. var Bh = B;
  13179. var Ch = C;
  13180. var Dh = D;
  13181. var Eh = E;
  13182. for (var j = 0; j < 80; j++) {
  13183. var T = sum32(
  13184. rotl32(
  13185. sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
  13186. s[j]),
  13187. E);
  13188. A = E;
  13189. E = D;
  13190. D = rotl32(C, 10);
  13191. C = B;
  13192. B = T;
  13193. T = sum32(
  13194. rotl32(
  13195. sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
  13196. sh[j]),
  13197. Eh);
  13198. Ah = Eh;
  13199. Eh = Dh;
  13200. Dh = rotl32(Ch, 10);
  13201. Ch = Bh;
  13202. Bh = T;
  13203. }
  13204. T = sum32_3(this.h[1], C, Dh);
  13205. this.h[1] = sum32_3(this.h[2], D, Eh);
  13206. this.h[2] = sum32_3(this.h[3], E, Ah);
  13207. this.h[3] = sum32_3(this.h[4], A, Bh);
  13208. this.h[4] = sum32_3(this.h[0], B, Ch);
  13209. this.h[0] = T;
  13210. };
  13211. RIPEMD160.prototype._digest = function digest(enc) {
  13212. if (enc === 'hex')
  13213. return utils.toHex32(this.h, 'little');
  13214. else
  13215. return utils.split32(this.h, 'little');
  13216. };
  13217. function f(j, x, y, z) {
  13218. if (j <= 15)
  13219. return x ^ y ^ z;
  13220. else if (j <= 31)
  13221. return (x & y) | ((~x) & z);
  13222. else if (j <= 47)
  13223. return (x | (~y)) ^ z;
  13224. else if (j <= 63)
  13225. return (x & z) | (y & (~z));
  13226. else
  13227. return x ^ (y | (~z));
  13228. }
  13229. function K(j) {
  13230. if (j <= 15)
  13231. return 0x00000000;
  13232. else if (j <= 31)
  13233. return 0x5a827999;
  13234. else if (j <= 47)
  13235. return 0x6ed9eba1;
  13236. else if (j <= 63)
  13237. return 0x8f1bbcdc;
  13238. else
  13239. return 0xa953fd4e;
  13240. }
  13241. function Kh(j) {
  13242. if (j <= 15)
  13243. return 0x50a28be6;
  13244. else if (j <= 31)
  13245. return 0x5c4dd124;
  13246. else if (j <= 47)
  13247. return 0x6d703ef3;
  13248. else if (j <= 63)
  13249. return 0x7a6d76e9;
  13250. else
  13251. return 0x00000000;
  13252. }
  13253. var r = [
  13254. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
  13255. 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
  13256. 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
  13257. 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
  13258. 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
  13259. ];
  13260. var rh = [
  13261. 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
  13262. 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
  13263. 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
  13264. 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
  13265. 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
  13266. ];
  13267. var s = [
  13268. 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
  13269. 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
  13270. 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
  13271. 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
  13272. 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
  13273. ];
  13274. var sh = [
  13275. 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
  13276. 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
  13277. 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
  13278. 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
  13279. 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
  13280. ];
  13281. },{"./common":94,"./utils":104}],97:[function(require,module,exports){
  13282. 'use strict';
  13283. exports.sha1 = require('./sha/1');
  13284. exports.sha224 = require('./sha/224');
  13285. exports.sha256 = require('./sha/256');
  13286. exports.sha384 = require('./sha/384');
  13287. exports.sha512 = require('./sha/512');
  13288. },{"./sha/1":98,"./sha/224":99,"./sha/256":100,"./sha/384":101,"./sha/512":102}],98:[function(require,module,exports){
  13289. 'use strict';
  13290. var utils = require('../utils');
  13291. var common = require('../common');
  13292. var shaCommon = require('./common');
  13293. var rotl32 = utils.rotl32;
  13294. var sum32 = utils.sum32;
  13295. var sum32_5 = utils.sum32_5;
  13296. var ft_1 = shaCommon.ft_1;
  13297. var BlockHash = common.BlockHash;
  13298. var sha1_K = [
  13299. 0x5A827999, 0x6ED9EBA1,
  13300. 0x8F1BBCDC, 0xCA62C1D6
  13301. ];
  13302. function SHA1() {
  13303. if (!(this instanceof SHA1))
  13304. return new SHA1();
  13305. BlockHash.call(this);
  13306. this.h = [
  13307. 0x67452301, 0xefcdab89, 0x98badcfe,
  13308. 0x10325476, 0xc3d2e1f0 ];
  13309. this.W = new Array(80);
  13310. }
  13311. utils.inherits(SHA1, BlockHash);
  13312. module.exports = SHA1;
  13313. SHA1.blockSize = 512;
  13314. SHA1.outSize = 160;
  13315. SHA1.hmacStrength = 80;
  13316. SHA1.padLength = 64;
  13317. SHA1.prototype._update = function _update(msg, start) {
  13318. var W = this.W;
  13319. for (var i = 0; i < 16; i++)
  13320. W[i] = msg[start + i];
  13321. for(; i < W.length; i++)
  13322. W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
  13323. var a = this.h[0];
  13324. var b = this.h[1];
  13325. var c = this.h[2];
  13326. var d = this.h[3];
  13327. var e = this.h[4];
  13328. for (i = 0; i < W.length; i++) {
  13329. var s = ~~(i / 20);
  13330. var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
  13331. e = d;
  13332. d = c;
  13333. c = rotl32(b, 30);
  13334. b = a;
  13335. a = t;
  13336. }
  13337. this.h[0] = sum32(this.h[0], a);
  13338. this.h[1] = sum32(this.h[1], b);
  13339. this.h[2] = sum32(this.h[2], c);
  13340. this.h[3] = sum32(this.h[3], d);
  13341. this.h[4] = sum32(this.h[4], e);
  13342. };
  13343. SHA1.prototype._digest = function digest(enc) {
  13344. if (enc === 'hex')
  13345. return utils.toHex32(this.h, 'big');
  13346. else
  13347. return utils.split32(this.h, 'big');
  13348. };
  13349. },{"../common":94,"../utils":104,"./common":103}],99:[function(require,module,exports){
  13350. 'use strict';
  13351. var utils = require('../utils');
  13352. var SHA256 = require('./256');
  13353. function SHA224() {
  13354. if (!(this instanceof SHA224))
  13355. return new SHA224();
  13356. SHA256.call(this);
  13357. this.h = [
  13358. 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
  13359. 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
  13360. }
  13361. utils.inherits(SHA224, SHA256);
  13362. module.exports = SHA224;
  13363. SHA224.blockSize = 512;
  13364. SHA224.outSize = 224;
  13365. SHA224.hmacStrength = 192;
  13366. SHA224.padLength = 64;
  13367. SHA224.prototype._digest = function digest(enc) {
  13368. // Just truncate output
  13369. if (enc === 'hex')
  13370. return utils.toHex32(this.h.slice(0, 7), 'big');
  13371. else
  13372. return utils.split32(this.h.slice(0, 7), 'big');
  13373. };
  13374. },{"../utils":104,"./256":100}],100:[function(require,module,exports){
  13375. 'use strict';
  13376. var utils = require('../utils');
  13377. var common = require('../common');
  13378. var shaCommon = require('./common');
  13379. var assert = require('minimalistic-assert');
  13380. var sum32 = utils.sum32;
  13381. var sum32_4 = utils.sum32_4;
  13382. var sum32_5 = utils.sum32_5;
  13383. var ch32 = shaCommon.ch32;
  13384. var maj32 = shaCommon.maj32;
  13385. var s0_256 = shaCommon.s0_256;
  13386. var s1_256 = shaCommon.s1_256;
  13387. var g0_256 = shaCommon.g0_256;
  13388. var g1_256 = shaCommon.g1_256;
  13389. var BlockHash = common.BlockHash;
  13390. var sha256_K = [
  13391. 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
  13392. 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
  13393. 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
  13394. 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
  13395. 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
  13396. 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
  13397. 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
  13398. 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
  13399. 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
  13400. 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
  13401. 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
  13402. 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
  13403. 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
  13404. 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
  13405. 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
  13406. 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
  13407. ];
  13408. function SHA256() {
  13409. if (!(this instanceof SHA256))
  13410. return new SHA256();
  13411. BlockHash.call(this);
  13412. this.h = [
  13413. 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
  13414. 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
  13415. ];
  13416. this.k = sha256_K;
  13417. this.W = new Array(64);
  13418. }
  13419. utils.inherits(SHA256, BlockHash);
  13420. module.exports = SHA256;
  13421. SHA256.blockSize = 512;
  13422. SHA256.outSize = 256;
  13423. SHA256.hmacStrength = 192;
  13424. SHA256.padLength = 64;
  13425. SHA256.prototype._update = function _update(msg, start) {
  13426. var W = this.W;
  13427. for (var i = 0; i < 16; i++)
  13428. W[i] = msg[start + i];
  13429. for (; i < W.length; i++)
  13430. W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
  13431. var a = this.h[0];
  13432. var b = this.h[1];
  13433. var c = this.h[2];
  13434. var d = this.h[3];
  13435. var e = this.h[4];
  13436. var f = this.h[5];
  13437. var g = this.h[6];
  13438. var h = this.h[7];
  13439. assert(this.k.length === W.length);
  13440. for (i = 0; i < W.length; i++) {
  13441. var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
  13442. var T2 = sum32(s0_256(a), maj32(a, b, c));
  13443. h = g;
  13444. g = f;
  13445. f = e;
  13446. e = sum32(d, T1);
  13447. d = c;
  13448. c = b;
  13449. b = a;
  13450. a = sum32(T1, T2);
  13451. }
  13452. this.h[0] = sum32(this.h[0], a);
  13453. this.h[1] = sum32(this.h[1], b);
  13454. this.h[2] = sum32(this.h[2], c);
  13455. this.h[3] = sum32(this.h[3], d);
  13456. this.h[4] = sum32(this.h[4], e);
  13457. this.h[5] = sum32(this.h[5], f);
  13458. this.h[6] = sum32(this.h[6], g);
  13459. this.h[7] = sum32(this.h[7], h);
  13460. };
  13461. SHA256.prototype._digest = function digest(enc) {
  13462. if (enc === 'hex')
  13463. return utils.toHex32(this.h, 'big');
  13464. else
  13465. return utils.split32(this.h, 'big');
  13466. };
  13467. },{"../common":94,"../utils":104,"./common":103,"minimalistic-assert":112}],101:[function(require,module,exports){
  13468. 'use strict';
  13469. var utils = require('../utils');
  13470. var SHA512 = require('./512');
  13471. function SHA384() {
  13472. if (!(this instanceof SHA384))
  13473. return new SHA384();
  13474. SHA512.call(this);
  13475. this.h = [
  13476. 0xcbbb9d5d, 0xc1059ed8,
  13477. 0x629a292a, 0x367cd507,
  13478. 0x9159015a, 0x3070dd17,
  13479. 0x152fecd8, 0xf70e5939,
  13480. 0x67332667, 0xffc00b31,
  13481. 0x8eb44a87, 0x68581511,
  13482. 0xdb0c2e0d, 0x64f98fa7,
  13483. 0x47b5481d, 0xbefa4fa4 ];
  13484. }
  13485. utils.inherits(SHA384, SHA512);
  13486. module.exports = SHA384;
  13487. SHA384.blockSize = 1024;
  13488. SHA384.outSize = 384;
  13489. SHA384.hmacStrength = 192;
  13490. SHA384.padLength = 128;
  13491. SHA384.prototype._digest = function digest(enc) {
  13492. if (enc === 'hex')
  13493. return utils.toHex32(this.h.slice(0, 12), 'big');
  13494. else
  13495. return utils.split32(this.h.slice(0, 12), 'big');
  13496. };
  13497. },{"../utils":104,"./512":102}],102:[function(require,module,exports){
  13498. 'use strict';
  13499. var utils = require('../utils');
  13500. var common = require('../common');
  13501. var assert = require('minimalistic-assert');
  13502. var rotr64_hi = utils.rotr64_hi;
  13503. var rotr64_lo = utils.rotr64_lo;
  13504. var shr64_hi = utils.shr64_hi;
  13505. var shr64_lo = utils.shr64_lo;
  13506. var sum64 = utils.sum64;
  13507. var sum64_hi = utils.sum64_hi;
  13508. var sum64_lo = utils.sum64_lo;
  13509. var sum64_4_hi = utils.sum64_4_hi;
  13510. var sum64_4_lo = utils.sum64_4_lo;
  13511. var sum64_5_hi = utils.sum64_5_hi;
  13512. var sum64_5_lo = utils.sum64_5_lo;
  13513. var BlockHash = common.BlockHash;
  13514. var sha512_K = [
  13515. 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
  13516. 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
  13517. 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
  13518. 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
  13519. 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
  13520. 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
  13521. 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
  13522. 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
  13523. 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
  13524. 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
  13525. 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
  13526. 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
  13527. 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
  13528. 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
  13529. 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
  13530. 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
  13531. 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
  13532. 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
  13533. 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
  13534. 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
  13535. 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
  13536. 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
  13537. 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
  13538. 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
  13539. 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
  13540. 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
  13541. 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
  13542. 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
  13543. 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
  13544. 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
  13545. 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
  13546. 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
  13547. 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
  13548. 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
  13549. 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
  13550. 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
  13551. 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
  13552. 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
  13553. 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
  13554. 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
  13555. ];
  13556. function SHA512() {
  13557. if (!(this instanceof SHA512))
  13558. return new SHA512();
  13559. BlockHash.call(this);
  13560. this.h = [
  13561. 0x6a09e667, 0xf3bcc908,
  13562. 0xbb67ae85, 0x84caa73b,
  13563. 0x3c6ef372, 0xfe94f82b,
  13564. 0xa54ff53a, 0x5f1d36f1,
  13565. 0x510e527f, 0xade682d1,
  13566. 0x9b05688c, 0x2b3e6c1f,
  13567. 0x1f83d9ab, 0xfb41bd6b,
  13568. 0x5be0cd19, 0x137e2179 ];
  13569. this.k = sha512_K;
  13570. this.W = new Array(160);
  13571. }
  13572. utils.inherits(SHA512, BlockHash);
  13573. module.exports = SHA512;
  13574. SHA512.blockSize = 1024;
  13575. SHA512.outSize = 512;
  13576. SHA512.hmacStrength = 192;
  13577. SHA512.padLength = 128;
  13578. SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
  13579. var W = this.W;
  13580. // 32 x 32bit words
  13581. for (var i = 0; i < 32; i++)
  13582. W[i] = msg[start + i];
  13583. for (; i < W.length; i += 2) {
  13584. var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
  13585. var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
  13586. var c1_hi = W[i - 14]; // i - 7
  13587. var c1_lo = W[i - 13];
  13588. var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
  13589. var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
  13590. var c3_hi = W[i - 32]; // i - 16
  13591. var c3_lo = W[i - 31];
  13592. W[i] = sum64_4_hi(
  13593. c0_hi, c0_lo,
  13594. c1_hi, c1_lo,
  13595. c2_hi, c2_lo,
  13596. c3_hi, c3_lo);
  13597. W[i + 1] = sum64_4_lo(
  13598. c0_hi, c0_lo,
  13599. c1_hi, c1_lo,
  13600. c2_hi, c2_lo,
  13601. c3_hi, c3_lo);
  13602. }
  13603. };
  13604. SHA512.prototype._update = function _update(msg, start) {
  13605. this._prepareBlock(msg, start);
  13606. var W = this.W;
  13607. var ah = this.h[0];
  13608. var al = this.h[1];
  13609. var bh = this.h[2];
  13610. var bl = this.h[3];
  13611. var ch = this.h[4];
  13612. var cl = this.h[5];
  13613. var dh = this.h[6];
  13614. var dl = this.h[7];
  13615. var eh = this.h[8];
  13616. var el = this.h[9];
  13617. var fh = this.h[10];
  13618. var fl = this.h[11];
  13619. var gh = this.h[12];
  13620. var gl = this.h[13];
  13621. var hh = this.h[14];
  13622. var hl = this.h[15];
  13623. assert(this.k.length === W.length);
  13624. for (var i = 0; i < W.length; i += 2) {
  13625. var c0_hi = hh;
  13626. var c0_lo = hl;
  13627. var c1_hi = s1_512_hi(eh, el);
  13628. var c1_lo = s1_512_lo(eh, el);
  13629. var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
  13630. var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
  13631. var c3_hi = this.k[i];
  13632. var c3_lo = this.k[i + 1];
  13633. var c4_hi = W[i];
  13634. var c4_lo = W[i + 1];
  13635. var T1_hi = sum64_5_hi(
  13636. c0_hi, c0_lo,
  13637. c1_hi, c1_lo,
  13638. c2_hi, c2_lo,
  13639. c3_hi, c3_lo,
  13640. c4_hi, c4_lo);
  13641. var T1_lo = sum64_5_lo(
  13642. c0_hi, c0_lo,
  13643. c1_hi, c1_lo,
  13644. c2_hi, c2_lo,
  13645. c3_hi, c3_lo,
  13646. c4_hi, c4_lo);
  13647. c0_hi = s0_512_hi(ah, al);
  13648. c0_lo = s0_512_lo(ah, al);
  13649. c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
  13650. c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
  13651. var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
  13652. var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
  13653. hh = gh;
  13654. hl = gl;
  13655. gh = fh;
  13656. gl = fl;
  13657. fh = eh;
  13658. fl = el;
  13659. eh = sum64_hi(dh, dl, T1_hi, T1_lo);
  13660. el = sum64_lo(dl, dl, T1_hi, T1_lo);
  13661. dh = ch;
  13662. dl = cl;
  13663. ch = bh;
  13664. cl = bl;
  13665. bh = ah;
  13666. bl = al;
  13667. ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
  13668. al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
  13669. }
  13670. sum64(this.h, 0, ah, al);
  13671. sum64(this.h, 2, bh, bl);
  13672. sum64(this.h, 4, ch, cl);
  13673. sum64(this.h, 6, dh, dl);
  13674. sum64(this.h, 8, eh, el);
  13675. sum64(this.h, 10, fh, fl);
  13676. sum64(this.h, 12, gh, gl);
  13677. sum64(this.h, 14, hh, hl);
  13678. };
  13679. SHA512.prototype._digest = function digest(enc) {
  13680. if (enc === 'hex')
  13681. return utils.toHex32(this.h, 'big');
  13682. else
  13683. return utils.split32(this.h, 'big');
  13684. };
  13685. function ch64_hi(xh, xl, yh, yl, zh) {
  13686. var r = (xh & yh) ^ ((~xh) & zh);
  13687. if (r < 0)
  13688. r += 0x100000000;
  13689. return r;
  13690. }
  13691. function ch64_lo(xh, xl, yh, yl, zh, zl) {
  13692. var r = (xl & yl) ^ ((~xl) & zl);
  13693. if (r < 0)
  13694. r += 0x100000000;
  13695. return r;
  13696. }
  13697. function maj64_hi(xh, xl, yh, yl, zh) {
  13698. var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
  13699. if (r < 0)
  13700. r += 0x100000000;
  13701. return r;
  13702. }
  13703. function maj64_lo(xh, xl, yh, yl, zh, zl) {
  13704. var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
  13705. if (r < 0)
  13706. r += 0x100000000;
  13707. return r;
  13708. }
  13709. function s0_512_hi(xh, xl) {
  13710. var c0_hi = rotr64_hi(xh, xl, 28);
  13711. var c1_hi = rotr64_hi(xl, xh, 2); // 34
  13712. var c2_hi = rotr64_hi(xl, xh, 7); // 39
  13713. var r = c0_hi ^ c1_hi ^ c2_hi;
  13714. if (r < 0)
  13715. r += 0x100000000;
  13716. return r;
  13717. }
  13718. function s0_512_lo(xh, xl) {
  13719. var c0_lo = rotr64_lo(xh, xl, 28);
  13720. var c1_lo = rotr64_lo(xl, xh, 2); // 34
  13721. var c2_lo = rotr64_lo(xl, xh, 7); // 39
  13722. var r = c0_lo ^ c1_lo ^ c2_lo;
  13723. if (r < 0)
  13724. r += 0x100000000;
  13725. return r;
  13726. }
  13727. function s1_512_hi(xh, xl) {
  13728. var c0_hi = rotr64_hi(xh, xl, 14);
  13729. var c1_hi = rotr64_hi(xh, xl, 18);
  13730. var c2_hi = rotr64_hi(xl, xh, 9); // 41
  13731. var r = c0_hi ^ c1_hi ^ c2_hi;
  13732. if (r < 0)
  13733. r += 0x100000000;
  13734. return r;
  13735. }
  13736. function s1_512_lo(xh, xl) {
  13737. var c0_lo = rotr64_lo(xh, xl, 14);
  13738. var c1_lo = rotr64_lo(xh, xl, 18);
  13739. var c2_lo = rotr64_lo(xl, xh, 9); // 41
  13740. var r = c0_lo ^ c1_lo ^ c2_lo;
  13741. if (r < 0)
  13742. r += 0x100000000;
  13743. return r;
  13744. }
  13745. function g0_512_hi(xh, xl) {
  13746. var c0_hi = rotr64_hi(xh, xl, 1);
  13747. var c1_hi = rotr64_hi(xh, xl, 8);
  13748. var c2_hi = shr64_hi(xh, xl, 7);
  13749. var r = c0_hi ^ c1_hi ^ c2_hi;
  13750. if (r < 0)
  13751. r += 0x100000000;
  13752. return r;
  13753. }
  13754. function g0_512_lo(xh, xl) {
  13755. var c0_lo = rotr64_lo(xh, xl, 1);
  13756. var c1_lo = rotr64_lo(xh, xl, 8);
  13757. var c2_lo = shr64_lo(xh, xl, 7);
  13758. var r = c0_lo ^ c1_lo ^ c2_lo;
  13759. if (r < 0)
  13760. r += 0x100000000;
  13761. return r;
  13762. }
  13763. function g1_512_hi(xh, xl) {
  13764. var c0_hi = rotr64_hi(xh, xl, 19);
  13765. var c1_hi = rotr64_hi(xl, xh, 29); // 61
  13766. var c2_hi = shr64_hi(xh, xl, 6);
  13767. var r = c0_hi ^ c1_hi ^ c2_hi;
  13768. if (r < 0)
  13769. r += 0x100000000;
  13770. return r;
  13771. }
  13772. function g1_512_lo(xh, xl) {
  13773. var c0_lo = rotr64_lo(xh, xl, 19);
  13774. var c1_lo = rotr64_lo(xl, xh, 29); // 61
  13775. var c2_lo = shr64_lo(xh, xl, 6);
  13776. var r = c0_lo ^ c1_lo ^ c2_lo;
  13777. if (r < 0)
  13778. r += 0x100000000;
  13779. return r;
  13780. }
  13781. },{"../common":94,"../utils":104,"minimalistic-assert":112}],103:[function(require,module,exports){
  13782. 'use strict';
  13783. var utils = require('../utils');
  13784. var rotr32 = utils.rotr32;
  13785. function ft_1(s, x, y, z) {
  13786. if (s === 0)
  13787. return ch32(x, y, z);
  13788. if (s === 1 || s === 3)
  13789. return p32(x, y, z);
  13790. if (s === 2)
  13791. return maj32(x, y, z);
  13792. }
  13793. exports.ft_1 = ft_1;
  13794. function ch32(x, y, z) {
  13795. return (x & y) ^ ((~x) & z);
  13796. }
  13797. exports.ch32 = ch32;
  13798. function maj32(x, y, z) {
  13799. return (x & y) ^ (x & z) ^ (y & z);
  13800. }
  13801. exports.maj32 = maj32;
  13802. function p32(x, y, z) {
  13803. return x ^ y ^ z;
  13804. }
  13805. exports.p32 = p32;
  13806. function s0_256(x) {
  13807. return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
  13808. }
  13809. exports.s0_256 = s0_256;
  13810. function s1_256(x) {
  13811. return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
  13812. }
  13813. exports.s1_256 = s1_256;
  13814. function g0_256(x) {
  13815. return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
  13816. }
  13817. exports.g0_256 = g0_256;
  13818. function g1_256(x) {
  13819. return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
  13820. }
  13821. exports.g1_256 = g1_256;
  13822. },{"../utils":104}],104:[function(require,module,exports){
  13823. 'use strict';
  13824. var assert = require('minimalistic-assert');
  13825. var inherits = require('inherits');
  13826. exports.inherits = inherits;
  13827. function toArray(msg, enc) {
  13828. if (Array.isArray(msg))
  13829. return msg.slice();
  13830. if (!msg)
  13831. return [];
  13832. var res = [];
  13833. if (typeof msg === 'string') {
  13834. if (!enc) {
  13835. for (var i = 0; i < msg.length; i++) {
  13836. var c = msg.charCodeAt(i);
  13837. var hi = c >> 8;
  13838. var lo = c & 0xff;
  13839. if (hi)
  13840. res.push(hi, lo);
  13841. else
  13842. res.push(lo);
  13843. }
  13844. } else if (enc === 'hex') {
  13845. msg = msg.replace(/[^a-z0-9]+/ig, '');
  13846. if (msg.length % 2 !== 0)
  13847. msg = '0' + msg;
  13848. for (i = 0; i < msg.length; i += 2)
  13849. res.push(parseInt(msg[i] + msg[i + 1], 16));
  13850. }
  13851. } else {
  13852. for (i = 0; i < msg.length; i++)
  13853. res[i] = msg[i] | 0;
  13854. }
  13855. return res;
  13856. }
  13857. exports.toArray = toArray;
  13858. function toHex(msg) {
  13859. var res = '';
  13860. for (var i = 0; i < msg.length; i++)
  13861. res += zero2(msg[i].toString(16));
  13862. return res;
  13863. }
  13864. exports.toHex = toHex;
  13865. function htonl(w) {
  13866. var res = (w >>> 24) |
  13867. ((w >>> 8) & 0xff00) |
  13868. ((w << 8) & 0xff0000) |
  13869. ((w & 0xff) << 24);
  13870. return res >>> 0;
  13871. }
  13872. exports.htonl = htonl;
  13873. function toHex32(msg, endian) {
  13874. var res = '';
  13875. for (var i = 0; i < msg.length; i++) {
  13876. var w = msg[i];
  13877. if (endian === 'little')
  13878. w = htonl(w);
  13879. res += zero8(w.toString(16));
  13880. }
  13881. return res;
  13882. }
  13883. exports.toHex32 = toHex32;
  13884. function zero2(word) {
  13885. if (word.length === 1)
  13886. return '0' + word;
  13887. else
  13888. return word;
  13889. }
  13890. exports.zero2 = zero2;
  13891. function zero8(word) {
  13892. if (word.length === 7)
  13893. return '0' + word;
  13894. else if (word.length === 6)
  13895. return '00' + word;
  13896. else if (word.length === 5)
  13897. return '000' + word;
  13898. else if (word.length === 4)
  13899. return '0000' + word;
  13900. else if (word.length === 3)
  13901. return '00000' + word;
  13902. else if (word.length === 2)
  13903. return '000000' + word;
  13904. else if (word.length === 1)
  13905. return '0000000' + word;
  13906. else
  13907. return word;
  13908. }
  13909. exports.zero8 = zero8;
  13910. function join32(msg, start, end, endian) {
  13911. var len = end - start;
  13912. assert(len % 4 === 0);
  13913. var res = new Array(len / 4);
  13914. for (var i = 0, k = start; i < res.length; i++, k += 4) {
  13915. var w;
  13916. if (endian === 'big')
  13917. w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
  13918. else
  13919. w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
  13920. res[i] = w >>> 0;
  13921. }
  13922. return res;
  13923. }
  13924. exports.join32 = join32;
  13925. function split32(msg, endian) {
  13926. var res = new Array(msg.length * 4);
  13927. for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
  13928. var m = msg[i];
  13929. if (endian === 'big') {
  13930. res[k] = m >>> 24;
  13931. res[k + 1] = (m >>> 16) & 0xff;
  13932. res[k + 2] = (m >>> 8) & 0xff;
  13933. res[k + 3] = m & 0xff;
  13934. } else {
  13935. res[k + 3] = m >>> 24;
  13936. res[k + 2] = (m >>> 16) & 0xff;
  13937. res[k + 1] = (m >>> 8) & 0xff;
  13938. res[k] = m & 0xff;
  13939. }
  13940. }
  13941. return res;
  13942. }
  13943. exports.split32 = split32;
  13944. function rotr32(w, b) {
  13945. return (w >>> b) | (w << (32 - b));
  13946. }
  13947. exports.rotr32 = rotr32;
  13948. function rotl32(w, b) {
  13949. return (w << b) | (w >>> (32 - b));
  13950. }
  13951. exports.rotl32 = rotl32;
  13952. function sum32(a, b) {
  13953. return (a + b) >>> 0;
  13954. }
  13955. exports.sum32 = sum32;
  13956. function sum32_3(a, b, c) {
  13957. return (a + b + c) >>> 0;
  13958. }
  13959. exports.sum32_3 = sum32_3;
  13960. function sum32_4(a, b, c, d) {
  13961. return (a + b + c + d) >>> 0;
  13962. }
  13963. exports.sum32_4 = sum32_4;
  13964. function sum32_5(a, b, c, d, e) {
  13965. return (a + b + c + d + e) >>> 0;
  13966. }
  13967. exports.sum32_5 = sum32_5;
  13968. function sum64(buf, pos, ah, al) {
  13969. var bh = buf[pos];
  13970. var bl = buf[pos + 1];
  13971. var lo = (al + bl) >>> 0;
  13972. var hi = (lo < al ? 1 : 0) + ah + bh;
  13973. buf[pos] = hi >>> 0;
  13974. buf[pos + 1] = lo;
  13975. }
  13976. exports.sum64 = sum64;
  13977. function sum64_hi(ah, al, bh, bl) {
  13978. var lo = (al + bl) >>> 0;
  13979. var hi = (lo < al ? 1 : 0) + ah + bh;
  13980. return hi >>> 0;
  13981. }
  13982. exports.sum64_hi = sum64_hi;
  13983. function sum64_lo(ah, al, bh, bl) {
  13984. var lo = al + bl;
  13985. return lo >>> 0;
  13986. }
  13987. exports.sum64_lo = sum64_lo;
  13988. function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
  13989. var carry = 0;
  13990. var lo = al;
  13991. lo = (lo + bl) >>> 0;
  13992. carry += lo < al ? 1 : 0;
  13993. lo = (lo + cl) >>> 0;
  13994. carry += lo < cl ? 1 : 0;
  13995. lo = (lo + dl) >>> 0;
  13996. carry += lo < dl ? 1 : 0;
  13997. var hi = ah + bh + ch + dh + carry;
  13998. return hi >>> 0;
  13999. }
  14000. exports.sum64_4_hi = sum64_4_hi;
  14001. function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
  14002. var lo = al + bl + cl + dl;
  14003. return lo >>> 0;
  14004. }
  14005. exports.sum64_4_lo = sum64_4_lo;
  14006. function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
  14007. var carry = 0;
  14008. var lo = al;
  14009. lo = (lo + bl) >>> 0;
  14010. carry += lo < al ? 1 : 0;
  14011. lo = (lo + cl) >>> 0;
  14012. carry += lo < cl ? 1 : 0;
  14013. lo = (lo + dl) >>> 0;
  14014. carry += lo < dl ? 1 : 0;
  14015. lo = (lo + el) >>> 0;
  14016. carry += lo < el ? 1 : 0;
  14017. var hi = ah + bh + ch + dh + eh + carry;
  14018. return hi >>> 0;
  14019. }
  14020. exports.sum64_5_hi = sum64_5_hi;
  14021. function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
  14022. var lo = al + bl + cl + dl + el;
  14023. return lo >>> 0;
  14024. }
  14025. exports.sum64_5_lo = sum64_5_lo;
  14026. function rotr64_hi(ah, al, num) {
  14027. var r = (al << (32 - num)) | (ah >>> num);
  14028. return r >>> 0;
  14029. }
  14030. exports.rotr64_hi = rotr64_hi;
  14031. function rotr64_lo(ah, al, num) {
  14032. var r = (ah << (32 - num)) | (al >>> num);
  14033. return r >>> 0;
  14034. }
  14035. exports.rotr64_lo = rotr64_lo;
  14036. function shr64_hi(ah, al, num) {
  14037. return ah >>> num;
  14038. }
  14039. exports.shr64_hi = shr64_hi;
  14040. function shr64_lo(ah, al, num) {
  14041. var r = (ah << (32 - num)) | (al >>> num);
  14042. return r >>> 0;
  14043. }
  14044. exports.shr64_lo = shr64_lo;
  14045. },{"inherits":108,"minimalistic-assert":112}],105:[function(require,module,exports){
  14046. 'use strict';
  14047. var hash = require('hash.js');
  14048. var utils = require('minimalistic-crypto-utils');
  14049. var assert = require('minimalistic-assert');
  14050. function HmacDRBG(options) {
  14051. if (!(this instanceof HmacDRBG))
  14052. return new HmacDRBG(options);
  14053. this.hash = options.hash;
  14054. this.predResist = !!options.predResist;
  14055. this.outLen = this.hash.outSize;
  14056. this.minEntropy = options.minEntropy || this.hash.hmacStrength;
  14057. this._reseed = null;
  14058. this.reseedInterval = null;
  14059. this.K = null;
  14060. this.V = null;
  14061. var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');
  14062. var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');
  14063. var pers = utils.toArray(options.pers, options.persEnc || 'hex');
  14064. assert(entropy.length >= (this.minEntropy / 8),
  14065. 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
  14066. this._init(entropy, nonce, pers);
  14067. }
  14068. module.exports = HmacDRBG;
  14069. HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
  14070. var seed = entropy.concat(nonce).concat(pers);
  14071. this.K = new Array(this.outLen / 8);
  14072. this.V = new Array(this.outLen / 8);
  14073. for (var i = 0; i < this.V.length; i++) {
  14074. this.K[i] = 0x00;
  14075. this.V[i] = 0x01;
  14076. }
  14077. this._update(seed);
  14078. this._reseed = 1;
  14079. this.reseedInterval = 0x1000000000000; // 2^48
  14080. };
  14081. HmacDRBG.prototype._hmac = function hmac() {
  14082. return new hash.hmac(this.hash, this.K);
  14083. };
  14084. HmacDRBG.prototype._update = function update(seed) {
  14085. var kmac = this._hmac()
  14086. .update(this.V)
  14087. .update([ 0x00 ]);
  14088. if (seed)
  14089. kmac = kmac.update(seed);
  14090. this.K = kmac.digest();
  14091. this.V = this._hmac().update(this.V).digest();
  14092. if (!seed)
  14093. return;
  14094. this.K = this._hmac()
  14095. .update(this.V)
  14096. .update([ 0x01 ])
  14097. .update(seed)
  14098. .digest();
  14099. this.V = this._hmac().update(this.V).digest();
  14100. };
  14101. HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
  14102. // Optional entropy enc
  14103. if (typeof entropyEnc !== 'string') {
  14104. addEnc = add;
  14105. add = entropyEnc;
  14106. entropyEnc = null;
  14107. }
  14108. entropy = utils.toArray(entropy, entropyEnc);
  14109. add = utils.toArray(add, addEnc);
  14110. assert(entropy.length >= (this.minEntropy / 8),
  14111. 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
  14112. this._update(entropy.concat(add || []));
  14113. this._reseed = 1;
  14114. };
  14115. HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
  14116. if (this._reseed > this.reseedInterval)
  14117. throw new Error('Reseed is required');
  14118. // Optional encoding
  14119. if (typeof enc !== 'string') {
  14120. addEnc = add;
  14121. add = enc;
  14122. enc = null;
  14123. }
  14124. // Optional additional data
  14125. if (add) {
  14126. add = utils.toArray(add, addEnc || 'hex');
  14127. this._update(add);
  14128. }
  14129. var temp = [];
  14130. while (temp.length < len) {
  14131. this.V = this._hmac().update(this.V).digest();
  14132. temp = temp.concat(this.V);
  14133. }
  14134. var res = temp.slice(0, len);
  14135. this._update(add);
  14136. this._reseed++;
  14137. return utils.encode(res, enc);
  14138. };
  14139. },{"hash.js":93,"minimalistic-assert":112,"minimalistic-crypto-utils":113}],106:[function(require,module,exports){
  14140. exports.read = function (buffer, offset, isLE, mLen, nBytes) {
  14141. var e, m
  14142. var eLen = nBytes * 8 - mLen - 1
  14143. var eMax = (1 << eLen) - 1
  14144. var eBias = eMax >> 1
  14145. var nBits = -7
  14146. var i = isLE ? (nBytes - 1) : 0
  14147. var d = isLE ? -1 : 1
  14148. var s = buffer[offset + i]
  14149. i += d
  14150. e = s & ((1 << (-nBits)) - 1)
  14151. s >>= (-nBits)
  14152. nBits += eLen
  14153. for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
  14154. m = e & ((1 << (-nBits)) - 1)
  14155. e >>= (-nBits)
  14156. nBits += mLen
  14157. for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
  14158. if (e === 0) {
  14159. e = 1 - eBias
  14160. } else if (e === eMax) {
  14161. return m ? NaN : ((s ? -1 : 1) * Infinity)
  14162. } else {
  14163. m = m + Math.pow(2, mLen)
  14164. e = e - eBias
  14165. }
  14166. return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
  14167. }
  14168. exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
  14169. var e, m, c
  14170. var eLen = nBytes * 8 - mLen - 1
  14171. var eMax = (1 << eLen) - 1
  14172. var eBias = eMax >> 1
  14173. var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
  14174. var i = isLE ? 0 : (nBytes - 1)
  14175. var d = isLE ? 1 : -1
  14176. var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
  14177. value = Math.abs(value)
  14178. if (isNaN(value) || value === Infinity) {
  14179. m = isNaN(value) ? 1 : 0
  14180. e = eMax
  14181. } else {
  14182. e = Math.floor(Math.log(value) / Math.LN2)
  14183. if (value * (c = Math.pow(2, -e)) < 1) {
  14184. e--
  14185. c *= 2
  14186. }
  14187. if (e + eBias >= 1) {
  14188. value += rt / c
  14189. } else {
  14190. value += rt * Math.pow(2, 1 - eBias)
  14191. }
  14192. if (value * c >= 2) {
  14193. e++
  14194. c /= 2
  14195. }
  14196. if (e + eBias >= eMax) {
  14197. m = 0
  14198. e = eMax
  14199. } else if (e + eBias >= 1) {
  14200. m = (value * c - 1) * Math.pow(2, mLen)
  14201. e = e + eBias
  14202. } else {
  14203. m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
  14204. e = 0
  14205. }
  14206. }
  14207. for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
  14208. e = (e << mLen) | m
  14209. eLen += mLen
  14210. for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
  14211. buffer[offset + i - d] |= s * 128
  14212. }
  14213. },{}],107:[function(require,module,exports){
  14214. var indexOf = [].indexOf;
  14215. module.exports = function(arr, obj){
  14216. if (indexOf) return arr.indexOf(obj);
  14217. for (var i = 0; i < arr.length; ++i) {
  14218. if (arr[i] === obj) return i;
  14219. }
  14220. return -1;
  14221. };
  14222. },{}],108:[function(require,module,exports){
  14223. if (typeof Object.create === 'function') {
  14224. // implementation from standard node.js 'util' module
  14225. module.exports = function inherits(ctor, superCtor) {
  14226. ctor.super_ = superCtor
  14227. ctor.prototype = Object.create(superCtor.prototype, {
  14228. constructor: {
  14229. value: ctor,
  14230. enumerable: false,
  14231. writable: true,
  14232. configurable: true
  14233. }
  14234. });
  14235. };
  14236. } else {
  14237. // old school shim for old browsers
  14238. module.exports = function inherits(ctor, superCtor) {
  14239. ctor.super_ = superCtor
  14240. var TempCtor = function () {}
  14241. TempCtor.prototype = superCtor.prototype
  14242. ctor.prototype = new TempCtor()
  14243. ctor.prototype.constructor = ctor
  14244. }
  14245. }
  14246. },{}],109:[function(require,module,exports){
  14247. /*!
  14248. * Determine if an object is a Buffer
  14249. *
  14250. * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
  14251. * @license MIT
  14252. */
  14253. // The _isBuffer check is for Safari 5-7 support, because it's missing
  14254. // Object.prototype.constructor. Remove this eventually
  14255. module.exports = function (obj) {
  14256. return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
  14257. }
  14258. function isBuffer (obj) {
  14259. return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
  14260. }
  14261. // For Node v0.10 support. Remove this eventually.
  14262. function isSlowBuffer (obj) {
  14263. return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
  14264. }
  14265. },{}],110:[function(require,module,exports){
  14266. var toString = {}.toString;
  14267. module.exports = Array.isArray || function (arr) {
  14268. return toString.call(arr) == '[object Array]';
  14269. };
  14270. },{}],111:[function(require,module,exports){
  14271. var bn = require('bn.js');
  14272. var brorand = require('brorand');
  14273. function MillerRabin(rand) {
  14274. this.rand = rand || new brorand.Rand();
  14275. }
  14276. module.exports = MillerRabin;
  14277. MillerRabin.create = function create(rand) {
  14278. return new MillerRabin(rand);
  14279. };
  14280. MillerRabin.prototype._rand = function _rand(n) {
  14281. var len = n.bitLength();
  14282. var buf = this.rand.generate(Math.ceil(len / 8));
  14283. // Set low bits
  14284. buf[0] |= 3;
  14285. // Mask high bits
  14286. var mask = len & 0x7;
  14287. if (mask !== 0)
  14288. buf[buf.length - 1] >>= 7 - mask;
  14289. return new bn(buf);
  14290. }
  14291. MillerRabin.prototype.test = function test(n, k, cb) {
  14292. var len = n.bitLength();
  14293. var red = bn.mont(n);
  14294. var rone = new bn(1).toRed(red);
  14295. if (!k)
  14296. k = Math.max(1, (len / 48) | 0);
  14297. // Find d and s, (n - 1) = (2 ^ s) * d;
  14298. var n1 = n.subn(1);
  14299. var n2 = n1.subn(1);
  14300. for (var s = 0; !n1.testn(s); s++) {}
  14301. var d = n.shrn(s);
  14302. var rn1 = n1.toRed(red);
  14303. var prime = true;
  14304. for (; k > 0; k--) {
  14305. var a = this._rand(n2);
  14306. if (cb)
  14307. cb(a);
  14308. var x = a.toRed(red).redPow(d);
  14309. if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)
  14310. continue;
  14311. for (var i = 1; i < s; i++) {
  14312. x = x.redSqr();
  14313. if (x.cmp(rone) === 0)
  14314. return false;
  14315. if (x.cmp(rn1) === 0)
  14316. break;
  14317. }
  14318. if (i === s)
  14319. return false;
  14320. }
  14321. return prime;
  14322. };
  14323. MillerRabin.prototype.getDivisor = function getDivisor(n, k) {
  14324. var len = n.bitLength();
  14325. var red = bn.mont(n);
  14326. var rone = new bn(1).toRed(red);
  14327. if (!k)
  14328. k = Math.max(1, (len / 48) | 0);
  14329. // Find d and s, (n - 1) = (2 ^ s) * d;
  14330. var n1 = n.subn(1);
  14331. var n2 = n1.subn(1);
  14332. for (var s = 0; !n1.testn(s); s++) {}
  14333. var d = n.shrn(s);
  14334. var rn1 = n1.toRed(red);
  14335. for (; k > 0; k--) {
  14336. var a = this._rand(n2);
  14337. var g = n.gcd(a);
  14338. if (g.cmpn(1) !== 0)
  14339. return g;
  14340. var x = a.toRed(red).redPow(d);
  14341. if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)
  14342. continue;
  14343. for (var i = 1; i < s; i++) {
  14344. x = x.redSqr();
  14345. if (x.cmp(rone) === 0)
  14346. return x.fromRed().subn(1).gcd(n);
  14347. if (x.cmp(rn1) === 0)
  14348. break;
  14349. }
  14350. if (i === s) {
  14351. x = x.redSqr();
  14352. return x.fromRed().subn(1).gcd(n);
  14353. }
  14354. }
  14355. return false;
  14356. };
  14357. },{"bn.js":25,"brorand":26}],112:[function(require,module,exports){
  14358. module.exports = assert;
  14359. function assert(val, msg) {
  14360. if (!val)
  14361. throw new Error(msg || 'Assertion failed');
  14362. }
  14363. assert.equal = function assertEqual(l, r, msg) {
  14364. if (l != r)
  14365. throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));
  14366. };
  14367. },{}],113:[function(require,module,exports){
  14368. 'use strict';
  14369. var utils = exports;
  14370. function toArray(msg, enc) {
  14371. if (Array.isArray(msg))
  14372. return msg.slice();
  14373. if (!msg)
  14374. return [];
  14375. var res = [];
  14376. if (typeof msg !== 'string') {
  14377. for (var i = 0; i < msg.length; i++)
  14378. res[i] = msg[i] | 0;
  14379. return res;
  14380. }
  14381. if (enc === 'hex') {
  14382. msg = msg.replace(/[^a-z0-9]+/ig, '');
  14383. if (msg.length % 2 !== 0)
  14384. msg = '0' + msg;
  14385. for (var i = 0; i < msg.length; i += 2)
  14386. res.push(parseInt(msg[i] + msg[i + 1], 16));
  14387. } else {
  14388. for (var i = 0; i < msg.length; i++) {
  14389. var c = msg.charCodeAt(i);
  14390. var hi = c >> 8;
  14391. var lo = c & 0xff;
  14392. if (hi)
  14393. res.push(hi, lo);
  14394. else
  14395. res.push(lo);
  14396. }
  14397. }
  14398. return res;
  14399. }
  14400. utils.toArray = toArray;
  14401. function zero2(word) {
  14402. if (word.length === 1)
  14403. return '0' + word;
  14404. else
  14405. return word;
  14406. }
  14407. utils.zero2 = zero2;
  14408. function toHex(msg) {
  14409. var res = '';
  14410. for (var i = 0; i < msg.length; i++)
  14411. res += zero2(msg[i].toString(16));
  14412. return res;
  14413. }
  14414. utils.toHex = toHex;
  14415. utils.encode = function encode(arr, enc) {
  14416. if (enc === 'hex')
  14417. return toHex(arr);
  14418. else
  14419. return arr;
  14420. };
  14421. },{}],114:[function(require,module,exports){
  14422. module.exports={"2.16.840.1.101.3.4.1.1": "aes-128-ecb",
  14423. "2.16.840.1.101.3.4.1.2": "aes-128-cbc",
  14424. "2.16.840.1.101.3.4.1.3": "aes-128-ofb",
  14425. "2.16.840.1.101.3.4.1.4": "aes-128-cfb",
  14426. "2.16.840.1.101.3.4.1.21": "aes-192-ecb",
  14427. "2.16.840.1.101.3.4.1.22": "aes-192-cbc",
  14428. "2.16.840.1.101.3.4.1.23": "aes-192-ofb",
  14429. "2.16.840.1.101.3.4.1.24": "aes-192-cfb",
  14430. "2.16.840.1.101.3.4.1.41": "aes-256-ecb",
  14431. "2.16.840.1.101.3.4.1.42": "aes-256-cbc",
  14432. "2.16.840.1.101.3.4.1.43": "aes-256-ofb",
  14433. "2.16.840.1.101.3.4.1.44": "aes-256-cfb"
  14434. }
  14435. },{}],115:[function(require,module,exports){
  14436. // from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js
  14437. // Fedor, you are amazing.
  14438. 'use strict'
  14439. var asn1 = require('asn1.js')
  14440. exports.certificate = require('./certificate')
  14441. var RSAPrivateKey = asn1.define('RSAPrivateKey', function () {
  14442. this.seq().obj(
  14443. this.key('version').int(),
  14444. this.key('modulus').int(),
  14445. this.key('publicExponent').int(),
  14446. this.key('privateExponent').int(),
  14447. this.key('prime1').int(),
  14448. this.key('prime2').int(),
  14449. this.key('exponent1').int(),
  14450. this.key('exponent2').int(),
  14451. this.key('coefficient').int()
  14452. )
  14453. })
  14454. exports.RSAPrivateKey = RSAPrivateKey
  14455. var RSAPublicKey = asn1.define('RSAPublicKey', function () {
  14456. this.seq().obj(
  14457. this.key('modulus').int(),
  14458. this.key('publicExponent').int()
  14459. )
  14460. })
  14461. exports.RSAPublicKey = RSAPublicKey
  14462. var PublicKey = asn1.define('SubjectPublicKeyInfo', function () {
  14463. this.seq().obj(
  14464. this.key('algorithm').use(AlgorithmIdentifier),
  14465. this.key('subjectPublicKey').bitstr()
  14466. )
  14467. })
  14468. exports.PublicKey = PublicKey
  14469. var AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {
  14470. this.seq().obj(
  14471. this.key('algorithm').objid(),
  14472. this.key('none').null_().optional(),
  14473. this.key('curve').objid().optional(),
  14474. this.key('params').seq().obj(
  14475. this.key('p').int(),
  14476. this.key('q').int(),
  14477. this.key('g').int()
  14478. ).optional()
  14479. )
  14480. })
  14481. var PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {
  14482. this.seq().obj(
  14483. this.key('version').int(),
  14484. this.key('algorithm').use(AlgorithmIdentifier),
  14485. this.key('subjectPrivateKey').octstr()
  14486. )
  14487. })
  14488. exports.PrivateKey = PrivateKeyInfo
  14489. var EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {
  14490. this.seq().obj(
  14491. this.key('algorithm').seq().obj(
  14492. this.key('id').objid(),
  14493. this.key('decrypt').seq().obj(
  14494. this.key('kde').seq().obj(
  14495. this.key('id').objid(),
  14496. this.key('kdeparams').seq().obj(
  14497. this.key('salt').octstr(),
  14498. this.key('iters').int()
  14499. )
  14500. ),
  14501. this.key('cipher').seq().obj(
  14502. this.key('algo').objid(),
  14503. this.key('iv').octstr()
  14504. )
  14505. )
  14506. ),
  14507. this.key('subjectPrivateKey').octstr()
  14508. )
  14509. })
  14510. exports.EncryptedPrivateKey = EncryptedPrivateKeyInfo
  14511. var DSAPrivateKey = asn1.define('DSAPrivateKey', function () {
  14512. this.seq().obj(
  14513. this.key('version').int(),
  14514. this.key('p').int(),
  14515. this.key('q').int(),
  14516. this.key('g').int(),
  14517. this.key('pub_key').int(),
  14518. this.key('priv_key').int()
  14519. )
  14520. })
  14521. exports.DSAPrivateKey = DSAPrivateKey
  14522. exports.DSAparam = asn1.define('DSAparam', function () {
  14523. this.int()
  14524. })
  14525. var ECPrivateKey = asn1.define('ECPrivateKey', function () {
  14526. this.seq().obj(
  14527. this.key('version').int(),
  14528. this.key('privateKey').octstr(),
  14529. this.key('parameters').optional().explicit(0).use(ECParameters),
  14530. this.key('publicKey').optional().explicit(1).bitstr()
  14531. )
  14532. })
  14533. exports.ECPrivateKey = ECPrivateKey
  14534. var ECParameters = asn1.define('ECParameters', function () {
  14535. this.choice({
  14536. namedCurve: this.objid()
  14537. })
  14538. })
  14539. exports.signature = asn1.define('signature', function () {
  14540. this.seq().obj(
  14541. this.key('r').int(),
  14542. this.key('s').int()
  14543. )
  14544. })
  14545. },{"./certificate":116,"asn1.js":10}],116:[function(require,module,exports){
  14546. // from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js
  14547. // thanks to @Rantanen
  14548. 'use strict'
  14549. var asn = require('asn1.js')
  14550. var Time = asn.define('Time', function () {
  14551. this.choice({
  14552. utcTime: this.utctime(),
  14553. generalTime: this.gentime()
  14554. })
  14555. })
  14556. var AttributeTypeValue = asn.define('AttributeTypeValue', function () {
  14557. this.seq().obj(
  14558. this.key('type').objid(),
  14559. this.key('value').any()
  14560. )
  14561. })
  14562. var AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {
  14563. this.seq().obj(
  14564. this.key('algorithm').objid(),
  14565. this.key('parameters').optional()
  14566. )
  14567. })
  14568. var SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {
  14569. this.seq().obj(
  14570. this.key('algorithm').use(AlgorithmIdentifier),
  14571. this.key('subjectPublicKey').bitstr()
  14572. )
  14573. })
  14574. var RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {
  14575. this.setof(AttributeTypeValue)
  14576. })
  14577. var RDNSequence = asn.define('RDNSequence', function () {
  14578. this.seqof(RelativeDistinguishedName)
  14579. })
  14580. var Name = asn.define('Name', function () {
  14581. this.choice({
  14582. rdnSequence: this.use(RDNSequence)
  14583. })
  14584. })
  14585. var Validity = asn.define('Validity', function () {
  14586. this.seq().obj(
  14587. this.key('notBefore').use(Time),
  14588. this.key('notAfter').use(Time)
  14589. )
  14590. })
  14591. var Extension = asn.define('Extension', function () {
  14592. this.seq().obj(
  14593. this.key('extnID').objid(),
  14594. this.key('critical').bool().def(false),
  14595. this.key('extnValue').octstr()
  14596. )
  14597. })
  14598. var TBSCertificate = asn.define('TBSCertificate', function () {
  14599. this.seq().obj(
  14600. this.key('version').explicit(0).int(),
  14601. this.key('serialNumber').int(),
  14602. this.key('signature').use(AlgorithmIdentifier),
  14603. this.key('issuer').use(Name),
  14604. this.key('validity').use(Validity),
  14605. this.key('subject').use(Name),
  14606. this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),
  14607. this.key('issuerUniqueID').implicit(1).bitstr().optional(),
  14608. this.key('subjectUniqueID').implicit(2).bitstr().optional(),
  14609. this.key('extensions').explicit(3).seqof(Extension).optional()
  14610. )
  14611. })
  14612. var X509Certificate = asn.define('X509Certificate', function () {
  14613. this.seq().obj(
  14614. this.key('tbsCertificate').use(TBSCertificate),
  14615. this.key('signatureAlgorithm').use(AlgorithmIdentifier),
  14616. this.key('signatureValue').bitstr()
  14617. )
  14618. })
  14619. module.exports = X509Certificate
  14620. },{"asn1.js":10}],117:[function(require,module,exports){
  14621. (function (Buffer){
  14622. // adapted from https://github.com/apatil/pemstrip
  14623. var findProc = /Proc-Type: 4,ENCRYPTED\n\r?DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\n\r?\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?/m
  14624. var startRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----\n/m
  14625. var fullRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?-----END \1-----$/m
  14626. var evp = require('evp_bytestokey')
  14627. var ciphers = require('browserify-aes')
  14628. module.exports = function (okey, password) {
  14629. var key = okey.toString()
  14630. var match = key.match(findProc)
  14631. var decrypted
  14632. if (!match) {
  14633. var match2 = key.match(fullRegex)
  14634. decrypted = new Buffer(match2[2].replace(/\r?\n/g, ''), 'base64')
  14635. } else {
  14636. var suite = 'aes' + match[1]
  14637. var iv = new Buffer(match[2], 'hex')
  14638. var cipherText = new Buffer(match[3].replace(/\r?\n/g, ''), 'base64')
  14639. var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key
  14640. var out = []
  14641. var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)
  14642. out.push(cipher.update(cipherText))
  14643. out.push(cipher.final())
  14644. decrypted = Buffer.concat(out)
  14645. }
  14646. var tag = key.match(startRegex)[1]
  14647. return {
  14648. tag: tag,
  14649. data: decrypted
  14650. }
  14651. }
  14652. }).call(this,require("buffer").Buffer)
  14653. },{"browserify-aes":30,"buffer":54,"evp_bytestokey":91}],118:[function(require,module,exports){
  14654. (function (Buffer){
  14655. var asn1 = require('./asn1')
  14656. var aesid = require('./aesid.json')
  14657. var fixProc = require('./fixProc')
  14658. var ciphers = require('browserify-aes')
  14659. var compat = require('pbkdf2')
  14660. module.exports = parseKeys
  14661. function parseKeys (buffer) {
  14662. var password
  14663. if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {
  14664. password = buffer.passphrase
  14665. buffer = buffer.key
  14666. }
  14667. if (typeof buffer === 'string') {
  14668. buffer = new Buffer(buffer)
  14669. }
  14670. var stripped = fixProc(buffer, password)
  14671. var type = stripped.tag
  14672. var data = stripped.data
  14673. var subtype, ndata
  14674. switch (type) {
  14675. case 'CERTIFICATE':
  14676. ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo
  14677. // falls through
  14678. case 'PUBLIC KEY':
  14679. if (!ndata) {
  14680. ndata = asn1.PublicKey.decode(data, 'der')
  14681. }
  14682. subtype = ndata.algorithm.algorithm.join('.')
  14683. switch (subtype) {
  14684. case '1.2.840.113549.1.1.1':
  14685. return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')
  14686. case '1.2.840.10045.2.1':
  14687. ndata.subjectPrivateKey = ndata.subjectPublicKey
  14688. return {
  14689. type: 'ec',
  14690. data: ndata
  14691. }
  14692. case '1.2.840.10040.4.1':
  14693. ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')
  14694. return {
  14695. type: 'dsa',
  14696. data: ndata.algorithm.params
  14697. }
  14698. default: throw new Error('unknown key id ' + subtype)
  14699. }
  14700. throw new Error('unknown key type ' + type)
  14701. case 'ENCRYPTED PRIVATE KEY':
  14702. data = asn1.EncryptedPrivateKey.decode(data, 'der')
  14703. data = decrypt(data, password)
  14704. // falls through
  14705. case 'PRIVATE KEY':
  14706. ndata = asn1.PrivateKey.decode(data, 'der')
  14707. subtype = ndata.algorithm.algorithm.join('.')
  14708. switch (subtype) {
  14709. case '1.2.840.113549.1.1.1':
  14710. return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')
  14711. case '1.2.840.10045.2.1':
  14712. return {
  14713. curve: ndata.algorithm.curve,
  14714. privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey
  14715. }
  14716. case '1.2.840.10040.4.1':
  14717. ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')
  14718. return {
  14719. type: 'dsa',
  14720. params: ndata.algorithm.params
  14721. }
  14722. default: throw new Error('unknown key id ' + subtype)
  14723. }
  14724. throw new Error('unknown key type ' + type)
  14725. case 'RSA PUBLIC KEY':
  14726. return asn1.RSAPublicKey.decode(data, 'der')
  14727. case 'RSA PRIVATE KEY':
  14728. return asn1.RSAPrivateKey.decode(data, 'der')
  14729. case 'DSA PRIVATE KEY':
  14730. return {
  14731. type: 'dsa',
  14732. params: asn1.DSAPrivateKey.decode(data, 'der')
  14733. }
  14734. case 'EC PRIVATE KEY':
  14735. data = asn1.ECPrivateKey.decode(data, 'der')
  14736. return {
  14737. curve: data.parameters.value,
  14738. privateKey: data.privateKey
  14739. }
  14740. default: throw new Error('unknown key type ' + type)
  14741. }
  14742. }
  14743. parseKeys.signature = asn1.signature
  14744. function decrypt (data, password) {
  14745. var salt = data.algorithm.decrypt.kde.kdeparams.salt
  14746. var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)
  14747. var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]
  14748. var iv = data.algorithm.decrypt.cipher.iv
  14749. var cipherText = data.subjectPrivateKey
  14750. var keylen = parseInt(algo.split('-')[1], 10) / 8
  14751. var key = compat.pbkdf2Sync(password, salt, iters, keylen)
  14752. var cipher = ciphers.createDecipheriv(algo, key, iv)
  14753. var out = []
  14754. out.push(cipher.update(cipherText))
  14755. out.push(cipher.final())
  14756. return Buffer.concat(out)
  14757. }
  14758. }).call(this,require("buffer").Buffer)
  14759. },{"./aesid.json":114,"./asn1":115,"./fixProc":117,"browserify-aes":30,"buffer":54,"pbkdf2":120}],119:[function(require,module,exports){
  14760. (function (process){
  14761. // Copyright Joyent, Inc. and other Node contributors.
  14762. //
  14763. // Permission is hereby granted, free of charge, to any person obtaining a
  14764. // copy of this software and associated documentation files (the
  14765. // "Software"), to deal in the Software without restriction, including
  14766. // without limitation the rights to use, copy, modify, merge, publish,
  14767. // distribute, sublicense, and/or sell copies of the Software, and to permit
  14768. // persons to whom the Software is furnished to do so, subject to the
  14769. // following conditions:
  14770. //
  14771. // The above copyright notice and this permission notice shall be included
  14772. // in all copies or substantial portions of the Software.
  14773. //
  14774. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  14775. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  14776. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  14777. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  14778. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  14779. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  14780. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  14781. // resolves . and .. elements in a path array with directory names there
  14782. // must be no slashes, empty elements, or device names (c:\) in the array
  14783. // (so also no leading and trailing slashes - it does not distinguish
  14784. // relative and absolute paths)
  14785. function normalizeArray(parts, allowAboveRoot) {
  14786. // if the path tries to go above the root, `up` ends up > 0
  14787. var up = 0;
  14788. for (var i = parts.length - 1; i >= 0; i--) {
  14789. var last = parts[i];
  14790. if (last === '.') {
  14791. parts.splice(i, 1);
  14792. } else if (last === '..') {
  14793. parts.splice(i, 1);
  14794. up++;
  14795. } else if (up) {
  14796. parts.splice(i, 1);
  14797. up--;
  14798. }
  14799. }
  14800. // if the path is allowed to go above the root, restore leading ..s
  14801. if (allowAboveRoot) {
  14802. for (; up--; up) {
  14803. parts.unshift('..');
  14804. }
  14805. }
  14806. return parts;
  14807. }
  14808. // Split a filename into [root, dir, basename, ext], unix version
  14809. // 'root' is just a slash, or nothing.
  14810. var splitPathRe =
  14811. /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
  14812. var splitPath = function(filename) {
  14813. return splitPathRe.exec(filename).slice(1);
  14814. };
  14815. // path.resolve([from ...], to)
  14816. // posix version
  14817. exports.resolve = function() {
  14818. var resolvedPath = '',
  14819. resolvedAbsolute = false;
  14820. for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
  14821. var path = (i >= 0) ? arguments[i] : process.cwd();
  14822. // Skip empty and invalid entries
  14823. if (typeof path !== 'string') {
  14824. throw new TypeError('Arguments to path.resolve must be strings');
  14825. } else if (!path) {
  14826. continue;
  14827. }
  14828. resolvedPath = path + '/' + resolvedPath;
  14829. resolvedAbsolute = path.charAt(0) === '/';
  14830. }
  14831. // At this point the path should be resolved to a full absolute path, but
  14832. // handle relative paths to be safe (might happen when process.cwd() fails)
  14833. // Normalize the path
  14834. resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
  14835. return !!p;
  14836. }), !resolvedAbsolute).join('/');
  14837. return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
  14838. };
  14839. // path.normalize(path)
  14840. // posix version
  14841. exports.normalize = function(path) {
  14842. var isAbsolute = exports.isAbsolute(path),
  14843. trailingSlash = substr(path, -1) === '/';
  14844. // Normalize the path
  14845. path = normalizeArray(filter(path.split('/'), function(p) {
  14846. return !!p;
  14847. }), !isAbsolute).join('/');
  14848. if (!path && !isAbsolute) {
  14849. path = '.';
  14850. }
  14851. if (path && trailingSlash) {
  14852. path += '/';
  14853. }
  14854. return (isAbsolute ? '/' : '') + path;
  14855. };
  14856. // posix version
  14857. exports.isAbsolute = function(path) {
  14858. return path.charAt(0) === '/';
  14859. };
  14860. // posix version
  14861. exports.join = function() {
  14862. var paths = Array.prototype.slice.call(arguments, 0);
  14863. return exports.normalize(filter(paths, function(p, index) {
  14864. if (typeof p !== 'string') {
  14865. throw new TypeError('Arguments to path.join must be strings');
  14866. }
  14867. return p;
  14868. }).join('/'));
  14869. };
  14870. // path.relative(from, to)
  14871. // posix version
  14872. exports.relative = function(from, to) {
  14873. from = exports.resolve(from).substr(1);
  14874. to = exports.resolve(to).substr(1);
  14875. function trim(arr) {
  14876. var start = 0;
  14877. for (; start < arr.length; start++) {
  14878. if (arr[start] !== '') break;
  14879. }
  14880. var end = arr.length - 1;
  14881. for (; end >= 0; end--) {
  14882. if (arr[end] !== '') break;
  14883. }
  14884. if (start > end) return [];
  14885. return arr.slice(start, end - start + 1);
  14886. }
  14887. var fromParts = trim(from.split('/'));
  14888. var toParts = trim(to.split('/'));
  14889. var length = Math.min(fromParts.length, toParts.length);
  14890. var samePartsLength = length;
  14891. for (var i = 0; i < length; i++) {
  14892. if (fromParts[i] !== toParts[i]) {
  14893. samePartsLength = i;
  14894. break;
  14895. }
  14896. }
  14897. var outputParts = [];
  14898. for (var i = samePartsLength; i < fromParts.length; i++) {
  14899. outputParts.push('..');
  14900. }
  14901. outputParts = outputParts.concat(toParts.slice(samePartsLength));
  14902. return outputParts.join('/');
  14903. };
  14904. exports.sep = '/';
  14905. exports.delimiter = ':';
  14906. exports.dirname = function(path) {
  14907. var result = splitPath(path),
  14908. root = result[0],
  14909. dir = result[1];
  14910. if (!root && !dir) {
  14911. // No dirname whatsoever
  14912. return '.';
  14913. }
  14914. if (dir) {
  14915. // It has a dirname, strip trailing slash
  14916. dir = dir.substr(0, dir.length - 1);
  14917. }
  14918. return root + dir;
  14919. };
  14920. exports.basename = function(path, ext) {
  14921. var f = splitPath(path)[2];
  14922. // TODO: make this comparison case-insensitive on windows?
  14923. if (ext && f.substr(-1 * ext.length) === ext) {
  14924. f = f.substr(0, f.length - ext.length);
  14925. }
  14926. return f;
  14927. };
  14928. exports.extname = function(path) {
  14929. return splitPath(path)[3];
  14930. };
  14931. function filter (xs, f) {
  14932. if (xs.filter) return xs.filter(f);
  14933. var res = [];
  14934. for (var i = 0; i < xs.length; i++) {
  14935. if (f(xs[i], i, xs)) res.push(xs[i]);
  14936. }
  14937. return res;
  14938. }
  14939. // String.prototype.substr - negative index don't work in IE8
  14940. var substr = 'ab'.substr(-1) === 'b'
  14941. ? function (str, start, len) { return str.substr(start, len) }
  14942. : function (str, start, len) {
  14943. if (start < 0) start = str.length + start;
  14944. return str.substr(start, len);
  14945. }
  14946. ;
  14947. }).call(this,require('_process'))
  14948. },{"_process":126}],120:[function(require,module,exports){
  14949. exports.pbkdf2 = require('./lib/async')
  14950. exports.pbkdf2Sync = require('./lib/sync')
  14951. },{"./lib/async":121,"./lib/sync":124}],121:[function(require,module,exports){
  14952. (function (process,global){
  14953. var checkParameters = require('./precondition')
  14954. var defaultEncoding = require('./default-encoding')
  14955. var sync = require('./sync')
  14956. var Buffer = require('safe-buffer').Buffer
  14957. var ZERO_BUF
  14958. var subtle = global.crypto && global.crypto.subtle
  14959. var toBrowser = {
  14960. 'sha': 'SHA-1',
  14961. 'sha-1': 'SHA-1',
  14962. 'sha1': 'SHA-1',
  14963. 'sha256': 'SHA-256',
  14964. 'sha-256': 'SHA-256',
  14965. 'sha384': 'SHA-384',
  14966. 'sha-384': 'SHA-384',
  14967. 'sha-512': 'SHA-512',
  14968. 'sha512': 'SHA-512'
  14969. }
  14970. var checks = []
  14971. function checkNative (algo) {
  14972. if (global.process && !global.process.browser) {
  14973. return Promise.resolve(false)
  14974. }
  14975. if (!subtle || !subtle.importKey || !subtle.deriveBits) {
  14976. return Promise.resolve(false)
  14977. }
  14978. if (checks[algo] !== undefined) {
  14979. return checks[algo]
  14980. }
  14981. ZERO_BUF = ZERO_BUF || Buffer.alloc(8)
  14982. var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)
  14983. .then(function () {
  14984. return true
  14985. }).catch(function () {
  14986. return false
  14987. })
  14988. checks[algo] = prom
  14989. return prom
  14990. }
  14991. function browserPbkdf2 (password, salt, iterations, length, algo) {
  14992. return subtle.importKey(
  14993. 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits']
  14994. ).then(function (key) {
  14995. return subtle.deriveBits({
  14996. name: 'PBKDF2',
  14997. salt: salt,
  14998. iterations: iterations,
  14999. hash: {
  15000. name: algo
  15001. }
  15002. }, key, length << 3)
  15003. }).then(function (res) {
  15004. return Buffer.from(res)
  15005. })
  15006. }
  15007. function resolvePromise (promise, callback) {
  15008. promise.then(function (out) {
  15009. process.nextTick(function () {
  15010. callback(null, out)
  15011. })
  15012. }, function (e) {
  15013. process.nextTick(function () {
  15014. callback(e)
  15015. })
  15016. })
  15017. }
  15018. module.exports = function (password, salt, iterations, keylen, digest, callback) {
  15019. if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)
  15020. if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)
  15021. checkParameters(iterations, keylen)
  15022. if (typeof digest === 'function') {
  15023. callback = digest
  15024. digest = undefined
  15025. }
  15026. if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')
  15027. digest = digest || 'sha1'
  15028. var algo = toBrowser[digest.toLowerCase()]
  15029. if (!algo || typeof global.Promise !== 'function') {
  15030. return process.nextTick(function () {
  15031. var out
  15032. try {
  15033. out = sync(password, salt, iterations, keylen, digest)
  15034. } catch (e) {
  15035. return callback(e)
  15036. }
  15037. callback(null, out)
  15038. })
  15039. }
  15040. resolvePromise(checkNative(algo).then(function (resp) {
  15041. if (resp) {
  15042. return browserPbkdf2(password, salt, iterations, keylen, algo)
  15043. } else {
  15044. return sync(password, salt, iterations, keylen, digest)
  15045. }
  15046. }), callback)
  15047. }
  15048. }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
  15049. },{"./default-encoding":122,"./precondition":123,"./sync":124,"_process":126,"safe-buffer":148}],122:[function(require,module,exports){
  15050. (function (process){
  15051. var defaultEncoding
  15052. /* istanbul ignore next */
  15053. if (process.browser) {
  15054. defaultEncoding = 'utf-8'
  15055. } else {
  15056. var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)
  15057. defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'
  15058. }
  15059. module.exports = defaultEncoding
  15060. }).call(this,require('_process'))
  15061. },{"_process":126}],123:[function(require,module,exports){
  15062. var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs
  15063. module.exports = function (iterations, keylen) {
  15064. if (typeof iterations !== 'number') {
  15065. throw new TypeError('Iterations not a number')
  15066. }
  15067. if (iterations < 0) {
  15068. throw new TypeError('Bad iterations')
  15069. }
  15070. if (typeof keylen !== 'number') {
  15071. throw new TypeError('Key length not a number')
  15072. }
  15073. if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */
  15074. throw new TypeError('Bad key length')
  15075. }
  15076. }
  15077. },{}],124:[function(require,module,exports){
  15078. var md5 = require('create-hash/md5')
  15079. var rmd160 = require('ripemd160')
  15080. var sha = require('sha.js')
  15081. var checkParameters = require('./precondition')
  15082. var defaultEncoding = require('./default-encoding')
  15083. var Buffer = require('safe-buffer').Buffer
  15084. var ZEROS = Buffer.alloc(128)
  15085. var sizes = {
  15086. md5: 16,
  15087. sha1: 20,
  15088. sha224: 28,
  15089. sha256: 32,
  15090. sha384: 48,
  15091. sha512: 64,
  15092. rmd160: 20,
  15093. ripemd160: 20
  15094. }
  15095. function Hmac (alg, key, saltLen) {
  15096. var hash = getDigest(alg)
  15097. var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
  15098. if (key.length > blocksize) {
  15099. key = hash(key)
  15100. } else if (key.length < blocksize) {
  15101. key = Buffer.concat([key, ZEROS], blocksize)
  15102. }
  15103. var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])
  15104. var opad = Buffer.allocUnsafe(blocksize + sizes[alg])
  15105. for (var i = 0; i < blocksize; i++) {
  15106. ipad[i] = key[i] ^ 0x36
  15107. opad[i] = key[i] ^ 0x5C
  15108. }
  15109. var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)
  15110. ipad.copy(ipad1, 0, 0, blocksize)
  15111. this.ipad1 = ipad1
  15112. this.ipad2 = ipad
  15113. this.opad = opad
  15114. this.alg = alg
  15115. this.blocksize = blocksize
  15116. this.hash = hash
  15117. this.size = sizes[alg]
  15118. }
  15119. Hmac.prototype.run = function (data, ipad) {
  15120. data.copy(ipad, this.blocksize)
  15121. var h = this.hash(ipad)
  15122. h.copy(this.opad, this.blocksize)
  15123. return this.hash(this.opad)
  15124. }
  15125. function getDigest (alg) {
  15126. function shaFunc (data) {
  15127. return sha(alg).update(data).digest()
  15128. }
  15129. if (alg === 'rmd160' || alg === 'ripemd160') return rmd160
  15130. if (alg === 'md5') return md5
  15131. return shaFunc
  15132. }
  15133. function pbkdf2 (password, salt, iterations, keylen, digest) {
  15134. if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)
  15135. if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)
  15136. checkParameters(iterations, keylen)
  15137. digest = digest || 'sha1'
  15138. var hmac = new Hmac(digest, password, salt.length)
  15139. var DK = Buffer.allocUnsafe(keylen)
  15140. var block1 = Buffer.allocUnsafe(salt.length + 4)
  15141. salt.copy(block1, 0, 0, salt.length)
  15142. var destPos = 0
  15143. var hLen = sizes[digest]
  15144. var l = Math.ceil(keylen / hLen)
  15145. for (var i = 1; i <= l; i++) {
  15146. block1.writeUInt32BE(i, salt.length)
  15147. var T = hmac.run(block1, hmac.ipad1)
  15148. var U = T
  15149. for (var j = 1; j < iterations; j++) {
  15150. U = hmac.run(U, hmac.ipad2)
  15151. for (var k = 0; k < hLen; k++) T[k] ^= U[k]
  15152. }
  15153. T.copy(DK, destPos)
  15154. destPos += hLen
  15155. }
  15156. return DK
  15157. }
  15158. module.exports = pbkdf2
  15159. },{"./default-encoding":122,"./precondition":123,"create-hash/md5":60,"ripemd160":147,"safe-buffer":148,"sha.js":150}],125:[function(require,module,exports){
  15160. (function (process){
  15161. 'use strict';
  15162. if (!process.version ||
  15163. process.version.indexOf('v0.') === 0 ||
  15164. process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
  15165. module.exports = nextTick;
  15166. } else {
  15167. module.exports = process.nextTick;
  15168. }
  15169. function nextTick(fn, arg1, arg2, arg3) {
  15170. if (typeof fn !== 'function') {
  15171. throw new TypeError('"callback" argument must be a function');
  15172. }
  15173. var len = arguments.length;
  15174. var args, i;
  15175. switch (len) {
  15176. case 0:
  15177. case 1:
  15178. return process.nextTick(fn);
  15179. case 2:
  15180. return process.nextTick(function afterTickOne() {
  15181. fn.call(null, arg1);
  15182. });
  15183. case 3:
  15184. return process.nextTick(function afterTickTwo() {
  15185. fn.call(null, arg1, arg2);
  15186. });
  15187. case 4:
  15188. return process.nextTick(function afterTickThree() {
  15189. fn.call(null, arg1, arg2, arg3);
  15190. });
  15191. default:
  15192. args = new Array(len - 1);
  15193. i = 0;
  15194. while (i < args.length) {
  15195. args[i++] = arguments[i];
  15196. }
  15197. return process.nextTick(function afterTick() {
  15198. fn.apply(null, args);
  15199. });
  15200. }
  15201. }
  15202. }).call(this,require('_process'))
  15203. },{"_process":126}],126:[function(require,module,exports){
  15204. // shim for using process in browser
  15205. var process = module.exports = {};
  15206. // cached from whatever global is present so that test runners that stub it
  15207. // don't break things. But we need to wrap it in a try catch in case it is
  15208. // wrapped in strict mode code which doesn't define any globals. It's inside a
  15209. // function because try/catches deoptimize in certain engines.
  15210. var cachedSetTimeout;
  15211. var cachedClearTimeout;
  15212. function defaultSetTimout() {
  15213. throw new Error('setTimeout has not been defined');
  15214. }
  15215. function defaultClearTimeout () {
  15216. throw new Error('clearTimeout has not been defined');
  15217. }
  15218. (function () {
  15219. try {
  15220. if (typeof setTimeout === 'function') {
  15221. cachedSetTimeout = setTimeout;
  15222. } else {
  15223. cachedSetTimeout = defaultSetTimout;
  15224. }
  15225. } catch (e) {
  15226. cachedSetTimeout = defaultSetTimout;
  15227. }
  15228. try {
  15229. if (typeof clearTimeout === 'function') {
  15230. cachedClearTimeout = clearTimeout;
  15231. } else {
  15232. cachedClearTimeout = defaultClearTimeout;
  15233. }
  15234. } catch (e) {
  15235. cachedClearTimeout = defaultClearTimeout;
  15236. }
  15237. } ())
  15238. function runTimeout(fun) {
  15239. if (cachedSetTimeout === setTimeout) {
  15240. //normal enviroments in sane situations
  15241. return setTimeout(fun, 0);
  15242. }
  15243. // if setTimeout wasn't available but was latter defined
  15244. if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
  15245. cachedSetTimeout = setTimeout;
  15246. return setTimeout(fun, 0);
  15247. }
  15248. try {
  15249. // when when somebody has screwed with setTimeout but no I.E. maddness
  15250. return cachedSetTimeout(fun, 0);
  15251. } catch(e){
  15252. try {
  15253. // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
  15254. return cachedSetTimeout.call(null, fun, 0);
  15255. } catch(e){
  15256. // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
  15257. return cachedSetTimeout.call(this, fun, 0);
  15258. }
  15259. }
  15260. }
  15261. function runClearTimeout(marker) {
  15262. if (cachedClearTimeout === clearTimeout) {
  15263. //normal enviroments in sane situations
  15264. return clearTimeout(marker);
  15265. }
  15266. // if clearTimeout wasn't available but was latter defined
  15267. if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
  15268. cachedClearTimeout = clearTimeout;
  15269. return clearTimeout(marker);
  15270. }
  15271. try {
  15272. // when when somebody has screwed with setTimeout but no I.E. maddness
  15273. return cachedClearTimeout(marker);
  15274. } catch (e){
  15275. try {
  15276. // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
  15277. return cachedClearTimeout.call(null, marker);
  15278. } catch (e){
  15279. // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
  15280. // Some versions of I.E. have different rules for clearTimeout vs setTimeout
  15281. return cachedClearTimeout.call(this, marker);
  15282. }
  15283. }
  15284. }
  15285. var queue = [];
  15286. var draining = false;
  15287. var currentQueue;
  15288. var queueIndex = -1;
  15289. function cleanUpNextTick() {
  15290. if (!draining || !currentQueue) {
  15291. return;
  15292. }
  15293. draining = false;
  15294. if (currentQueue.length) {
  15295. queue = currentQueue.concat(queue);
  15296. } else {
  15297. queueIndex = -1;
  15298. }
  15299. if (queue.length) {
  15300. drainQueue();
  15301. }
  15302. }
  15303. function drainQueue() {
  15304. if (draining) {
  15305. return;
  15306. }
  15307. var timeout = runTimeout(cleanUpNextTick);
  15308. draining = true;
  15309. var len = queue.length;
  15310. while(len) {
  15311. currentQueue = queue;
  15312. queue = [];
  15313. while (++queueIndex < len) {
  15314. if (currentQueue) {
  15315. currentQueue[queueIndex].run();
  15316. }
  15317. }
  15318. queueIndex = -1;
  15319. len = queue.length;
  15320. }
  15321. currentQueue = null;
  15322. draining = false;
  15323. runClearTimeout(timeout);
  15324. }
  15325. process.nextTick = function (fun) {
  15326. var args = new Array(arguments.length - 1);
  15327. if (arguments.length > 1) {
  15328. for (var i = 1; i < arguments.length; i++) {
  15329. args[i - 1] = arguments[i];
  15330. }
  15331. }
  15332. queue.push(new Item(fun, args));
  15333. if (queue.length === 1 && !draining) {
  15334. runTimeout(drainQueue);
  15335. }
  15336. };
  15337. // v8 likes predictible objects
  15338. function Item(fun, array) {
  15339. this.fun = fun;
  15340. this.array = array;
  15341. }
  15342. Item.prototype.run = function () {
  15343. this.fun.apply(null, this.array);
  15344. };
  15345. process.title = 'browser';
  15346. process.browser = true;
  15347. process.env = {};
  15348. process.argv = [];
  15349. process.version = ''; // empty string to avoid regexp issues
  15350. process.versions = {};
  15351. function noop() {}
  15352. process.on = noop;
  15353. process.addListener = noop;
  15354. process.once = noop;
  15355. process.off = noop;
  15356. process.removeListener = noop;
  15357. process.removeAllListeners = noop;
  15358. process.emit = noop;
  15359. process.prependListener = noop;
  15360. process.prependOnceListener = noop;
  15361. process.listeners = function (name) { return [] }
  15362. process.binding = function (name) {
  15363. throw new Error('process.binding is not supported');
  15364. };
  15365. process.cwd = function () { return '/' };
  15366. process.chdir = function (dir) {
  15367. throw new Error('process.chdir is not supported');
  15368. };
  15369. process.umask = function() { return 0; };
  15370. },{}],127:[function(require,module,exports){
  15371. exports.publicEncrypt = require('./publicEncrypt');
  15372. exports.privateDecrypt = require('./privateDecrypt');
  15373. exports.privateEncrypt = function privateEncrypt(key, buf) {
  15374. return exports.publicEncrypt(key, buf, true);
  15375. };
  15376. exports.publicDecrypt = function publicDecrypt(key, buf) {
  15377. return exports.privateDecrypt(key, buf, true);
  15378. };
  15379. },{"./privateDecrypt":129,"./publicEncrypt":130}],128:[function(require,module,exports){
  15380. (function (Buffer){
  15381. var createHash = require('create-hash');
  15382. module.exports = function (seed, len) {
  15383. var t = new Buffer('');
  15384. var i = 0, c;
  15385. while (t.length < len) {
  15386. c = i2ops(i++);
  15387. t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]);
  15388. }
  15389. return t.slice(0, len);
  15390. };
  15391. function i2ops(c) {
  15392. var out = new Buffer(4);
  15393. out.writeUInt32BE(c,0);
  15394. return out;
  15395. }
  15396. }).call(this,require("buffer").Buffer)
  15397. },{"buffer":54,"create-hash":58}],129:[function(require,module,exports){
  15398. (function (Buffer){
  15399. var parseKeys = require('parse-asn1');
  15400. var mgf = require('./mgf');
  15401. var xor = require('./xor');
  15402. var bn = require('bn.js');
  15403. var crt = require('browserify-rsa');
  15404. var createHash = require('create-hash');
  15405. var withPublic = require('./withPublic');
  15406. module.exports = function privateDecrypt(private_key, enc, reverse) {
  15407. var padding;
  15408. if (private_key.padding) {
  15409. padding = private_key.padding;
  15410. } else if (reverse) {
  15411. padding = 1;
  15412. } else {
  15413. padding = 4;
  15414. }
  15415. var key = parseKeys(private_key);
  15416. var k = key.modulus.byteLength();
  15417. if (enc.length > k || new bn(enc).cmp(key.modulus) >= 0) {
  15418. throw new Error('decryption error');
  15419. }
  15420. var msg;
  15421. if (reverse) {
  15422. msg = withPublic(new bn(enc), key);
  15423. } else {
  15424. msg = crt(enc, key);
  15425. }
  15426. var zBuffer = new Buffer(k - msg.length);
  15427. zBuffer.fill(0);
  15428. msg = Buffer.concat([zBuffer, msg], k);
  15429. if (padding === 4) {
  15430. return oaep(key, msg);
  15431. } else if (padding === 1) {
  15432. return pkcs1(key, msg, reverse);
  15433. } else if (padding === 3) {
  15434. return msg;
  15435. } else {
  15436. throw new Error('unknown padding');
  15437. }
  15438. };
  15439. function oaep(key, msg){
  15440. var n = key.modulus;
  15441. var k = key.modulus.byteLength();
  15442. var mLen = msg.length;
  15443. var iHash = createHash('sha1').update(new Buffer('')).digest();
  15444. var hLen = iHash.length;
  15445. var hLen2 = 2 * hLen;
  15446. if (msg[0] !== 0) {
  15447. throw new Error('decryption error');
  15448. }
  15449. var maskedSeed = msg.slice(1, hLen + 1);
  15450. var maskedDb = msg.slice(hLen + 1);
  15451. var seed = xor(maskedSeed, mgf(maskedDb, hLen));
  15452. var db = xor(maskedDb, mgf(seed, k - hLen - 1));
  15453. if (compare(iHash, db.slice(0, hLen))) {
  15454. throw new Error('decryption error');
  15455. }
  15456. var i = hLen;
  15457. while (db[i] === 0) {
  15458. i++;
  15459. }
  15460. if (db[i++] !== 1) {
  15461. throw new Error('decryption error');
  15462. }
  15463. return db.slice(i);
  15464. }
  15465. function pkcs1(key, msg, reverse){
  15466. var p1 = msg.slice(0, 2);
  15467. var i = 2;
  15468. var status = 0;
  15469. while (msg[i++] !== 0) {
  15470. if (i >= msg.length) {
  15471. status++;
  15472. break;
  15473. }
  15474. }
  15475. var ps = msg.slice(2, i - 1);
  15476. var p2 = msg.slice(i - 1, i);
  15477. if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)){
  15478. status++;
  15479. }
  15480. if (ps.length < 8) {
  15481. status++;
  15482. }
  15483. if (status) {
  15484. throw new Error('decryption error');
  15485. }
  15486. return msg.slice(i);
  15487. }
  15488. function compare(a, b){
  15489. a = new Buffer(a);
  15490. b = new Buffer(b);
  15491. var dif = 0;
  15492. var len = a.length;
  15493. if (a.length !== b.length) {
  15494. dif++;
  15495. len = Math.min(a.length, b.length);
  15496. }
  15497. var i = -1;
  15498. while (++i < len) {
  15499. dif += (a[i] ^ b[i]);
  15500. }
  15501. return dif;
  15502. }
  15503. }).call(this,require("buffer").Buffer)
  15504. },{"./mgf":128,"./withPublic":131,"./xor":132,"bn.js":25,"browserify-rsa":46,"buffer":54,"create-hash":58,"parse-asn1":118}],130:[function(require,module,exports){
  15505. (function (Buffer){
  15506. var parseKeys = require('parse-asn1');
  15507. var randomBytes = require('randombytes');
  15508. var createHash = require('create-hash');
  15509. var mgf = require('./mgf');
  15510. var xor = require('./xor');
  15511. var bn = require('bn.js');
  15512. var withPublic = require('./withPublic');
  15513. var crt = require('browserify-rsa');
  15514. var constants = {
  15515. RSA_PKCS1_OAEP_PADDING: 4,
  15516. RSA_PKCS1_PADDIN: 1,
  15517. RSA_NO_PADDING: 3
  15518. };
  15519. module.exports = function publicEncrypt(public_key, msg, reverse) {
  15520. var padding;
  15521. if (public_key.padding) {
  15522. padding = public_key.padding;
  15523. } else if (reverse) {
  15524. padding = 1;
  15525. } else {
  15526. padding = 4;
  15527. }
  15528. var key = parseKeys(public_key);
  15529. var paddedMsg;
  15530. if (padding === 4) {
  15531. paddedMsg = oaep(key, msg);
  15532. } else if (padding === 1) {
  15533. paddedMsg = pkcs1(key, msg, reverse);
  15534. } else if (padding === 3) {
  15535. paddedMsg = new bn(msg);
  15536. if (paddedMsg.cmp(key.modulus) >= 0) {
  15537. throw new Error('data too long for modulus');
  15538. }
  15539. } else {
  15540. throw new Error('unknown padding');
  15541. }
  15542. if (reverse) {
  15543. return crt(paddedMsg, key);
  15544. } else {
  15545. return withPublic(paddedMsg, key);
  15546. }
  15547. };
  15548. function oaep(key, msg){
  15549. var k = key.modulus.byteLength();
  15550. var mLen = msg.length;
  15551. var iHash = createHash('sha1').update(new Buffer('')).digest();
  15552. var hLen = iHash.length;
  15553. var hLen2 = 2 * hLen;
  15554. if (mLen > k - hLen2 - 2) {
  15555. throw new Error('message too long');
  15556. }
  15557. var ps = new Buffer(k - mLen - hLen2 - 2);
  15558. ps.fill(0);
  15559. var dblen = k - hLen - 1;
  15560. var seed = randomBytes(hLen);
  15561. var maskedDb = xor(Buffer.concat([iHash, ps, new Buffer([1]), msg], dblen), mgf(seed, dblen));
  15562. var maskedSeed = xor(seed, mgf(maskedDb, hLen));
  15563. return new bn(Buffer.concat([new Buffer([0]), maskedSeed, maskedDb], k));
  15564. }
  15565. function pkcs1(key, msg, reverse){
  15566. var mLen = msg.length;
  15567. var k = key.modulus.byteLength();
  15568. if (mLen > k - 11) {
  15569. throw new Error('message too long');
  15570. }
  15571. var ps;
  15572. if (reverse) {
  15573. ps = new Buffer(k - mLen - 3);
  15574. ps.fill(0xff);
  15575. } else {
  15576. ps = nonZero(k - mLen - 3);
  15577. }
  15578. return new bn(Buffer.concat([new Buffer([0, reverse?1:2]), ps, new Buffer([0]), msg], k));
  15579. }
  15580. function nonZero(len, crypto) {
  15581. var out = new Buffer(len);
  15582. var i = 0;
  15583. var cache = randomBytes(len*2);
  15584. var cur = 0;
  15585. var num;
  15586. while (i < len) {
  15587. if (cur === cache.length) {
  15588. cache = randomBytes(len*2);
  15589. cur = 0;
  15590. }
  15591. num = cache[cur++];
  15592. if (num) {
  15593. out[i++] = num;
  15594. }
  15595. }
  15596. return out;
  15597. }
  15598. }).call(this,require("buffer").Buffer)
  15599. },{"./mgf":128,"./withPublic":131,"./xor":132,"bn.js":25,"browserify-rsa":46,"buffer":54,"create-hash":58,"parse-asn1":118,"randombytes":133}],131:[function(require,module,exports){
  15600. (function (Buffer){
  15601. var bn = require('bn.js');
  15602. function withPublic(paddedMsg, key) {
  15603. return new Buffer(paddedMsg
  15604. .toRed(bn.mont(key.modulus))
  15605. .redPow(new bn(key.publicExponent))
  15606. .fromRed()
  15607. .toArray());
  15608. }
  15609. module.exports = withPublic;
  15610. }).call(this,require("buffer").Buffer)
  15611. },{"bn.js":25,"buffer":54}],132:[function(require,module,exports){
  15612. module.exports = function xor(a, b) {
  15613. var len = a.length;
  15614. var i = -1;
  15615. while (++i < len) {
  15616. a[i] ^= b[i];
  15617. }
  15618. return a
  15619. };
  15620. },{}],133:[function(require,module,exports){
  15621. (function (process,global){
  15622. 'use strict'
  15623. function oldBrowser () {
  15624. throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11')
  15625. }
  15626. var Buffer = require('safe-buffer').Buffer
  15627. var crypto = global.crypto || global.msCrypto
  15628. if (crypto && crypto.getRandomValues) {
  15629. module.exports = randomBytes
  15630. } else {
  15631. module.exports = oldBrowser
  15632. }
  15633. function randomBytes (size, cb) {
  15634. // phantomjs needs to throw
  15635. if (size > 65536) throw new Error('requested too many random bytes')
  15636. // in case browserify isn't using the Uint8Array version
  15637. var rawBytes = new global.Uint8Array(size)
  15638. // This will not work in older browsers.
  15639. // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
  15640. if (size > 0) { // getRandomValues fails on IE if size == 0
  15641. crypto.getRandomValues(rawBytes)
  15642. }
  15643. // XXX: phantomjs doesn't like a buffer being passed here
  15644. var bytes = Buffer.from(rawBytes.buffer)
  15645. if (typeof cb === 'function') {
  15646. return process.nextTick(function () {
  15647. cb(null, bytes)
  15648. })
  15649. }
  15650. return bytes
  15651. }
  15652. }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
  15653. },{"_process":126,"safe-buffer":148}],134:[function(require,module,exports){
  15654. module.exports = require('./lib/_stream_duplex.js');
  15655. },{"./lib/_stream_duplex.js":135}],135:[function(require,module,exports){
  15656. // Copyright Joyent, Inc. and other Node contributors.
  15657. //
  15658. // Permission is hereby granted, free of charge, to any person obtaining a
  15659. // copy of this software and associated documentation files (the
  15660. // "Software"), to deal in the Software without restriction, including
  15661. // without limitation the rights to use, copy, modify, merge, publish,
  15662. // distribute, sublicense, and/or sell copies of the Software, and to permit
  15663. // persons to whom the Software is furnished to do so, subject to the
  15664. // following conditions:
  15665. //
  15666. // The above copyright notice and this permission notice shall be included
  15667. // in all copies or substantial portions of the Software.
  15668. //
  15669. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  15670. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  15671. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  15672. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  15673. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  15674. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  15675. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  15676. // a duplex stream is just a stream that is both readable and writable.
  15677. // Since JS doesn't have multiple prototypal inheritance, this class
  15678. // prototypally inherits from Readable, and then parasitically from
  15679. // Writable.
  15680. 'use strict';
  15681. /*<replacement>*/
  15682. var processNextTick = require('process-nextick-args');
  15683. /*</replacement>*/
  15684. /*<replacement>*/
  15685. var objectKeys = Object.keys || function (obj) {
  15686. var keys = [];
  15687. for (var key in obj) {
  15688. keys.push(key);
  15689. }return keys;
  15690. };
  15691. /*</replacement>*/
  15692. module.exports = Duplex;
  15693. /*<replacement>*/
  15694. var util = require('core-util-is');
  15695. util.inherits = require('inherits');
  15696. /*</replacement>*/
  15697. var Readable = require('./_stream_readable');
  15698. var Writable = require('./_stream_writable');
  15699. util.inherits(Duplex, Readable);
  15700. var keys = objectKeys(Writable.prototype);
  15701. for (var v = 0; v < keys.length; v++) {
  15702. var method = keys[v];
  15703. if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
  15704. }
  15705. function Duplex(options) {
  15706. if (!(this instanceof Duplex)) return new Duplex(options);
  15707. Readable.call(this, options);
  15708. Writable.call(this, options);
  15709. if (options && options.readable === false) this.readable = false;
  15710. if (options && options.writable === false) this.writable = false;
  15711. this.allowHalfOpen = true;
  15712. if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
  15713. this.once('end', onend);
  15714. }
  15715. // the no-half-open enforcer
  15716. function onend() {
  15717. // if we allow half-open state, or if the writable side ended,
  15718. // then we're ok.
  15719. if (this.allowHalfOpen || this._writableState.ended) return;
  15720. // no more data can be written.
  15721. // But allow more writes to happen in this tick.
  15722. processNextTick(onEndNT, this);
  15723. }
  15724. function onEndNT(self) {
  15725. self.end();
  15726. }
  15727. Object.defineProperty(Duplex.prototype, 'destroyed', {
  15728. get: function () {
  15729. if (this._readableState === undefined || this._writableState === undefined) {
  15730. return false;
  15731. }
  15732. return this._readableState.destroyed && this._writableState.destroyed;
  15733. },
  15734. set: function (value) {
  15735. // we ignore the value if the stream
  15736. // has not been initialized yet
  15737. if (this._readableState === undefined || this._writableState === undefined) {
  15738. return;
  15739. }
  15740. // backward compatibility, the user is explicitly
  15741. // managing destroyed
  15742. this._readableState.destroyed = value;
  15743. this._writableState.destroyed = value;
  15744. }
  15745. });
  15746. Duplex.prototype._destroy = function (err, cb) {
  15747. this.push(null);
  15748. this.end();
  15749. processNextTick(cb, err);
  15750. };
  15751. function forEach(xs, f) {
  15752. for (var i = 0, l = xs.length; i < l; i++) {
  15753. f(xs[i], i);
  15754. }
  15755. }
  15756. },{"./_stream_readable":137,"./_stream_writable":139,"core-util-is":56,"inherits":108,"process-nextick-args":125}],136:[function(require,module,exports){
  15757. // Copyright Joyent, Inc. and other Node contributors.
  15758. //
  15759. // Permission is hereby granted, free of charge, to any person obtaining a
  15760. // copy of this software and associated documentation files (the
  15761. // "Software"), to deal in the Software without restriction, including
  15762. // without limitation the rights to use, copy, modify, merge, publish,
  15763. // distribute, sublicense, and/or sell copies of the Software, and to permit
  15764. // persons to whom the Software is furnished to do so, subject to the
  15765. // following conditions:
  15766. //
  15767. // The above copyright notice and this permission notice shall be included
  15768. // in all copies or substantial portions of the Software.
  15769. //
  15770. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  15771. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  15772. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  15773. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  15774. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  15775. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  15776. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  15777. // a passthrough stream.
  15778. // basically just the most minimal sort of Transform stream.
  15779. // Every written chunk gets output as-is.
  15780. 'use strict';
  15781. module.exports = PassThrough;
  15782. var Transform = require('./_stream_transform');
  15783. /*<replacement>*/
  15784. var util = require('core-util-is');
  15785. util.inherits = require('inherits');
  15786. /*</replacement>*/
  15787. util.inherits(PassThrough, Transform);
  15788. function PassThrough(options) {
  15789. if (!(this instanceof PassThrough)) return new PassThrough(options);
  15790. Transform.call(this, options);
  15791. }
  15792. PassThrough.prototype._transform = function (chunk, encoding, cb) {
  15793. cb(null, chunk);
  15794. };
  15795. },{"./_stream_transform":138,"core-util-is":56,"inherits":108}],137:[function(require,module,exports){
  15796. (function (process,global){
  15797. // Copyright Joyent, Inc. and other Node contributors.
  15798. //
  15799. // Permission is hereby granted, free of charge, to any person obtaining a
  15800. // copy of this software and associated documentation files (the
  15801. // "Software"), to deal in the Software without restriction, including
  15802. // without limitation the rights to use, copy, modify, merge, publish,
  15803. // distribute, sublicense, and/or sell copies of the Software, and to permit
  15804. // persons to whom the Software is furnished to do so, subject to the
  15805. // following conditions:
  15806. //
  15807. // The above copyright notice and this permission notice shall be included
  15808. // in all copies or substantial portions of the Software.
  15809. //
  15810. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  15811. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  15812. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  15813. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  15814. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  15815. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  15816. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  15817. 'use strict';
  15818. /*<replacement>*/
  15819. var processNextTick = require('process-nextick-args');
  15820. /*</replacement>*/
  15821. module.exports = Readable;
  15822. /*<replacement>*/
  15823. var isArray = require('isarray');
  15824. /*</replacement>*/
  15825. /*<replacement>*/
  15826. var Duplex;
  15827. /*</replacement>*/
  15828. Readable.ReadableState = ReadableState;
  15829. /*<replacement>*/
  15830. var EE = require('events').EventEmitter;
  15831. var EElistenerCount = function (emitter, type) {
  15832. return emitter.listeners(type).length;
  15833. };
  15834. /*</replacement>*/
  15835. /*<replacement>*/
  15836. var Stream = require('./internal/streams/stream');
  15837. /*</replacement>*/
  15838. // TODO(bmeurer): Change this back to const once hole checks are
  15839. // properly optimized away early in Ignition+TurboFan.
  15840. /*<replacement>*/
  15841. var Buffer = require('safe-buffer').Buffer;
  15842. var OurUint8Array = global.Uint8Array || function () {};
  15843. function _uint8ArrayToBuffer(chunk) {
  15844. return Buffer.from(chunk);
  15845. }
  15846. function _isUint8Array(obj) {
  15847. return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
  15848. }
  15849. /*</replacement>*/
  15850. /*<replacement>*/
  15851. var util = require('core-util-is');
  15852. util.inherits = require('inherits');
  15853. /*</replacement>*/
  15854. /*<replacement>*/
  15855. var debugUtil = require('util');
  15856. var debug = void 0;
  15857. if (debugUtil && debugUtil.debuglog) {
  15858. debug = debugUtil.debuglog('stream');
  15859. } else {
  15860. debug = function () {};
  15861. }
  15862. /*</replacement>*/
  15863. var BufferList = require('./internal/streams/BufferList');
  15864. var destroyImpl = require('./internal/streams/destroy');
  15865. var StringDecoder;
  15866. util.inherits(Readable, Stream);
  15867. var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
  15868. function prependListener(emitter, event, fn) {
  15869. // Sadly this is not cacheable as some libraries bundle their own
  15870. // event emitter implementation with them.
  15871. if (typeof emitter.prependListener === 'function') {
  15872. return emitter.prependListener(event, fn);
  15873. } else {
  15874. // This is a hack to make sure that our error handler is attached before any
  15875. // userland ones. NEVER DO THIS. This is here only because this code needs
  15876. // to continue to work with older versions of Node.js that do not include
  15877. // the prependListener() method. The goal is to eventually remove this hack.
  15878. if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
  15879. }
  15880. }
  15881. function ReadableState(options, stream) {
  15882. Duplex = Duplex || require('./_stream_duplex');
  15883. options = options || {};
  15884. // object stream flag. Used to make read(n) ignore n and to
  15885. // make all the buffer merging and length checks go away
  15886. this.objectMode = !!options.objectMode;
  15887. if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
  15888. // the point at which it stops calling _read() to fill the buffer
  15889. // Note: 0 is a valid value, means "don't call _read preemptively ever"
  15890. var hwm = options.highWaterMark;
  15891. var defaultHwm = this.objectMode ? 16 : 16 * 1024;
  15892. this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
  15893. // cast to ints.
  15894. this.highWaterMark = Math.floor(this.highWaterMark);
  15895. // A linked list is used to store data chunks instead of an array because the
  15896. // linked list can remove elements from the beginning faster than
  15897. // array.shift()
  15898. this.buffer = new BufferList();
  15899. this.length = 0;
  15900. this.pipes = null;
  15901. this.pipesCount = 0;
  15902. this.flowing = null;
  15903. this.ended = false;
  15904. this.endEmitted = false;
  15905. this.reading = false;
  15906. // a flag to be able to tell if the event 'readable'/'data' is emitted
  15907. // immediately, or on a later tick. We set this to true at first, because
  15908. // any actions that shouldn't happen until "later" should generally also
  15909. // not happen before the first read call.
  15910. this.sync = true;
  15911. // whenever we return null, then we set a flag to say
  15912. // that we're awaiting a 'readable' event emission.
  15913. this.needReadable = false;
  15914. this.emittedReadable = false;
  15915. this.readableListening = false;
  15916. this.resumeScheduled = false;
  15917. // has it been destroyed
  15918. this.destroyed = false;
  15919. // Crypto is kind of old and crusty. Historically, its default string
  15920. // encoding is 'binary' so we have to make this configurable.
  15921. // Everything else in the universe uses 'utf8', though.
  15922. this.defaultEncoding = options.defaultEncoding || 'utf8';
  15923. // the number of writers that are awaiting a drain event in .pipe()s
  15924. this.awaitDrain = 0;
  15925. // if true, a maybeReadMore has been scheduled
  15926. this.readingMore = false;
  15927. this.decoder = null;
  15928. this.encoding = null;
  15929. if (options.encoding) {
  15930. if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
  15931. this.decoder = new StringDecoder(options.encoding);
  15932. this.encoding = options.encoding;
  15933. }
  15934. }
  15935. function Readable(options) {
  15936. Duplex = Duplex || require('./_stream_duplex');
  15937. if (!(this instanceof Readable)) return new Readable(options);
  15938. this._readableState = new ReadableState(options, this);
  15939. // legacy
  15940. this.readable = true;
  15941. if (options) {
  15942. if (typeof options.read === 'function') this._read = options.read;
  15943. if (typeof options.destroy === 'function') this._destroy = options.destroy;
  15944. }
  15945. Stream.call(this);
  15946. }
  15947. Object.defineProperty(Readable.prototype, 'destroyed', {
  15948. get: function () {
  15949. if (this._readableState === undefined) {
  15950. return false;
  15951. }
  15952. return this._readableState.destroyed;
  15953. },
  15954. set: function (value) {
  15955. // we ignore the value if the stream
  15956. // has not been initialized yet
  15957. if (!this._readableState) {
  15958. return;
  15959. }
  15960. // backward compatibility, the user is explicitly
  15961. // managing destroyed
  15962. this._readableState.destroyed = value;
  15963. }
  15964. });
  15965. Readable.prototype.destroy = destroyImpl.destroy;
  15966. Readable.prototype._undestroy = destroyImpl.undestroy;
  15967. Readable.prototype._destroy = function (err, cb) {
  15968. this.push(null);
  15969. cb(err);
  15970. };
  15971. // Manually shove something into the read() buffer.
  15972. // This returns true if the highWaterMark has not been hit yet,
  15973. // similar to how Writable.write() returns true if you should
  15974. // write() some more.
  15975. Readable.prototype.push = function (chunk, encoding) {
  15976. var state = this._readableState;
  15977. var skipChunkCheck;
  15978. if (!state.objectMode) {
  15979. if (typeof chunk === 'string') {
  15980. encoding = encoding || state.defaultEncoding;
  15981. if (encoding !== state.encoding) {
  15982. chunk = Buffer.from(chunk, encoding);
  15983. encoding = '';
  15984. }
  15985. skipChunkCheck = true;
  15986. }
  15987. } else {
  15988. skipChunkCheck = true;
  15989. }
  15990. return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
  15991. };
  15992. // Unshift should *always* be something directly out of read()
  15993. Readable.prototype.unshift = function (chunk) {
  15994. return readableAddChunk(this, chunk, null, true, false);
  15995. };
  15996. function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
  15997. var state = stream._readableState;
  15998. if (chunk === null) {
  15999. state.reading = false;
  16000. onEofChunk(stream, state);
  16001. } else {
  16002. var er;
  16003. if (!skipChunkCheck) er = chunkInvalid(state, chunk);
  16004. if (er) {
  16005. stream.emit('error', er);
  16006. } else if (state.objectMode || chunk && chunk.length > 0) {
  16007. if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
  16008. chunk = _uint8ArrayToBuffer(chunk);
  16009. }
  16010. if (addToFront) {
  16011. if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
  16012. } else if (state.ended) {
  16013. stream.emit('error', new Error('stream.push() after EOF'));
  16014. } else {
  16015. state.reading = false;
  16016. if (state.decoder && !encoding) {
  16017. chunk = state.decoder.write(chunk);
  16018. if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
  16019. } else {
  16020. addChunk(stream, state, chunk, false);
  16021. }
  16022. }
  16023. } else if (!addToFront) {
  16024. state.reading = false;
  16025. }
  16026. }
  16027. return needMoreData(state);
  16028. }
  16029. function addChunk(stream, state, chunk, addToFront) {
  16030. if (state.flowing && state.length === 0 && !state.sync) {
  16031. stream.emit('data', chunk);
  16032. stream.read(0);
  16033. } else {
  16034. // update the buffer info.
  16035. state.length += state.objectMode ? 1 : chunk.length;
  16036. if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
  16037. if (state.needReadable) emitReadable(stream);
  16038. }
  16039. maybeReadMore(stream, state);
  16040. }
  16041. function chunkInvalid(state, chunk) {
  16042. var er;
  16043. if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
  16044. er = new TypeError('Invalid non-string/buffer chunk');
  16045. }
  16046. return er;
  16047. }
  16048. // if it's past the high water mark, we can push in some more.
  16049. // Also, if we have no data yet, we can stand some
  16050. // more bytes. This is to work around cases where hwm=0,
  16051. // such as the repl. Also, if the push() triggered a
  16052. // readable event, and the user called read(largeNumber) such that
  16053. // needReadable was set, then we ought to push more, so that another
  16054. // 'readable' event will be triggered.
  16055. function needMoreData(state) {
  16056. return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
  16057. }
  16058. Readable.prototype.isPaused = function () {
  16059. return this._readableState.flowing === false;
  16060. };
  16061. // backwards compatibility.
  16062. Readable.prototype.setEncoding = function (enc) {
  16063. if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
  16064. this._readableState.decoder = new StringDecoder(enc);
  16065. this._readableState.encoding = enc;
  16066. return this;
  16067. };
  16068. // Don't raise the hwm > 8MB
  16069. var MAX_HWM = 0x800000;
  16070. function computeNewHighWaterMark(n) {
  16071. if (n >= MAX_HWM) {
  16072. n = MAX_HWM;
  16073. } else {
  16074. // Get the next highest power of 2 to prevent increasing hwm excessively in
  16075. // tiny amounts
  16076. n--;
  16077. n |= n >>> 1;
  16078. n |= n >>> 2;
  16079. n |= n >>> 4;
  16080. n |= n >>> 8;
  16081. n |= n >>> 16;
  16082. n++;
  16083. }
  16084. return n;
  16085. }
  16086. // This function is designed to be inlinable, so please take care when making
  16087. // changes to the function body.
  16088. function howMuchToRead(n, state) {
  16089. if (n <= 0 || state.length === 0 && state.ended) return 0;
  16090. if (state.objectMode) return 1;
  16091. if (n !== n) {
  16092. // Only flow one buffer at a time
  16093. if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
  16094. }
  16095. // If we're asking for more than the current hwm, then raise the hwm.
  16096. if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
  16097. if (n <= state.length) return n;
  16098. // Don't have enough
  16099. if (!state.ended) {
  16100. state.needReadable = true;
  16101. return 0;
  16102. }
  16103. return state.length;
  16104. }
  16105. // you can override either this method, or the async _read(n) below.
  16106. Readable.prototype.read = function (n) {
  16107. debug('read', n);
  16108. n = parseInt(n, 10);
  16109. var state = this._readableState;
  16110. var nOrig = n;
  16111. if (n !== 0) state.emittedReadable = false;
  16112. // if we're doing read(0) to trigger a readable event, but we
  16113. // already have a bunch of data in the buffer, then just trigger
  16114. // the 'readable' event and move on.
  16115. if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
  16116. debug('read: emitReadable', state.length, state.ended);
  16117. if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
  16118. return null;
  16119. }
  16120. n = howMuchToRead(n, state);
  16121. // if we've ended, and we're now clear, then finish it up.
  16122. if (n === 0 && state.ended) {
  16123. if (state.length === 0) endReadable(this);
  16124. return null;
  16125. }
  16126. // All the actual chunk generation logic needs to be
  16127. // *below* the call to _read. The reason is that in certain
  16128. // synthetic stream cases, such as passthrough streams, _read
  16129. // may be a completely synchronous operation which may change
  16130. // the state of the read buffer, providing enough data when
  16131. // before there was *not* enough.
  16132. //
  16133. // So, the steps are:
  16134. // 1. Figure out what the state of things will be after we do
  16135. // a read from the buffer.
  16136. //
  16137. // 2. If that resulting state will trigger a _read, then call _read.
  16138. // Note that this may be asynchronous, or synchronous. Yes, it is
  16139. // deeply ugly to write APIs this way, but that still doesn't mean
  16140. // that the Readable class should behave improperly, as streams are
  16141. // designed to be sync/async agnostic.
  16142. // Take note if the _read call is sync or async (ie, if the read call
  16143. // has returned yet), so that we know whether or not it's safe to emit
  16144. // 'readable' etc.
  16145. //
  16146. // 3. Actually pull the requested chunks out of the buffer and return.
  16147. // if we need a readable event, then we need to do some reading.
  16148. var doRead = state.needReadable;
  16149. debug('need readable', doRead);
  16150. // if we currently have less than the highWaterMark, then also read some
  16151. if (state.length === 0 || state.length - n < state.highWaterMark) {
  16152. doRead = true;
  16153. debug('length less than watermark', doRead);
  16154. }
  16155. // however, if we've ended, then there's no point, and if we're already
  16156. // reading, then it's unnecessary.
  16157. if (state.ended || state.reading) {
  16158. doRead = false;
  16159. debug('reading or ended', doRead);
  16160. } else if (doRead) {
  16161. debug('do read');
  16162. state.reading = true;
  16163. state.sync = true;
  16164. // if the length is currently zero, then we *need* a readable event.
  16165. if (state.length === 0) state.needReadable = true;
  16166. // call internal read method
  16167. this._read(state.highWaterMark);
  16168. state.sync = false;
  16169. // If _read pushed data synchronously, then `reading` will be false,
  16170. // and we need to re-evaluate how much data we can return to the user.
  16171. if (!state.reading) n = howMuchToRead(nOrig, state);
  16172. }
  16173. var ret;
  16174. if (n > 0) ret = fromList(n, state);else ret = null;
  16175. if (ret === null) {
  16176. state.needReadable = true;
  16177. n = 0;
  16178. } else {
  16179. state.length -= n;
  16180. }
  16181. if (state.length === 0) {
  16182. // If we have nothing in the buffer, then we want to know
  16183. // as soon as we *do* get something into the buffer.
  16184. if (!state.ended) state.needReadable = true;
  16185. // If we tried to read() past the EOF, then emit end on the next tick.
  16186. if (nOrig !== n && state.ended) endReadable(this);
  16187. }
  16188. if (ret !== null) this.emit('data', ret);
  16189. return ret;
  16190. };
  16191. function onEofChunk(stream, state) {
  16192. if (state.ended) return;
  16193. if (state.decoder) {
  16194. var chunk = state.decoder.end();
  16195. if (chunk && chunk.length) {
  16196. state.buffer.push(chunk);
  16197. state.length += state.objectMode ? 1 : chunk.length;
  16198. }
  16199. }
  16200. state.ended = true;
  16201. // emit 'readable' now to make sure it gets picked up.
  16202. emitReadable(stream);
  16203. }
  16204. // Don't emit readable right away in sync mode, because this can trigger
  16205. // another read() call => stack overflow. This way, it might trigger
  16206. // a nextTick recursion warning, but that's not so bad.
  16207. function emitReadable(stream) {
  16208. var state = stream._readableState;
  16209. state.needReadable = false;
  16210. if (!state.emittedReadable) {
  16211. debug('emitReadable', state.flowing);
  16212. state.emittedReadable = true;
  16213. if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
  16214. }
  16215. }
  16216. function emitReadable_(stream) {
  16217. debug('emit readable');
  16218. stream.emit('readable');
  16219. flow(stream);
  16220. }
  16221. // at this point, the user has presumably seen the 'readable' event,
  16222. // and called read() to consume some data. that may have triggered
  16223. // in turn another _read(n) call, in which case reading = true if
  16224. // it's in progress.
  16225. // However, if we're not ended, or reading, and the length < hwm,
  16226. // then go ahead and try to read some more preemptively.
  16227. function maybeReadMore(stream, state) {
  16228. if (!state.readingMore) {
  16229. state.readingMore = true;
  16230. processNextTick(maybeReadMore_, stream, state);
  16231. }
  16232. }
  16233. function maybeReadMore_(stream, state) {
  16234. var len = state.length;
  16235. while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
  16236. debug('maybeReadMore read 0');
  16237. stream.read(0);
  16238. if (len === state.length)
  16239. // didn't get any data, stop spinning.
  16240. break;else len = state.length;
  16241. }
  16242. state.readingMore = false;
  16243. }
  16244. // abstract method. to be overridden in specific implementation classes.
  16245. // call cb(er, data) where data is <= n in length.
  16246. // for virtual (non-string, non-buffer) streams, "length" is somewhat
  16247. // arbitrary, and perhaps not very meaningful.
  16248. Readable.prototype._read = function (n) {
  16249. this.emit('error', new Error('_read() is not implemented'));
  16250. };
  16251. Readable.prototype.pipe = function (dest, pipeOpts) {
  16252. var src = this;
  16253. var state = this._readableState;
  16254. switch (state.pipesCount) {
  16255. case 0:
  16256. state.pipes = dest;
  16257. break;
  16258. case 1:
  16259. state.pipes = [state.pipes, dest];
  16260. break;
  16261. default:
  16262. state.pipes.push(dest);
  16263. break;
  16264. }
  16265. state.pipesCount += 1;
  16266. debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
  16267. var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
  16268. var endFn = doEnd ? onend : unpipe;
  16269. if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
  16270. dest.on('unpipe', onunpipe);
  16271. function onunpipe(readable, unpipeInfo) {
  16272. debug('onunpipe');
  16273. if (readable === src) {
  16274. if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
  16275. unpipeInfo.hasUnpiped = true;
  16276. cleanup();
  16277. }
  16278. }
  16279. }
  16280. function onend() {
  16281. debug('onend');
  16282. dest.end();
  16283. }
  16284. // when the dest drains, it reduces the awaitDrain counter
  16285. // on the source. This would be more elegant with a .once()
  16286. // handler in flow(), but adding and removing repeatedly is
  16287. // too slow.
  16288. var ondrain = pipeOnDrain(src);
  16289. dest.on('drain', ondrain);
  16290. var cleanedUp = false;
  16291. function cleanup() {
  16292. debug('cleanup');
  16293. // cleanup event handlers once the pipe is broken
  16294. dest.removeListener('close', onclose);
  16295. dest.removeListener('finish', onfinish);
  16296. dest.removeListener('drain', ondrain);
  16297. dest.removeListener('error', onerror);
  16298. dest.removeListener('unpipe', onunpipe);
  16299. src.removeListener('end', onend);
  16300. src.removeListener('end', unpipe);
  16301. src.removeListener('data', ondata);
  16302. cleanedUp = true;
  16303. // if the reader is waiting for a drain event from this
  16304. // specific writer, then it would cause it to never start
  16305. // flowing again.
  16306. // So, if this is awaiting a drain, then we just call it now.
  16307. // If we don't know, then assume that we are waiting for one.
  16308. if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
  16309. }
  16310. // If the user pushes more data while we're writing to dest then we'll end up
  16311. // in ondata again. However, we only want to increase awaitDrain once because
  16312. // dest will only emit one 'drain' event for the multiple writes.
  16313. // => Introduce a guard on increasing awaitDrain.
  16314. var increasedAwaitDrain = false;
  16315. src.on('data', ondata);
  16316. function ondata(chunk) {
  16317. debug('ondata');
  16318. increasedAwaitDrain = false;
  16319. var ret = dest.write(chunk);
  16320. if (false === ret && !increasedAwaitDrain) {
  16321. // If the user unpiped during `dest.write()`, it is possible
  16322. // to get stuck in a permanently paused state if that write
  16323. // also returned false.
  16324. // => Check whether `dest` is still a piping destination.
  16325. if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
  16326. debug('false write response, pause', src._readableState.awaitDrain);
  16327. src._readableState.awaitDrain++;
  16328. increasedAwaitDrain = true;
  16329. }
  16330. src.pause();
  16331. }
  16332. }
  16333. // if the dest has an error, then stop piping into it.
  16334. // however, don't suppress the throwing behavior for this.
  16335. function onerror(er) {
  16336. debug('onerror', er);
  16337. unpipe();
  16338. dest.removeListener('error', onerror);
  16339. if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
  16340. }
  16341. // Make sure our error handler is attached before userland ones.
  16342. prependListener(dest, 'error', onerror);
  16343. // Both close and finish should trigger unpipe, but only once.
  16344. function onclose() {
  16345. dest.removeListener('finish', onfinish);
  16346. unpipe();
  16347. }
  16348. dest.once('close', onclose);
  16349. function onfinish() {
  16350. debug('onfinish');
  16351. dest.removeListener('close', onclose);
  16352. unpipe();
  16353. }
  16354. dest.once('finish', onfinish);
  16355. function unpipe() {
  16356. debug('unpipe');
  16357. src.unpipe(dest);
  16358. }
  16359. // tell the dest that it's being piped to
  16360. dest.emit('pipe', src);
  16361. // start the flow if it hasn't been started already.
  16362. if (!state.flowing) {
  16363. debug('pipe resume');
  16364. src.resume();
  16365. }
  16366. return dest;
  16367. };
  16368. function pipeOnDrain(src) {
  16369. return function () {
  16370. var state = src._readableState;
  16371. debug('pipeOnDrain', state.awaitDrain);
  16372. if (state.awaitDrain) state.awaitDrain--;
  16373. if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
  16374. state.flowing = true;
  16375. flow(src);
  16376. }
  16377. };
  16378. }
  16379. Readable.prototype.unpipe = function (dest) {
  16380. var state = this._readableState;
  16381. var unpipeInfo = { hasUnpiped: false };
  16382. // if we're not piping anywhere, then do nothing.
  16383. if (state.pipesCount === 0) return this;
  16384. // just one destination. most common case.
  16385. if (state.pipesCount === 1) {
  16386. // passed in one, but it's not the right one.
  16387. if (dest && dest !== state.pipes) return this;
  16388. if (!dest) dest = state.pipes;
  16389. // got a match.
  16390. state.pipes = null;
  16391. state.pipesCount = 0;
  16392. state.flowing = false;
  16393. if (dest) dest.emit('unpipe', this, unpipeInfo);
  16394. return this;
  16395. }
  16396. // slow case. multiple pipe destinations.
  16397. if (!dest) {
  16398. // remove all.
  16399. var dests = state.pipes;
  16400. var len = state.pipesCount;
  16401. state.pipes = null;
  16402. state.pipesCount = 0;
  16403. state.flowing = false;
  16404. for (var i = 0; i < len; i++) {
  16405. dests[i].emit('unpipe', this, unpipeInfo);
  16406. }return this;
  16407. }
  16408. // try to find the right one.
  16409. var index = indexOf(state.pipes, dest);
  16410. if (index === -1) return this;
  16411. state.pipes.splice(index, 1);
  16412. state.pipesCount -= 1;
  16413. if (state.pipesCount === 1) state.pipes = state.pipes[0];
  16414. dest.emit('unpipe', this, unpipeInfo);
  16415. return this;
  16416. };
  16417. // set up data events if they are asked for
  16418. // Ensure readable listeners eventually get something
  16419. Readable.prototype.on = function (ev, fn) {
  16420. var res = Stream.prototype.on.call(this, ev, fn);
  16421. if (ev === 'data') {
  16422. // Start flowing on next tick if stream isn't explicitly paused
  16423. if (this._readableState.flowing !== false) this.resume();
  16424. } else if (ev === 'readable') {
  16425. var state = this._readableState;
  16426. if (!state.endEmitted && !state.readableListening) {
  16427. state.readableListening = state.needReadable = true;
  16428. state.emittedReadable = false;
  16429. if (!state.reading) {
  16430. processNextTick(nReadingNextTick, this);
  16431. } else if (state.length) {
  16432. emitReadable(this);
  16433. }
  16434. }
  16435. }
  16436. return res;
  16437. };
  16438. Readable.prototype.addListener = Readable.prototype.on;
  16439. function nReadingNextTick(self) {
  16440. debug('readable nexttick read 0');
  16441. self.read(0);
  16442. }
  16443. // pause() and resume() are remnants of the legacy readable stream API
  16444. // If the user uses them, then switch into old mode.
  16445. Readable.prototype.resume = function () {
  16446. var state = this._readableState;
  16447. if (!state.flowing) {
  16448. debug('resume');
  16449. state.flowing = true;
  16450. resume(this, state);
  16451. }
  16452. return this;
  16453. };
  16454. function resume(stream, state) {
  16455. if (!state.resumeScheduled) {
  16456. state.resumeScheduled = true;
  16457. processNextTick(resume_, stream, state);
  16458. }
  16459. }
  16460. function resume_(stream, state) {
  16461. if (!state.reading) {
  16462. debug('resume read 0');
  16463. stream.read(0);
  16464. }
  16465. state.resumeScheduled = false;
  16466. state.awaitDrain = 0;
  16467. stream.emit('resume');
  16468. flow(stream);
  16469. if (state.flowing && !state.reading) stream.read(0);
  16470. }
  16471. Readable.prototype.pause = function () {
  16472. debug('call pause flowing=%j', this._readableState.flowing);
  16473. if (false !== this._readableState.flowing) {
  16474. debug('pause');
  16475. this._readableState.flowing = false;
  16476. this.emit('pause');
  16477. }
  16478. return this;
  16479. };
  16480. function flow(stream) {
  16481. var state = stream._readableState;
  16482. debug('flow', state.flowing);
  16483. while (state.flowing && stream.read() !== null) {}
  16484. }
  16485. // wrap an old-style stream as the async data source.
  16486. // This is *not* part of the readable stream interface.
  16487. // It is an ugly unfortunate mess of history.
  16488. Readable.prototype.wrap = function (stream) {
  16489. var state = this._readableState;
  16490. var paused = false;
  16491. var self = this;
  16492. stream.on('end', function () {
  16493. debug('wrapped end');
  16494. if (state.decoder && !state.ended) {
  16495. var chunk = state.decoder.end();
  16496. if (chunk && chunk.length) self.push(chunk);
  16497. }
  16498. self.push(null);
  16499. });
  16500. stream.on('data', function (chunk) {
  16501. debug('wrapped data');
  16502. if (state.decoder) chunk = state.decoder.write(chunk);
  16503. // don't skip over falsy values in objectMode
  16504. if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
  16505. var ret = self.push(chunk);
  16506. if (!ret) {
  16507. paused = true;
  16508. stream.pause();
  16509. }
  16510. });
  16511. // proxy all the other methods.
  16512. // important when wrapping filters and duplexes.
  16513. for (var i in stream) {
  16514. if (this[i] === undefined && typeof stream[i] === 'function') {
  16515. this[i] = function (method) {
  16516. return function () {
  16517. return stream[method].apply(stream, arguments);
  16518. };
  16519. }(i);
  16520. }
  16521. }
  16522. // proxy certain important events.
  16523. for (var n = 0; n < kProxyEvents.length; n++) {
  16524. stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));
  16525. }
  16526. // when we try to consume some more bytes, simply unpause the
  16527. // underlying stream.
  16528. self._read = function (n) {
  16529. debug('wrapped _read', n);
  16530. if (paused) {
  16531. paused = false;
  16532. stream.resume();
  16533. }
  16534. };
  16535. return self;
  16536. };
  16537. // exposed for testing purposes only.
  16538. Readable._fromList = fromList;
  16539. // Pluck off n bytes from an array of buffers.
  16540. // Length is the combined lengths of all the buffers in the list.
  16541. // This function is designed to be inlinable, so please take care when making
  16542. // changes to the function body.
  16543. function fromList(n, state) {
  16544. // nothing buffered
  16545. if (state.length === 0) return null;
  16546. var ret;
  16547. if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
  16548. // read it all, truncate the list
  16549. if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
  16550. state.buffer.clear();
  16551. } else {
  16552. // read part of list
  16553. ret = fromListPartial(n, state.buffer, state.decoder);
  16554. }
  16555. return ret;
  16556. }
  16557. // Extracts only enough buffered data to satisfy the amount requested.
  16558. // This function is designed to be inlinable, so please take care when making
  16559. // changes to the function body.
  16560. function fromListPartial(n, list, hasStrings) {
  16561. var ret;
  16562. if (n < list.head.data.length) {
  16563. // slice is the same for buffers and strings
  16564. ret = list.head.data.slice(0, n);
  16565. list.head.data = list.head.data.slice(n);
  16566. } else if (n === list.head.data.length) {
  16567. // first chunk is a perfect match
  16568. ret = list.shift();
  16569. } else {
  16570. // result spans more than one buffer
  16571. ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
  16572. }
  16573. return ret;
  16574. }
  16575. // Copies a specified amount of characters from the list of buffered data
  16576. // chunks.
  16577. // This function is designed to be inlinable, so please take care when making
  16578. // changes to the function body.
  16579. function copyFromBufferString(n, list) {
  16580. var p = list.head;
  16581. var c = 1;
  16582. var ret = p.data;
  16583. n -= ret.length;
  16584. while (p = p.next) {
  16585. var str = p.data;
  16586. var nb = n > str.length ? str.length : n;
  16587. if (nb === str.length) ret += str;else ret += str.slice(0, n);
  16588. n -= nb;
  16589. if (n === 0) {
  16590. if (nb === str.length) {
  16591. ++c;
  16592. if (p.next) list.head = p.next;else list.head = list.tail = null;
  16593. } else {
  16594. list.head = p;
  16595. p.data = str.slice(nb);
  16596. }
  16597. break;
  16598. }
  16599. ++c;
  16600. }
  16601. list.length -= c;
  16602. return ret;
  16603. }
  16604. // Copies a specified amount of bytes from the list of buffered data chunks.
  16605. // This function is designed to be inlinable, so please take care when making
  16606. // changes to the function body.
  16607. function copyFromBuffer(n, list) {
  16608. var ret = Buffer.allocUnsafe(n);
  16609. var p = list.head;
  16610. var c = 1;
  16611. p.data.copy(ret);
  16612. n -= p.data.length;
  16613. while (p = p.next) {
  16614. var buf = p.data;
  16615. var nb = n > buf.length ? buf.length : n;
  16616. buf.copy(ret, ret.length - n, 0, nb);
  16617. n -= nb;
  16618. if (n === 0) {
  16619. if (nb === buf.length) {
  16620. ++c;
  16621. if (p.next) list.head = p.next;else list.head = list.tail = null;
  16622. } else {
  16623. list.head = p;
  16624. p.data = buf.slice(nb);
  16625. }
  16626. break;
  16627. }
  16628. ++c;
  16629. }
  16630. list.length -= c;
  16631. return ret;
  16632. }
  16633. function endReadable(stream) {
  16634. var state = stream._readableState;
  16635. // If we get here before consuming all the bytes, then that is a
  16636. // bug in node. Should never happen.
  16637. if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
  16638. if (!state.endEmitted) {
  16639. state.ended = true;
  16640. processNextTick(endReadableNT, state, stream);
  16641. }
  16642. }
  16643. function endReadableNT(state, stream) {
  16644. // Check that we didn't get one last unshift.
  16645. if (!state.endEmitted && state.length === 0) {
  16646. state.endEmitted = true;
  16647. stream.readable = false;
  16648. stream.emit('end');
  16649. }
  16650. }
  16651. function forEach(xs, f) {
  16652. for (var i = 0, l = xs.length; i < l; i++) {
  16653. f(xs[i], i);
  16654. }
  16655. }
  16656. function indexOf(xs, x) {
  16657. for (var i = 0, l = xs.length; i < l; i++) {
  16658. if (xs[i] === x) return i;
  16659. }
  16660. return -1;
  16661. }
  16662. }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
  16663. },{"./_stream_duplex":135,"./internal/streams/BufferList":140,"./internal/streams/destroy":141,"./internal/streams/stream":142,"_process":126,"core-util-is":56,"events":90,"inherits":108,"isarray":110,"process-nextick-args":125,"safe-buffer":148,"string_decoder/":158,"util":27}],138:[function(require,module,exports){
  16664. // Copyright Joyent, Inc. and other Node contributors.
  16665. //
  16666. // Permission is hereby granted, free of charge, to any person obtaining a
  16667. // copy of this software and associated documentation files (the
  16668. // "Software"), to deal in the Software without restriction, including
  16669. // without limitation the rights to use, copy, modify, merge, publish,
  16670. // distribute, sublicense, and/or sell copies of the Software, and to permit
  16671. // persons to whom the Software is furnished to do so, subject to the
  16672. // following conditions:
  16673. //
  16674. // The above copyright notice and this permission notice shall be included
  16675. // in all copies or substantial portions of the Software.
  16676. //
  16677. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  16678. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  16679. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  16680. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  16681. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  16682. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  16683. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  16684. // a transform stream is a readable/writable stream where you do
  16685. // something with the data. Sometimes it's called a "filter",
  16686. // but that's not a great name for it, since that implies a thing where
  16687. // some bits pass through, and others are simply ignored. (That would
  16688. // be a valid example of a transform, of course.)
  16689. //
  16690. // While the output is causally related to the input, it's not a
  16691. // necessarily symmetric or synchronous transformation. For example,
  16692. // a zlib stream might take multiple plain-text writes(), and then
  16693. // emit a single compressed chunk some time in the future.
  16694. //
  16695. // Here's how this works:
  16696. //
  16697. // The Transform stream has all the aspects of the readable and writable
  16698. // stream classes. When you write(chunk), that calls _write(chunk,cb)
  16699. // internally, and returns false if there's a lot of pending writes
  16700. // buffered up. When you call read(), that calls _read(n) until
  16701. // there's enough pending readable data buffered up.
  16702. //
  16703. // In a transform stream, the written data is placed in a buffer. When
  16704. // _read(n) is called, it transforms the queued up data, calling the
  16705. // buffered _write cb's as it consumes chunks. If consuming a single
  16706. // written chunk would result in multiple output chunks, then the first
  16707. // outputted bit calls the readcb, and subsequent chunks just go into
  16708. // the read buffer, and will cause it to emit 'readable' if necessary.
  16709. //
  16710. // This way, back-pressure is actually determined by the reading side,
  16711. // since _read has to be called to start processing a new chunk. However,
  16712. // a pathological inflate type of transform can cause excessive buffering
  16713. // here. For example, imagine a stream where every byte of input is
  16714. // interpreted as an integer from 0-255, and then results in that many
  16715. // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
  16716. // 1kb of data being output. In this case, you could write a very small
  16717. // amount of input, and end up with a very large amount of output. In
  16718. // such a pathological inflating mechanism, there'd be no way to tell
  16719. // the system to stop doing the transform. A single 4MB write could
  16720. // cause the system to run out of memory.
  16721. //
  16722. // However, even in such a pathological case, only a single written chunk
  16723. // would be consumed, and then the rest would wait (un-transformed) until
  16724. // the results of the previous transformed chunk were consumed.
  16725. 'use strict';
  16726. module.exports = Transform;
  16727. var Duplex = require('./_stream_duplex');
  16728. /*<replacement>*/
  16729. var util = require('core-util-is');
  16730. util.inherits = require('inherits');
  16731. /*</replacement>*/
  16732. util.inherits(Transform, Duplex);
  16733. function TransformState(stream) {
  16734. this.afterTransform = function (er, data) {
  16735. return afterTransform(stream, er, data);
  16736. };
  16737. this.needTransform = false;
  16738. this.transforming = false;
  16739. this.writecb = null;
  16740. this.writechunk = null;
  16741. this.writeencoding = null;
  16742. }
  16743. function afterTransform(stream, er, data) {
  16744. var ts = stream._transformState;
  16745. ts.transforming = false;
  16746. var cb = ts.writecb;
  16747. if (!cb) {
  16748. return stream.emit('error', new Error('write callback called multiple times'));
  16749. }
  16750. ts.writechunk = null;
  16751. ts.writecb = null;
  16752. if (data !== null && data !== undefined) stream.push(data);
  16753. cb(er);
  16754. var rs = stream._readableState;
  16755. rs.reading = false;
  16756. if (rs.needReadable || rs.length < rs.highWaterMark) {
  16757. stream._read(rs.highWaterMark);
  16758. }
  16759. }
  16760. function Transform(options) {
  16761. if (!(this instanceof Transform)) return new Transform(options);
  16762. Duplex.call(this, options);
  16763. this._transformState = new TransformState(this);
  16764. var stream = this;
  16765. // start out asking for a readable event once data is transformed.
  16766. this._readableState.needReadable = true;
  16767. // we have implemented the _read method, and done the other things
  16768. // that Readable wants before the first _read call, so unset the
  16769. // sync guard flag.
  16770. this._readableState.sync = false;
  16771. if (options) {
  16772. if (typeof options.transform === 'function') this._transform = options.transform;
  16773. if (typeof options.flush === 'function') this._flush = options.flush;
  16774. }
  16775. // When the writable side finishes, then flush out anything remaining.
  16776. this.once('prefinish', function () {
  16777. if (typeof this._flush === 'function') this._flush(function (er, data) {
  16778. done(stream, er, data);
  16779. });else done(stream);
  16780. });
  16781. }
  16782. Transform.prototype.push = function (chunk, encoding) {
  16783. this._transformState.needTransform = false;
  16784. return Duplex.prototype.push.call(this, chunk, encoding);
  16785. };
  16786. // This is the part where you do stuff!
  16787. // override this function in implementation classes.
  16788. // 'chunk' is an input chunk.
  16789. //
  16790. // Call `push(newChunk)` to pass along transformed output
  16791. // to the readable side. You may call 'push' zero or more times.
  16792. //
  16793. // Call `cb(err)` when you are done with this chunk. If you pass
  16794. // an error, then that'll put the hurt on the whole operation. If you
  16795. // never call cb(), then you'll never get another chunk.
  16796. Transform.prototype._transform = function (chunk, encoding, cb) {
  16797. throw new Error('_transform() is not implemented');
  16798. };
  16799. Transform.prototype._write = function (chunk, encoding, cb) {
  16800. var ts = this._transformState;
  16801. ts.writecb = cb;
  16802. ts.writechunk = chunk;
  16803. ts.writeencoding = encoding;
  16804. if (!ts.transforming) {
  16805. var rs = this._readableState;
  16806. if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
  16807. }
  16808. };
  16809. // Doesn't matter what the args are here.
  16810. // _transform does all the work.
  16811. // That we got here means that the readable side wants more data.
  16812. Transform.prototype._read = function (n) {
  16813. var ts = this._transformState;
  16814. if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
  16815. ts.transforming = true;
  16816. this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
  16817. } else {
  16818. // mark that we need a transform, so that any data that comes in
  16819. // will get processed, now that we've asked for it.
  16820. ts.needTransform = true;
  16821. }
  16822. };
  16823. Transform.prototype._destroy = function (err, cb) {
  16824. var _this = this;
  16825. Duplex.prototype._destroy.call(this, err, function (err2) {
  16826. cb(err2);
  16827. _this.emit('close');
  16828. });
  16829. };
  16830. function done(stream, er, data) {
  16831. if (er) return stream.emit('error', er);
  16832. if (data !== null && data !== undefined) stream.push(data);
  16833. // if there's nothing in the write buffer, then that means
  16834. // that nothing more will ever be provided
  16835. var ws = stream._writableState;
  16836. var ts = stream._transformState;
  16837. if (ws.length) throw new Error('Calling transform done when ws.length != 0');
  16838. if (ts.transforming) throw new Error('Calling transform done when still transforming');
  16839. return stream.push(null);
  16840. }
  16841. },{"./_stream_duplex":135,"core-util-is":56,"inherits":108}],139:[function(require,module,exports){
  16842. (function (process,global){
  16843. // Copyright Joyent, Inc. and other Node contributors.
  16844. //
  16845. // Permission is hereby granted, free of charge, to any person obtaining a
  16846. // copy of this software and associated documentation files (the
  16847. // "Software"), to deal in the Software without restriction, including
  16848. // without limitation the rights to use, copy, modify, merge, publish,
  16849. // distribute, sublicense, and/or sell copies of the Software, and to permit
  16850. // persons to whom the Software is furnished to do so, subject to the
  16851. // following conditions:
  16852. //
  16853. // The above copyright notice and this permission notice shall be included
  16854. // in all copies or substantial portions of the Software.
  16855. //
  16856. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  16857. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  16858. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  16859. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  16860. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  16861. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  16862. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  16863. // A bit simpler than readable streams.
  16864. // Implement an async ._write(chunk, encoding, cb), and it'll handle all
  16865. // the drain event emission and buffering.
  16866. 'use strict';
  16867. /*<replacement>*/
  16868. var processNextTick = require('process-nextick-args');
  16869. /*</replacement>*/
  16870. module.exports = Writable;
  16871. /* <replacement> */
  16872. function WriteReq(chunk, encoding, cb) {
  16873. this.chunk = chunk;
  16874. this.encoding = encoding;
  16875. this.callback = cb;
  16876. this.next = null;
  16877. }
  16878. // It seems a linked list but it is not
  16879. // there will be only 2 of these for each stream
  16880. function CorkedRequest(state) {
  16881. var _this = this;
  16882. this.next = null;
  16883. this.entry = null;
  16884. this.finish = function () {
  16885. onCorkedFinish(_this, state);
  16886. };
  16887. }
  16888. /* </replacement> */
  16889. /*<replacement>*/
  16890. var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
  16891. /*</replacement>*/
  16892. /*<replacement>*/
  16893. var Duplex;
  16894. /*</replacement>*/
  16895. Writable.WritableState = WritableState;
  16896. /*<replacement>*/
  16897. var util = require('core-util-is');
  16898. util.inherits = require('inherits');
  16899. /*</replacement>*/
  16900. /*<replacement>*/
  16901. var internalUtil = {
  16902. deprecate: require('util-deprecate')
  16903. };
  16904. /*</replacement>*/
  16905. /*<replacement>*/
  16906. var Stream = require('./internal/streams/stream');
  16907. /*</replacement>*/
  16908. /*<replacement>*/
  16909. var Buffer = require('safe-buffer').Buffer;
  16910. var OurUint8Array = global.Uint8Array || function () {};
  16911. function _uint8ArrayToBuffer(chunk) {
  16912. return Buffer.from(chunk);
  16913. }
  16914. function _isUint8Array(obj) {
  16915. return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
  16916. }
  16917. /*</replacement>*/
  16918. var destroyImpl = require('./internal/streams/destroy');
  16919. util.inherits(Writable, Stream);
  16920. function nop() {}
  16921. function WritableState(options, stream) {
  16922. Duplex = Duplex || require('./_stream_duplex');
  16923. options = options || {};
  16924. // object stream flag to indicate whether or not this stream
  16925. // contains buffers or objects.
  16926. this.objectMode = !!options.objectMode;
  16927. if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
  16928. // the point at which write() starts returning false
  16929. // Note: 0 is a valid value, means that we always return false if
  16930. // the entire buffer is not flushed immediately on write()
  16931. var hwm = options.highWaterMark;
  16932. var defaultHwm = this.objectMode ? 16 : 16 * 1024;
  16933. this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
  16934. // cast to ints.
  16935. this.highWaterMark = Math.floor(this.highWaterMark);
  16936. // if _final has been called
  16937. this.finalCalled = false;
  16938. // drain event flag.
  16939. this.needDrain = false;
  16940. // at the start of calling end()
  16941. this.ending = false;
  16942. // when end() has been called, and returned
  16943. this.ended = false;
  16944. // when 'finish' is emitted
  16945. this.finished = false;
  16946. // has it been destroyed
  16947. this.destroyed = false;
  16948. // should we decode strings into buffers before passing to _write?
  16949. // this is here so that some node-core streams can optimize string
  16950. // handling at a lower level.
  16951. var noDecode = options.decodeStrings === false;
  16952. this.decodeStrings = !noDecode;
  16953. // Crypto is kind of old and crusty. Historically, its default string
  16954. // encoding is 'binary' so we have to make this configurable.
  16955. // Everything else in the universe uses 'utf8', though.
  16956. this.defaultEncoding = options.defaultEncoding || 'utf8';
  16957. // not an actual buffer we keep track of, but a measurement
  16958. // of how much we're waiting to get pushed to some underlying
  16959. // socket or file.
  16960. this.length = 0;
  16961. // a flag to see when we're in the middle of a write.
  16962. this.writing = false;
  16963. // when true all writes will be buffered until .uncork() call
  16964. this.corked = 0;
  16965. // a flag to be able to tell if the onwrite cb is called immediately,
  16966. // or on a later tick. We set this to true at first, because any
  16967. // actions that shouldn't happen until "later" should generally also
  16968. // not happen before the first write call.
  16969. this.sync = true;
  16970. // a flag to know if we're processing previously buffered items, which
  16971. // may call the _write() callback in the same tick, so that we don't
  16972. // end up in an overlapped onwrite situation.
  16973. this.bufferProcessing = false;
  16974. // the callback that's passed to _write(chunk,cb)
  16975. this.onwrite = function (er) {
  16976. onwrite(stream, er);
  16977. };
  16978. // the callback that the user supplies to write(chunk,encoding,cb)
  16979. this.writecb = null;
  16980. // the amount that is being written when _write is called.
  16981. this.writelen = 0;
  16982. this.bufferedRequest = null;
  16983. this.lastBufferedRequest = null;
  16984. // number of pending user-supplied write callbacks
  16985. // this must be 0 before 'finish' can be emitted
  16986. this.pendingcb = 0;
  16987. // emit prefinish if the only thing we're waiting for is _write cbs
  16988. // This is relevant for synchronous Transform streams
  16989. this.prefinished = false;
  16990. // True if the error was already emitted and should not be thrown again
  16991. this.errorEmitted = false;
  16992. // count buffered requests
  16993. this.bufferedRequestCount = 0;
  16994. // allocate the first CorkedRequest, there is always
  16995. // one allocated and free to use, and we maintain at most two
  16996. this.corkedRequestsFree = new CorkedRequest(this);
  16997. }
  16998. WritableState.prototype.getBuffer = function getBuffer() {
  16999. var current = this.bufferedRequest;
  17000. var out = [];
  17001. while (current) {
  17002. out.push(current);
  17003. current = current.next;
  17004. }
  17005. return out;
  17006. };
  17007. (function () {
  17008. try {
  17009. Object.defineProperty(WritableState.prototype, 'buffer', {
  17010. get: internalUtil.deprecate(function () {
  17011. return this.getBuffer();
  17012. }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
  17013. });
  17014. } catch (_) {}
  17015. })();
  17016. // Test _writableState for inheritance to account for Duplex streams,
  17017. // whose prototype chain only points to Readable.
  17018. var realHasInstance;
  17019. if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
  17020. realHasInstance = Function.prototype[Symbol.hasInstance];
  17021. Object.defineProperty(Writable, Symbol.hasInstance, {
  17022. value: function (object) {
  17023. if (realHasInstance.call(this, object)) return true;
  17024. return object && object._writableState instanceof WritableState;
  17025. }
  17026. });
  17027. } else {
  17028. realHasInstance = function (object) {
  17029. return object instanceof this;
  17030. };
  17031. }
  17032. function Writable(options) {
  17033. Duplex = Duplex || require('./_stream_duplex');
  17034. // Writable ctor is applied to Duplexes, too.
  17035. // `realHasInstance` is necessary because using plain `instanceof`
  17036. // would return false, as no `_writableState` property is attached.
  17037. // Trying to use the custom `instanceof` for Writable here will also break the
  17038. // Node.js LazyTransform implementation, which has a non-trivial getter for
  17039. // `_writableState` that would lead to infinite recursion.
  17040. if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
  17041. return new Writable(options);
  17042. }
  17043. this._writableState = new WritableState(options, this);
  17044. // legacy.
  17045. this.writable = true;
  17046. if (options) {
  17047. if (typeof options.write === 'function') this._write = options.write;
  17048. if (typeof options.writev === 'function') this._writev = options.writev;
  17049. if (typeof options.destroy === 'function') this._destroy = options.destroy;
  17050. if (typeof options.final === 'function') this._final = options.final;
  17051. }
  17052. Stream.call(this);
  17053. }
  17054. // Otherwise people can pipe Writable streams, which is just wrong.
  17055. Writable.prototype.pipe = function () {
  17056. this.emit('error', new Error('Cannot pipe, not readable'));
  17057. };
  17058. function writeAfterEnd(stream, cb) {
  17059. var er = new Error('write after end');
  17060. // TODO: defer error events consistently everywhere, not just the cb
  17061. stream.emit('error', er);
  17062. processNextTick(cb, er);
  17063. }
  17064. // Checks that a user-supplied chunk is valid, especially for the particular
  17065. // mode the stream is in. Currently this means that `null` is never accepted
  17066. // and undefined/non-string values are only allowed in object mode.
  17067. function validChunk(stream, state, chunk, cb) {
  17068. var valid = true;
  17069. var er = false;
  17070. if (chunk === null) {
  17071. er = new TypeError('May not write null values to stream');
  17072. } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
  17073. er = new TypeError('Invalid non-string/buffer chunk');
  17074. }
  17075. if (er) {
  17076. stream.emit('error', er);
  17077. processNextTick(cb, er);
  17078. valid = false;
  17079. }
  17080. return valid;
  17081. }
  17082. Writable.prototype.write = function (chunk, encoding, cb) {
  17083. var state = this._writableState;
  17084. var ret = false;
  17085. var isBuf = _isUint8Array(chunk) && !state.objectMode;
  17086. if (isBuf && !Buffer.isBuffer(chunk)) {
  17087. chunk = _uint8ArrayToBuffer(chunk);
  17088. }
  17089. if (typeof encoding === 'function') {
  17090. cb = encoding;
  17091. encoding = null;
  17092. }
  17093. if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
  17094. if (typeof cb !== 'function') cb = nop;
  17095. if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
  17096. state.pendingcb++;
  17097. ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
  17098. }
  17099. return ret;
  17100. };
  17101. Writable.prototype.cork = function () {
  17102. var state = this._writableState;
  17103. state.corked++;
  17104. };
  17105. Writable.prototype.uncork = function () {
  17106. var state = this._writableState;
  17107. if (state.corked) {
  17108. state.corked--;
  17109. if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
  17110. }
  17111. };
  17112. Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
  17113. // node::ParseEncoding() requires lower case.
  17114. if (typeof encoding === 'string') encoding = encoding.toLowerCase();
  17115. if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
  17116. this._writableState.defaultEncoding = encoding;
  17117. return this;
  17118. };
  17119. function decodeChunk(state, chunk, encoding) {
  17120. if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
  17121. chunk = Buffer.from(chunk, encoding);
  17122. }
  17123. return chunk;
  17124. }
  17125. // if we're already writing something, then just put this
  17126. // in the queue, and wait our turn. Otherwise, call _write
  17127. // If we return false, then we need a drain event, so set that flag.
  17128. function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
  17129. if (!isBuf) {
  17130. var newChunk = decodeChunk(state, chunk, encoding);
  17131. if (chunk !== newChunk) {
  17132. isBuf = true;
  17133. encoding = 'buffer';
  17134. chunk = newChunk;
  17135. }
  17136. }
  17137. var len = state.objectMode ? 1 : chunk.length;
  17138. state.length += len;
  17139. var ret = state.length < state.highWaterMark;
  17140. // we must ensure that previous needDrain will not be reset to false.
  17141. if (!ret) state.needDrain = true;
  17142. if (state.writing || state.corked) {
  17143. var last = state.lastBufferedRequest;
  17144. state.lastBufferedRequest = {
  17145. chunk: chunk,
  17146. encoding: encoding,
  17147. isBuf: isBuf,
  17148. callback: cb,
  17149. next: null
  17150. };
  17151. if (last) {
  17152. last.next = state.lastBufferedRequest;
  17153. } else {
  17154. state.bufferedRequest = state.lastBufferedRequest;
  17155. }
  17156. state.bufferedRequestCount += 1;
  17157. } else {
  17158. doWrite(stream, state, false, len, chunk, encoding, cb);
  17159. }
  17160. return ret;
  17161. }
  17162. function doWrite(stream, state, writev, len, chunk, encoding, cb) {
  17163. state.writelen = len;
  17164. state.writecb = cb;
  17165. state.writing = true;
  17166. state.sync = true;
  17167. if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
  17168. state.sync = false;
  17169. }
  17170. function onwriteError(stream, state, sync, er, cb) {
  17171. --state.pendingcb;
  17172. if (sync) {
  17173. // defer the callback if we are being called synchronously
  17174. // to avoid piling up things on the stack
  17175. processNextTick(cb, er);
  17176. // this can emit finish, and it will always happen
  17177. // after error
  17178. processNextTick(finishMaybe, stream, state);
  17179. stream._writableState.errorEmitted = true;
  17180. stream.emit('error', er);
  17181. } else {
  17182. // the caller expect this to happen before if
  17183. // it is async
  17184. cb(er);
  17185. stream._writableState.errorEmitted = true;
  17186. stream.emit('error', er);
  17187. // this can emit finish, but finish must
  17188. // always follow error
  17189. finishMaybe(stream, state);
  17190. }
  17191. }
  17192. function onwriteStateUpdate(state) {
  17193. state.writing = false;
  17194. state.writecb = null;
  17195. state.length -= state.writelen;
  17196. state.writelen = 0;
  17197. }
  17198. function onwrite(stream, er) {
  17199. var state = stream._writableState;
  17200. var sync = state.sync;
  17201. var cb = state.writecb;
  17202. onwriteStateUpdate(state);
  17203. if (er) onwriteError(stream, state, sync, er, cb);else {
  17204. // Check if we're actually ready to finish, but don't emit yet
  17205. var finished = needFinish(state);
  17206. if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
  17207. clearBuffer(stream, state);
  17208. }
  17209. if (sync) {
  17210. /*<replacement>*/
  17211. asyncWrite(afterWrite, stream, state, finished, cb);
  17212. /*</replacement>*/
  17213. } else {
  17214. afterWrite(stream, state, finished, cb);
  17215. }
  17216. }
  17217. }
  17218. function afterWrite(stream, state, finished, cb) {
  17219. if (!finished) onwriteDrain(stream, state);
  17220. state.pendingcb--;
  17221. cb();
  17222. finishMaybe(stream, state);
  17223. }
  17224. // Must force callback to be called on nextTick, so that we don't
  17225. // emit 'drain' before the write() consumer gets the 'false' return
  17226. // value, and has a chance to attach a 'drain' listener.
  17227. function onwriteDrain(stream, state) {
  17228. if (state.length === 0 && state.needDrain) {
  17229. state.needDrain = false;
  17230. stream.emit('drain');
  17231. }
  17232. }
  17233. // if there's something in the buffer waiting, then process it
  17234. function clearBuffer(stream, state) {
  17235. state.bufferProcessing = true;
  17236. var entry = state.bufferedRequest;
  17237. if (stream._writev && entry && entry.next) {
  17238. // Fast case, write everything using _writev()
  17239. var l = state.bufferedRequestCount;
  17240. var buffer = new Array(l);
  17241. var holder = state.corkedRequestsFree;
  17242. holder.entry = entry;
  17243. var count = 0;
  17244. var allBuffers = true;
  17245. while (entry) {
  17246. buffer[count] = entry;
  17247. if (!entry.isBuf) allBuffers = false;
  17248. entry = entry.next;
  17249. count += 1;
  17250. }
  17251. buffer.allBuffers = allBuffers;
  17252. doWrite(stream, state, true, state.length, buffer, '', holder.finish);
  17253. // doWrite is almost always async, defer these to save a bit of time
  17254. // as the hot path ends with doWrite
  17255. state.pendingcb++;
  17256. state.lastBufferedRequest = null;
  17257. if (holder.next) {
  17258. state.corkedRequestsFree = holder.next;
  17259. holder.next = null;
  17260. } else {
  17261. state.corkedRequestsFree = new CorkedRequest(state);
  17262. }
  17263. } else {
  17264. // Slow case, write chunks one-by-one
  17265. while (entry) {
  17266. var chunk = entry.chunk;
  17267. var encoding = entry.encoding;
  17268. var cb = entry.callback;
  17269. var len = state.objectMode ? 1 : chunk.length;
  17270. doWrite(stream, state, false, len, chunk, encoding, cb);
  17271. entry = entry.next;
  17272. // if we didn't call the onwrite immediately, then
  17273. // it means that we need to wait until it does.
  17274. // also, that means that the chunk and cb are currently
  17275. // being processed, so move the buffer counter past them.
  17276. if (state.writing) {
  17277. break;
  17278. }
  17279. }
  17280. if (entry === null) state.lastBufferedRequest = null;
  17281. }
  17282. state.bufferedRequestCount = 0;
  17283. state.bufferedRequest = entry;
  17284. state.bufferProcessing = false;
  17285. }
  17286. Writable.prototype._write = function (chunk, encoding, cb) {
  17287. cb(new Error('_write() is not implemented'));
  17288. };
  17289. Writable.prototype._writev = null;
  17290. Writable.prototype.end = function (chunk, encoding, cb) {
  17291. var state = this._writableState;
  17292. if (typeof chunk === 'function') {
  17293. cb = chunk;
  17294. chunk = null;
  17295. encoding = null;
  17296. } else if (typeof encoding === 'function') {
  17297. cb = encoding;
  17298. encoding = null;
  17299. }
  17300. if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
  17301. // .end() fully uncorks
  17302. if (state.corked) {
  17303. state.corked = 1;
  17304. this.uncork();
  17305. }
  17306. // ignore unnecessary end() calls.
  17307. if (!state.ending && !state.finished) endWritable(this, state, cb);
  17308. };
  17309. function needFinish(state) {
  17310. return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
  17311. }
  17312. function callFinal(stream, state) {
  17313. stream._final(function (err) {
  17314. state.pendingcb--;
  17315. if (err) {
  17316. stream.emit('error', err);
  17317. }
  17318. state.prefinished = true;
  17319. stream.emit('prefinish');
  17320. finishMaybe(stream, state);
  17321. });
  17322. }
  17323. function prefinish(stream, state) {
  17324. if (!state.prefinished && !state.finalCalled) {
  17325. if (typeof stream._final === 'function') {
  17326. state.pendingcb++;
  17327. state.finalCalled = true;
  17328. processNextTick(callFinal, stream, state);
  17329. } else {
  17330. state.prefinished = true;
  17331. stream.emit('prefinish');
  17332. }
  17333. }
  17334. }
  17335. function finishMaybe(stream, state) {
  17336. var need = needFinish(state);
  17337. if (need) {
  17338. prefinish(stream, state);
  17339. if (state.pendingcb === 0) {
  17340. state.finished = true;
  17341. stream.emit('finish');
  17342. }
  17343. }
  17344. return need;
  17345. }
  17346. function endWritable(stream, state, cb) {
  17347. state.ending = true;
  17348. finishMaybe(stream, state);
  17349. if (cb) {
  17350. if (state.finished) processNextTick(cb);else stream.once('finish', cb);
  17351. }
  17352. state.ended = true;
  17353. stream.writable = false;
  17354. }
  17355. function onCorkedFinish(corkReq, state, err) {
  17356. var entry = corkReq.entry;
  17357. corkReq.entry = null;
  17358. while (entry) {
  17359. var cb = entry.callback;
  17360. state.pendingcb--;
  17361. cb(err);
  17362. entry = entry.next;
  17363. }
  17364. if (state.corkedRequestsFree) {
  17365. state.corkedRequestsFree.next = corkReq;
  17366. } else {
  17367. state.corkedRequestsFree = corkReq;
  17368. }
  17369. }
  17370. Object.defineProperty(Writable.prototype, 'destroyed', {
  17371. get: function () {
  17372. if (this._writableState === undefined) {
  17373. return false;
  17374. }
  17375. return this._writableState.destroyed;
  17376. },
  17377. set: function (value) {
  17378. // we ignore the value if the stream
  17379. // has not been initialized yet
  17380. if (!this._writableState) {
  17381. return;
  17382. }
  17383. // backward compatibility, the user is explicitly
  17384. // managing destroyed
  17385. this._writableState.destroyed = value;
  17386. }
  17387. });
  17388. Writable.prototype.destroy = destroyImpl.destroy;
  17389. Writable.prototype._undestroy = destroyImpl.undestroy;
  17390. Writable.prototype._destroy = function (err, cb) {
  17391. this.end();
  17392. cb(err);
  17393. };
  17394. }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
  17395. },{"./_stream_duplex":135,"./internal/streams/destroy":141,"./internal/streams/stream":142,"_process":126,"core-util-is":56,"inherits":108,"process-nextick-args":125,"safe-buffer":148,"util-deprecate":159}],140:[function(require,module,exports){
  17396. 'use strict';
  17397. /*<replacement>*/
  17398. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  17399. var Buffer = require('safe-buffer').Buffer;
  17400. /*</replacement>*/
  17401. function copyBuffer(src, target, offset) {
  17402. src.copy(target, offset);
  17403. }
  17404. module.exports = function () {
  17405. function BufferList() {
  17406. _classCallCheck(this, BufferList);
  17407. this.head = null;
  17408. this.tail = null;
  17409. this.length = 0;
  17410. }
  17411. BufferList.prototype.push = function push(v) {
  17412. var entry = { data: v, next: null };
  17413. if (this.length > 0) this.tail.next = entry;else this.head = entry;
  17414. this.tail = entry;
  17415. ++this.length;
  17416. };
  17417. BufferList.prototype.unshift = function unshift(v) {
  17418. var entry = { data: v, next: this.head };
  17419. if (this.length === 0) this.tail = entry;
  17420. this.head = entry;
  17421. ++this.length;
  17422. };
  17423. BufferList.prototype.shift = function shift() {
  17424. if (this.length === 0) return;
  17425. var ret = this.head.data;
  17426. if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
  17427. --this.length;
  17428. return ret;
  17429. };
  17430. BufferList.prototype.clear = function clear() {
  17431. this.head = this.tail = null;
  17432. this.length = 0;
  17433. };
  17434. BufferList.prototype.join = function join(s) {
  17435. if (this.length === 0) return '';
  17436. var p = this.head;
  17437. var ret = '' + p.data;
  17438. while (p = p.next) {
  17439. ret += s + p.data;
  17440. }return ret;
  17441. };
  17442. BufferList.prototype.concat = function concat(n) {
  17443. if (this.length === 0) return Buffer.alloc(0);
  17444. if (this.length === 1) return this.head.data;
  17445. var ret = Buffer.allocUnsafe(n >>> 0);
  17446. var p = this.head;
  17447. var i = 0;
  17448. while (p) {
  17449. copyBuffer(p.data, ret, i);
  17450. i += p.data.length;
  17451. p = p.next;
  17452. }
  17453. return ret;
  17454. };
  17455. return BufferList;
  17456. }();
  17457. },{"safe-buffer":148}],141:[function(require,module,exports){
  17458. 'use strict';
  17459. /*<replacement>*/
  17460. var processNextTick = require('process-nextick-args');
  17461. /*</replacement>*/
  17462. // undocumented cb() API, needed for core, not for public API
  17463. function destroy(err, cb) {
  17464. var _this = this;
  17465. var readableDestroyed = this._readableState && this._readableState.destroyed;
  17466. var writableDestroyed = this._writableState && this._writableState.destroyed;
  17467. if (readableDestroyed || writableDestroyed) {
  17468. if (cb) {
  17469. cb(err);
  17470. } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
  17471. processNextTick(emitErrorNT, this, err);
  17472. }
  17473. return;
  17474. }
  17475. // we set destroyed to true before firing error callbacks in order
  17476. // to make it re-entrance safe in case destroy() is called within callbacks
  17477. if (this._readableState) {
  17478. this._readableState.destroyed = true;
  17479. }
  17480. // if this is a duplex stream mark the writable part as destroyed as well
  17481. if (this._writableState) {
  17482. this._writableState.destroyed = true;
  17483. }
  17484. this._destroy(err || null, function (err) {
  17485. if (!cb && err) {
  17486. processNextTick(emitErrorNT, _this, err);
  17487. if (_this._writableState) {
  17488. _this._writableState.errorEmitted = true;
  17489. }
  17490. } else if (cb) {
  17491. cb(err);
  17492. }
  17493. });
  17494. }
  17495. function undestroy() {
  17496. if (this._readableState) {
  17497. this._readableState.destroyed = false;
  17498. this._readableState.reading = false;
  17499. this._readableState.ended = false;
  17500. this._readableState.endEmitted = false;
  17501. }
  17502. if (this._writableState) {
  17503. this._writableState.destroyed = false;
  17504. this._writableState.ended = false;
  17505. this._writableState.ending = false;
  17506. this._writableState.finished = false;
  17507. this._writableState.errorEmitted = false;
  17508. }
  17509. }
  17510. function emitErrorNT(self, err) {
  17511. self.emit('error', err);
  17512. }
  17513. module.exports = {
  17514. destroy: destroy,
  17515. undestroy: undestroy
  17516. };
  17517. },{"process-nextick-args":125}],142:[function(require,module,exports){
  17518. module.exports = require('events').EventEmitter;
  17519. },{"events":90}],143:[function(require,module,exports){
  17520. module.exports = require('./readable').PassThrough
  17521. },{"./readable":144}],144:[function(require,module,exports){
  17522. exports = module.exports = require('./lib/_stream_readable.js');
  17523. exports.Stream = exports;
  17524. exports.Readable = exports;
  17525. exports.Writable = require('./lib/_stream_writable.js');
  17526. exports.Duplex = require('./lib/_stream_duplex.js');
  17527. exports.Transform = require('./lib/_stream_transform.js');
  17528. exports.PassThrough = require('./lib/_stream_passthrough.js');
  17529. },{"./lib/_stream_duplex.js":135,"./lib/_stream_passthrough.js":136,"./lib/_stream_readable.js":137,"./lib/_stream_transform.js":138,"./lib/_stream_writable.js":139}],145:[function(require,module,exports){
  17530. module.exports = require('./readable').Transform
  17531. },{"./readable":144}],146:[function(require,module,exports){
  17532. module.exports = require('./lib/_stream_writable.js');
  17533. },{"./lib/_stream_writable.js":139}],147:[function(require,module,exports){
  17534. (function (Buffer){
  17535. 'use strict'
  17536. var inherits = require('inherits')
  17537. var HashBase = require('hash-base')
  17538. function RIPEMD160 () {
  17539. HashBase.call(this, 64)
  17540. // state
  17541. this._a = 0x67452301
  17542. this._b = 0xefcdab89
  17543. this._c = 0x98badcfe
  17544. this._d = 0x10325476
  17545. this._e = 0xc3d2e1f0
  17546. }
  17547. inherits(RIPEMD160, HashBase)
  17548. RIPEMD160.prototype._update = function () {
  17549. var m = new Array(16)
  17550. for (var i = 0; i < 16; ++i) m[i] = this._block.readInt32LE(i * 4)
  17551. var al = this._a
  17552. var bl = this._b
  17553. var cl = this._c
  17554. var dl = this._d
  17555. var el = this._e
  17556. // Mj = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
  17557. // K = 0x00000000
  17558. // Sj = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
  17559. al = fn1(al, bl, cl, dl, el, m[0], 0x00000000, 11); cl = rotl(cl, 10)
  17560. el = fn1(el, al, bl, cl, dl, m[1], 0x00000000, 14); bl = rotl(bl, 10)
  17561. dl = fn1(dl, el, al, bl, cl, m[2], 0x00000000, 15); al = rotl(al, 10)
  17562. cl = fn1(cl, dl, el, al, bl, m[3], 0x00000000, 12); el = rotl(el, 10)
  17563. bl = fn1(bl, cl, dl, el, al, m[4], 0x00000000, 5); dl = rotl(dl, 10)
  17564. al = fn1(al, bl, cl, dl, el, m[5], 0x00000000, 8); cl = rotl(cl, 10)
  17565. el = fn1(el, al, bl, cl, dl, m[6], 0x00000000, 7); bl = rotl(bl, 10)
  17566. dl = fn1(dl, el, al, bl, cl, m[7], 0x00000000, 9); al = rotl(al, 10)
  17567. cl = fn1(cl, dl, el, al, bl, m[8], 0x00000000, 11); el = rotl(el, 10)
  17568. bl = fn1(bl, cl, dl, el, al, m[9], 0x00000000, 13); dl = rotl(dl, 10)
  17569. al = fn1(al, bl, cl, dl, el, m[10], 0x00000000, 14); cl = rotl(cl, 10)
  17570. el = fn1(el, al, bl, cl, dl, m[11], 0x00000000, 15); bl = rotl(bl, 10)
  17571. dl = fn1(dl, el, al, bl, cl, m[12], 0x00000000, 6); al = rotl(al, 10)
  17572. cl = fn1(cl, dl, el, al, bl, m[13], 0x00000000, 7); el = rotl(el, 10)
  17573. bl = fn1(bl, cl, dl, el, al, m[14], 0x00000000, 9); dl = rotl(dl, 10)
  17574. al = fn1(al, bl, cl, dl, el, m[15], 0x00000000, 8); cl = rotl(cl, 10)
  17575. // Mj = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
  17576. // K = 0x5a827999
  17577. // Sj = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
  17578. el = fn2(el, al, bl, cl, dl, m[7], 0x5a827999, 7); bl = rotl(bl, 10)
  17579. dl = fn2(dl, el, al, bl, cl, m[4], 0x5a827999, 6); al = rotl(al, 10)
  17580. cl = fn2(cl, dl, el, al, bl, m[13], 0x5a827999, 8); el = rotl(el, 10)
  17581. bl = fn2(bl, cl, dl, el, al, m[1], 0x5a827999, 13); dl = rotl(dl, 10)
  17582. al = fn2(al, bl, cl, dl, el, m[10], 0x5a827999, 11); cl = rotl(cl, 10)
  17583. el = fn2(el, al, bl, cl, dl, m[6], 0x5a827999, 9); bl = rotl(bl, 10)
  17584. dl = fn2(dl, el, al, bl, cl, m[15], 0x5a827999, 7); al = rotl(al, 10)
  17585. cl = fn2(cl, dl, el, al, bl, m[3], 0x5a827999, 15); el = rotl(el, 10)
  17586. bl = fn2(bl, cl, dl, el, al, m[12], 0x5a827999, 7); dl = rotl(dl, 10)
  17587. al = fn2(al, bl, cl, dl, el, m[0], 0x5a827999, 12); cl = rotl(cl, 10)
  17588. el = fn2(el, al, bl, cl, dl, m[9], 0x5a827999, 15); bl = rotl(bl, 10)
  17589. dl = fn2(dl, el, al, bl, cl, m[5], 0x5a827999, 9); al = rotl(al, 10)
  17590. cl = fn2(cl, dl, el, al, bl, m[2], 0x5a827999, 11); el = rotl(el, 10)
  17591. bl = fn2(bl, cl, dl, el, al, m[14], 0x5a827999, 7); dl = rotl(dl, 10)
  17592. al = fn2(al, bl, cl, dl, el, m[11], 0x5a827999, 13); cl = rotl(cl, 10)
  17593. el = fn2(el, al, bl, cl, dl, m[8], 0x5a827999, 12); bl = rotl(bl, 10)
  17594. // Mj = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
  17595. // K = 0x6ed9eba1
  17596. // Sj = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
  17597. dl = fn3(dl, el, al, bl, cl, m[3], 0x6ed9eba1, 11); al = rotl(al, 10)
  17598. cl = fn3(cl, dl, el, al, bl, m[10], 0x6ed9eba1, 13); el = rotl(el, 10)
  17599. bl = fn3(bl, cl, dl, el, al, m[14], 0x6ed9eba1, 6); dl = rotl(dl, 10)
  17600. al = fn3(al, bl, cl, dl, el, m[4], 0x6ed9eba1, 7); cl = rotl(cl, 10)
  17601. el = fn3(el, al, bl, cl, dl, m[9], 0x6ed9eba1, 14); bl = rotl(bl, 10)
  17602. dl = fn3(dl, el, al, bl, cl, m[15], 0x6ed9eba1, 9); al = rotl(al, 10)
  17603. cl = fn3(cl, dl, el, al, bl, m[8], 0x6ed9eba1, 13); el = rotl(el, 10)
  17604. bl = fn3(bl, cl, dl, el, al, m[1], 0x6ed9eba1, 15); dl = rotl(dl, 10)
  17605. al = fn3(al, bl, cl, dl, el, m[2], 0x6ed9eba1, 14); cl = rotl(cl, 10)
  17606. el = fn3(el, al, bl, cl, dl, m[7], 0x6ed9eba1, 8); bl = rotl(bl, 10)
  17607. dl = fn3(dl, el, al, bl, cl, m[0], 0x6ed9eba1, 13); al = rotl(al, 10)
  17608. cl = fn3(cl, dl, el, al, bl, m[6], 0x6ed9eba1, 6); el = rotl(el, 10)
  17609. bl = fn3(bl, cl, dl, el, al, m[13], 0x6ed9eba1, 5); dl = rotl(dl, 10)
  17610. al = fn3(al, bl, cl, dl, el, m[11], 0x6ed9eba1, 12); cl = rotl(cl, 10)
  17611. el = fn3(el, al, bl, cl, dl, m[5], 0x6ed9eba1, 7); bl = rotl(bl, 10)
  17612. dl = fn3(dl, el, al, bl, cl, m[12], 0x6ed9eba1, 5); al = rotl(al, 10)
  17613. // Mj = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
  17614. // K = 0x8f1bbcdc
  17615. // Sj = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
  17616. cl = fn4(cl, dl, el, al, bl, m[1], 0x8f1bbcdc, 11); el = rotl(el, 10)
  17617. bl = fn4(bl, cl, dl, el, al, m[9], 0x8f1bbcdc, 12); dl = rotl(dl, 10)
  17618. al = fn4(al, bl, cl, dl, el, m[11], 0x8f1bbcdc, 14); cl = rotl(cl, 10)
  17619. el = fn4(el, al, bl, cl, dl, m[10], 0x8f1bbcdc, 15); bl = rotl(bl, 10)
  17620. dl = fn4(dl, el, al, bl, cl, m[0], 0x8f1bbcdc, 14); al = rotl(al, 10)
  17621. cl = fn4(cl, dl, el, al, bl, m[8], 0x8f1bbcdc, 15); el = rotl(el, 10)
  17622. bl = fn4(bl, cl, dl, el, al, m[12], 0x8f1bbcdc, 9); dl = rotl(dl, 10)
  17623. al = fn4(al, bl, cl, dl, el, m[4], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
  17624. el = fn4(el, al, bl, cl, dl, m[13], 0x8f1bbcdc, 9); bl = rotl(bl, 10)
  17625. dl = fn4(dl, el, al, bl, cl, m[3], 0x8f1bbcdc, 14); al = rotl(al, 10)
  17626. cl = fn4(cl, dl, el, al, bl, m[7], 0x8f1bbcdc, 5); el = rotl(el, 10)
  17627. bl = fn4(bl, cl, dl, el, al, m[15], 0x8f1bbcdc, 6); dl = rotl(dl, 10)
  17628. al = fn4(al, bl, cl, dl, el, m[14], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
  17629. el = fn4(el, al, bl, cl, dl, m[5], 0x8f1bbcdc, 6); bl = rotl(bl, 10)
  17630. dl = fn4(dl, el, al, bl, cl, m[6], 0x8f1bbcdc, 5); al = rotl(al, 10)
  17631. cl = fn4(cl, dl, el, al, bl, m[2], 0x8f1bbcdc, 12); el = rotl(el, 10)
  17632. // Mj = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
  17633. // K = 0xa953fd4e
  17634. // Sj = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
  17635. bl = fn5(bl, cl, dl, el, al, m[4], 0xa953fd4e, 9); dl = rotl(dl, 10)
  17636. al = fn5(al, bl, cl, dl, el, m[0], 0xa953fd4e, 15); cl = rotl(cl, 10)
  17637. el = fn5(el, al, bl, cl, dl, m[5], 0xa953fd4e, 5); bl = rotl(bl, 10)
  17638. dl = fn5(dl, el, al, bl, cl, m[9], 0xa953fd4e, 11); al = rotl(al, 10)
  17639. cl = fn5(cl, dl, el, al, bl, m[7], 0xa953fd4e, 6); el = rotl(el, 10)
  17640. bl = fn5(bl, cl, dl, el, al, m[12], 0xa953fd4e, 8); dl = rotl(dl, 10)
  17641. al = fn5(al, bl, cl, dl, el, m[2], 0xa953fd4e, 13); cl = rotl(cl, 10)
  17642. el = fn5(el, al, bl, cl, dl, m[10], 0xa953fd4e, 12); bl = rotl(bl, 10)
  17643. dl = fn5(dl, el, al, bl, cl, m[14], 0xa953fd4e, 5); al = rotl(al, 10)
  17644. cl = fn5(cl, dl, el, al, bl, m[1], 0xa953fd4e, 12); el = rotl(el, 10)
  17645. bl = fn5(bl, cl, dl, el, al, m[3], 0xa953fd4e, 13); dl = rotl(dl, 10)
  17646. al = fn5(al, bl, cl, dl, el, m[8], 0xa953fd4e, 14); cl = rotl(cl, 10)
  17647. el = fn5(el, al, bl, cl, dl, m[11], 0xa953fd4e, 11); bl = rotl(bl, 10)
  17648. dl = fn5(dl, el, al, bl, cl, m[6], 0xa953fd4e, 8); al = rotl(al, 10)
  17649. cl = fn5(cl, dl, el, al, bl, m[15], 0xa953fd4e, 5); el = rotl(el, 10)
  17650. bl = fn5(bl, cl, dl, el, al, m[13], 0xa953fd4e, 6); dl = rotl(dl, 10)
  17651. var ar = this._a
  17652. var br = this._b
  17653. var cr = this._c
  17654. var dr = this._d
  17655. var er = this._e
  17656. // M'j = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
  17657. // K' = 0x50a28be6
  17658. // S'j = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
  17659. ar = fn5(ar, br, cr, dr, er, m[5], 0x50a28be6, 8); cr = rotl(cr, 10)
  17660. er = fn5(er, ar, br, cr, dr, m[14], 0x50a28be6, 9); br = rotl(br, 10)
  17661. dr = fn5(dr, er, ar, br, cr, m[7], 0x50a28be6, 9); ar = rotl(ar, 10)
  17662. cr = fn5(cr, dr, er, ar, br, m[0], 0x50a28be6, 11); er = rotl(er, 10)
  17663. br = fn5(br, cr, dr, er, ar, m[9], 0x50a28be6, 13); dr = rotl(dr, 10)
  17664. ar = fn5(ar, br, cr, dr, er, m[2], 0x50a28be6, 15); cr = rotl(cr, 10)
  17665. er = fn5(er, ar, br, cr, dr, m[11], 0x50a28be6, 15); br = rotl(br, 10)
  17666. dr = fn5(dr, er, ar, br, cr, m[4], 0x50a28be6, 5); ar = rotl(ar, 10)
  17667. cr = fn5(cr, dr, er, ar, br, m[13], 0x50a28be6, 7); er = rotl(er, 10)
  17668. br = fn5(br, cr, dr, er, ar, m[6], 0x50a28be6, 7); dr = rotl(dr, 10)
  17669. ar = fn5(ar, br, cr, dr, er, m[15], 0x50a28be6, 8); cr = rotl(cr, 10)
  17670. er = fn5(er, ar, br, cr, dr, m[8], 0x50a28be6, 11); br = rotl(br, 10)
  17671. dr = fn5(dr, er, ar, br, cr, m[1], 0x50a28be6, 14); ar = rotl(ar, 10)
  17672. cr = fn5(cr, dr, er, ar, br, m[10], 0x50a28be6, 14); er = rotl(er, 10)
  17673. br = fn5(br, cr, dr, er, ar, m[3], 0x50a28be6, 12); dr = rotl(dr, 10)
  17674. ar = fn5(ar, br, cr, dr, er, m[12], 0x50a28be6, 6); cr = rotl(cr, 10)
  17675. // M'j = 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
  17676. // K' = 0x5c4dd124
  17677. // S'j = 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
  17678. er = fn4(er, ar, br, cr, dr, m[6], 0x5c4dd124, 9); br = rotl(br, 10)
  17679. dr = fn4(dr, er, ar, br, cr, m[11], 0x5c4dd124, 13); ar = rotl(ar, 10)
  17680. cr = fn4(cr, dr, er, ar, br, m[3], 0x5c4dd124, 15); er = rotl(er, 10)
  17681. br = fn4(br, cr, dr, er, ar, m[7], 0x5c4dd124, 7); dr = rotl(dr, 10)
  17682. ar = fn4(ar, br, cr, dr, er, m[0], 0x5c4dd124, 12); cr = rotl(cr, 10)
  17683. er = fn4(er, ar, br, cr, dr, m[13], 0x5c4dd124, 8); br = rotl(br, 10)
  17684. dr = fn4(dr, er, ar, br, cr, m[5], 0x5c4dd124, 9); ar = rotl(ar, 10)
  17685. cr = fn4(cr, dr, er, ar, br, m[10], 0x5c4dd124, 11); er = rotl(er, 10)
  17686. br = fn4(br, cr, dr, er, ar, m[14], 0x5c4dd124, 7); dr = rotl(dr, 10)
  17687. ar = fn4(ar, br, cr, dr, er, m[15], 0x5c4dd124, 7); cr = rotl(cr, 10)
  17688. er = fn4(er, ar, br, cr, dr, m[8], 0x5c4dd124, 12); br = rotl(br, 10)
  17689. dr = fn4(dr, er, ar, br, cr, m[12], 0x5c4dd124, 7); ar = rotl(ar, 10)
  17690. cr = fn4(cr, dr, er, ar, br, m[4], 0x5c4dd124, 6); er = rotl(er, 10)
  17691. br = fn4(br, cr, dr, er, ar, m[9], 0x5c4dd124, 15); dr = rotl(dr, 10)
  17692. ar = fn4(ar, br, cr, dr, er, m[1], 0x5c4dd124, 13); cr = rotl(cr, 10)
  17693. er = fn4(er, ar, br, cr, dr, m[2], 0x5c4dd124, 11); br = rotl(br, 10)
  17694. // M'j = 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
  17695. // K' = 0x6d703ef3
  17696. // S'j = 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
  17697. dr = fn3(dr, er, ar, br, cr, m[15], 0x6d703ef3, 9); ar = rotl(ar, 10)
  17698. cr = fn3(cr, dr, er, ar, br, m[5], 0x6d703ef3, 7); er = rotl(er, 10)
  17699. br = fn3(br, cr, dr, er, ar, m[1], 0x6d703ef3, 15); dr = rotl(dr, 10)
  17700. ar = fn3(ar, br, cr, dr, er, m[3], 0x6d703ef3, 11); cr = rotl(cr, 10)
  17701. er = fn3(er, ar, br, cr, dr, m[7], 0x6d703ef3, 8); br = rotl(br, 10)
  17702. dr = fn3(dr, er, ar, br, cr, m[14], 0x6d703ef3, 6); ar = rotl(ar, 10)
  17703. cr = fn3(cr, dr, er, ar, br, m[6], 0x6d703ef3, 6); er = rotl(er, 10)
  17704. br = fn3(br, cr, dr, er, ar, m[9], 0x6d703ef3, 14); dr = rotl(dr, 10)
  17705. ar = fn3(ar, br, cr, dr, er, m[11], 0x6d703ef3, 12); cr = rotl(cr, 10)
  17706. er = fn3(er, ar, br, cr, dr, m[8], 0x6d703ef3, 13); br = rotl(br, 10)
  17707. dr = fn3(dr, er, ar, br, cr, m[12], 0x6d703ef3, 5); ar = rotl(ar, 10)
  17708. cr = fn3(cr, dr, er, ar, br, m[2], 0x6d703ef3, 14); er = rotl(er, 10)
  17709. br = fn3(br, cr, dr, er, ar, m[10], 0x6d703ef3, 13); dr = rotl(dr, 10)
  17710. ar = fn3(ar, br, cr, dr, er, m[0], 0x6d703ef3, 13); cr = rotl(cr, 10)
  17711. er = fn3(er, ar, br, cr, dr, m[4], 0x6d703ef3, 7); br = rotl(br, 10)
  17712. dr = fn3(dr, er, ar, br, cr, m[13], 0x6d703ef3, 5); ar = rotl(ar, 10)
  17713. // M'j = 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
  17714. // K' = 0x7a6d76e9
  17715. // S'j = 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
  17716. cr = fn2(cr, dr, er, ar, br, m[8], 0x7a6d76e9, 15); er = rotl(er, 10)
  17717. br = fn2(br, cr, dr, er, ar, m[6], 0x7a6d76e9, 5); dr = rotl(dr, 10)
  17718. ar = fn2(ar, br, cr, dr, er, m[4], 0x7a6d76e9, 8); cr = rotl(cr, 10)
  17719. er = fn2(er, ar, br, cr, dr, m[1], 0x7a6d76e9, 11); br = rotl(br, 10)
  17720. dr = fn2(dr, er, ar, br, cr, m[3], 0x7a6d76e9, 14); ar = rotl(ar, 10)
  17721. cr = fn2(cr, dr, er, ar, br, m[11], 0x7a6d76e9, 14); er = rotl(er, 10)
  17722. br = fn2(br, cr, dr, er, ar, m[15], 0x7a6d76e9, 6); dr = rotl(dr, 10)
  17723. ar = fn2(ar, br, cr, dr, er, m[0], 0x7a6d76e9, 14); cr = rotl(cr, 10)
  17724. er = fn2(er, ar, br, cr, dr, m[5], 0x7a6d76e9, 6); br = rotl(br, 10)
  17725. dr = fn2(dr, er, ar, br, cr, m[12], 0x7a6d76e9, 9); ar = rotl(ar, 10)
  17726. cr = fn2(cr, dr, er, ar, br, m[2], 0x7a6d76e9, 12); er = rotl(er, 10)
  17727. br = fn2(br, cr, dr, er, ar, m[13], 0x7a6d76e9, 9); dr = rotl(dr, 10)
  17728. ar = fn2(ar, br, cr, dr, er, m[9], 0x7a6d76e9, 12); cr = rotl(cr, 10)
  17729. er = fn2(er, ar, br, cr, dr, m[7], 0x7a6d76e9, 5); br = rotl(br, 10)
  17730. dr = fn2(dr, er, ar, br, cr, m[10], 0x7a6d76e9, 15); ar = rotl(ar, 10)
  17731. cr = fn2(cr, dr, er, ar, br, m[14], 0x7a6d76e9, 8); er = rotl(er, 10)
  17732. // M'j = 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
  17733. // K' = 0x00000000
  17734. // S'j = 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
  17735. br = fn1(br, cr, dr, er, ar, m[12], 0x00000000, 8); dr = rotl(dr, 10)
  17736. ar = fn1(ar, br, cr, dr, er, m[15], 0x00000000, 5); cr = rotl(cr, 10)
  17737. er = fn1(er, ar, br, cr, dr, m[10], 0x00000000, 12); br = rotl(br, 10)
  17738. dr = fn1(dr, er, ar, br, cr, m[4], 0x00000000, 9); ar = rotl(ar, 10)
  17739. cr = fn1(cr, dr, er, ar, br, m[1], 0x00000000, 12); er = rotl(er, 10)
  17740. br = fn1(br, cr, dr, er, ar, m[5], 0x00000000, 5); dr = rotl(dr, 10)
  17741. ar = fn1(ar, br, cr, dr, er, m[8], 0x00000000, 14); cr = rotl(cr, 10)
  17742. er = fn1(er, ar, br, cr, dr, m[7], 0x00000000, 6); br = rotl(br, 10)
  17743. dr = fn1(dr, er, ar, br, cr, m[6], 0x00000000, 8); ar = rotl(ar, 10)
  17744. cr = fn1(cr, dr, er, ar, br, m[2], 0x00000000, 13); er = rotl(er, 10)
  17745. br = fn1(br, cr, dr, er, ar, m[13], 0x00000000, 6); dr = rotl(dr, 10)
  17746. ar = fn1(ar, br, cr, dr, er, m[14], 0x00000000, 5); cr = rotl(cr, 10)
  17747. er = fn1(er, ar, br, cr, dr, m[0], 0x00000000, 15); br = rotl(br, 10)
  17748. dr = fn1(dr, er, ar, br, cr, m[3], 0x00000000, 13); ar = rotl(ar, 10)
  17749. cr = fn1(cr, dr, er, ar, br, m[9], 0x00000000, 11); er = rotl(er, 10)
  17750. br = fn1(br, cr, dr, er, ar, m[11], 0x00000000, 11); dr = rotl(dr, 10)
  17751. // change state
  17752. var t = (this._b + cl + dr) | 0
  17753. this._b = (this._c + dl + er) | 0
  17754. this._c = (this._d + el + ar) | 0
  17755. this._d = (this._e + al + br) | 0
  17756. this._e = (this._a + bl + cr) | 0
  17757. this._a = t
  17758. }
  17759. RIPEMD160.prototype._digest = function () {
  17760. // create padding and handle blocks
  17761. this._block[this._blockOffset++] = 0x80
  17762. if (this._blockOffset > 56) {
  17763. this._block.fill(0, this._blockOffset, 64)
  17764. this._update()
  17765. this._blockOffset = 0
  17766. }
  17767. this._block.fill(0, this._blockOffset, 56)
  17768. this._block.writeUInt32LE(this._length[0], 56)
  17769. this._block.writeUInt32LE(this._length[1], 60)
  17770. this._update()
  17771. // produce result
  17772. var buffer = new Buffer(20)
  17773. buffer.writeInt32LE(this._a, 0)
  17774. buffer.writeInt32LE(this._b, 4)
  17775. buffer.writeInt32LE(this._c, 8)
  17776. buffer.writeInt32LE(this._d, 12)
  17777. buffer.writeInt32LE(this._e, 16)
  17778. return buffer
  17779. }
  17780. function rotl (x, n) {
  17781. return (x << n) | (x >>> (32 - n))
  17782. }
  17783. function fn1 (a, b, c, d, e, m, k, s) {
  17784. return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0
  17785. }
  17786. function fn2 (a, b, c, d, e, m, k, s) {
  17787. return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0
  17788. }
  17789. function fn3 (a, b, c, d, e, m, k, s) {
  17790. return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0
  17791. }
  17792. function fn4 (a, b, c, d, e, m, k, s) {
  17793. return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0
  17794. }
  17795. function fn5 (a, b, c, d, e, m, k, s) {
  17796. return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0
  17797. }
  17798. module.exports = RIPEMD160
  17799. }).call(this,require("buffer").Buffer)
  17800. },{"buffer":54,"hash-base":92,"inherits":108}],148:[function(require,module,exports){
  17801. /* eslint-disable node/no-deprecated-api */
  17802. var buffer = require('buffer')
  17803. var Buffer = buffer.Buffer
  17804. // alternative to using Object.keys for old browsers
  17805. function copyProps (src, dst) {
  17806. for (var key in src) {
  17807. dst[key] = src[key]
  17808. }
  17809. }
  17810. if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
  17811. module.exports = buffer
  17812. } else {
  17813. // Copy properties from require('buffer')
  17814. copyProps(buffer, exports)
  17815. exports.Buffer = SafeBuffer
  17816. }
  17817. function SafeBuffer (arg, encodingOrOffset, length) {
  17818. return Buffer(arg, encodingOrOffset, length)
  17819. }
  17820. // Copy static methods from Buffer
  17821. copyProps(Buffer, SafeBuffer)
  17822. SafeBuffer.from = function (arg, encodingOrOffset, length) {
  17823. if (typeof arg === 'number') {
  17824. throw new TypeError('Argument must not be a number')
  17825. }
  17826. return Buffer(arg, encodingOrOffset, length)
  17827. }
  17828. SafeBuffer.alloc = function (size, fill, encoding) {
  17829. if (typeof size !== 'number') {
  17830. throw new TypeError('Argument must be a number')
  17831. }
  17832. var buf = Buffer(size)
  17833. if (fill !== undefined) {
  17834. if (typeof encoding === 'string') {
  17835. buf.fill(fill, encoding)
  17836. } else {
  17837. buf.fill(fill)
  17838. }
  17839. } else {
  17840. buf.fill(0)
  17841. }
  17842. return buf
  17843. }
  17844. SafeBuffer.allocUnsafe = function (size) {
  17845. if (typeof size !== 'number') {
  17846. throw new TypeError('Argument must be a number')
  17847. }
  17848. return Buffer(size)
  17849. }
  17850. SafeBuffer.allocUnsafeSlow = function (size) {
  17851. if (typeof size !== 'number') {
  17852. throw new TypeError('Argument must be a number')
  17853. }
  17854. return buffer.SlowBuffer(size)
  17855. }
  17856. },{"buffer":54}],149:[function(require,module,exports){
  17857. (function (Buffer){
  17858. // prototype class for hash functions
  17859. function Hash (blockSize, finalSize) {
  17860. this._block = new Buffer(blockSize)
  17861. this._finalSize = finalSize
  17862. this._blockSize = blockSize
  17863. this._len = 0
  17864. this._s = 0
  17865. }
  17866. Hash.prototype.update = function (data, enc) {
  17867. if (typeof data === 'string') {
  17868. enc = enc || 'utf8'
  17869. data = new Buffer(data, enc)
  17870. }
  17871. var l = this._len += data.length
  17872. var s = this._s || 0
  17873. var f = 0
  17874. var buffer = this._block
  17875. while (s < l) {
  17876. var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
  17877. var ch = (t - f)
  17878. for (var i = 0; i < ch; i++) {
  17879. buffer[(s % this._blockSize) + i] = data[i + f]
  17880. }
  17881. s += ch
  17882. f += ch
  17883. if ((s % this._blockSize) === 0) {
  17884. this._update(buffer)
  17885. }
  17886. }
  17887. this._s = s
  17888. return this
  17889. }
  17890. Hash.prototype.digest = function (enc) {
  17891. // Suppose the length of the message M, in bits, is l
  17892. var l = this._len * 8
  17893. // Append the bit 1 to the end of the message
  17894. this._block[this._len % this._blockSize] = 0x80
  17895. // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
  17896. this._block.fill(0, this._len % this._blockSize + 1)
  17897. if (l % (this._blockSize * 8) >= this._finalSize * 8) {
  17898. this._update(this._block)
  17899. this._block.fill(0)
  17900. }
  17901. // to this append the block which is equal to the number l written in binary
  17902. // TODO: handle case where l is > Math.pow(2, 29)
  17903. this._block.writeInt32BE(l, this._blockSize - 4)
  17904. var hash = this._update(this._block) || this._hash()
  17905. return enc ? hash.toString(enc) : hash
  17906. }
  17907. Hash.prototype._update = function () {
  17908. throw new Error('_update must be implemented by subclass')
  17909. }
  17910. module.exports = Hash
  17911. }).call(this,require("buffer").Buffer)
  17912. },{"buffer":54}],150:[function(require,module,exports){
  17913. var exports = module.exports = function SHA (algorithm) {
  17914. algorithm = algorithm.toLowerCase()
  17915. var Algorithm = exports[algorithm]
  17916. if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
  17917. return new Algorithm()
  17918. }
  17919. exports.sha = require('./sha')
  17920. exports.sha1 = require('./sha1')
  17921. exports.sha224 = require('./sha224')
  17922. exports.sha256 = require('./sha256')
  17923. exports.sha384 = require('./sha384')
  17924. exports.sha512 = require('./sha512')
  17925. },{"./sha":151,"./sha1":152,"./sha224":153,"./sha256":154,"./sha384":155,"./sha512":156}],151:[function(require,module,exports){
  17926. (function (Buffer){
  17927. /*
  17928. * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
  17929. * in FIPS PUB 180-1
  17930. * This source code is derived from sha1.js of the same repository.
  17931. * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
  17932. * operation was added.
  17933. */
  17934. var inherits = require('inherits')
  17935. var Hash = require('./hash')
  17936. var K = [
  17937. 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
  17938. ]
  17939. var W = new Array(80)
  17940. function Sha () {
  17941. this.init()
  17942. this._w = W
  17943. Hash.call(this, 64, 56)
  17944. }
  17945. inherits(Sha, Hash)
  17946. Sha.prototype.init = function () {
  17947. this._a = 0x67452301
  17948. this._b = 0xefcdab89
  17949. this._c = 0x98badcfe
  17950. this._d = 0x10325476
  17951. this._e = 0xc3d2e1f0
  17952. return this
  17953. }
  17954. function rotl5 (num) {
  17955. return (num << 5) | (num >>> 27)
  17956. }
  17957. function rotl30 (num) {
  17958. return (num << 30) | (num >>> 2)
  17959. }
  17960. function ft (s, b, c, d) {
  17961. if (s === 0) return (b & c) | ((~b) & d)
  17962. if (s === 2) return (b & c) | (b & d) | (c & d)
  17963. return b ^ c ^ d
  17964. }
  17965. Sha.prototype._update = function (M) {
  17966. var W = this._w
  17967. var a = this._a | 0
  17968. var b = this._b | 0
  17969. var c = this._c | 0
  17970. var d = this._d | 0
  17971. var e = this._e | 0
  17972. for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
  17973. for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
  17974. for (var j = 0; j < 80; ++j) {
  17975. var s = ~~(j / 20)
  17976. var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
  17977. e = d
  17978. d = c
  17979. c = rotl30(b)
  17980. b = a
  17981. a = t
  17982. }
  17983. this._a = (a + this._a) | 0
  17984. this._b = (b + this._b) | 0
  17985. this._c = (c + this._c) | 0
  17986. this._d = (d + this._d) | 0
  17987. this._e = (e + this._e) | 0
  17988. }
  17989. Sha.prototype._hash = function () {
  17990. var H = new Buffer(20)
  17991. H.writeInt32BE(this._a | 0, 0)
  17992. H.writeInt32BE(this._b | 0, 4)
  17993. H.writeInt32BE(this._c | 0, 8)
  17994. H.writeInt32BE(this._d | 0, 12)
  17995. H.writeInt32BE(this._e | 0, 16)
  17996. return H
  17997. }
  17998. module.exports = Sha
  17999. }).call(this,require("buffer").Buffer)
  18000. },{"./hash":149,"buffer":54,"inherits":108}],152:[function(require,module,exports){
  18001. (function (Buffer){
  18002. /*
  18003. * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
  18004. * in FIPS PUB 180-1
  18005. * Version 2.1a Copyright Paul Johnston 2000 - 2002.
  18006. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
  18007. * Distributed under the BSD License
  18008. * See http://pajhome.org.uk/crypt/md5 for details.
  18009. */
  18010. var inherits = require('inherits')
  18011. var Hash = require('./hash')
  18012. var K = [
  18013. 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
  18014. ]
  18015. var W = new Array(80)
  18016. function Sha1 () {
  18017. this.init()
  18018. this._w = W
  18019. Hash.call(this, 64, 56)
  18020. }
  18021. inherits(Sha1, Hash)
  18022. Sha1.prototype.init = function () {
  18023. this._a = 0x67452301
  18024. this._b = 0xefcdab89
  18025. this._c = 0x98badcfe
  18026. this._d = 0x10325476
  18027. this._e = 0xc3d2e1f0
  18028. return this
  18029. }
  18030. function rotl1 (num) {
  18031. return (num << 1) | (num >>> 31)
  18032. }
  18033. function rotl5 (num) {
  18034. return (num << 5) | (num >>> 27)
  18035. }
  18036. function rotl30 (num) {
  18037. return (num << 30) | (num >>> 2)
  18038. }
  18039. function ft (s, b, c, d) {
  18040. if (s === 0) return (b & c) | ((~b) & d)
  18041. if (s === 2) return (b & c) | (b & d) | (c & d)
  18042. return b ^ c ^ d
  18043. }
  18044. Sha1.prototype._update = function (M) {
  18045. var W = this._w
  18046. var a = this._a | 0
  18047. var b = this._b | 0
  18048. var c = this._c | 0
  18049. var d = this._d | 0
  18050. var e = this._e | 0
  18051. for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
  18052. for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
  18053. for (var j = 0; j < 80; ++j) {
  18054. var s = ~~(j / 20)
  18055. var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
  18056. e = d
  18057. d = c
  18058. c = rotl30(b)
  18059. b = a
  18060. a = t
  18061. }
  18062. this._a = (a + this._a) | 0
  18063. this._b = (b + this._b) | 0
  18064. this._c = (c + this._c) | 0
  18065. this._d = (d + this._d) | 0
  18066. this._e = (e + this._e) | 0
  18067. }
  18068. Sha1.prototype._hash = function () {
  18069. var H = new Buffer(20)
  18070. H.writeInt32BE(this._a | 0, 0)
  18071. H.writeInt32BE(this._b | 0, 4)
  18072. H.writeInt32BE(this._c | 0, 8)
  18073. H.writeInt32BE(this._d | 0, 12)
  18074. H.writeInt32BE(this._e | 0, 16)
  18075. return H
  18076. }
  18077. module.exports = Sha1
  18078. }).call(this,require("buffer").Buffer)
  18079. },{"./hash":149,"buffer":54,"inherits":108}],153:[function(require,module,exports){
  18080. (function (Buffer){
  18081. /**
  18082. * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
  18083. * in FIPS 180-2
  18084. * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
  18085. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
  18086. *
  18087. */
  18088. var inherits = require('inherits')
  18089. var Sha256 = require('./sha256')
  18090. var Hash = require('./hash')
  18091. var W = new Array(64)
  18092. function Sha224 () {
  18093. this.init()
  18094. this._w = W // new Array(64)
  18095. Hash.call(this, 64, 56)
  18096. }
  18097. inherits(Sha224, Sha256)
  18098. Sha224.prototype.init = function () {
  18099. this._a = 0xc1059ed8
  18100. this._b = 0x367cd507
  18101. this._c = 0x3070dd17
  18102. this._d = 0xf70e5939
  18103. this._e = 0xffc00b31
  18104. this._f = 0x68581511
  18105. this._g = 0x64f98fa7
  18106. this._h = 0xbefa4fa4
  18107. return this
  18108. }
  18109. Sha224.prototype._hash = function () {
  18110. var H = new Buffer(28)
  18111. H.writeInt32BE(this._a, 0)
  18112. H.writeInt32BE(this._b, 4)
  18113. H.writeInt32BE(this._c, 8)
  18114. H.writeInt32BE(this._d, 12)
  18115. H.writeInt32BE(this._e, 16)
  18116. H.writeInt32BE(this._f, 20)
  18117. H.writeInt32BE(this._g, 24)
  18118. return H
  18119. }
  18120. module.exports = Sha224
  18121. }).call(this,require("buffer").Buffer)
  18122. },{"./hash":149,"./sha256":154,"buffer":54,"inherits":108}],154:[function(require,module,exports){
  18123. (function (Buffer){
  18124. /**
  18125. * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
  18126. * in FIPS 180-2
  18127. * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
  18128. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
  18129. *
  18130. */
  18131. var inherits = require('inherits')
  18132. var Hash = require('./hash')
  18133. var K = [
  18134. 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
  18135. 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
  18136. 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
  18137. 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
  18138. 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
  18139. 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
  18140. 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
  18141. 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
  18142. 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
  18143. 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
  18144. 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
  18145. 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
  18146. 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
  18147. 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
  18148. 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
  18149. 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
  18150. ]
  18151. var W = new Array(64)
  18152. function Sha256 () {
  18153. this.init()
  18154. this._w = W // new Array(64)
  18155. Hash.call(this, 64, 56)
  18156. }
  18157. inherits(Sha256, Hash)
  18158. Sha256.prototype.init = function () {
  18159. this._a = 0x6a09e667
  18160. this._b = 0xbb67ae85
  18161. this._c = 0x3c6ef372
  18162. this._d = 0xa54ff53a
  18163. this._e = 0x510e527f
  18164. this._f = 0x9b05688c
  18165. this._g = 0x1f83d9ab
  18166. this._h = 0x5be0cd19
  18167. return this
  18168. }
  18169. function ch (x, y, z) {
  18170. return z ^ (x & (y ^ z))
  18171. }
  18172. function maj (x, y, z) {
  18173. return (x & y) | (z & (x | y))
  18174. }
  18175. function sigma0 (x) {
  18176. return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
  18177. }
  18178. function sigma1 (x) {
  18179. return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
  18180. }
  18181. function gamma0 (x) {
  18182. return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
  18183. }
  18184. function gamma1 (x) {
  18185. return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
  18186. }
  18187. Sha256.prototype._update = function (M) {
  18188. var W = this._w
  18189. var a = this._a | 0
  18190. var b = this._b | 0
  18191. var c = this._c | 0
  18192. var d = this._d | 0
  18193. var e = this._e | 0
  18194. var f = this._f | 0
  18195. var g = this._g | 0
  18196. var h = this._h | 0
  18197. for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
  18198. for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
  18199. for (var j = 0; j < 64; ++j) {
  18200. var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
  18201. var T2 = (sigma0(a) + maj(a, b, c)) | 0
  18202. h = g
  18203. g = f
  18204. f = e
  18205. e = (d + T1) | 0
  18206. d = c
  18207. c = b
  18208. b = a
  18209. a = (T1 + T2) | 0
  18210. }
  18211. this._a = (a + this._a) | 0
  18212. this._b = (b + this._b) | 0
  18213. this._c = (c + this._c) | 0
  18214. this._d = (d + this._d) | 0
  18215. this._e = (e + this._e) | 0
  18216. this._f = (f + this._f) | 0
  18217. this._g = (g + this._g) | 0
  18218. this._h = (h + this._h) | 0
  18219. }
  18220. Sha256.prototype._hash = function () {
  18221. var H = new Buffer(32)
  18222. H.writeInt32BE(this._a, 0)
  18223. H.writeInt32BE(this._b, 4)
  18224. H.writeInt32BE(this._c, 8)
  18225. H.writeInt32BE(this._d, 12)
  18226. H.writeInt32BE(this._e, 16)
  18227. H.writeInt32BE(this._f, 20)
  18228. H.writeInt32BE(this._g, 24)
  18229. H.writeInt32BE(this._h, 28)
  18230. return H
  18231. }
  18232. module.exports = Sha256
  18233. }).call(this,require("buffer").Buffer)
  18234. },{"./hash":149,"buffer":54,"inherits":108}],155:[function(require,module,exports){
  18235. (function (Buffer){
  18236. var inherits = require('inherits')
  18237. var SHA512 = require('./sha512')
  18238. var Hash = require('./hash')
  18239. var W = new Array(160)
  18240. function Sha384 () {
  18241. this.init()
  18242. this._w = W
  18243. Hash.call(this, 128, 112)
  18244. }
  18245. inherits(Sha384, SHA512)
  18246. Sha384.prototype.init = function () {
  18247. this._ah = 0xcbbb9d5d
  18248. this._bh = 0x629a292a
  18249. this._ch = 0x9159015a
  18250. this._dh = 0x152fecd8
  18251. this._eh = 0x67332667
  18252. this._fh = 0x8eb44a87
  18253. this._gh = 0xdb0c2e0d
  18254. this._hh = 0x47b5481d
  18255. this._al = 0xc1059ed8
  18256. this._bl = 0x367cd507
  18257. this._cl = 0x3070dd17
  18258. this._dl = 0xf70e5939
  18259. this._el = 0xffc00b31
  18260. this._fl = 0x68581511
  18261. this._gl = 0x64f98fa7
  18262. this._hl = 0xbefa4fa4
  18263. return this
  18264. }
  18265. Sha384.prototype._hash = function () {
  18266. var H = new Buffer(48)
  18267. function writeInt64BE (h, l, offset) {
  18268. H.writeInt32BE(h, offset)
  18269. H.writeInt32BE(l, offset + 4)
  18270. }
  18271. writeInt64BE(this._ah, this._al, 0)
  18272. writeInt64BE(this._bh, this._bl, 8)
  18273. writeInt64BE(this._ch, this._cl, 16)
  18274. writeInt64BE(this._dh, this._dl, 24)
  18275. writeInt64BE(this._eh, this._el, 32)
  18276. writeInt64BE(this._fh, this._fl, 40)
  18277. return H
  18278. }
  18279. module.exports = Sha384
  18280. }).call(this,require("buffer").Buffer)
  18281. },{"./hash":149,"./sha512":156,"buffer":54,"inherits":108}],156:[function(require,module,exports){
  18282. (function (Buffer){
  18283. var inherits = require('inherits')
  18284. var Hash = require('./hash')
  18285. var K = [
  18286. 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
  18287. 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
  18288. 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
  18289. 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
  18290. 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
  18291. 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
  18292. 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
  18293. 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
  18294. 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
  18295. 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
  18296. 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
  18297. 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
  18298. 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
  18299. 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
  18300. 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
  18301. 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
  18302. 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
  18303. 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
  18304. 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
  18305. 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
  18306. 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
  18307. 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
  18308. 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
  18309. 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
  18310. 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
  18311. 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
  18312. 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
  18313. 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
  18314. 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
  18315. 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
  18316. 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
  18317. 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
  18318. 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
  18319. 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
  18320. 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
  18321. 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
  18322. 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
  18323. 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
  18324. 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
  18325. 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
  18326. ]
  18327. var W = new Array(160)
  18328. function Sha512 () {
  18329. this.init()
  18330. this._w = W
  18331. Hash.call(this, 128, 112)
  18332. }
  18333. inherits(Sha512, Hash)
  18334. Sha512.prototype.init = function () {
  18335. this._ah = 0x6a09e667
  18336. this._bh = 0xbb67ae85
  18337. this._ch = 0x3c6ef372
  18338. this._dh = 0xa54ff53a
  18339. this._eh = 0x510e527f
  18340. this._fh = 0x9b05688c
  18341. this._gh = 0x1f83d9ab
  18342. this._hh = 0x5be0cd19
  18343. this._al = 0xf3bcc908
  18344. this._bl = 0x84caa73b
  18345. this._cl = 0xfe94f82b
  18346. this._dl = 0x5f1d36f1
  18347. this._el = 0xade682d1
  18348. this._fl = 0x2b3e6c1f
  18349. this._gl = 0xfb41bd6b
  18350. this._hl = 0x137e2179
  18351. return this
  18352. }
  18353. function Ch (x, y, z) {
  18354. return z ^ (x & (y ^ z))
  18355. }
  18356. function maj (x, y, z) {
  18357. return (x & y) | (z & (x | y))
  18358. }
  18359. function sigma0 (x, xl) {
  18360. return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
  18361. }
  18362. function sigma1 (x, xl) {
  18363. return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
  18364. }
  18365. function Gamma0 (x, xl) {
  18366. return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
  18367. }
  18368. function Gamma0l (x, xl) {
  18369. return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
  18370. }
  18371. function Gamma1 (x, xl) {
  18372. return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
  18373. }
  18374. function Gamma1l (x, xl) {
  18375. return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
  18376. }
  18377. function getCarry (a, b) {
  18378. return (a >>> 0) < (b >>> 0) ? 1 : 0
  18379. }
  18380. Sha512.prototype._update = function (M) {
  18381. var W = this._w
  18382. var ah = this._ah | 0
  18383. var bh = this._bh | 0
  18384. var ch = this._ch | 0
  18385. var dh = this._dh | 0
  18386. var eh = this._eh | 0
  18387. var fh = this._fh | 0
  18388. var gh = this._gh | 0
  18389. var hh = this._hh | 0
  18390. var al = this._al | 0
  18391. var bl = this._bl | 0
  18392. var cl = this._cl | 0
  18393. var dl = this._dl | 0
  18394. var el = this._el | 0
  18395. var fl = this._fl | 0
  18396. var gl = this._gl | 0
  18397. var hl = this._hl | 0
  18398. for (var i = 0; i < 32; i += 2) {
  18399. W[i] = M.readInt32BE(i * 4)
  18400. W[i + 1] = M.readInt32BE(i * 4 + 4)
  18401. }
  18402. for (; i < 160; i += 2) {
  18403. var xh = W[i - 15 * 2]
  18404. var xl = W[i - 15 * 2 + 1]
  18405. var gamma0 = Gamma0(xh, xl)
  18406. var gamma0l = Gamma0l(xl, xh)
  18407. xh = W[i - 2 * 2]
  18408. xl = W[i - 2 * 2 + 1]
  18409. var gamma1 = Gamma1(xh, xl)
  18410. var gamma1l = Gamma1l(xl, xh)
  18411. // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
  18412. var Wi7h = W[i - 7 * 2]
  18413. var Wi7l = W[i - 7 * 2 + 1]
  18414. var Wi16h = W[i - 16 * 2]
  18415. var Wi16l = W[i - 16 * 2 + 1]
  18416. var Wil = (gamma0l + Wi7l) | 0
  18417. var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
  18418. Wil = (Wil + gamma1l) | 0
  18419. Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
  18420. Wil = (Wil + Wi16l) | 0
  18421. Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
  18422. W[i] = Wih
  18423. W[i + 1] = Wil
  18424. }
  18425. for (var j = 0; j < 160; j += 2) {
  18426. Wih = W[j]
  18427. Wil = W[j + 1]
  18428. var majh = maj(ah, bh, ch)
  18429. var majl = maj(al, bl, cl)
  18430. var sigma0h = sigma0(ah, al)
  18431. var sigma0l = sigma0(al, ah)
  18432. var sigma1h = sigma1(eh, el)
  18433. var sigma1l = sigma1(el, eh)
  18434. // t1 = h + sigma1 + ch + K[j] + W[j]
  18435. var Kih = K[j]
  18436. var Kil = K[j + 1]
  18437. var chh = Ch(eh, fh, gh)
  18438. var chl = Ch(el, fl, gl)
  18439. var t1l = (hl + sigma1l) | 0
  18440. var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
  18441. t1l = (t1l + chl) | 0
  18442. t1h = (t1h + chh + getCarry(t1l, chl)) | 0
  18443. t1l = (t1l + Kil) | 0
  18444. t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
  18445. t1l = (t1l + Wil) | 0
  18446. t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
  18447. // t2 = sigma0 + maj
  18448. var t2l = (sigma0l + majl) | 0
  18449. var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
  18450. hh = gh
  18451. hl = gl
  18452. gh = fh
  18453. gl = fl
  18454. fh = eh
  18455. fl = el
  18456. el = (dl + t1l) | 0
  18457. eh = (dh + t1h + getCarry(el, dl)) | 0
  18458. dh = ch
  18459. dl = cl
  18460. ch = bh
  18461. cl = bl
  18462. bh = ah
  18463. bl = al
  18464. al = (t1l + t2l) | 0
  18465. ah = (t1h + t2h + getCarry(al, t1l)) | 0
  18466. }
  18467. this._al = (this._al + al) | 0
  18468. this._bl = (this._bl + bl) | 0
  18469. this._cl = (this._cl + cl) | 0
  18470. this._dl = (this._dl + dl) | 0
  18471. this._el = (this._el + el) | 0
  18472. this._fl = (this._fl + fl) | 0
  18473. this._gl = (this._gl + gl) | 0
  18474. this._hl = (this._hl + hl) | 0
  18475. this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
  18476. this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
  18477. this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
  18478. this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
  18479. this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
  18480. this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
  18481. this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
  18482. this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
  18483. }
  18484. Sha512.prototype._hash = function () {
  18485. var H = new Buffer(64)
  18486. function writeInt64BE (h, l, offset) {
  18487. H.writeInt32BE(h, offset)
  18488. H.writeInt32BE(l, offset + 4)
  18489. }
  18490. writeInt64BE(this._ah, this._al, 0)
  18491. writeInt64BE(this._bh, this._bl, 8)
  18492. writeInt64BE(this._ch, this._cl, 16)
  18493. writeInt64BE(this._dh, this._dl, 24)
  18494. writeInt64BE(this._eh, this._el, 32)
  18495. writeInt64BE(this._fh, this._fl, 40)
  18496. writeInt64BE(this._gh, this._gl, 48)
  18497. writeInt64BE(this._hh, this._hl, 56)
  18498. return H
  18499. }
  18500. module.exports = Sha512
  18501. }).call(this,require("buffer").Buffer)
  18502. },{"./hash":149,"buffer":54,"inherits":108}],157:[function(require,module,exports){
  18503. // Copyright Joyent, Inc. and other Node contributors.
  18504. //
  18505. // Permission is hereby granted, free of charge, to any person obtaining a
  18506. // copy of this software and associated documentation files (the
  18507. // "Software"), to deal in the Software without restriction, including
  18508. // without limitation the rights to use, copy, modify, merge, publish,
  18509. // distribute, sublicense, and/or sell copies of the Software, and to permit
  18510. // persons to whom the Software is furnished to do so, subject to the
  18511. // following conditions:
  18512. //
  18513. // The above copyright notice and this permission notice shall be included
  18514. // in all copies or substantial portions of the Software.
  18515. //
  18516. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  18517. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  18518. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  18519. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  18520. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  18521. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  18522. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  18523. module.exports = Stream;
  18524. var EE = require('events').EventEmitter;
  18525. var inherits = require('inherits');
  18526. inherits(Stream, EE);
  18527. Stream.Readable = require('readable-stream/readable.js');
  18528. Stream.Writable = require('readable-stream/writable.js');
  18529. Stream.Duplex = require('readable-stream/duplex.js');
  18530. Stream.Transform = require('readable-stream/transform.js');
  18531. Stream.PassThrough = require('readable-stream/passthrough.js');
  18532. // Backwards-compat with node 0.4.x
  18533. Stream.Stream = Stream;
  18534. // old-style streams. Note that the pipe method (the only relevant
  18535. // part of this class) is overridden in the Readable class.
  18536. function Stream() {
  18537. EE.call(this);
  18538. }
  18539. Stream.prototype.pipe = function(dest, options) {
  18540. var source = this;
  18541. function ondata(chunk) {
  18542. if (dest.writable) {
  18543. if (false === dest.write(chunk) && source.pause) {
  18544. source.pause();
  18545. }
  18546. }
  18547. }
  18548. source.on('data', ondata);
  18549. function ondrain() {
  18550. if (source.readable && source.resume) {
  18551. source.resume();
  18552. }
  18553. }
  18554. dest.on('drain', ondrain);
  18555. // If the 'end' option is not supplied, dest.end() will be called when
  18556. // source gets the 'end' or 'close' events. Only dest.end() once.
  18557. if (!dest._isStdio && (!options || options.end !== false)) {
  18558. source.on('end', onend);
  18559. source.on('close', onclose);
  18560. }
  18561. var didOnEnd = false;
  18562. function onend() {
  18563. if (didOnEnd) return;
  18564. didOnEnd = true;
  18565. dest.end();
  18566. }
  18567. function onclose() {
  18568. if (didOnEnd) return;
  18569. didOnEnd = true;
  18570. if (typeof dest.destroy === 'function') dest.destroy();
  18571. }
  18572. // don't leave dangling pipes when there are errors.
  18573. function onerror(er) {
  18574. cleanup();
  18575. if (EE.listenerCount(this, 'error') === 0) {
  18576. throw er; // Unhandled stream error in pipe.
  18577. }
  18578. }
  18579. source.on('error', onerror);
  18580. dest.on('error', onerror);
  18581. // remove all the event listeners that were added.
  18582. function cleanup() {
  18583. source.removeListener('data', ondata);
  18584. dest.removeListener('drain', ondrain);
  18585. source.removeListener('end', onend);
  18586. source.removeListener('close', onclose);
  18587. source.removeListener('error', onerror);
  18588. dest.removeListener('error', onerror);
  18589. source.removeListener('end', cleanup);
  18590. source.removeListener('close', cleanup);
  18591. dest.removeListener('close', cleanup);
  18592. }
  18593. source.on('end', cleanup);
  18594. source.on('close', cleanup);
  18595. dest.on('close', cleanup);
  18596. dest.emit('pipe', source);
  18597. // Allow for unix-like usage: A.pipe(B).pipe(C)
  18598. return dest;
  18599. };
  18600. },{"events":90,"inherits":108,"readable-stream/duplex.js":134,"readable-stream/passthrough.js":143,"readable-stream/readable.js":144,"readable-stream/transform.js":145,"readable-stream/writable.js":146}],158:[function(require,module,exports){
  18601. 'use strict';
  18602. var Buffer = require('safe-buffer').Buffer;
  18603. var isEncoding = Buffer.isEncoding || function (encoding) {
  18604. encoding = '' + encoding;
  18605. switch (encoding && encoding.toLowerCase()) {
  18606. case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
  18607. return true;
  18608. default:
  18609. return false;
  18610. }
  18611. };
  18612. function _normalizeEncoding(enc) {
  18613. if (!enc) return 'utf8';
  18614. var retried;
  18615. while (true) {
  18616. switch (enc) {
  18617. case 'utf8':
  18618. case 'utf-8':
  18619. return 'utf8';
  18620. case 'ucs2':
  18621. case 'ucs-2':
  18622. case 'utf16le':
  18623. case 'utf-16le':
  18624. return 'utf16le';
  18625. case 'latin1':
  18626. case 'binary':
  18627. return 'latin1';
  18628. case 'base64':
  18629. case 'ascii':
  18630. case 'hex':
  18631. return enc;
  18632. default:
  18633. if (retried) return; // undefined
  18634. enc = ('' + enc).toLowerCase();
  18635. retried = true;
  18636. }
  18637. }
  18638. };
  18639. // Do not cache `Buffer.isEncoding` when checking encoding names as some
  18640. // modules monkey-patch it to support additional encodings
  18641. function normalizeEncoding(enc) {
  18642. var nenc = _normalizeEncoding(enc);
  18643. if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
  18644. return nenc || enc;
  18645. }
  18646. // StringDecoder provides an interface for efficiently splitting a series of
  18647. // buffers into a series of JS strings without breaking apart multi-byte
  18648. // characters.
  18649. exports.StringDecoder = StringDecoder;
  18650. function StringDecoder(encoding) {
  18651. this.encoding = normalizeEncoding(encoding);
  18652. var nb;
  18653. switch (this.encoding) {
  18654. case 'utf16le':
  18655. this.text = utf16Text;
  18656. this.end = utf16End;
  18657. nb = 4;
  18658. break;
  18659. case 'utf8':
  18660. this.fillLast = utf8FillLast;
  18661. nb = 4;
  18662. break;
  18663. case 'base64':
  18664. this.text = base64Text;
  18665. this.end = base64End;
  18666. nb = 3;
  18667. break;
  18668. default:
  18669. this.write = simpleWrite;
  18670. this.end = simpleEnd;
  18671. return;
  18672. }
  18673. this.lastNeed = 0;
  18674. this.lastTotal = 0;
  18675. this.lastChar = Buffer.allocUnsafe(nb);
  18676. }
  18677. StringDecoder.prototype.write = function (buf) {
  18678. if (buf.length === 0) return '';
  18679. var r;
  18680. var i;
  18681. if (this.lastNeed) {
  18682. r = this.fillLast(buf);
  18683. if (r === undefined) return '';
  18684. i = this.lastNeed;
  18685. this.lastNeed = 0;
  18686. } else {
  18687. i = 0;
  18688. }
  18689. if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
  18690. return r || '';
  18691. };
  18692. StringDecoder.prototype.end = utf8End;
  18693. // Returns only complete characters in a Buffer
  18694. StringDecoder.prototype.text = utf8Text;
  18695. // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
  18696. StringDecoder.prototype.fillLast = function (buf) {
  18697. if (this.lastNeed <= buf.length) {
  18698. buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
  18699. return this.lastChar.toString(this.encoding, 0, this.lastTotal);
  18700. }
  18701. buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
  18702. this.lastNeed -= buf.length;
  18703. };
  18704. // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
  18705. // continuation byte.
  18706. function utf8CheckByte(byte) {
  18707. if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
  18708. return -1;
  18709. }
  18710. // Checks at most 3 bytes at the end of a Buffer in order to detect an
  18711. // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
  18712. // needed to complete the UTF-8 character (if applicable) are returned.
  18713. function utf8CheckIncomplete(self, buf, i) {
  18714. var j = buf.length - 1;
  18715. if (j < i) return 0;
  18716. var nb = utf8CheckByte(buf[j]);
  18717. if (nb >= 0) {
  18718. if (nb > 0) self.lastNeed = nb - 1;
  18719. return nb;
  18720. }
  18721. if (--j < i) return 0;
  18722. nb = utf8CheckByte(buf[j]);
  18723. if (nb >= 0) {
  18724. if (nb > 0) self.lastNeed = nb - 2;
  18725. return nb;
  18726. }
  18727. if (--j < i) return 0;
  18728. nb = utf8CheckByte(buf[j]);
  18729. if (nb >= 0) {
  18730. if (nb > 0) {
  18731. if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
  18732. }
  18733. return nb;
  18734. }
  18735. return 0;
  18736. }
  18737. // Validates as many continuation bytes for a multi-byte UTF-8 character as
  18738. // needed or are available. If we see a non-continuation byte where we expect
  18739. // one, we "replace" the validated continuation bytes we've seen so far with
  18740. // UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
  18741. // behavior. The continuation byte check is included three times in the case
  18742. // where all of the continuation bytes for a character exist in the same buffer.
  18743. // It is also done this way as a slight performance increase instead of using a
  18744. // loop.
  18745. function utf8CheckExtraBytes(self, buf, p) {
  18746. if ((buf[0] & 0xC0) !== 0x80) {
  18747. self.lastNeed = 0;
  18748. return '\ufffd'.repeat(p);
  18749. }
  18750. if (self.lastNeed > 1 && buf.length > 1) {
  18751. if ((buf[1] & 0xC0) !== 0x80) {
  18752. self.lastNeed = 1;
  18753. return '\ufffd'.repeat(p + 1);
  18754. }
  18755. if (self.lastNeed > 2 && buf.length > 2) {
  18756. if ((buf[2] & 0xC0) !== 0x80) {
  18757. self.lastNeed = 2;
  18758. return '\ufffd'.repeat(p + 2);
  18759. }
  18760. }
  18761. }
  18762. }
  18763. // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
  18764. function utf8FillLast(buf) {
  18765. var p = this.lastTotal - this.lastNeed;
  18766. var r = utf8CheckExtraBytes(this, buf, p);
  18767. if (r !== undefined) return r;
  18768. if (this.lastNeed <= buf.length) {
  18769. buf.copy(this.lastChar, p, 0, this.lastNeed);
  18770. return this.lastChar.toString(this.encoding, 0, this.lastTotal);
  18771. }
  18772. buf.copy(this.lastChar, p, 0, buf.length);
  18773. this.lastNeed -= buf.length;
  18774. }
  18775. // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
  18776. // partial character, the character's bytes are buffered until the required
  18777. // number of bytes are available.
  18778. function utf8Text(buf, i) {
  18779. var total = utf8CheckIncomplete(this, buf, i);
  18780. if (!this.lastNeed) return buf.toString('utf8', i);
  18781. this.lastTotal = total;
  18782. var end = buf.length - (total - this.lastNeed);
  18783. buf.copy(this.lastChar, 0, end);
  18784. return buf.toString('utf8', i, end);
  18785. }
  18786. // For UTF-8, a replacement character for each buffered byte of a (partial)
  18787. // character needs to be added to the output.
  18788. function utf8End(buf) {
  18789. var r = buf && buf.length ? this.write(buf) : '';
  18790. if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
  18791. return r;
  18792. }
  18793. // UTF-16LE typically needs two bytes per character, but even if we have an even
  18794. // number of bytes available, we need to check if we end on a leading/high
  18795. // surrogate. In that case, we need to wait for the next two bytes in order to
  18796. // decode the last character properly.
  18797. function utf16Text(buf, i) {
  18798. if ((buf.length - i) % 2 === 0) {
  18799. var r = buf.toString('utf16le', i);
  18800. if (r) {
  18801. var c = r.charCodeAt(r.length - 1);
  18802. if (c >= 0xD800 && c <= 0xDBFF) {
  18803. this.lastNeed = 2;
  18804. this.lastTotal = 4;
  18805. this.lastChar[0] = buf[buf.length - 2];
  18806. this.lastChar[1] = buf[buf.length - 1];
  18807. return r.slice(0, -1);
  18808. }
  18809. }
  18810. return r;
  18811. }
  18812. this.lastNeed = 1;
  18813. this.lastTotal = 2;
  18814. this.lastChar[0] = buf[buf.length - 1];
  18815. return buf.toString('utf16le', i, buf.length - 1);
  18816. }
  18817. // For UTF-16LE we do not explicitly append special replacement characters if we
  18818. // end on a partial character, we simply let v8 handle that.
  18819. function utf16End(buf) {
  18820. var r = buf && buf.length ? this.write(buf) : '';
  18821. if (this.lastNeed) {
  18822. var end = this.lastTotal - this.lastNeed;
  18823. return r + this.lastChar.toString('utf16le', 0, end);
  18824. }
  18825. return r;
  18826. }
  18827. function base64Text(buf, i) {
  18828. var n = (buf.length - i) % 3;
  18829. if (n === 0) return buf.toString('base64', i);
  18830. this.lastNeed = 3 - n;
  18831. this.lastTotal = 3;
  18832. if (n === 1) {
  18833. this.lastChar[0] = buf[buf.length - 1];
  18834. } else {
  18835. this.lastChar[0] = buf[buf.length - 2];
  18836. this.lastChar[1] = buf[buf.length - 1];
  18837. }
  18838. return buf.toString('base64', i, buf.length - n);
  18839. }
  18840. function base64End(buf) {
  18841. var r = buf && buf.length ? this.write(buf) : '';
  18842. if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
  18843. return r;
  18844. }
  18845. // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
  18846. function simpleWrite(buf) {
  18847. return buf.toString(this.encoding);
  18848. }
  18849. function simpleEnd(buf) {
  18850. return buf && buf.length ? this.write(buf) : '';
  18851. }
  18852. },{"safe-buffer":148}],159:[function(require,module,exports){
  18853. (function (global){
  18854. /**
  18855. * Module exports.
  18856. */
  18857. module.exports = deprecate;
  18858. /**
  18859. * Mark that a method should not be used.
  18860. * Returns a modified function which warns once by default.
  18861. *
  18862. * If `localStorage.noDeprecation = true` is set, then it is a no-op.
  18863. *
  18864. * If `localStorage.throwDeprecation = true` is set, then deprecated functions
  18865. * will throw an Error when invoked.
  18866. *
  18867. * If `localStorage.traceDeprecation = true` is set, then deprecated functions
  18868. * will invoke `console.trace()` instead of `console.error()`.
  18869. *
  18870. * @param {Function} fn - the function to deprecate
  18871. * @param {String} msg - the string to print to the console when `fn` is invoked
  18872. * @returns {Function} a new "deprecated" version of `fn`
  18873. * @api public
  18874. */
  18875. function deprecate (fn, msg) {
  18876. if (config('noDeprecation')) {
  18877. return fn;
  18878. }
  18879. var warned = false;
  18880. function deprecated() {
  18881. if (!warned) {
  18882. if (config('throwDeprecation')) {
  18883. throw new Error(msg);
  18884. } else if (config('traceDeprecation')) {
  18885. console.trace(msg);
  18886. } else {
  18887. console.warn(msg);
  18888. }
  18889. warned = true;
  18890. }
  18891. return fn.apply(this, arguments);
  18892. }
  18893. return deprecated;
  18894. }
  18895. /**
  18896. * Checks `localStorage` for boolean values for the given `name`.
  18897. *
  18898. * @param {String} name
  18899. * @returns {Boolean}
  18900. * @api private
  18901. */
  18902. function config (name) {
  18903. // accessing global.localStorage can trigger a DOMException in sandboxed iframes
  18904. try {
  18905. if (!global.localStorage) return false;
  18906. } catch (_) {
  18907. return false;
  18908. }
  18909. var val = global.localStorage[name];
  18910. if (null == val) return false;
  18911. return String(val).toLowerCase() === 'true';
  18912. }
  18913. }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
  18914. },{}],160:[function(require,module,exports){
  18915. var indexOf = require('indexof');
  18916. var Object_keys = function (obj) {
  18917. if (Object.keys) return Object.keys(obj)
  18918. else {
  18919. var res = [];
  18920. for (var key in obj) res.push(key)
  18921. return res;
  18922. }
  18923. };
  18924. var forEach = function (xs, fn) {
  18925. if (xs.forEach) return xs.forEach(fn)
  18926. else for (var i = 0; i < xs.length; i++) {
  18927. fn(xs[i], i, xs);
  18928. }
  18929. };
  18930. var defineProp = (function() {
  18931. try {
  18932. Object.defineProperty({}, '_', {});
  18933. return function(obj, name, value) {
  18934. Object.defineProperty(obj, name, {
  18935. writable: true,
  18936. enumerable: false,
  18937. configurable: true,
  18938. value: value
  18939. })
  18940. };
  18941. } catch(e) {
  18942. return function(obj, name, value) {
  18943. obj[name] = value;
  18944. };
  18945. }
  18946. }());
  18947. var globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function',
  18948. 'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError',
  18949. 'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError',
  18950. 'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape',
  18951. 'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];
  18952. function Context() {}
  18953. Context.prototype = {};
  18954. var Script = exports.Script = function NodeScript (code) {
  18955. if (!(this instanceof Script)) return new Script(code);
  18956. this.code = code;
  18957. };
  18958. Script.prototype.runInContext = function (context) {
  18959. if (!(context instanceof Context)) {
  18960. throw new TypeError("needs a 'context' argument.");
  18961. }
  18962. var iframe = document.createElement('iframe');
  18963. if (!iframe.style) iframe.style = {};
  18964. iframe.style.display = 'none';
  18965. document.body.appendChild(iframe);
  18966. var win = iframe.contentWindow;
  18967. var wEval = win.eval, wExecScript = win.execScript;
  18968. if (!wEval && wExecScript) {
  18969. // win.eval() magically appears when this is called in IE:
  18970. wExecScript.call(win, 'null');
  18971. wEval = win.eval;
  18972. }
  18973. forEach(Object_keys(context), function (key) {
  18974. win[key] = context[key];
  18975. });
  18976. forEach(globals, function (key) {
  18977. if (context[key]) {
  18978. win[key] = context[key];
  18979. }
  18980. });
  18981. var winKeys = Object_keys(win);
  18982. var res = wEval.call(win, this.code);
  18983. forEach(Object_keys(win), function (key) {
  18984. // Avoid copying circular objects like `top` and `window` by only
  18985. // updating existing context properties or new properties in the `win`
  18986. // that was only introduced after the eval.
  18987. if (key in context || indexOf(winKeys, key) === -1) {
  18988. context[key] = win[key];
  18989. }
  18990. });
  18991. forEach(globals, function (key) {
  18992. if (!(key in context)) {
  18993. defineProp(context, key, win[key]);
  18994. }
  18995. });
  18996. document.body.removeChild(iframe);
  18997. return res;
  18998. };
  18999. Script.prototype.runInThisContext = function () {
  19000. return eval(this.code); // maybe...
  19001. };
  19002. Script.prototype.runInNewContext = function (context) {
  19003. var ctx = Script.createContext(context);
  19004. var res = this.runInContext(ctx);
  19005. forEach(Object_keys(ctx), function (key) {
  19006. context[key] = ctx[key];
  19007. });
  19008. return res;
  19009. };
  19010. forEach(Object_keys(Script.prototype), function (name) {
  19011. exports[name] = Script[name] = function (code) {
  19012. var s = Script(code);
  19013. return s[name].apply(s, [].slice.call(arguments, 1));
  19014. };
  19015. });
  19016. exports.createScript = function (code) {
  19017. return exports.Script(code);
  19018. };
  19019. exports.createContext = Script.createContext = function (context) {
  19020. var copy = new Context();
  19021. if(typeof context === 'object') {
  19022. forEach(Object_keys(context), function (key) {
  19023. copy[key] = context[key];
  19024. });
  19025. }
  19026. return copy;
  19027. };
  19028. },{"indexof":107}]},{},[1]);
  19029. function parseEpt(event) {
  19030. let buffer = event.data.buffer;
  19031. let view = new DataView(buffer);
  19032. let schema = event.data.schema;
  19033. let scale = event.data.scale;
  19034. let offset = event.data.offset;
  19035. let mins = event.data.mins;
  19036. let dimensions = schema.reduce((p, c) => {
  19037. p[c.name] = c;
  19038. return p;
  19039. }, { });
  19040. let dimOffset = (name) => {
  19041. let offset = 0;
  19042. for (var i = 0; i < schema.length; ++i) {
  19043. if (schema[i].name == name) return offset;
  19044. offset += schema[i].size;
  19045. }
  19046. return undefined;
  19047. };
  19048. let getExtractor = (name) => {
  19049. let offset = dimOffset(name);
  19050. let type = dimensions[name].type;
  19051. let size = dimensions[name].size;
  19052. if (type == 'signed') switch (size) {
  19053. case 1: return (p) => view.getInt8(p + offset);
  19054. case 2: return (p) => view.getInt16(p + offset, true);
  19055. case 4: return (p) => view.getInt32(p + offset, true);
  19056. case 8: return (p) => view.getInt64(p + offset, true);
  19057. }
  19058. if (type == 'unsigned') switch (size) {
  19059. case 1: return (p) => view.getUint8(p + offset);
  19060. case 2: return (p) => view.getUint16(p + offset, true);
  19061. case 4: return (p) => view.getUint32(p + offset, true);
  19062. case 8: return (p) => view.getUint64(p + offset, true);
  19063. }
  19064. if (type == 'float') switch (size) {
  19065. case 4: return (p) => view.getFloat32(p + offset, true);
  19066. case 8: return (p) => view.getFloat64(p + offset, true);
  19067. }
  19068. let str = JSON.stringify(dimensions[name]);
  19069. throw new Error(`Invalid dimension specification for ${name}: ${str}`);
  19070. };
  19071. let pointSize = schema.reduce((p, c) => p + c.size, 0);
  19072. let numPoints = buffer.byteLength / pointSize;
  19073. let xyzBuffer, rgbBuffer, intensityBuffer, classificationBuffer,
  19074. returnNumberBuffer, numberOfReturnsBuffer, pointSourceIdBuffer;
  19075. let xyz, rgb, intensity, classification, returnNumber, numberOfReturns,
  19076. pointSourceId;
  19077. let xyzExtractor, rgbExtractor, intensityExtractor, classificationExtractor,
  19078. returnNumberExtractor, numberOfReturnsExtractor, pointSourceIdExtractor;
  19079. let twoByteColor = false;
  19080. if (dimensions['X'] && dimensions['Y'] && dimensions['Z']) {
  19081. xyzBuffer = new ArrayBuffer(numPoints * 4 * 3);
  19082. xyz = new Float32Array(xyzBuffer);
  19083. xyzExtractor = [
  19084. getExtractor('X'),
  19085. getExtractor('Y'),
  19086. getExtractor('Z')
  19087. ];
  19088. }
  19089. if (dimensions['Red'] && dimensions['Green'] && dimensions['Blue']) {
  19090. rgbBuffer = new ArrayBuffer(numPoints * 4);
  19091. rgb = new Uint8Array(rgbBuffer);
  19092. rgbExtractor = [
  19093. getExtractor('Red'),
  19094. getExtractor('Green'),
  19095. getExtractor('Blue')
  19096. ];
  19097. let r, g, b, pos;
  19098. for (let i = 0; i < numPoints && !twoByteColor; ++i) {
  19099. pos = i * pointSize;
  19100. r = rgbExtractor[0](pos);
  19101. g = rgbExtractor[1](pos);
  19102. b = rgbExtractor[2](pos);
  19103. if (r > 255 || g > 255 || b > 255) twoByteColor = true;
  19104. }
  19105. }
  19106. if (dimensions['Intensity']) {
  19107. intensityBuffer = new ArrayBuffer(numPoints * 4);
  19108. intensity = new Float32Array(intensityBuffer);
  19109. intensityExtractor = getExtractor('Intensity');
  19110. }
  19111. if (dimensions['Classification']) {
  19112. classificationBuffer = new ArrayBuffer(numPoints);
  19113. classification = new Uint8Array(classificationBuffer);
  19114. classificationExtractor = getExtractor('Classification');
  19115. }
  19116. if (dimensions['ReturnNumber']) {
  19117. returnNumberBuffer = new ArrayBuffer(numPoints);
  19118. returnNumber = new Uint8Array(returnNumberBuffer);
  19119. returnNumberExtractor = getExtractor('ReturnNumber');
  19120. }
  19121. if (dimensions['NumberOfReturns']) {
  19122. numberOfReturnsBuffer = new ArrayBuffer(numPoints);
  19123. numberOfReturns = new Uint8Array(numberOfReturnsBuffer);
  19124. numberOfReturnsExtractor = getExtractor('NumberOfReturns');
  19125. }
  19126. if (dimensions['PointSourceId']) {
  19127. pointSourceIdBuffer = new ArrayBuffer(numPoints * 2);
  19128. pointSourceId = new Uint16Array(pointSourceIdBuffer);
  19129. pointSourceIdExtractor = getExtractor('PointSourceId');
  19130. }
  19131. let mean = [0, 0, 0];
  19132. let bounds = {
  19133. min: [Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE],
  19134. max: [-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE],
  19135. };
  19136. let x, y, z, r, g, b;
  19137. for (let i = 0; i < numPoints; ++i) {
  19138. let pos = i * pointSize;
  19139. if (xyz) {
  19140. x = xyzExtractor[0](pos) * scale.x + offset.x - mins[0];
  19141. y = xyzExtractor[1](pos) * scale.y + offset.y - mins[1];
  19142. z = xyzExtractor[2](pos) * scale.z + offset.z - mins[2];
  19143. mean[0] += x / numPoints;
  19144. mean[1] += y / numPoints;
  19145. mean[2] += z / numPoints;
  19146. bounds.min[0] = Math.min(bounds.min[0], x);
  19147. bounds.min[1] = Math.min(bounds.min[1], y);
  19148. bounds.min[2] = Math.min(bounds.min[2], z);
  19149. bounds.max[0] = Math.max(bounds.max[0], x);
  19150. bounds.max[1] = Math.max(bounds.max[1], y);
  19151. bounds.max[2] = Math.max(bounds.max[2], z);
  19152. xyz[3 * i + 0] = x;
  19153. xyz[3 * i + 1] = y;
  19154. xyz[3 * i + 2] = z;
  19155. }
  19156. if (rgb) {
  19157. r = rgbExtractor[0](pos);
  19158. g = rgbExtractor[1](pos);
  19159. b = rgbExtractor[2](pos);
  19160. if (twoByteColor) {
  19161. r /= 256;
  19162. g /= 256;
  19163. b /= 256;
  19164. }
  19165. rgb[4 * i + 0] = r;
  19166. rgb[4 * i + 1] = g;
  19167. rgb[4 * i + 2] = b;
  19168. }
  19169. if (intensity) intensity[i] = intensityExtractor(pos);
  19170. if (classification) classification[i] = classificationExtractor(pos);
  19171. if (returnNumber) returnNumber[i] = returnNumberExtractor(pos);
  19172. if (numberOfReturns) numberOfReturns[i] = numberOfReturnsExtractor(pos);
  19173. if (pointSourceId) pointSourceId[i] = pointSourceIdExtractor(pos);
  19174. }
  19175. let indicesBuffer = new ArrayBuffer(numPoints * 4);
  19176. let indices = new Uint32Array(indicesBuffer);
  19177. for (let i = 0; i < numPoints; ++i) {
  19178. indices[i] = i;
  19179. }
  19180. let message = {
  19181. numPoints: numPoints,
  19182. tightBoundingBox: bounds,
  19183. mean: mean,
  19184. position: xyzBuffer,
  19185. color: rgbBuffer,
  19186. intensity: intensityBuffer,
  19187. classification: classificationBuffer,
  19188. returnNumber: returnNumberBuffer,
  19189. numberOfReturns: numberOfReturnsBuffer,
  19190. pointSourceId: pointSourceIdBuffer,
  19191. indices: indicesBuffer
  19192. };
  19193. let transferables = [
  19194. message.position,
  19195. message.color,
  19196. message.intensity,
  19197. message.classification,
  19198. message.returnNumber,
  19199. message.numberOfReturns,
  19200. message.pointSourceId,
  19201. message.indices
  19202. ].filter((v) => v);
  19203. postMessage(message, transferables);
  19204. }
  19205. // window = { };
  19206. // document = { };
  19207. // importScripts('/libs/zstd-codec/bundle.js', '/libs/ept/ParseBuffer.js');
  19208. onmessage = async function(event) {
  19209. const zstd = await new Promise(resolve => window.ZstdCodec.run(resolve));
  19210. const streaming = new zstd.Streaming();
  19211. const arr = new Uint8Array(event.data.buffer);
  19212. const decompressed = streaming.decompress(arr);
  19213. event.data.buffer = decompressed.buffer
  19214. parseEpt(event);
  19215. };